# Makefile.in generated by automake 1.11.1 from Makefile.am.
# demo/Makefile.  Generated from Makefile.in by configure.

# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.



# Copyright (C) 1999-2005 Open Source Telecom Corporation.
# Copyright (C) 2006-2010 David Sugar, Tycho Softworks.
#
# This file is free software; as a special exception the author 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.



pkgdatadir = $(datadir)/commoncpp2
pkgincludedir = $(includedir)/commoncpp2
pkglibdir = $(libdir)/commoncpp2
pkglibexecdir = $(libexecdir)/commoncpp2
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
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 = x86_64-unknown-linux-gnu
host_triplet = arm-unknown-linux-androideabi
target_triplet = arm-unknown-linux-androideabi
noinst_PROGRAMS = tcp$(EXEEXT) tcpthread$(EXEEXT) tcpservice$(EXEEXT) \
	dccpclient$(EXEEXT) dccpserver$(EXEEXT) serial$(EXEEXT) \
	dir$(EXEEXT) str$(EXEEXT) buffer$(EXEEXT) keydump$(EXEEXT) \
	urlfetch$(EXEEXT) xmlfetch$(EXEEXT) portsample$(EXEEXT) \
	netdevices$(EXEEXT) slogTest$(EXEEXT) crc32$(EXEEXT) \
	cmdlineopt$(EXEEXT) timer$(EXEEXT) testAlog$(EXEEXT)
subdir = demo
DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \
	$(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
	$(top_srcdir)/m4/ost_cxx.m4 $(top_srcdir)/m4/ost_debug.m4 \
	$(top_srcdir)/m4/ost_dynamic.m4 $(top_srcdir)/m4/ost_endian.m4 \
	$(top_srcdir)/m4/ost_getopt.m4 $(top_srcdir)/m4/ost_maint.m4 \
	$(top_srcdir)/m4/ost_misc.m4 $(top_srcdir)/m4/ost_poll.m4 \
	$(top_srcdir)/m4/ost_posix.m4 $(top_srcdir)/m4/ost_prog.m4 \
	$(top_srcdir)/m4/ost_pthread.m4 \
	$(top_srcdir)/m4/ost_reentrant.m4 \
	$(top_srcdir)/m4/ost_signal.m4 $(top_srcdir)/m4/ost_socket.m4 \
	$(top_srcdir)/m4/ost_ssl.m4 $(top_srcdir)/m4/ost_stlport.m4 \
	$(top_srcdir)/m4/ost_string.m4 $(top_srcdir)/m4/ost_systime.m4 \
	$(top_srcdir)/m4/ost_types.m4 $(top_srcdir)/m4/ost_win32.m4 \
	$(top_srcdir)/m4/win32msc.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
	$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
PROGRAMS = $(noinst_PROGRAMS)
am_buffer_OBJECTS = buffer.$(OBJEXT)
buffer_OBJECTS = $(am_buffer_OBJECTS)
am__DEPENDENCIES_1 =
am__DEPENDENCIES_2 = ../src/libccgnu2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1)
buffer_DEPENDENCIES = ../src/libccext2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
am_cmdlineopt_OBJECTS = cmdlineopt.$(OBJEXT)
cmdlineopt_OBJECTS = $(am_cmdlineopt_OBJECTS)
cmdlineopt_DEPENDENCIES = ../src/libccext2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
am_crc32_OBJECTS = crc32.$(OBJEXT)
crc32_OBJECTS = $(am_crc32_OBJECTS)
crc32_DEPENDENCIES = ../src/libccext2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
am_dccpclient_OBJECTS = dccpclient.$(OBJEXT)
dccpclient_OBJECTS = $(am_dccpclient_OBJECTS)
dccpclient_LDADD = $(LDADD)
dccpclient_DEPENDENCIES = ../src/libccgnu2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1)
am_dccpserver_OBJECTS = dccpserver.$(OBJEXT)
dccpserver_OBJECTS = $(am_dccpserver_OBJECTS)
dccpserver_LDADD = $(LDADD)
dccpserver_DEPENDENCIES = ../src/libccgnu2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1)
am_dir_OBJECTS = dir.$(OBJEXT)
dir_OBJECTS = $(am_dir_OBJECTS)
dir_LDADD = $(LDADD)
dir_DEPENDENCIES = ../src/libccgnu2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1)
am_keydump_OBJECTS = keydump.$(OBJEXT)
keydump_OBJECTS = $(am_keydump_OBJECTS)
keydump_LDADD = $(LDADD)
keydump_DEPENDENCIES = ../src/libccgnu2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1)
am_netdevices_OBJECTS = netdevices.$(OBJEXT)
netdevices_OBJECTS = $(am_netdevices_OBJECTS)
netdevices_DEPENDENCIES = ../src/libccext2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
am_portsample_OBJECTS = SampleSocketPort.$(OBJEXT)
portsample_OBJECTS = $(am_portsample_OBJECTS)
portsample_DEPENDENCIES = ../src/libccext2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
am_serial_OBJECTS = serialmain.$(OBJEXT) serialecho.$(OBJEXT)
serial_OBJECTS = $(am_serial_OBJECTS)
serial_DEPENDENCIES = ../src/libccext2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
am_slogTest_OBJECTS = slogTest.$(OBJEXT)
slogTest_OBJECTS = $(am_slogTest_OBJECTS)
slogTest_LDADD = $(LDADD)
slogTest_DEPENDENCIES = ../src/libccgnu2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1)
am_str_OBJECTS = str.$(OBJEXT)
str_OBJECTS = $(am_str_OBJECTS)
str_DEPENDENCIES = ../src/libccext2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
am_tcp_OBJECTS = tcp.$(OBJEXT)
tcp_OBJECTS = $(am_tcp_OBJECTS)
tcp_LDADD = $(LDADD)
tcp_DEPENDENCIES = ../src/libccgnu2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1)
am_tcpservice_OBJECTS = tcpservice.$(OBJEXT)
tcpservice_OBJECTS = $(am_tcpservice_OBJECTS)
tcpservice_DEPENDENCIES = ../src/libccext2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
am_tcpthread_OBJECTS = tcpthread.$(OBJEXT)
tcpthread_OBJECTS = $(am_tcpthread_OBJECTS)
tcpthread_LDADD = $(LDADD)
tcpthread_DEPENDENCIES = ../src/libccgnu2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1)
am_testAlog_OBJECTS = test_alog.$(OBJEXT)
testAlog_OBJECTS = $(am_testAlog_OBJECTS)
testAlog_DEPENDENCIES = ../src/libccext2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
am_timer_OBJECTS = timer.$(OBJEXT)
timer_OBJECTS = $(am_timer_OBJECTS)
timer_LDADD = $(LDADD)
timer_DEPENDENCIES = ../src/libccgnu2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1)
am_urlfetch_OBJECTS = urlfetch.$(OBJEXT)
urlfetch_OBJECTS = $(am_urlfetch_OBJECTS)
urlfetch_DEPENDENCIES = ../src/libccext2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
am_xmlfetch_OBJECTS = xmlfetch.$(OBJEXT)
xmlfetch_OBJECTS = $(am_xmlfetch_OBJECTS)
xmlfetch_DEPENDENCIES = ../src/libccext2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
DEFAULT_INCLUDES = -I. -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/autoconf/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
	--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
	--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
	$(LDFLAGS) -o $@
SOURCES = $(buffer_SOURCES) $(cmdlineopt_SOURCES) $(crc32_SOURCES) \
	$(dccpclient_SOURCES) $(dccpserver_SOURCES) $(dir_SOURCES) \
	$(keydump_SOURCES) $(netdevices_SOURCES) $(portsample_SOURCES) \
	$(serial_SOURCES) $(slogTest_SOURCES) $(str_SOURCES) \
	$(tcp_SOURCES) $(tcpservice_SOURCES) $(tcpthread_SOURCES) \
	$(testAlog_SOURCES) $(timer_SOURCES) $(urlfetch_SOURCES) \
	$(xmlfetch_SOURCES)
DIST_SOURCES = $(buffer_SOURCES) $(cmdlineopt_SOURCES) \
	$(crc32_SOURCES) $(dccpclient_SOURCES) $(dccpserver_SOURCES) \
	$(dir_SOURCES) $(keydump_SOURCES) $(netdevices_SOURCES) \
	$(portsample_SOURCES) $(serial_SOURCES) $(slogTest_SOURCES) \
	$(str_SOURCES) $(tcp_SOURCES) $(tcpservice_SOURCES) \
	$(tcpthread_SOURCES) $(testAlog_SOURCES) $(timer_SOURCES) \
	$(urlfetch_SOURCES) $(xmlfetch_SOURCES)
HEADERS = $(noinst_HEADERS)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = ${SHELL} /home/evigier/git/commoncpp2-1.8.1-android/autoconf/missing --run aclocal-1.11
AMTAR = ${SHELL} /home/evigier/git/commoncpp2-1.8.1-android/autoconf/missing --run tar
AR = arm-linux-androideabi-ar
AS = as
AUTOCONF = ${SHELL} /home/evigier/git/commoncpp2-1.8.1-android/autoconf/missing --run autoconf
AUTOHEADER = ${SHELL} /home/evigier/git/commoncpp2-1.8.1-android/autoconf/missing --run autoheader
AUTOMAKE = ${SHELL} /home/evigier/git/commoncpp2-1.8.1-android/autoconf/missing --run automake-1.11
AWK = gawk
BASE_LIB = ../src/libccgnu2.la
CC = arm-linux-androideabi-gcc
CCDEPMODE = depmode=gcc3
CCXX_DIR = $(top_srcdir)/inc
CFLAGS = -g -O2
COMMON_FLAGS = -D_GNU_SOURCE -I/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/include
CPP = arm-linux-androideabi-gcc -E
CPPFLAGS = 
CPPUNIT_LIBS =  
CXX = arm-linux-androideabi-g++
CXXCPP = arm-linux-androideabi-g++ -E
CXXDEPMODE = depmode=gcc3
CXXFLAGS = -Wno-psabi
CYGPATH_W = echo
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
DLLTOOL = dlltool
DOXYGEN = no
DSYMUTIL = 
DUMPBIN = 
DYN_LOADER = -ldl
ECHO_C = 
ECHO_N = -n
ECHO_T = 
EGREP = /bin/grep -E
EXEEXT = 
FGREP = /bin/grep -F
FTPDIR = 
GETOPT_LIBS = 
GREP = /bin/grep
INSTALL = /usr/bin/install -c
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
KDOC_DIR = $(top_srcdir)/doc
LD = /home/evigier/android-14b-toolchain/arm-linux-androideabi/bin/ld
LDFLAGS = 
LIBGETOPTOBJS = 
LIBOBJS = 
LIBS =  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LIB_MAJOR = 0
LIB_VERSION = 1_8
LIPO = 
LN_S = ln -s
LTLIBOBJS = 
LT_CCXX_VERSION = -version-info 0:1
LT_MAJOR = 0
LT_MINOR = 1
LT_RELEASE = 1.8
LT_SUBVER = 0.1
MAINT = #
MAKEINFO = ${SHELL} /home/evigier/git/commoncpp2-1.8.1-android/autoconf/missing --run makeinfo
MANIFEST_TOOL = :
MKDIR_P = /bin/mkdir -p
MODULE_FLAGS = -module -shared -avoid-version
NM = /home/evigier/android-14b-toolchain/bin/arm-linux-androideabi-nm -B
NMEDIT = 
OBJDUMP = objdump
OBJEXT = o
OTOOL = 
OTOOL64 = 
PACKAGE = commoncpp2
PACKAGE_BUGREPORT = 
PACKAGE_NAME = 
PACKAGE_STRING = 
PACKAGE_TARNAME = 
PACKAGE_URL = 
PACKAGE_VERSION = 
PATH_SEPARATOR = :
PTHREAD_CC = 
RANLIB = arm-linux-androideabi-ranlib
SED = /bin/sed
SET_MAKE = 
SHARED_FLAGS = 
SHELL = /bin/bash
SOCKET_LIBS = 
SSL_LIBS = 
STAGE2 = 
STRIP = arm-linux-androideabi-strip
THREAD_FLAGS = 
THREAD_LIBS =   -pthread
VERSION = 1.8.1
WARN_FLAGS = -pedantic -Wall
WINVERSION = 1,8,1,0
ZSTREAM_LIBS = -lz
abs_builddir = /home/evigier/git/commoncpp2-1.8.1-android/demo
abs_srcdir = /home/evigier/git/commoncpp2-1.8.1-android/demo
abs_top_builddir = /home/evigier/git/commoncpp2-1.8.1-android
abs_top_srcdir = /home/evigier/git/commoncpp2-1.8.1-android
ac_ct_AR = 
ac_ct_CC = 
ac_ct_CXX = 
ac_ct_DUMPBIN = 
am__include = include
am__leading_dot = .
am__quote = 
am__tar = ${AMTAR} chof - "$$tardir"
am__untar = ${AMTAR} xf -
bindir = ${exec_prefix}/bin
build = x86_64-unknown-linux-gnu
build_alias = 
build_cpu = x86_64
build_os = linux-gnu
build_vendor = unknown
builddir = .
ccincludedir = ${includedir}/cc++2
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE}
dvidir = ${docdir}
etc_confdir = /home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/etc
exec_prefix = ${prefix}
host = arm-unknown-linux-androideabi
host_alias = arm-linux-androideabi
host_cpu = arm
host_os = linux-androideabi
host_vendor = unknown
htmldir = ${docdir}
includedir = ${prefix}/include
incprefix = 
infodir = ${datarootdir}/info
install_sh = ${SHELL} /home/evigier/git/commoncpp2-1.8.1-android/autoconf/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
mandir = ${datarootdir}/man
mkdir_p = /bin/mkdir -p
oldincludedir = /usr/include
ost_cv_dynloader = yes
pdfdir = ${docdir}
prefix = /home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr
program_transform_name = s,x,x,
psdir = ${docdir}
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
srcdir = .
sysconfdir = ${prefix}/etc
target = arm-unknown-linux-androideabi
target_alias = 
target_cpu = arm
target_os = linux-androideabi
target_vendor = unknown
thrprefix = /usr/include
top_build_prefix = ../
top_builddir = ..
top_srcdir = ..
MAINTAINERCLEANFILES = Makefile.in Makefile
EXTRA_DIST = README test.xml Makefile.bcc
AM_CXXFLAGS = $(THREAD_FLAGS) -pedantic -Wall -Wno-deprecated
INCLUDES = -I$(top_srcdir)/inc
LDADD = ../src/libccgnu2.la $(THREAD_LIBS) $(DYN_LOADER)
Z_LIBS = -lz
noinst_HEADERS = serialecho.h SampleSocketPort.h
urlfetch_SOURCES = urlfetch.cpp
urlfetch_LDADD = ../src/libccext2.la $(SSL_LIBS) $(XML_LIBS) $(Z_LIBS) $(LDADD)
xmlfetch_SOURCES = xmlfetch.cpp
xmlfetch_LDADD = ../src/libccext2.la $(SSL_LIBS) $(XML_LIBS) $(Z_LIBS) $(LDADD)
buffer_SOURCES = buffer.cpp
buffer_LDADD = ../src/libccext2.la $(SSL_LIBS) $(XML_LIBS) $(Z_LIBS) $(LDADD)
cmdlineopt_SOURCES = cmdlineopt.cpp
cmdlineopt_LDADD = ../src/libccext2.la $(SSL_LIBS) $(XML_LIBS) $(Z_LIBS) $(LDADD)
slogTest_SOURCES = slogTest.cpp
dir_SOURCES = dir.cpp
keydump_SOURCES = keydump.cpp
str_SOURCES = str.cpp
str_LDADD = ../src/libccext2.la $(SSL_LIBS) $(XML_LIBS) $(Z_LIBS) $(LDADD)
tcp_SOURCES = tcp.cpp
tcpthread_SOURCES = tcpthread.cpp
dccpclient_SOURCES = dccpclient.cpp
dccpserver_SOURCES = dccpserver.cpp
timer_SOURCES = timer.cpp
tcpservice_SOURCES = tcpservice.cpp
tcpservice_LDADD = ../src/libccext2.la $(SSL_LIBS) $(XML_LIBS) $(Z_LIBS) $(LDADD)
portsample_SOURCES = SampleSocketPort.cpp
portsample_LDADD = ../src/libccext2.la $(SSL_LIBS) $(XML_LIBS) $(Z_LIBS) $(LDADD)
netdevices_SOURCES = netdevices.cpp
netdevices_LDADD = ../src/libccext2.la $(SSL_LIBS) $(XML_LIBS) $(Z_LIBS) $(LDADD)
serial_SOURCES = serialmain.cpp serialecho.cpp
serial_LDADD = ../src/libccext2.la $(SSL_LIBS) $(XML_LIBS) $(Z_LIBS) $(LDADD)
crc32_SOURCES = crc32.cpp
crc32_LDADD = ../src/libccext2.la $(SSL_LIBS) $(XML_LIBS) $(Z_LIBS) $(LDADD)
testAlog_SOURCES = test_alog.cpp 
testAlog_LDADD = ../src/libccext2.la $(SSL_LIBS) $(XML_LIBS) $(Z_LIBS) $(LDADD)
all: all-am

