# Makefile.in generated by automake 1.11.1 from Makefile.am.
# tests/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-2008 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 = $(am__EXEEXT_1) bug1$(EXEEXT) bug2$(EXEEXT) \
	thread1$(EXEEXT) thread2$(EXEEXT) thread3$(EXEEXT) \
	digest$(EXEEXT) tcpstr1$(EXEEXT) url1$(EXEEXT) \
	forever$(EXEEXT)
subdir = tests
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 =
#am__EXEEXT_1 = ccxx_tests$(EXEEXT)
PROGRAMS = $(noinst_PROGRAMS)
am_bug1_OBJECTS = bug1.$(OBJEXT)
bug1_OBJECTS = $(am_bug1_OBJECTS)
bug1_LDADD = $(LDADD)
am__DEPENDENCIES_1 =
bug1_DEPENDENCIES = ../src/libccgnu2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1)
am_bug2_OBJECTS = bug2.$(OBJEXT)
bug2_OBJECTS = $(am_bug2_OBJECTS)
bug2_LDADD = $(LDADD)
bug2_DEPENDENCIES = ../src/libccgnu2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1)
am__ccxx_tests_SOURCES_DIST = ccxx_tests.cpp SampleObject.cpp \
	SampleSubObject.cpp Test_Date.cpp Test_Engine.cpp \
	Test_TCPStream.cpp Test_URLString.cpp
#am_ccxx_tests_OBJECTS = ccxx_tests.$(OBJEXT) \
#	SampleObject.$(OBJEXT) \
#	SampleSubObject.$(OBJEXT) \
#	Test_Date.$(OBJEXT) \
#	Test_Engine.$(OBJEXT) \
#	Test_TCPStream.$(OBJEXT) \
#	Test_URLString.$(OBJEXT)
ccxx_tests_OBJECTS = $(am_ccxx_tests_OBJECTS)
am__DEPENDENCIES_2 = ../src/libccgnu2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1)
#ccxx_tests_DEPENDENCIES =  \
#	../src/libccext2.la \
#	$(am__DEPENDENCIES_1) \
#	$(am__DEPENDENCIES_2) \
#	$(am__DEPENDENCIES_1) \
#	$(am__DEPENDENCIES_1)
am_digest_OBJECTS = digest.$(OBJEXT)
digest_OBJECTS = $(am_digest_OBJECTS)
digest_DEPENDENCIES = ../src/libccext2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
am_forever_OBJECTS = forever.$(OBJEXT)
forever_OBJECTS = $(am_forever_OBJECTS)
forever_LDADD = $(LDADD)
forever_DEPENDENCIES = ../src/libccgnu2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1)
am_tcpstr1_OBJECTS = tcpstr1.$(OBJEXT)
tcpstr1_OBJECTS = $(am_tcpstr1_OBJECTS)
tcpstr1_LDADD = $(LDADD)
tcpstr1_DEPENDENCIES = ../src/libccgnu2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1)
am_thread1_OBJECTS = thread1.$(OBJEXT)
thread1_OBJECTS = $(am_thread1_OBJECTS)
thread1_LDADD = $(LDADD)
thread1_DEPENDENCIES = ../src/libccgnu2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1)
am_thread2_OBJECTS = thread2.$(OBJEXT)
thread2_OBJECTS = $(am_thread2_OBJECTS)
thread2_LDADD = $(LDADD)
thread2_DEPENDENCIES = ../src/libccgnu2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1)
am_thread3_OBJECTS = thread3.$(OBJEXT)
thread3_OBJECTS = $(am_thread3_OBJECTS)
thread3_LDADD = $(LDADD)
thread3_DEPENDENCIES = ../src/libccgnu2.la $(am__DEPENDENCIES_1) \
	$(am__DEPENDENCIES_1)
am_url1_OBJECTS = url1.$(OBJEXT)
url1_OBJECTS = $(am_url1_OBJECTS)
url1_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 = $(bug1_SOURCES) $(bug2_SOURCES) $(ccxx_tests_SOURCES) \
	$(digest_SOURCES) $(forever_SOURCES) $(tcpstr1_SOURCES) \
	$(thread1_SOURCES) $(thread2_SOURCES) $(thread3_SOURCES) \
	$(url1_SOURCES)
