# Makefile.in generated by automake 1.11.1 from Makefile.am.
# src/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
subdir = src
DIST_COMMON = $(am__optinclude_HEADERS_DIST) $(srcdir)/Makefile.am \
	$(srcdir)/Makefile.in $(srcdir)/ccgnu2-config.in \
	$(srcdir)/libccext2.pc.in $(srcdir)/libccgnu2.pc.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 = ccgnu2-config libccext2.pc libccgnu2.pc
CONFIG_CLEAN_VPATH_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
    *) f=$$p;; \
  esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
  for p in $$list; do echo "$$p $$p"; done | \
  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
    if (++n[$$2] == $(am__install_max)) \
      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
    END { for (dir in files) print dir, files[dir] }'
am__base_list = \
  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(aclocaldir)" \
	"$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(scriptdir)" \
	"$(DESTDIR)$(optincludedir)"
LTLIBRARIES = $(lib_LTLIBRARIES)
libccext2_la_DEPENDENCIES =
am__libccext2_la_SOURCES_DIST = numbers.cpp zstream.cpp socketport.cpp \
	url.cpp xml.cpp persist.cpp engine.cpp digest.cpp cmdoptns.cpp \
	date.cpp md5.cpp unix.cpp network.cpp serial.cpp urlstring.cpp \
	tokenizer.cpp mime.cpp ssl.cpp applog.cpp getopt.c getopt1.c
am_libccext2_la_OBJECTS = numbers.lo \
	zstream.lo socketport.lo \
	url.lo xml.lo persist.lo \
	engine.lo digest.lo \
	cmdoptns.lo date.lo md5.lo \
	unix.lo network.lo serial.lo \
	urlstring.lo tokenizer.lo \
	mime.lo ssl.lo applog.lo
#am_libccext2_la_OBJECTS = numbers.lo \
#	zstream.lo socketport.lo url.lo \
#	xml.lo persist.lo engine.lo \
#	digest.lo cmdoptns.lo date.lo \
#	md5.lo unix.lo network.lo \
#	serial.lo urlstring.lo mime.lo \
#	tokenizer.lo ssl.lo getopt.lo \
#	getopt1.lo applog.lo
libccext2_la_OBJECTS = $(am_libccext2_la_OBJECTS)
libccext2_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
	$(CXXFLAGS) $(libccext2_la_LDFLAGS) $(LDFLAGS) -o $@
am_libccext2_la_rpath = -rpath $(libdir)
libccgnu2_la_DEPENDENCIES =
am_libccgnu2_la_OBJECTS = thread.lo mutex.lo semaphore.lo threadkey.lo \
	friends.lo event.lo slog.lo dir.lo file.lo inaddr.lo peer.lo \
	timer.lo socket.lo strchar.lo simplesocket.lo mempager.lo \
	keydata.lo dso.lo exception.lo missing.lo process.lo string.lo \
	in6addr.lo buffer.lo lockfile.lo nat.lo runlist.lo assoc.lo \
	pointer.lo linked.lo map.lo cidr.lo
libccgnu2_la_OBJECTS = $(am_libccgnu2_la_OBJECTS)
libccgnu2_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
	$(CXXFLAGS) $(libccgnu2_la_LDFLAGS) $(LDFLAGS) -o $@
#am_libccgnu2_la_rpath = -rpath $(libdir)
am_libccgnu2_la_rpath = -rpath $(libdir)
DEFAULT_INCLUDES = -I. -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/autoconf/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
	$(LDFLAGS) -o $@
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 = $(libccext2_la_SOURCES) $(libccgnu2_la_SOURCES)
DIST_SOURCES = $(am__libccext2_la_SOURCES_DIST) \
	$(libccgnu2_la_SOURCES)
DATA = $(aclocal_DATA) $(noinst_DATA) $(pkgconfig_DATA) $(script_DATA)
am__optinclude_HEADERS_DIST = getopt.h
HEADERS = $(optinclude_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/src
abs_srcdir = /home/evigier/git/commoncpp2-1.8.1-android/src
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 = ccgnu2-config.in ccgnu2-config ost_check2.m4 \
	getopt.h getopt.c getopt1.c *.pc *.pc.in

LT_VERSION = -version-info 0:1
AM_CXXFLAGS = -I../src -DCCXX_EXPORT_LIBRARY $(THREAD_FLAGS) \
        $(COMMON_FLAGS) -I$(CCXX_DIR) $(DEBUG_FLAGS)

AM_CFLAGS = $(THREAD_FLAGS)
INCLUDES = -I$(top_srcdir)/inc 
RELEASE = $(LT_VERSION) -release $(LT_RELEASE)
#pkgconfig_DATA = libccgnu2.pc
pkgconfig_DATA = libccgnu2.pc libccext2.pc
#lib_LTLIBRARIES = libccgnu2.la
lib_LTLIBRARIES = libccgnu2.la libccext2.la
pkgconfigdir = $(libdir)/pkgconfig
aclocaldir = $(datadir)/aclocal
aclocal_DATA = ost_check2.m4
scriptdir = $(bindir)
script_DATA = ccgnu2-config
libccgnu2_la_LIBADD =   -pthread -ldl 
libccgnu2_la_LDFLAGS = $(RELEASE) $(SHARED_FLAGS)
noinst_DATA = 
libccgnu2_la_SOURCES = thread.cpp mutex.cpp semaphore.cpp threadkey.cpp \
	friends.cpp event.cpp slog.cpp dir.cpp file.cpp inaddr.cpp \
	peer.cpp timer.cpp socket.cpp strchar.cpp simplesocket.cpp \
	mempager.cpp keydata.cpp dso.cpp exception.cpp missing.cpp \
	process.cpp string.cpp in6addr.cpp buffer.cpp lockfile.cpp \
	nat.cpp runlist.cpp assoc.cpp pointer.cpp linked.cpp map.cpp \
	cidr.cpp private.h nat.h

libccext2_la_LIBADD =   -pthread ../src/libccgnu2.la  -lz
libccext2_la_LDFLAGS = $(RELEASE) $(SHARED_FLAGS)
#optincludedir = $(includedir)/cc++2
#optinclude_HEADERS = getopt.h
libccext2_la_SOURCES = numbers.cpp zstream.cpp socketport.cpp \
        url.cpp xml.cpp persist.cpp engine.cpp digest.cpp cmdoptns.cpp \
        date.cpp md5.cpp unix.cpp network.cpp serial.cpp urlstring.cpp \
	tokenizer.cpp mime.cpp ssl.cpp applog.cpp

#libccext2_la_SOURCES = numbers.cpp zstream.cpp socketport.cpp \
#	url.cpp xml.cpp persist.cpp engine.cpp digest.cpp cmdoptns.cpp \
#	date.cpp md5.cpp unix.cpp network.cpp serial.cpp urlstring.cpp \
#	mime.cpp tokenizer.cpp ssl.cpp getopt.c getopt1.c applog.cpp

all: all-am

.SUFFIXES:
.SUFFIXES: .c .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 src/Makefile'; \
	$(am__cd) $(top_srcdir) && \
	  $(AUTOMAKE) --gnu src/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):
ccgnu2-config: $(top_builddir)/config.status $(srcdir)/ccgnu2-config.in
	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
libccext2.pc: $(top_builddir)/config.status $(srcdir)/libccext2.pc.in
	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
libccgnu2.pc: $(top_builddir)/config.status $(srcdir)/libccgnu2.pc.in
	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
	@$(NORMAL_INSTALL)
	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
	list2=; for p in $$list; do \
	  if test -f $$p; then \
	    list2="$$list2 $$p"; \
	  else :; fi; \
	done; \
	test -z "$$list2" || { \
	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
	}

uninstall-libLTLIBRARIES:
	@$(NORMAL_UNINSTALL)
	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
	for p in $$list; do \
	  $(am__strip_dir) \
	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
	done

clean-libLTLIBRARIES:
	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
	@list='$(lib_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
libccext2.la: $(libccext2_la_OBJECTS) $(libccext2_la_DEPENDENCIES) 
	$(libccext2_la_LINK) $(am_libccext2_la_rpath) $(libccext2_la_OBJECTS) $(libccext2_la_LIBADD) $(LIBS)
libccgnu2.la: $(libccgnu2_la_OBJECTS) $(libccgnu2_la_DEPENDENCIES) 
	$(libccgnu2_la_LINK) $(am_libccgnu2_la_rpath) $(libccgnu2_la_OBJECTS) $(libccgnu2_la_LIBADD) $(LIBS)

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

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

include ./$(DEPDIR)/applog.Plo
include ./$(DEPDIR)/assoc.Plo
include ./$(DEPDIR)/buffer.Plo
include ./$(DEPDIR)/cidr.Plo
include ./$(DEPDIR)/cmdoptns.Plo
include ./$(DEPDIR)/date.Plo
include ./$(DEPDIR)/digest.Plo
include ./$(DEPDIR)/dir.Plo
include ./$(DEPDIR)/dso.Plo
include ./$(DEPDIR)/engine.Plo
include ./$(DEPDIR)/event.Plo
include ./$(DEPDIR)/exception.Plo
include ./$(DEPDIR)/file.Plo
include ./$(DEPDIR)/friends.Plo
include ./$(DEPDIR)/getopt.Plo
include ./$(DEPDIR)/getopt1.Plo
include ./$(DEPDIR)/in6addr.Plo
include ./$(DEPDIR)/inaddr.Plo
include ./$(DEPDIR)/keydata.Plo
include ./$(DEPDIR)/linked.Plo
include ./$(DEPDIR)/lockfile.Plo
include ./$(DEPDIR)/map.Plo
include ./$(DEPDIR)/md5.Plo
include ./$(DEPDIR)/mempager.Plo
include ./$(DEPDIR)/mime.Plo
include ./$(DEPDIR)/missing.Plo
include ./$(DEPDIR)/mutex.Plo
include ./$(DEPDIR)/nat.Plo
include ./$(DEPDIR)/network.Plo
include ./$(DEPDIR)/numbers.Plo
include ./$(DEPDIR)/peer.Plo
include ./$(DEPDIR)/persist.Plo
include ./$(DEPDIR)/pointer.Plo
include ./$(DEPDIR)/process.Plo
include ./$(DEPDIR)/runlist.Plo
include ./$(DEPDIR)/semaphore.Plo
include ./$(DEPDIR)/serial.Plo
include ./$(DEPDIR)/simplesocket.Plo
include ./$(DEPDIR)/slog.Plo
include ./$(DEPDIR)/socket.Plo
include ./$(DEPDIR)/socketport.Plo
include ./$(DEPDIR)/ssl.Plo
include ./$(DEPDIR)/strchar.Plo
include ./$(DEPDIR)/string.Plo
include ./$(DEPDIR)/thread.Plo
include ./$(DEPDIR)/threadkey.Plo
include ./$(DEPDIR)/timer.Plo
include ./$(DEPDIR)/tokenizer.Plo
include ./$(DEPDIR)/unix.Plo
include ./$(DEPDIR)/url.Plo
include ./$(DEPDIR)/urlstring.Plo
include ./$(DEPDIR)/xml.Plo
include ./$(DEPDIR)/zstream.Plo

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

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

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

.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
install-aclocalDATA: $(aclocal_DATA)
	@$(NORMAL_INSTALL)
	test -z "$(aclocaldir)" || $(MKDIR_P) "$(DESTDIR)$(aclocaldir)"
	@list='$(aclocal_DATA)'; test -n "$(aclocaldir)" || list=; \
	for p in $$list; do \
	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
	  echo "$$d$$p"; \
	done | $(am__base_list) | \
	while read files; do \
	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(aclocaldir)'"; \
	  $(INSTALL_DATA) $$files "$(DESTDIR)$(aclocaldir)" || exit $$?; \
	done

uninstall-aclocalDATA:
	@$(NORMAL_UNINSTALL)
	@list='$(aclocal_DATA)'; test -n "$(aclocaldir)" || list=; \
	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
	test -n "$$files" || exit 0; \
	echo " ( cd '$(DESTDIR)$(aclocaldir)' && rm -f" $$files ")"; \
	cd "$(DESTDIR)$(aclocaldir)" && rm -f $$files
install-pkgconfigDATA: $(pkgconfig_DATA)
	@$(NORMAL_INSTALL)
	test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
	for p in $$list; do \
	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
	  echo "$$d$$p"; \
	done | $(am__base_list) | \
	while read files; do \
	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
	done

uninstall-pkgconfigDATA:
	@$(NORMAL_UNINSTALL)
	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
	test -n "$$files" || exit 0; \
	echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \
	cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files
install-scriptDATA: $(script_DATA)
	@$(NORMAL_INSTALL)
	test -z "$(scriptdir)" || $(MKDIR_P) "$(DESTDIR)$(scriptdir)"
	@list='$(script_DATA)'; test -n "$(scriptdir)" || list=; \
	for p in $$list; do \
	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
	  echo "$$d$$p"; \
	done | $(am__base_list) | \
	while read files; do \
	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(scriptdir)'"; \
	  $(INSTALL_DATA) $$files "$(DESTDIR)$(scriptdir)" || exit $$?; \
	done

uninstall-scriptDATA:
	@$(NORMAL_UNINSTALL)
	@list='$(script_DATA)'; test -n "$(scriptdir)" || list=; \
	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
	test -n "$$files" || exit 0; \
	echo " ( cd '$(DESTDIR)$(scriptdir)' && rm -f" $$files ")"; \
	cd "$(DESTDIR)$(scriptdir)" && rm -f $$files
install-optincludeHEADERS: $(optinclude_HEADERS)
	@$(NORMAL_INSTALL)
	test -z "$(optincludedir)" || $(MKDIR_P) "$(DESTDIR)$(optincludedir)"
	@list='$(optinclude_HEADERS)'; test -n "$(optincludedir)" || list=; \
	for p in $$list; do \
	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
	  echo "$$d$$p"; \
	done | $(am__base_list) | \
	while read files; do \
	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(optincludedir)'"; \
	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(optincludedir)" || exit $$?; \
	done

uninstall-optincludeHEADERS:
	@$(NORMAL_UNINSTALL)
	@list='$(optinclude_HEADERS)'; test -n "$(optincludedir)" || list=; \
	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
	test -n "$$files" || exit 0; \
	echo " ( cd '$(DESTDIR)$(optincludedir)' && rm -f" $$files ")"; \
	cd "$(DESTDIR)$(optincludedir)" && rm -f $$files

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 $(LTLIBRARIES) $(DATA) $(HEADERS)
installdirs:
	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(aclocaldir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(scriptdir)" "$(DESTDIR)$(optincludedir)"; do \
	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
	done
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-libLTLIBRARIES clean-libtool \
	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-aclocalDATA install-optincludeHEADERS \
	install-pkgconfigDATA install-scriptDATA
	@$(NORMAL_INSTALL)
	$(MAKE) $(AM_MAKEFLAGS) install-data-hook
install-dvi: install-dvi-am

install-dvi-am:

install-exec-am: install-libLTLIBRARIES

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: uninstall-aclocalDATA uninstall-libLTLIBRARIES \
	uninstall-optincludeHEADERS uninstall-pkgconfigDATA \
	uninstall-scriptDATA

.MAKE: install-am install-data-am install-strip

.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
	clean-libLTLIBRARIES clean-libtool ctags distclean \
	distclean-compile distclean-generic distclean-libtool \
	distclean-tags distdir dvi dvi-am html html-am info info-am \
	install install-aclocalDATA install-am install-data \
	install-data-am install-data-hook install-dvi install-dvi-am \
	install-exec install-exec-am install-html install-html-am \
	install-info install-info-am install-libLTLIBRARIES \
	install-man install-optincludeHEADERS install-pdf \
	install-pdf-am install-pkgconfigDATA install-ps install-ps-am \
	install-scriptDATA 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-aclocalDATA uninstall-am uninstall-libLTLIBRARIES \
	uninstall-optincludeHEADERS uninstall-pkgconfigDATA \
	uninstall-scriptDATA


# private.h and nat.h are internal headers

macosx: libccext2.la libccgnu2.la
	rm -rf .libs/*.dylib
	ld -r -o ccgnu2.lo $(libccgnu2_la_OBJECTS)
	../libtool --mode=link c++ -dynamic -dynamiclib -o libccgnu2.la \
		-rpath $(libdir) ccgnu2.lo $(LDFLAGS) -lpthread
	ld -r -o ccext2.lo $(libccext2_la_OBJECTS)
	../libtool --mode=link c++ -dynamic -dynamiclib -o libccext2.la \
		-rpath $(libdir) ccext2.lo $(LDFLAGS) -lpthread
	touch macosx

install-data-hook:
	chmod +x $(DESTDIR)${scriptdir}/ccgnu2-config

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