.SUFFIXES:
.SUFFIXES: .cpp .lo .o .obj
$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am  $(am__configure_deps)
	@for dep in $?; do \
	  case '$(am__configure_deps)' in \
	    *$$dep*) \
	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
	        && { if test -f $@; then exit 0; else break; fi; }; \
	      exit 1;; \
	  esac; \
	done; \
	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu demo/Makefile'; \
	$(am__cd) $(top_srcdir) && \
	  $(AUTOMAKE) --gnu demo/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
	@case '$?' in \
	  *config.status*) \
	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
	  *) \
	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
	esac;

$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh

$(top_srcdir)/configure: # $(am__configure_deps)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):

clean-noinstPROGRAMS:
	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
	echo " rm -f" $$list; \
	rm -f $$list || exit $$?; \
	test -n "$(EXEEXT)" || exit 0; \
	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
	echo " rm -f" $$list; \
	rm -f $$list
buffer$(EXEEXT): $(buffer_OBJECTS) $(buffer_DEPENDENCIES) 
	@rm -f buffer$(EXEEXT)
	$(CXXLINK) $(buffer_OBJECTS) $(buffer_LDADD) $(LIBS)
cmdlineopt$(EXEEXT): $(cmdlineopt_OBJECTS) $(cmdlineopt_DEPENDENCIES) 
	@rm -f cmdlineopt$(EXEEXT)
	$(CXXLINK) $(cmdlineopt_OBJECTS) $(cmdlineopt_LDADD) $(LIBS)
crc32$(EXEEXT): $(crc32_OBJECTS) $(crc32_DEPENDENCIES) 
	@rm -f crc32$(EXEEXT)
	$(CXXLINK) $(crc32_OBJECTS) $(crc32_LDADD) $(LIBS)
dccpclient$(EXEEXT): $(dccpclient_OBJECTS) $(dccpclient_DEPENDENCIES) 
	@rm -f dccpclient$(EXEEXT)
	$(CXXLINK) $(dccpclient_OBJECTS) $(dccpclient_LDADD) $(LIBS)
dccpserver$(EXEEXT): $(dccpserver_OBJECTS) $(dccpserver_DEPENDENCIES) 
	@rm -f dccpserver$(EXEEXT)
	$(CXXLINK) $(dccpserver_OBJECTS) $(dccpserver_LDADD) $(LIBS)
dir$(EXEEXT): $(dir_OBJECTS) $(dir_DEPENDENCIES) 
	@rm -f dir$(EXEEXT)
	$(CXXLINK) $(dir_OBJECTS) $(dir_LDADD) $(LIBS)
keydump$(EXEEXT): $(keydump_OBJECTS) $(keydump_DEPENDENCIES) 
	@rm -f keydump$(EXEEXT)
	$(CXXLINK) $(keydump_OBJECTS) $(keydump_LDADD) $(LIBS)
netdevices$(EXEEXT): $(netdevices_OBJECTS) $(netdevices_DEPENDENCIES) 
	@rm -f netdevices$(EXEEXT)
	$(CXXLINK) $(netdevices_OBJECTS) $(netdevices_LDADD) $(LIBS)