DIST_SOURCES = $(bug1_SOURCES) $(bug2_SOURCES) \
	$(am__ccxx_tests_SOURCES_DIST) $(digest_SOURCES) \
	$(forever_SOURCES) $(tcpstr1_SOURCES) $(thread1_SOURCES) \
	$(thread2_SOURCES) $(thread3_SOURCES) $(url1_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/tests
abs_srcdir = /home/evigier/git/commoncpp2-1.8.1-android/tests
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 dotests.sh test.sh output.txt vc6.mak Makefile.bcc
AM_CXXFLAGS = $(THREAD_FLAGS) -pedantic -Wall
INCLUDES = -I$(top_srcdir)/inc
LDADD = ../src/libccgnu2.la $(THREAD_LIBS) $(DYN_LOADER)
Z_LIBS = -lz
TEST_SUITE = 
#TEST_SUITE = ccxx_tests
noinst_HEADERS = SampleObject.h SampleSubObject.h Test_Date.h Test_Digest.h \
        Test_Engine.h Test_SHATumbler.h Test_TCPStream.h Test_URLString.h

#ccxx_tests_SOURCES = ccxx_tests.cpp SampleObject.cpp SampleSubObject.cpp \
#	Test_Date.cpp Test_Engine.cpp Test_TCPStream.cpp Test_URLString.cpp

# Test_Digest.cpp
#ccxx_tests_LDADD = ../src/libccext2.la $(XML_LIBS) $(Z_LIBS) $(LDADD) \
#	$(SSL_LIBS) $(CPPUNIT_LIBS)

bug1_SOURCES = bug1.cpp
bug2_SOURCES = bug2.cpp
forever_SOURCES = forever.cpp
digest_SOURCES = digest.cpp
digest_LDADD = ../src/libccext2.la $(XML_LIBS) $(Z_LIBS) $(SSL_LIBS) $(LDADD)
thread1_SOURCES = thread1.cpp
thread2_SOURCES = thread2.cpp
thread3_SOURCES = thread3.cpp
tcpstr1_SOURCES = tcpstr1.cpp
url1_SOURCES = url1.cpp
url1_LDADD = ../src/libccext2.la $(XML_LIBS) $(Z_LIBS) $(SSL_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 tests/Makefile'; \
	$(am__cd) $(top_srcdir) && \
	  $(AUTOMAKE) --gnu tests/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
bug1$(EXEEXT): $(bug1_OBJECTS) $(bug1_DEPENDENCIES) 
	@rm -f bug1$(EXEEXT)
	$(CXXLINK) $(bug1_OBJECTS) $(bug1_LDADD) $(LIBS)
bug2$(EXEEXT): $(bug2_OBJECTS) $(bug2_DEPENDENCIES) 
	@rm -f bug2$(EXEEXT)
	$(CXXLINK) $(bug2_OBJECTS) $(bug2_LDADD) $(LIBS)
ccxx_tests$(EXEEXT): $(ccxx_tests_OBJECTS) $(ccxx_tests_DEPENDENCIES) 
	@rm -f ccxx_tests$(EXEEXT)
	$(CXXLINK) $(ccxx_tests_OBJECTS) $(ccxx_tests_LDADD) $(LIBS)
digest$(EXEEXT): $(digest_OBJECTS) $(digest_DEPENDENCIES) 
	@rm -f digest$(EXEEXT)
	$(CXXLINK) $(digest_OBJECTS) $(digest_LDADD) $(LIBS)
forever$(EXEEXT): $(forever_OBJECTS) $(forever_DEPENDENCIES) 
	@rm -f forever$(EXEEXT)
	$(CXXLINK) $(forever_OBJECTS) $(forever_LDADD) $(LIBS)
tcpstr1$(EXEEXT): $(tcpstr1_OBJECTS) $(tcpstr1_DEPENDENCIES) 
	@rm -f tcpstr1$(EXEEXT)
	$(CXXLINK) $(tcpstr1_OBJECTS) $(tcpstr1_LDADD) $(LIBS)
thread1$(EXEEXT): $(thread1_OBJECTS) $(thread1_DEPENDENCIES) 
	@rm -f thread1$(EXEEXT)
	$(CXXLINK) $(thread1_OBJECTS) $(thread1_LDADD) $(LIBS)
thread2$(EXEEXT): $(thread2_OBJECTS) $(thread2_DEPENDENCIES) 
	@rm -f thread2$(EXEEXT)
	$(CXXLINK) $(thread2_OBJECTS) $(thread2_LDADD) $(LIBS)
thread3$(EXEEXT): $(thread3_OBJECTS) $(thread3_DEPENDENCIES) 
	@rm -f thread3$(EXEEXT)
	$(CXXLINK) $(thread3_OBJECTS) $(thread3_LDADD) $(LIBS)
url1$(EXEEXT): $(url1_OBJECTS) $(url1_DEPENDENCIES) 
	@rm -f url1$(EXEEXT)
	$(CXXLINK) $(url1_OBJECTS) $(url1_LDADD) $(LIBS)

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

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

include ./$(DEPDIR)/SampleObject.Po
include ./$(DEPDIR)/SampleSubObject.Po
include ./$(DEPDIR)/Test_Date.Po
include ./$(DEPDIR)/Test_Engine.Po
include ./$(DEPDIR)/Test_TCPStream.Po
include ./$(DEPDIR)/Test_URLString.Po
include ./$(DEPDIR)/bug1.Po
include ./$(DEPDIR)/bug2.Po
include ./$(DEPDIR)/ccxx_tests.Po
include ./$(DEPDIR)/digest.Po
include ./$(DEPDIR)/forever.Po
include ./$(DEPDIR)/tcpstr1.Po
include ./$(DEPDIR)/thread1.Po
include ./$(DEPDIR)/thread2.Po
include ./$(DEPDIR)/thread3.Po
include ./$(DEPDIR)/url1.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:
