From 8870e48b9df1a15280244be32a81d1eb7e5186e9 Mon Sep 17 00:00:00 2001
From: yanmorin <yanmorin>
Date: Tue, 6 Sep 2005 17:57:36 +0000
Subject: [PATCH] Zeroconf integration

---
 src/zeroconf/DNSQueryThread.cpp      |  69 +++
 src/zeroconf/DNSQueryThread.h        |  40 ++
 src/zeroconf/DNSService.cpp          | 234 +++++++++
 src/zeroconf/DNSService.h            |  86 ++++
 src/zeroconf/DNSServiceTXTRecord.cpp |  76 +++
 src/zeroconf/DNSServiceTXTRecord.h   |  41 ++
 src/zeroconf/INSTALL                 |  24 +
 src/zeroconf/Makefile                | 741 +++++++++++++++++++++++++++
 src/zeroconf/Makefile.am             |  12 +
 src/zeroconf/Makefile.in             | 741 +++++++++++++++++++++++++++
 src/zeroconf/configure.in.bot        |  10 +
 src/zeroconf/configure.in.in         |  38 ++
 12 files changed, 2112 insertions(+)
 create mode 100644 src/zeroconf/DNSQueryThread.cpp
 create mode 100644 src/zeroconf/DNSQueryThread.h
 create mode 100644 src/zeroconf/DNSService.cpp
 create mode 100644 src/zeroconf/DNSService.h
 create mode 100644 src/zeroconf/DNSServiceTXTRecord.cpp
 create mode 100644 src/zeroconf/DNSServiceTXTRecord.h
 create mode 100644 src/zeroconf/INSTALL
 create mode 100644 src/zeroconf/Makefile
 create mode 100644 src/zeroconf/Makefile.am
 create mode 100644 src/zeroconf/Makefile.in
 create mode 100644 src/zeroconf/configure.in.bot
 create mode 100644 src/zeroconf/configure.in.in

diff --git a/src/zeroconf/DNSQueryThread.cpp b/src/zeroconf/DNSQueryThread.cpp
new file mode 100644
index 0000000000..4fc0975d14
--- /dev/null
+++ b/src/zeroconf/DNSQueryThread.cpp
@@ -0,0 +1,69 @@
+/**
+ *  Copyright (C) 2005 Savoir-Faire Linux inc.
+ *  Author: Yan Morin <yan.morin@savoirfairelinux.com>
+ *                                                                              
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *                                                                                
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *                                                                              
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "DNSQueryThread.h"
+#include "DNSService.h"
+
+/**
+ * Construct a DNSQueryThread and initialize the cancel to deferred
+ */
+DNSQueryThread::DNSQueryThread(DNSService *parent, const char *regtype) : ost::Thread() 
+{
+  _parent = parent;
+  _regtype = regtype;
+  _serviceRef = NULL;
+  setCancel(cancelDeferred);
+}
+
+/**
+ * Destruct a DNSQueryThread
+ */
+DNSQueryThread::~DNSQueryThread() 
+{
+  if (_serviceRef) {
+    DNSServiceRefDeallocate(_serviceRef);
+  }
+  terminate();
+  _parent = NULL;
+  _regtype = NULL;
+  _serviceRef = NULL;
+}
+
+/**
+ * Running loop
+ */
+void
+DNSQueryThread::run() {
+  DNSServiceErrorType theErr=0; // NULL;
+  DNSServiceFlags     resultFlags=0;
+    
+  theErr = DNSServiceBrowse(&_serviceRef,
+            resultFlags,
+            0,  // all interfaces
+            _regtype,
+            NULL,
+            DNSServiceAddServicesCallback,
+            (void*)_parent);
+
+  if (theErr == kDNSServiceErr_NoError) {
+    while(true) {
+      DNSServiceProcessResult(_serviceRef); // blockage if none...
+    }
+  }
+}
diff --git a/src/zeroconf/DNSQueryThread.h b/src/zeroconf/DNSQueryThread.h
new file mode 100644
index 0000000000..3d67d653e3
--- /dev/null
+++ b/src/zeroconf/DNSQueryThread.h
@@ -0,0 +1,40 @@
+/**
+ *  Copyright (C) 2005 Savoir-Faire Linux inc.
+ *  Author: Yan Morin <yan.morin@savoirfairelinux.com>
+ *                                                                              
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *                                                                                
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *                                                                              
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __DNSSD_DNSQUERYTHREAD_H__
+#define __DNSSD_DNSQUERYTHREAD_H__
+
+#include <cc++/thread.h>
+#include <dns_sd.h>
+
+class DNSService;
+class DNSQueryThread : public ost::Thread
+{
+public:
+  DNSQueryThread(DNSService *parent, const char *regtype);
+  ~DNSQueryThread();
+  virtual void run(); // looking for services
+  
+private:
+  DNSService    *_parent;    // parent service
+  DNSServiceRef _serviceRef; // service reference 
+  const char    *_regtype;   // service type and socket type (_sip._udp by example)
+};
+
+
+#endif // __DNSSD_DNSQUERYTHREAD_H__
diff --git a/src/zeroconf/DNSService.cpp b/src/zeroconf/DNSService.cpp
new file mode 100644
index 0000000000..ffa3fbd5f2
--- /dev/null
+++ b/src/zeroconf/DNSService.cpp
@@ -0,0 +1,234 @@
+/**
+ *  Copyright (C) 2005 Savoir-Faire Linux inc.
+ *  Author: Yan Morin <yan.morin@savoirfairelinux.com>
+ *                                                                              
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *                                                                                
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *                                                                              
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+ 
+ /**
+  * Inspired by http://braden.machacking.net/zerobrowse.cpp and
+  * http://developer.kde.org/documentation/library/3.4-api/dnssd/html/remoteservice_8cpp-source.html
+  */
+#include "DNSService.h"
+#include "DNSServiceTXTRecord.h"
+#include "DNSQueryThread.h"
+#include "../global.h" // for _debug()
+
+#include <cc++/thread.h>
+
+/**
+ * Simple Empty Constructor
+ */
+DNSService::DNSService()
+{
+  _regtypeList.push_back("_sip._udp");
+#ifdef USE_IAX2
+  _regtypeList.push_back("_iax._udp");
+#endif
+  
+  // for the thread, the ifdef add a dynamic _regtypeList problem
+  int iThread=0; // _queryThread index for the loop
+  for (std::list<std::string>::iterator iterThread=_regtypeList.begin();
+       iterThread!=_regtypeList.end();
+       iterThread++) {
+    _queryThread.push_back(new DNSQueryThread(this, (*iterThread).c_str()));
+    iThread++;
+  }
+}
+
+/**
+ * Simple Empty Destructor
+ */
+DNSService::~DNSService()
+{
+  int cntThread = _queryThread.size();
+  for (int iThread=0;iThread<cntThread;iThread++) {
+    delete _queryThread[iThread];
+    _queryThread[iThread] = NULL;
+  }
+}
+
+/**
+ * Look for zeroconf services and add them to _services
+ */
+void
+DNSService::scanServices() 
+{
+  for (std::vector<DNSQueryThread *>::iterator iter = _queryThread.begin();iter!=_queryThread.end();iter++) {
+    (*iter)->start();
+  }
+}
+
+/**
+ * Add one service to the list of actual services
+ * @param service Service to add to the list
+ */
+void DNSService::addService(const std::string &service) 
+{
+  // does push_back do a copy and I can use a reference & instead as service argument
+  DNSServiceTXTRecord txtRecord;
+  _mutex.enterMutex();
+  _services[service] = txtRecord;
+  // we leave before the queryService since, each 
+  // thread will modify a DNSServiceTXTRecord of a difference services
+  _mutex.leaveMutex();
+  queryService(service);
+}
+
+/**
+ * Remove one service to the list of actual services
+ * @param service Service to remove to the list
+ */
+void DNSService::removeService(const std::string &service) 
+{
+  _mutex.enterMutex();
+  _services.erase(service);
+  _mutex.leaveMutex();
+}
+
+/**
+ * Display the list of available services
+ * run() method should be call before
+ */
+void 
+DNSService::listServices() 
+{
+  _debug("Number of services detected: %d\n", _services.size());
+  std::map<std::string, DNSServiceTXTRecord>::iterator iterTR;
+  for (iterTR = _services.begin(); iterTR != _services.end(); iterTR++) {
+    _debug("name: %s\n", iterTR->first.c_str());
+    _debug("size: %d\n", iterTR->second.size());
+    iterTR->second.listValue();
+  }
+}
+
+/**
+ * Query a service and wait for the anwser
+ * the queryCallback will show the result
+ * @param service The service full adress
+ */
+void 
+DNSService::queryService(const std::string &service) 
+{
+  DNSServiceErrorType theErr=0;
+  DNSServiceRef       myServRef=0;
+  DNSServiceFlags     resultFlags=0;
+  
+  theErr = DNSServiceQueryRecord(&myServRef, resultFlags, 0, service.c_str(), kDNSServiceType_TXT, kDNSServiceClass_IN, DNSServiceQueryRecordCallback, (void*)this);
+  if (theErr == kDNSServiceErr_NoError) {
+    DNSServiceProcessResult(myServRef); // blockage...
+    DNSServiceRefDeallocate(myServRef);
+  }
+}
+
+/**
+ * Overloadding queryService
+ * @param service service name
+ * @param regtype registred type of service
+ * @param domain  domain (habitually local.)
+ */
+void 
+DNSService::queryService(const char *service, const char *regtype, const char *domain) 
+{
+  char serviceName[kDNSServiceMaxDomainName+1];
+  DNSServiceConstructFullName(serviceName, service, regtype, domain);
+  queryService(std::string(serviceName));
+}
+
+/**
+ * Add a txt record with the queryService callback answser data
+ * @param rdlen the length of the txt record data
+ * @param rdata txt record data
+ */
+void 
+DNSService::addTXTRecord(const char *fullname, uint16_t rdlen, const void *rdata) 
+{
+  char key[256];
+  
+  const char *value;
+  uint8_t valueLen; // 0 to 256 by type restriction
+  char valueTab[256];
+  
+  
+  uint16_t keyCount = TXTRecordGetCount(rdlen, rdata);
+  for (int iKey=0; iKey<keyCount; iKey++) {
+    TXTRecordGetItemAtIndex (rdlen, rdata, iKey, 256, key, &valueLen, (const void **)(&value));
+    if (value) {
+      bcopy(value, valueTab, valueLen);
+      valueTab[valueLen]='\0';
+      _services[std::string(fullname)].addKeyValue(std::string(key), std::string(valueTab));
+    } else {
+      _services[std::string(fullname)].addKeyValue(std::string(key), std::string(""));
+    }
+  }
+
+  // TODO: remove this call, when we do not debug..
+  // addTXTRecord is a good function to know changes... 
+  listServices();
+}
+
+
+void 
+DNSServiceAddServicesCallback(DNSServiceRef sdRef,
+						DNSServiceFlags flags,
+						uint32_t interfaceIndex,
+						DNSServiceErrorType errorCode,
+						const char *serviceName,
+						const char *replyType,
+						const char *replyDomain,
+						void *context)
+{
+  if (errorCode==kDNSServiceErr_NoError) {
+  
+    if (flags) {
+      DNSService *service = (DNSService*)context;
+      std::string tempService;
+      tempService = std::string(serviceName) + "." + std::string(replyType) + std::string(replyDomain);
+      if (flags&kDNSServiceFlagsAdd) {
+        service->addService(tempService);
+      } else {
+        service->removeService(tempService);
+      }
+    }
+  } else {
+     // TODO: error handling
+  }
+}
+
+void 
+DNSServiceQueryRecordCallback(
+	DNSServiceRef DNSServiceRef,
+	DNSServiceFlags flags,
+	uint32_t interfaceIndex,
+	DNSServiceErrorType errorCode,
+	const char *fullname,
+	uint16_t rrtype,
+	uint16_t rrclass,
+	uint16_t rdlen,
+	const void *rdata,
+	uint32_t ttl,
+	void *context)
+{
+  if (errorCode==kDNSServiceErr_NoError) {
+    if (flags) {
+        if (flags&kDNSServiceFlagsAdd) {
+          ((DNSService *)context)->addTXTRecord(fullname, rdlen, rdata);
+        }
+    }
+    if (!(flags&kDNSServiceFlagsMoreComing)) {
+      // TODO: stoping, if no blocking process here
+    } 
+  }
+}
diff --git a/src/zeroconf/DNSService.h b/src/zeroconf/DNSService.h
new file mode 100644
index 0000000000..0b3eea18ca
--- /dev/null
+++ b/src/zeroconf/DNSService.h
@@ -0,0 +1,86 @@
+/**
+ *  Copyright (C) 2005 Savoir-Faire Linux inc.
+ *  Author: Yan Morin <yan.morin@savoirfairelinux.com>
+ *                                                                              
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *                                                                                
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *                                                                              
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __DNSSD_DNSSERVICE_H__
+#define __DNSSD_DNSSERVICE_H__
+
+#include <string>
+#include <map>
+#include <list>
+#include <vector>
+
+#include <dns_sd.h>
+#include <cc++/thread.h>
+
+class DNSQueryThread;
+class DNSServiceTXTRecord;
+
+class DNSService
+{
+public:
+  DNSService();
+  ~DNSService();
+  
+  void scanServices(); // looking for services
+  void addService(const std::string &service); // adding every services
+  void removeService(const std::string &service); // remove a service
+  void listServices(); // listing services (call addService before)
+  void stop(); // after the browsing loop stop
+  
+  void queryService(const std::string &service); // query the TXT record of a service
+  void queryService(const char *service, const char *regtype, const char *domain);
+  void addTXTRecord(const char *fullname, uint16_t rdlen, const void *rdata);
+
+private:
+  std::map<std::string, DNSServiceTXTRecord> _services; //map
+
+  std::vector<DNSQueryThread *> _queryThread;
+  /**
+   * Mutex to protect access to _services on add/erase
+   */
+  ost::Mutex _mutex;
+  /**
+   * RegType List contains zeroconf services to register, like sip, iax2, ...
+   * It will be use to initialize the DNSQueryThread
+   */
+  std::list<std::string> _regtypeList;
+};
+
+
+void DNSServiceAddServicesCallback(DNSServiceRef sdRef,
+						DNSServiceFlags flags,
+						uint32_t interfaceIndex,
+						DNSServiceErrorType errorCode,
+						const char *serviceName,
+						const char *replyType,
+						const char *replyDomain,
+						void *context);
+
+void DNSServiceQueryRecordCallback(DNSServiceRef DNSServiceRef,
+	DNSServiceFlags flags,
+	uint32_t interfaceIndex,
+	DNSServiceErrorType errorCode,
+	const char *fullname,
+	uint16_t rrtype,
+	uint16_t rrclass,
+	uint16_t rdlen,
+	const void *rdata,
+	uint32_t ttl,
+	void *context);
+
+#endif // __DNSSD_DNSSERVICE_H__
diff --git a/src/zeroconf/DNSServiceTXTRecord.cpp b/src/zeroconf/DNSServiceTXTRecord.cpp
new file mode 100644
index 0000000000..45c79c6012
--- /dev/null
+++ b/src/zeroconf/DNSServiceTXTRecord.cpp
@@ -0,0 +1,76 @@
+/**
+ *  Copyright (C) 2005 Savoir-Faire Linux inc.
+ *  Author: Yan Morin <yan.morin@savoirfairelinux.com>
+ *                                                                              
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *                                                                                
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *                                                                              
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#include "DNSServiceTXTRecord.h"
+#include "../global.h" // for _debug
+
+
+/**
+ * Simple constructor
+ */
+DNSServiceTXTRecord::DNSServiceTXTRecord() 
+{
+}
+ 
+/**
+ * Simple destructor
+ */
+DNSServiceTXTRecord::~DNSServiceTXTRecord() 
+{
+}
+
+/**
+ * add a pair of key/value inside the associative std::map
+ * @param key    unique key inside the std::map
+ * @param value  value associated to the key
+ */
+void 
+DNSServiceTXTRecord::addKeyValue(const std::string &key, const std::string &value) 
+{
+  _map[key] = value;
+}
+/**
+ * get a value from a key
+ * @param key    unique key inside the std::map
+ * @return the value or empty
+ */
+const std::string &
+DNSServiceTXTRecord::getValue(const std::string &key) 
+{
+  return _map[key]; // return std::string("") if it's not there
+}
+
+/**
+ * get a value from a key
+ * @param key    unique key inside the std::map
+ * @return the value or empty
+ */
+const std::string &
+DNSServiceTXTRecord::getValue(const char* key) 
+{
+  return getValue(std::string(key));
+}
+
+void 
+DNSServiceTXTRecord::listValue() 
+{
+  std::map<std::string, std::string>::iterator iter;
+  for (iter=_map.begin(); iter != _map.end(); iter++) {
+    _debug ( "\t%s:%s\n", iter->first.c_str(), iter->second.c_str());
+  }
+}
diff --git a/src/zeroconf/DNSServiceTXTRecord.h b/src/zeroconf/DNSServiceTXTRecord.h
new file mode 100644
index 0000000000..f38848bd6c
--- /dev/null
+++ b/src/zeroconf/DNSServiceTXTRecord.h
@@ -0,0 +1,41 @@
+/**
+ *  Copyright (C) 2005 Savoir-Faire Linux inc.
+ *  Author: Yan Morin <yan.morin@savoirfairelinux.com>
+ *                                                                              
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *                                                                                
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *                                                                              
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __DNSSD_DNSSERVICETXTRECORD_H__
+#define __DNSSD_DNSSERVICETXTRECORD_H__
+
+#include <string>
+#include <map>
+
+class DNSServiceTXTRecord
+{
+public:
+  DNSServiceTXTRecord();
+  ~DNSServiceTXTRecord();
+  void addKeyValue(const std::string &key, const std::string &value);
+  const std::string &getValue(const std::string &key);
+  const std::string &getValue(const char *key);
+  inline void clear(void) { _map.clear(); };
+  inline int size(void) { return _map.size(); };
+  void listValue();
+
+private:
+  std::map<std::string, std::string> _map;
+};
+
+#endif // __DNSSD_DNSSERVICETXTRECORD_H__
diff --git a/src/zeroconf/INSTALL b/src/zeroconf/INSTALL
new file mode 100644
index 0000000000..85a836c46b
--- /dev/null
+++ b/src/zeroconf/INSTALL
@@ -0,0 +1,24 @@
+Installing Apple mDNSResponder:
+
+WARNING: this is NOT Howl's mDNSResponder and it does not come in Debian package called mdnsresponder.
+You can see the difference by checking daemon's name: Apple's one (the correct one) is named 'mdnsd'
+Howl's one is named 'mDNSResponder'.
+
+1) download mDNSResponder 
+ - from Apple site (http://www.opensource.apple.com/darwinsource/tarballs/apsl/mDNSResponder-98.tar.gz)
+ - or you can get tarball from: http://helios.et.put.poznan.pl/~jstachow/pub/mDNSResponder-98.tar.gz
+    (for those who don't like registration)
+ - you can also use the last mDNSResponder
+
+2) compile and install
+ Build system for mDNSResponder is quite weird so here are instructions:
+ 
+ cd mDNSPosix
+ make os=linux             (make without parameters gives list of supported systems)
+ now as root:
+ make os=linux install
+ 
+ make sure that mdnsd.sh init script is properly installed and will be executed at boot time
+
+
+Inspired by kdelibs/dnssd/INSTALL
diff --git a/src/zeroconf/Makefile b/src/zeroconf/Makefile
new file mode 100644
index 0000000000..a2c05d80f9
--- /dev/null
+++ b/src/zeroconf/Makefile
@@ -0,0 +1,741 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# KDE tags expanded automatically by am_edit - $Revision$ 
+# src/zeroconf/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+srcdir = .
+top_srcdir = ../..
+
+pkgdatadir = $(datadir)/sflphone
+pkglibdir = $(libdir)/sflphone
+pkgincludedir = $(includedir)/sflphone
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c -p
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = i686-pc-linux-gnu
+host_triplet = i686-pc-linux-gnu
+target_triplet = i686-pc-linux-gnu
+ACLOCAL = ${SHELL} /home/ymorin/sflphone/sflphone_avant/missing --run aclocal-1.7
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /home/ymorin/sflphone/sflphone_avant/missing --run tar
+AR = ar
+AUTOCONF = ${SHELL} /home/ymorin/sflphone/sflphone_avant/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/ymorin/sflphone/sflphone_avant/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/ymorin/sflphone/sflphone_avant/missing --run automake-1.7
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -std=iso9899:1990 -W -Wall -Wchar-subscripts -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -O2  -g -O2 -Wformat-security -Wmissing-format-attribute
+CPP = gcc -E
+CPPFLAGS =  -DQT_THREAD_SUPPORT -I/opt/include
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -Wnon-virtual-dtor -Wno-long-long -Wundef -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wno-non-virtual-dtor -O2 -I/opt/include -Wformat-security -Wmissing-format-attribute -fno-exceptions -fno-check-new -fno-common -fexceptions
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO = echo
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = grep -E
+ENABLE_PERMISSIVE_FLAG = -fpermissive
+EXEEXT = 
+F77 = g77
+FFLAGS = -g -O2
+FRAMEWORK_COREAUDIO = 
+HAVE_GCC_VISIBILITY = 0
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL} $(INSTALL_STRIP_FLAG)
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+KDE_MT_LDFLAGS = 
+KDE_MT_LIBS = -lpthread
+KDE_NO_UNDEFINED = -Wl,--no-undefined -Wl,--allow-shlib-undefined
+KDE_USE_CLOSURE_FALSE = 
+KDE_USE_CLOSURE_TRUE = #
+KDE_USE_FINAL_FALSE = 
+KDE_USE_FINAL_TRUE = #
+KDE_USE_NMCHECK_FALSE = 
+KDE_USE_NMCHECK_TRUE = #
+LDFLAGS = -L/opt/lib
+LDFLAGS_AS_NEEDED = 
+LDFLAGS_NEW_DTAGS = 
+LIBCOMPAT = 
+LIBCRYPT = -lcrypt
+LIBDL = -ldl
+LIBJPEG = -ljpeg
+LIBOBJS = 
+LIBPNG = -lpng -lz -lm
+LIBPTHREAD = -lpthread
+LIBQT = -lqt-mt -lpng -lz -lm -ljpeg -ldl  -lXext -lX11 -lSM -lICE 
+LIBRESOLV = -lresolv
+LIBS =  -lstdc++
+LIBSM = -lSM -lICE
+LIBSOCKET = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool --silent
+LIBUCB = 
+LIBUTIL = -lutil
+LIBZ = -lz
+LIB_DNSSD = -ldns_sd
+LIB_POLL = 
+LIB_QPE = 
+LIB_QT = -lqt-mt  $(LIBZ) $(LIBPNG) -lXext $(LIB_X11) $(LIBSM) -lpthread
+LIB_X11 = -lX11 $(LIBSOCKET)
+LIB_XEXT = -lXext
+LIB_XRENDER = 
+LN_S = ln -s
+LTLIBOBJS = 
+MAINTENER_CODE_FALSE = 
+MAINTENER_CODE_TRUE = #
+MAKEINFO = ${SHELL} /home/ymorin/sflphone/sflphone_avant/missing --run makeinfo
+MOC = /usr/lib/qt-3.3/bin/moc
+NOOPT_CFLAGS = -O0
+NOOPT_CXXFLAGS = -O0
+NO_UNDEFINED_FALSE = 
+NO_UNDEFINED_TRUE = #
+OBJEXT = o
+PACKAGE = sflphone
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = 
+PACKAGE_STRING = 
+PACKAGE_TARNAME = 
+PACKAGE_VERSION = 
+PATH_SEPARATOR = :
+PERL = /usr/bin/perl
+PKGADD_NAME = SFLPhone - a SIP client
+PKGADD_PKG = SFLPhone
+PKGADD_VENDOR = http://www.sflphone.org
+PKG_CONFIG = /usr/bin/pkg-config
+QTE_NORTTI = 
+QT_INCLUDES = -I/usr/lib/qt-3.3/include
+QT_LDFLAGS = -L/usr/lib/qt-3.3/lib
+RANLIB = ranlib
+RPM_VERSION = 0.4.1pre1
+SET_MAKE = 
+SFLPHONE_CXXFLAGS = = -D_GNU_SOURCE -I/usr/include/cc++2   -D_GNU_SOURCE -I/usr/include/cc++2 -I/usr/include/libxml2   -D_GNU_SOURCE -I/usr/include/cc++2   -DOSIP_MT   -DAUDIO_PORTAUDIO 
+SFLPHONE_LIBS =  -pthread -lccgnu2 -ldl -lrt   -pthread -lccext2 -lccgnu2 -ldl -lrt -lxml2 -lpthread -lz -lm   -pthread -lccrtp1 -lccgnu2 -ldl -lrt   -losipparser2 -losip2   -leXosip2  -lportaudio 
+SHELL = /bin/sh
+STRIP = strip
+UIC = /usr/lib/qt-3.3/bin/uic -L $(kde_widgetdir) -nounload
+UIC_TR = tr2i18n
+USER_INCLUDES = 
+USER_LDFLAGS = 
+USE_EXCEPTIONS = -fexceptions
+USE_RTTI = 
+USE_THREADS = 
+USE_ZEROCONF_FALSE = #
+USE_ZEROCONF_TRUE = 
+VERSION = 0.4.1-pre1
+WOVERLOADED_VIRTUAL = 
+X_EXTRA_LIBS = 
+X_INCLUDES = -I/usr/X11R6/include
+X_LDFLAGS = -L/usr/X11R6/lib
+X_PRE_LIBS = 
+ac_ct_AR = ar
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_F77 = g77
+ac_ct_RANLIB = ranlib
+ac_ct_STRIP = strip
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+bindir = ${exec_prefix}/bin
+build = i686-pc-linux-gnu
+build_alias = 
+build_cpu = i686
+build_os = linux-gnu
+build_vendor = pc
+datadir = ${prefix}/share
+exec_prefix = ${prefix}
+host = i686-pc-linux-gnu
+host_alias = 
+host_cpu = i686
+host_os = linux-gnu
+host_vendor = pc
+include_x11_FALSE = #
+include_x11_TRUE = 
+includedir = ${prefix}/include
+infodir = ${prefix}/info
+install_sh = /home/ymorin/sflphone/sflphone_avant/install-sh
+kde_qtver = 3
+libccext2_CFLAGS = -D_GNU_SOURCE -I/usr/include/cc++2 -I/usr/include/libxml2  
+libccext2_LIBS = -pthread -lccext2 -lccgnu2 -ldl -lrt -lxml2 -lpthread -lz -lm  
+libccgnu2_CFLAGS = -D_GNU_SOURCE -I/usr/include/cc++2  
+libccgnu2_LIBS = -pthread -lccgnu2 -ldl -lrt  
+libccrtp1_CFLAGS = -D_GNU_SOURCE -I/usr/include/cc++2  
+libccrtp1_LIBS = -pthread -lccrtp1 -lccgnu2 -ldl -lrt  
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+libosip2_CFLAGS = -DOSIP_MT  
+libosip2_LIBS = -losipparser2 -losip2  
+localstatedir = ${prefix}/var
+mandir = ${prefix}/man
+oldincludedir = /usr/include
+portaudio_CFLAGS = -DAUDIO_PORTAUDIO 
+portaudio_LIB = 
+prefix = /home/ymorin/opt/sflphone_avant
+program_transform_name = s,x,x,
+qt_includes = /usr/lib/qt-3.3/include
+qt_libraries = /usr/lib/qt-3.3/lib
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target = i686-pc-linux-gnu
+target_alias = 
+target_cpu = i686
+target_os = linux-gnu
+target_vendor = pc
+unsermake_enable_pch_FALSE = 
+unsermake_enable_pch_TRUE = #
+x_includes = /usr/X11R6/include
+x_libraries = /usr/X11R6/lib
+SUBDIRS = 
+
+noinst_LTLIBRARIES = libzeroconf.la
+
+libzeroconf_la_SOURCES = \
+	DNSQueryThread.cpp  DNSQueryThread.h \
+	DNSService.cpp  DNSService.h  \
+	DNSServiceTXTRecord.cpp  DNSServiceTXTRecord.h
+
+
+AM_CXXFLAGS = $(libccext2_CFLAGS)
+libzeroconf_la_LIBADD = $(LIB_DNSSD) 
+subdir = src/zeroconf
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+
+libzeroconf_la_LDFLAGS =
+libzeroconf_la_DEPENDENCIES =
+am_libzeroconf_la_OBJECTS = DNSQueryThread.lo DNSService.lo \
+	DNSServiceTXTRecord.lo
+#>- libzeroconf_la_OBJECTS = $(am_libzeroconf_la_OBJECTS)
+#>+ 5
+libzeroconf_la_final_OBJECTS = libzeroconf_la.all_cpp.lo 
+libzeroconf_la_nofinal_OBJECTS = DNSQueryThread.lo DNSService.lo \
+	DNSServiceTXTRecord.lo
+libzeroconf_la_OBJECTS = $(libzeroconf_la_nofinal_OBJECTS)
+#libzeroconf_la_OBJECTS = $(libzeroconf_la_final_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+#>- DEP_FILES = ./$(DEPDIR)/DNSQueryThread.Plo \
+#>- 	./$(DEPDIR)/DNSService.Plo \
+#>- 	./$(DEPDIR)/DNSServiceTXTRecord.Plo
+#>+ 6
+#DEP_FILES =   $(DEPDIR)/libzeroconf_la.all_cpp.P ./$(DEPDIR)/DNSQueryThread.Plo \
+#		./$(DEPDIR)/DNSService.Plo \
+#		./$(DEPDIR)/DNSServiceTXTRecord.Plo
+DEP_FILES =  ./$(DEPDIR)/DNSQueryThread.Plo \
+		./$(DEPDIR)/DNSService.Plo \
+		./$(DEPDIR)/DNSServiceTXTRecord.Plo
+#>- CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+#>- 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+#>+ 2
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS)
+#>- LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \
+#>- 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+#>- 	$(AM_CXXFLAGS) $(CXXFLAGS)
+#>+ 3
+LTCXXCOMPILE = $(LIBTOOL) --mode=compile --tag=CXX $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS)
+CXXLD = $(CXX)
+#>- CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
+#>- 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+#>+ 2
+CXXLINK = $(LIBTOOL) --mode=link --tag=CXX $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(libzeroconf_la_SOURCES)
+
+#>- RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+#>- 	ps-recursive install-info-recursive uninstall-info-recursive \
+#>- 	all-recursive install-data-recursive install-exec-recursive \
+#>- 	installdirs-recursive install-recursive uninstall-recursive \
+#>- 	check-recursive installcheck-recursive
+#>+ 5
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+	ps-recursive install-info-recursive uninstall-info-recursive \
+	all-recursive install-data-recursive install-exec-recursive \
+	installdirs-recursive install-recursive uninstall-recursive \
+	check-recursive installcheck-recursive nmcheck-recursive bcheck-recursive
+DIST_COMMON = $(srcdir)/Makefile.in INSTALL Makefile.am
+DIST_SUBDIRS = $(SUBDIRS)
+SOURCES = $(libzeroconf_la_SOURCES)
+
+#>- all: all-recursive
+#>+ 1
+all: docs-am  all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
+#>- 	cd $(top_srcdir) && \
+#>- 	  $(AUTOMAKE) --gnu  src/zeroconf/Makefile
+#>+ 3
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  src/zeroconf/Makefile
+	cd $(top_srcdir) && perl admin/am_edit src/zeroconf/Makefile.in
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libzeroconf.la: $(libzeroconf_la_OBJECTS) $(libzeroconf_la_DEPENDENCIES) 
+	$(CXXLINK)  $(libzeroconf_la_LDFLAGS) $(libzeroconf_la_OBJECTS) $(libzeroconf_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/DNSQueryThread.Plo
+include ./$(DEPDIR)/DNSService.Plo
+include ./$(DEPDIR)/DNSServiceTXTRecord.Plo
+
+.cpp.o:
+	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+	fi
+#	source='$<' object='$@' libtool=no \
+#	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' \
+#	$(CXXDEPMODE) $(depcomp) \
+#	$(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+.cpp.obj:
+	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+	fi
+#	source='$<' object='$@' libtool=no \
+#	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' \
+#	$(CXXDEPMODE) $(depcomp) \
+#	$(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.cpp.lo:
+	if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+	fi
+#	source='$<' object='$@' libtool=yes \
+#	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' \
+#	$(CXXDEPMODE) $(depcomp) \
+#	$(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@set fnord $$MAKEFLAGS; amf=$$2; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@set fnord $$MAKEFLAGS; amf=$$2; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	if (etags --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	else \
+	  include_option=--include; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -f $$subdir/TAGS && \
+	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+#>+ 1
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d $(distdir)/$$subdir \
+	    || mkdir $(distdir)/$$subdir \
+	    || exit 1; \
+	    (cd $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$(top_distdir)" \
+	        distdir=../$(distdir)/$$subdir \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(LTLIBRARIES)
+installdirs: installdirs-recursive
+installdirs-am:
+
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+#>- clean: clean-recursive
+#>+ 1
+clean: kde-rpo-clean  clean-recursive
+
+#>- clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+#>- 	mostlyclean-am
+#>+ 2
+clean-am: clean-bcheck clean-final  clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+	clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	clean-recursive ctags ctags-recursive distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-recursive distclean-tags distdir dvi dvi-am \
+	dvi-recursive info info-am info-recursive install install-am \
+	install-data install-data-am install-data-recursive \
+	install-exec install-exec-am install-exec-recursive \
+	install-info install-info-am install-info-recursive install-man \
+	install-recursive install-strip installcheck installcheck-am \
+	installdirs installdirs-am installdirs-recursive \
+	maintainer-clean maintainer-clean-generic \
+	maintainer-clean-recursive mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+	pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \
+	tags-recursive uninstall uninstall-am uninstall-info-am \
+	uninstall-info-recursive uninstall-recursive
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
+
+#>+ 2
+KDE_DIST=configure.in.bot configure.in.in Makefile.in 
+
+#>+ 2
+docs-am:
+
+#>+ 6
+force-reedit:
+		cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  src/zeroconf/Makefile
+	cd $(top_srcdir) && perl admin/am_edit src/zeroconf/Makefile.in
+
+
+#>+ 21
+clean-bcheck: 
+	rm -f *.bchecktest.cc *.bchecktest.cc.class a.out
+
+bcheck: bcheck-recursive
+
+bcheck-am:
+	@for i in ; do \
+	    if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \
+	        echo "int main() {return 0;}" > $$i.bchecktest.cc ; \
+	        echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \
+	        echo "$$i"; \
+	        if ! $(CXXCOMPILE)  --dump-class-hierarchy -c $$i.bchecktest.cc; then \
+	            rm -f $$i.bchecktest.cc; exit 1; \
+	        fi ; \
+	        echo "" >> $$i.bchecktest.cc.class; \
+	        perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \
+	        rm -f a.out; \
+	    fi ; \
+	done
+
+
+#>+ 11
+libzeroconf_la.all_cpp.cpp: $(srcdir)/Makefile.in $(srcdir)/DNSQueryThread.cpp $(srcdir)/DNSService.cpp $(srcdir)/DNSServiceTXTRecord.cpp 
+	@echo 'creating libzeroconf_la.all_cpp.cpp ...'; \
+	rm -f libzeroconf_la.all_cpp.files libzeroconf_la.all_cpp.final; \
+	echo "#define KDE_USE_FINAL 1" >> libzeroconf_la.all_cpp.final; \
+	for file in DNSQueryThread.cpp DNSService.cpp DNSServiceTXTRecord.cpp ; do \
+	  echo "#include \"$$file\"" >> libzeroconf_la.all_cpp.files; \
+	  test ! -f $(srcdir)/$$file || egrep '^#pragma +implementation' $(srcdir)/$$file >> libzeroconf_la.all_cpp.final; \
+	done; \
+	cat libzeroconf_la.all_cpp.final libzeroconf_la.all_cpp.files > libzeroconf_la.all_cpp.cpp; \
+	rm -f libzeroconf_la.all_cpp.final libzeroconf_la.all_cpp.files
+
+#>+ 3
+clean-final:
+	-rm -f libzeroconf_la.all_cpp.cpp
+
+#>+ 3
+final:
+	$(MAKE) libzeroconf_la_OBJECTS="$(libzeroconf_la_final_OBJECTS)" all-am
+
+#>+ 3
+final-install:
+	$(MAKE) libzeroconf_la_OBJECTS="$(libzeroconf_la_final_OBJECTS)" install-am
+
+#>+ 3
+no-final:
+	$(MAKE) libzeroconf_la_OBJECTS="$(libzeroconf_la_nofinal_OBJECTS)" all-am
+
+#>+ 3
+no-final-install:
+	$(MAKE) libzeroconf_la_OBJECTS="$(libzeroconf_la_nofinal_OBJECTS)" install-am
+
+#>+ 3
+kde-rpo-clean:
+	-rm -f *.rpo
+
+#>+ 3
+nmcheck: 
+nmcheck-am: nmcheck
diff --git a/src/zeroconf/Makefile.am b/src/zeroconf/Makefile.am
new file mode 100644
index 0000000000..d2ed5b4e4a
--- /dev/null
+++ b/src/zeroconf/Makefile.am
@@ -0,0 +1,12 @@
+SUBDIRS = 
+
+noinst_LTLIBRARIES = libzeroconf.la
+
+libzeroconf_la_SOURCES = \
+	DNSQueryThread.cpp  DNSQueryThread.h \
+	DNSService.cpp  DNSService.h  \
+	DNSServiceTXTRecord.cpp  DNSServiceTXTRecord.h
+
+AM_CXXFLAGS = $(libccext2_CFLAGS)
+libzeroconf_la_LIBADD = $(LIB_DNSSD) 
+
diff --git a/src/zeroconf/Makefile.in b/src/zeroconf/Makefile.in
new file mode 100644
index 0000000000..d516771d1b
--- /dev/null
+++ b/src/zeroconf/Makefile.in
@@ -0,0 +1,741 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# KDE tags expanded automatically by am_edit - $Revision$ 
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_PERMISSIVE_FLAG = @ENABLE_PERMISSIVE_FLAG@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
+HAVE_GCC_VISIBILITY = @HAVE_GCC_VISIBILITY@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
+KDE_MT_LIBS = @KDE_MT_LIBS@
+KDE_NO_UNDEFINED = @KDE_NO_UNDEFINED@
+KDE_USE_CLOSURE_FALSE = @KDE_USE_CLOSURE_FALSE@
+KDE_USE_CLOSURE_TRUE = @KDE_USE_CLOSURE_TRUE@
+KDE_USE_FINAL_FALSE = @KDE_USE_FINAL_FALSE@
+KDE_USE_FINAL_TRUE = @KDE_USE_FINAL_TRUE@
+KDE_USE_NMCHECK_FALSE = @KDE_USE_NMCHECK_FALSE@
+KDE_USE_NMCHECK_TRUE = @KDE_USE_NMCHECK_TRUE@
+LDFLAGS = @LDFLAGS@
+LDFLAGS_AS_NEEDED = @LDFLAGS_AS_NEEDED@
+LDFLAGS_NEW_DTAGS = @LDFLAGS_NEW_DTAGS@
+LIBCOMPAT = @LIBCOMPAT@
+LIBCRYPT = @LIBCRYPT@
+LIBDL = @LIBDL@
+LIBJPEG = @LIBJPEG@
+LIBOBJS = @LIBOBJS@
+LIBPNG = @LIBPNG@
+LIBPTHREAD = @LIBPTHREAD@
+LIBQT = @LIBQT@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSM = @LIBSM@
+LIBSOCKET = @LIBSOCKET@
+LIBTOOL = @LIBTOOL@
+LIBUCB = @LIBUCB@
+LIBUTIL = @LIBUTIL@
+LIBZ = @LIBZ@
+LIB_DNSSD = @LIB_DNSSD@
+LIB_POLL = @LIB_POLL@
+LIB_QPE = @LIB_QPE@
+LIB_QT = @LIB_QT@
+LIB_X11 = @LIB_X11@
+LIB_XEXT = @LIB_XEXT@
+LIB_XRENDER = @LIB_XRENDER@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINTENER_CODE_FALSE = @MAINTENER_CODE_FALSE@
+MAINTENER_CODE_TRUE = @MAINTENER_CODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MOC = @MOC@
+NOOPT_CFLAGS = @NOOPT_CFLAGS@
+NOOPT_CXXFLAGS = @NOOPT_CXXFLAGS@
+NO_UNDEFINED_FALSE = @NO_UNDEFINED_FALSE@
+NO_UNDEFINED_TRUE = @NO_UNDEFINED_TRUE@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKGADD_NAME = @PKGADD_NAME@
+PKGADD_PKG = @PKGADD_PKG@
+PKGADD_VENDOR = @PKGADD_VENDOR@
+PKG_CONFIG = @PKG_CONFIG@
+QTE_NORTTI = @QTE_NORTTI@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LDFLAGS = @QT_LDFLAGS@
+RANLIB = @RANLIB@
+RPM_VERSION = @RPM_VERSION@
+SET_MAKE = @SET_MAKE@
+SFLPHONE_CXXFLAGS = @SFLPHONE_CXXFLAGS@
+SFLPHONE_LIBS = @SFLPHONE_LIBS@
+SHELL = @SHELL@
+STRIP = @STRIP@
+UIC = @UIC@
+UIC_TR = @UIC_TR@
+USER_INCLUDES = @USER_INCLUDES@
+USER_LDFLAGS = @USER_LDFLAGS@
+USE_EXCEPTIONS = @USE_EXCEPTIONS@
+USE_RTTI = @USE_RTTI@
+USE_THREADS = @USE_THREADS@
+USE_ZEROCONF_FALSE = @USE_ZEROCONF_FALSE@
+USE_ZEROCONF_TRUE = @USE_ZEROCONF_TRUE@
+VERSION = @VERSION@
+WOVERLOADED_VIRTUAL = @WOVERLOADED_VIRTUAL@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_INCLUDES = @X_INCLUDES@
+X_LDFLAGS = @X_LDFLAGS@
+X_PRE_LIBS = @X_PRE_LIBS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+include_x11_FALSE = @include_x11_FALSE@
+include_x11_TRUE = @include_x11_TRUE@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_qtver = @kde_qtver@
+libccext2_CFLAGS = @libccext2_CFLAGS@
+libccext2_LIBS = @libccext2_LIBS@
+libccgnu2_CFLAGS = @libccgnu2_CFLAGS@
+libccgnu2_LIBS = @libccgnu2_LIBS@
+libccrtp1_CFLAGS = @libccrtp1_CFLAGS@
+libccrtp1_LIBS = @libccrtp1_LIBS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libosip2_CFLAGS = @libosip2_CFLAGS@
+libosip2_LIBS = @libosip2_LIBS@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+portaudio_CFLAGS = @portaudio_CFLAGS@
+portaudio_LIB = @portaudio_LIB@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+qt_includes = @qt_includes@
+qt_libraries = @qt_libraries@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+unsermake_enable_pch_FALSE = @unsermake_enable_pch_FALSE@
+unsermake_enable_pch_TRUE = @unsermake_enable_pch_TRUE@
+x_includes = @x_includes@
+x_libraries = @x_libraries@
+SUBDIRS = 
+
+noinst_LTLIBRARIES = libzeroconf.la
+
+libzeroconf_la_SOURCES = \
+	DNSQueryThread.cpp  DNSQueryThread.h \
+	DNSService.cpp  DNSService.h  \
+	DNSServiceTXTRecord.cpp  DNSServiceTXTRecord.h
+
+
+AM_CXXFLAGS = $(libccext2_CFLAGS)
+libzeroconf_la_LIBADD = $(LIB_DNSSD) 
+subdir = src/zeroconf
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+
+libzeroconf_la_LDFLAGS =
+libzeroconf_la_DEPENDENCIES =
+am_libzeroconf_la_OBJECTS = DNSQueryThread.lo DNSService.lo \
+	DNSServiceTXTRecord.lo
+#>- libzeroconf_la_OBJECTS = $(am_libzeroconf_la_OBJECTS)
+#>+ 5
+libzeroconf_la_final_OBJECTS = libzeroconf_la.all_cpp.lo 
+libzeroconf_la_nofinal_OBJECTS = DNSQueryThread.lo DNSService.lo \
+	DNSServiceTXTRecord.lo
+@KDE_USE_FINAL_FALSE@libzeroconf_la_OBJECTS = $(libzeroconf_la_nofinal_OBJECTS)
+@KDE_USE_FINAL_TRUE@libzeroconf_la_OBJECTS = $(libzeroconf_la_final_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+#>- @AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/DNSQueryThread.Plo \
+#>- @AMDEP_TRUE@	./$(DEPDIR)/DNSService.Plo \
+#>- @AMDEP_TRUE@	./$(DEPDIR)/DNSServiceTXTRecord.Plo
+#>+ 6
+@AMDEP_TRUE@@KDE_USE_FINAL_TRUE@DEP_FILES =   $(DEPDIR)/libzeroconf_la.all_cpp.P ./$(DEPDIR)/DNSQueryThread.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_TRUE@	@AMDEP_TRUE@	./$(DEPDIR)/DNSService.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_TRUE@	@AMDEP_TRUE@	./$(DEPDIR)/DNSServiceTXTRecord.Plo
+@AMDEP_TRUE@@KDE_USE_FINAL_FALSE@DEP_FILES =  ./$(DEPDIR)/DNSQueryThread.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_FALSE@	@AMDEP_TRUE@	./$(DEPDIR)/DNSService.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_FALSE@	@AMDEP_TRUE@	./$(DEPDIR)/DNSServiceTXTRecord.Plo
+#>- CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+#>- 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+#>+ 2
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS)
+#>- LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \
+#>- 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+#>- 	$(AM_CXXFLAGS) $(CXXFLAGS)
+#>+ 3
+LTCXXCOMPILE = $(LIBTOOL) --mode=compile --tag=CXX $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS)
+CXXLD = $(CXX)
+#>- CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
+#>- 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+#>+ 2
+CXXLINK = $(LIBTOOL) --mode=link --tag=CXX $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(libzeroconf_la_SOURCES)
+
+#>- RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+#>- 	ps-recursive install-info-recursive uninstall-info-recursive \
+#>- 	all-recursive install-data-recursive install-exec-recursive \
+#>- 	installdirs-recursive install-recursive uninstall-recursive \
+#>- 	check-recursive installcheck-recursive
+#>+ 5
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+	ps-recursive install-info-recursive uninstall-info-recursive \
+	all-recursive install-data-recursive install-exec-recursive \
+	installdirs-recursive install-recursive uninstall-recursive \
+	check-recursive installcheck-recursive nmcheck-recursive bcheck-recursive
+DIST_COMMON = $(srcdir)/Makefile.in INSTALL Makefile.am
+DIST_SUBDIRS = $(SUBDIRS)
+SOURCES = $(libzeroconf_la_SOURCES)
+
+#>- all: all-recursive
+#>+ 1
+all: docs-am  all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
+#>- 	cd $(top_srcdir) && \
+#>- 	  $(AUTOMAKE) --gnu  src/zeroconf/Makefile
+#>+ 3
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  src/zeroconf/Makefile
+	cd $(top_srcdir) && perl admin/am_edit src/zeroconf/Makefile.in
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libzeroconf.la: $(libzeroconf_la_OBJECTS) $(libzeroconf_la_DEPENDENCIES) 
+	$(CXXLINK)  $(libzeroconf_la_LDFLAGS) $(libzeroconf_la_OBJECTS) $(libzeroconf_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DNSQueryThread.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DNSService.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DNSServiceTXTRecord.Plo@am__quote@
+
+.cpp.o:
+@am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCXX_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@	fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCXX_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@	fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@	if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+@am__fastdepCXX_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@	fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@set fnord $$MAKEFLAGS; amf=$$2; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@set fnord $$MAKEFLAGS; amf=$$2; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	if (etags --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	else \
+	  include_option=--include; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -f $$subdir/TAGS && \
+	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+#>+ 1
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d $(distdir)/$$subdir \
+	    || mkdir $(distdir)/$$subdir \
+	    || exit 1; \
+	    (cd $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$(top_distdir)" \
+	        distdir=../$(distdir)/$$subdir \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(LTLIBRARIES)
+installdirs: installdirs-recursive
+installdirs-am:
+
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+#>- clean: clean-recursive
+#>+ 1
+clean: kde-rpo-clean  clean-recursive
+
+#>- clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+#>- 	mostlyclean-am
+#>+ 2
+clean-am: clean-bcheck clean-final  clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+	clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	clean-recursive ctags ctags-recursive distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-recursive distclean-tags distdir dvi dvi-am \
+	dvi-recursive info info-am info-recursive install install-am \
+	install-data install-data-am install-data-recursive \
+	install-exec install-exec-am install-exec-recursive \
+	install-info install-info-am install-info-recursive install-man \
+	install-recursive install-strip installcheck installcheck-am \
+	installdirs installdirs-am installdirs-recursive \
+	maintainer-clean maintainer-clean-generic \
+	maintainer-clean-recursive mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+	pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \
+	tags-recursive uninstall uninstall-am uninstall-info-am \
+	uninstall-info-recursive uninstall-recursive
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
+
+#>+ 2
+KDE_DIST=configure.in.bot configure.in.in Makefile.in 
+
+#>+ 2
+docs-am:
+
+#>+ 6
+force-reedit:
+		cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  src/zeroconf/Makefile
+	cd $(top_srcdir) && perl admin/am_edit src/zeroconf/Makefile.in
+
+
+#>+ 21
+clean-bcheck: 
+	rm -f *.bchecktest.cc *.bchecktest.cc.class a.out
+
+bcheck: bcheck-recursive
+
+bcheck-am:
+	@for i in ; do \
+	    if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \
+	        echo "int main() {return 0;}" > $$i.bchecktest.cc ; \
+	        echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \
+	        echo "$$i"; \
+	        if ! $(CXXCOMPILE)  --dump-class-hierarchy -c $$i.bchecktest.cc; then \
+	            rm -f $$i.bchecktest.cc; exit 1; \
+	        fi ; \
+	        echo "" >> $$i.bchecktest.cc.class; \
+	        perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \
+	        rm -f a.out; \
+	    fi ; \
+	done
+
+
+#>+ 11
+libzeroconf_la.all_cpp.cpp: $(srcdir)/Makefile.in $(srcdir)/DNSQueryThread.cpp $(srcdir)/DNSService.cpp $(srcdir)/DNSServiceTXTRecord.cpp 
+	@echo 'creating libzeroconf_la.all_cpp.cpp ...'; \
+	rm -f libzeroconf_la.all_cpp.files libzeroconf_la.all_cpp.final; \
+	echo "#define KDE_USE_FINAL 1" >> libzeroconf_la.all_cpp.final; \
+	for file in DNSQueryThread.cpp DNSService.cpp DNSServiceTXTRecord.cpp ; do \
+	  echo "#include \"$$file\"" >> libzeroconf_la.all_cpp.files; \
+	  test ! -f $(srcdir)/$$file || egrep '^#pragma +implementation' $(srcdir)/$$file >> libzeroconf_la.all_cpp.final; \
+	done; \
+	cat libzeroconf_la.all_cpp.final libzeroconf_la.all_cpp.files > libzeroconf_la.all_cpp.cpp; \
+	rm -f libzeroconf_la.all_cpp.final libzeroconf_la.all_cpp.files
+
+#>+ 3
+clean-final:
+	-rm -f libzeroconf_la.all_cpp.cpp
+
+#>+ 3
+final:
+	$(MAKE) libzeroconf_la_OBJECTS="$(libzeroconf_la_final_OBJECTS)" all-am
+
+#>+ 3
+final-install:
+	$(MAKE) libzeroconf_la_OBJECTS="$(libzeroconf_la_final_OBJECTS)" install-am
+
+#>+ 3
+no-final:
+	$(MAKE) libzeroconf_la_OBJECTS="$(libzeroconf_la_nofinal_OBJECTS)" all-am
+
+#>+ 3
+no-final-install:
+	$(MAKE) libzeroconf_la_OBJECTS="$(libzeroconf_la_nofinal_OBJECTS)" install-am
+
+#>+ 3
+kde-rpo-clean:
+	-rm -f *.rpo
+
+#>+ 3
+nmcheck: 
+nmcheck-am: nmcheck
diff --git a/src/zeroconf/configure.in.bot b/src/zeroconf/configure.in.bot
new file mode 100644
index 0000000000..30992cd219
--- /dev/null
+++ b/src/zeroconf/configure.in.bot
@@ -0,0 +1,10 @@
+# inspired by kdelibs/dnssd/configure.in.bot
+if test "$have_libdns_sd" = "no"; then
+  echo ""
+  echo "You're missing Apple mDNSResponder 85 or later, therefore"
+  echo "dnssd will be compiled as stub, without any real functionality."
+  echo "If you want zeroconf support (www.zeroconf.org), you should install mDNSResponder first."
+  echo "See src/zeroconf/INSTALL for details."
+  echo ""
+  all_tests=bad
+fi
diff --git a/src/zeroconf/configure.in.in b/src/zeroconf/configure.in.in
new file mode 100644
index 0000000000..3fd827d89d
--- /dev/null
+++ b/src/zeroconf/configure.in.in
@@ -0,0 +1,38 @@
+#MIN_CONFIG
+
+AC_ARG_ENABLE(USE_ZEROCONF, [  --disable-zeroconf don't require libdns_sd (browsing and publishing DNS-SD services will not be possible) ],  with_zeroconf=$enableval, with_zeroconf=yes)
+if test "$with_zeroconf" = "yes"; then
+AC_MSG_CHECKING(for DNS-SD support)
+save_dnssdtest_LIBS="$LIBS"
+save_dnssdtest_LDFLAGS="$LDFLAGS"
+save_dnssdtest_CPPFLAGS="$CPPFLAGS"
+LDFLAGS="$all_libraries $LDFLAGS"
+CPPFLAGS="$CPPFLAGS $all_includes"
+case $host_os in
+  darwin*) LIBS="" ;;
+  *) LIBS="-ldns_sd" ;;
+esac
+have_libdns_sd="no"
+AC_TRY_LINK(	[
+			#include <dns_sd.h>
+		],[
+			DNSServiceRefDeallocate( (DNSServiceRef*) 0);
+			TXTRecordDeallocate( (TXTRecordRef*) 0);
+		],[
+			AC_DEFINE(HAVE_DNSSD,1,[Define if dns-sd is available])
+			case $host_os in
+				darwin*) LIB_DNSSD="" ;;
+				*) LIB_DNSSD="-ldns_sd" ;;
+			esac
+			have_libdns_sd="yes"
+			AC_MSG_RESULT(yes)
+		],[
+			AC_MSG_RESULT(no)
+                        LIB_DNSSD=""
+])
+CPPFLAGS=$save_dnssdtest_CPPFLAGS
+LDFLAGS=$save_dnssdtest_LDFLAGS
+LIBS=$save_dnssdtest_LIBS
+fi
+AC_SUBST(LIB_DNSSD)
+AM_CONDITIONAL(HAVE_ZEROCONF, test "$have_libdns_sd" = "yes")
-- 
GitLab