portsample$(EXEEXT): $(portsample_OBJECTS) $(portsample_DEPENDENCIES) 
	@rm -f portsample$(EXEEXT)
	$(CXXLINK) $(portsample_OBJECTS) $(portsample_LDADD) $(LIBS)
serial$(EXEEXT): $(serial_OBJECTS) $(serial_DEPENDENCIES) 
	@rm -f serial$(EXEEXT)
	$(CXXLINK) $(serial_OBJECTS) $(serial_LDADD) $(LIBS)
slogTest$(EXEEXT): $(slogTest_OBJECTS) $(slogTest_DEPENDENCIES) 
	@rm -f slogTest$(EXEEXT)
	$(CXXLINK) $(slogTest_OBJECTS) $(slogTest_LDADD) $(LIBS)
str$(EXEEXT): $(str_OBJECTS) $(str_DEPENDENCIES) 
	@rm -f str$(EXEEXT)
	$(CXXLINK) $(str_OBJECTS) $(str_LDADD) $(LIBS)
tcp$(EXEEXT): $(tcp_OBJECTS) $(tcp_DEPENDENCIES) 
	@rm -f tcp$(EXEEXT)
	$(CXXLINK) $(tcp_OBJECTS) $(tcp_LDADD) $(LIBS)
tcpservice$(EXEEXT): $(tcpservice_OBJECTS) $(tcpservice_DEPENDENCIES) 
	@rm -f tcpservice$(EXEEXT)
	$(CXXLINK) $(tcpservice_OBJECTS) $(tcpservice_LDADD) $(LIBS)
tcpthread$(EXEEXT): $(tcpthread_OBJECTS) $(tcpthread_DEPENDENCIES) 
	@rm -f tcpthread$(EXEEXT)
	$(CXXLINK) $(tcpthread_OBJECTS) $(tcpthread_LDADD) $(LIBS)
testAlog$(EXEEXT): $(testAlog_OBJECTS) $(testAlog_DEPENDENCIES) 
	@rm -f testAlog$(EXEEXT)
	$(CXXLINK) $(testAlog_OBJECTS) $(testAlog_LDADD) $(LIBS)
timer$(EXEEXT): $(timer_OBJECTS) $(timer_DEPENDENCIES) 
	@rm -f timer$(EXEEXT)
	$(CXXLINK) $(timer_OBJECTS) $(timer_LDADD) $(LIBS)
urlfetch$(EXEEXT): $(urlfetch_OBJECTS) $(urlfetch_DEPENDENCIES) 
	@rm -f urlfetch$(EXEEXT)
	$(CXXLINK) $(urlfetch_OBJECTS) $(urlfetch_LDADD) $(LIBS)
xmlfetch$(EXEEXT): $(xmlfetch_OBJECTS) $(xmlfetch_DEPENDENCIES) 
	@rm -f xmlfetch$(EXEEXT)
	$(CXXLINK) $(xmlfetch_OBJECTS) $(xmlfetch_LDADD) $(LIBS)

mostlyclean-compile:
	-rm -f *.$(OBJEXT)

distclean-compile:
	-rm -f *.tab.c

include ./$(DEPDIR)/SampleSocketPort.Po
include ./$(DEPDIR)/buffer.Po
include ./$(DEPDIR)/cmdlineopt.Po
include ./$(DEPDIR)/crc32.Po
include ./$(DEPDIR)/dccpclient.Po
include ./$(DEPDIR)/dccpserver.Po
include ./$(DEPDIR)/dir.Po
include ./$(DEPDIR)/keydump.Po
include ./$(DEPDIR)/netdevices.Po
include ./$(DEPDIR)/serialecho.Po
include ./$(DEPDIR)/serialmain.Po
include ./$(DEPDIR)/slogTest.Po
include ./$(DEPDIR)/str.Po
include ./$(DEPDIR)/tcp.Po
include ./$(DEPDIR)/tcpservice.Po
include ./$(DEPDIR)/tcpthread.Po
include ./$(DEPDIR)/test_alog.Po
include ./$(DEPDIR)/timer.Po
include ./$(DEPDIR)/urlfetch.Po
include ./$(DEPDIR)/xmlfetch.Po

.cpp.o:
	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
#	source='$<' object='$@' libtool=no \
#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
#	$(CXXCOMPILE) -c -o $@ $<

.cpp.obj:
	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
#	source='$<' object='$@' libtool=no \
#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
#	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`

.cpp.lo:
	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
#	source='$<' object='$@' libtool=yes \
#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
#	$(LTCXXCOMPILE) -c -o $@ $<

mostlyclean-libtool:
	-rm -f *.lo

clean-libtool:
	-rm -rf .libs _libs

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; nonempty = 1; } \
	      END { if (nonempty) { for (i in files) print i; }; }'`; \
	mkid -fID $$unique
tags: TAGS

TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
		$(TAGS_FILES) $(LISP)
	set x; \
	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; nonempty = 1; } \
	      END { if (nonempty) { for (i in files) print i; }; }'`; \
	shift; \
	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
	  test -n "$$unique" || unique=$$empty_fix; \
	  if test $$# -gt 0; then \
	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
	      "$$@" $$unique; \
	  else \
	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
	      $$unique; \
	  fi; \
	fi
ctags: CTAGS
CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
		$(TAGS_FILES) $(LISP)
	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; nonempty = 1; } \
	      END { if (nonempty) { for (i in files) print i; }; }'`; \
	test -z "$(CTAGS_ARGS)$$unique" \
	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
	     $$unique

GTAGS:
	here=`$(am__cd) $(top_builddir) && pwd` \
	  && $(am__cd) $(top_srcdir) \
	  && gtags -i $(GTAGS_ARGS) "$$here"

distclean-tags:
	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags

distdir: $(DISTFILES)
	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
	list='$(DISTFILES)'; \
	  dist_files=`for file in $$list; do echo $$file; done | \
	  sed -e "s|^$$srcdirstrip/||;t" \
	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
	case $$dist_files in \
	  */*) $(MKDIR_P) `echo "$$dist_files" | \
			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
			   sort -u` ;; \
	esac; \
	for file in $$dist_files; do \
	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
	  if test -d $$d/$$file; then \
	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
	    if test -d "$(distdir)/$$file"; then \
	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
	    fi; \
	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
	    fi; \
	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
	  else \
	    test -f "$(distdir)/$$file" \
	    || cp -p $$d/$$file "$(distdir)/$$file" \
	    || exit 1; \
	  fi; \
	done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS) $(HEADERS)
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am

install-am: all-am
	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am

installcheck: installcheck-am
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:
	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)

maintainer-clean-generic:
	@echo "This command is intended for maintainers to use"
	@echo "it deletes files that may require special tools to rebuild."
	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-am

clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
	mostlyclean-am

distclean: distclean-am
	-rm -rf ./$(DEPDIR)
	-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
	distclean-tags

dvi: dvi-am

dvi-am:

html: html-am

html-am:

info: info-am

info-am:

install-data-am:

install-dvi: install-dvi-am

install-dvi-am:

install-exec-am:

install-html: install-html-am

install-html-am:

install-info: install-info-am

install-info-am:

install-man:

install-pdf: install-pdf-am

install-pdf-am:

install-ps: install-ps-am

install-ps-am:

installcheck-am:

maintainer-clean: maintainer-clean-am
	-rm -rf ./$(DEPDIR)
	-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic

mostlyclean: mostlyclean-am

mostlyclean-am: mostlyclean-compile mostlyclean-generic \
	mostlyclean-libtool

pdf: pdf-am

pdf-am:

ps: ps-am

ps-am:

uninstall-am:

.MAKE: install-am install-strip

.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
	clean-libtool clean-noinstPROGRAMS ctags distclean \
	distclean-compile distclean-generic distclean-libtool \
	distclean-tags distdir dvi dvi-am html html-am info info-am \
	install install-am install-data install-data-am install-dvi \
	install-dvi-am install-exec install-exec-am install-html \
	install-html-am install-info install-info-am install-man \
	install-pdf install-pdf-am install-ps install-ps-am \
	install-strip installcheck installcheck-am installdirs \
	maintainer-clean maintainer-clean-generic mostlyclean \
	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
	pdf pdf-am ps ps-am tags uninstall uninstall-am


# 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:
