HOST_OPT	= -DCACHEMGR_HOSTNAME="getfullhostname()"
AUTH_OPT	= # -DUSE_PROXY_AUTH=1
LOG_HDRS_OPT	= -DLOG_FULL_HEADERS=1
ICMP_OPT	= # -DUSE_ICMP=1
DELAY_HACK      = # -DDELAY_HACK=1
USERAGENT_OPT	= -DUSE_USERAGENT_LOG=1
KILL_PARENT_OPT	= # -DKILL_PARENT_OPT
USE_POLL_OPT    = # -DUSE_POLL
# do NOT define both USE_SPLAY_TREE and USE_BIN_TREE at the same time!
USE_SPLAY_TREE  = # -DUSE_SPLAY_TREE
USE_BIN_TREE    = # -DUSE_BIN_TREE
RELOAD_INTO_IMS	= # -DRELOAD_INTO_IMS

DEFINES         = $(HOST_OPT) $(AUTH_OPT) $(LOG_HDRS_OPT) \
                  $(ICMP_OPT) $(DELAY_HACK) $(USERAGENT_OPT) \
                  $(KILL_PARENT_OPT) $(USE_POLL_OPT) \
                  $(USE_SPLAY_TREE) $(USE_BIN_TREE) \
		  $(RELOAD_INTO_IMS)

tcpipprefix		= /tcpip
exec_prefix	= $(tcpipprefix)/squid
top_srcdir	= ..
bindir		= $(exec_prefix)/bin
libexecdir      = $(bindir)
sysconfdir	= $(tcpipprefix)/etc
localstatedir   = $(tcpipprefix)/squid
srcdir		= .

DEFAULT_CONFIG_FILE     = squid.conf
DEFAULT_FTPGET          = $(libexecdir)/ftpget.exe
DEFAULT_DNSSERVER       = dnsserver.exe
DEFAULT_CACHE_LOG       = logs/cache_log
DEFAULT_ACCESS_LOG      = logs/access_log
DEFAULT_STORE_LOG       = logs/store_log
DEFAULT_PID_FILE        = squid.pid
DEFAULT_SWAP_DIR        = cache
DEFAULT_PINGER		= pinger.exe
DEFAULT_UNLINKD		= unlinkd.exe
DEFAULT_MIME_TABLE	= errors/mime.conf

CC		= gcc
MAKEDEPEND	= makedepend
INSTALL		= ../aux/install-sh -c
INSTALL_BIN 	= ${INSTALL}
INSTALL_FILE 	= ${INSTALL} -m 644
INSTALL_SUID	= ${INSTALL} -o root -m 4755
RANLIB		= ranlib
LN_S		= ln
PERL            = 
CRYPTLIB	= 
REGEXLIB	= -llibregex
AC_CFLAGS	= -O3 -Wall -D_SQUID_TIME_ -DNEED_STRCASECMP -s -Zcrtdll -pipe
LDFLAGS		= -O3 -s -Zcrtdll 
XTRA_LIBS	= -lsocket
XTRA_OBJS 	= 
MV		= mv
RM		= rm
SHELL		= /bin/sh

INCLUDE		= -I. -I../include -I$(srcdir)/../include
CFLAGS 		= $(AC_CFLAGS) $(INCLUDE) $(DEFINES)
SQUID_LIBS	= -L../lib $(CRYPTLIB) $(REGEXLIB) -llibmiscutil  -llibsnmp $(XTRA_LIBS) -LF:\Xfree86\lib -lbsd -lsyslog
CLIENT_LIBS	= -L../lib -llibmiscutil  $(XTRA_LIBS) 
DNSSERVER_LIBS	= -L../lib -llibmiscutil  $(XTRA_LIBS) -lsocket -lstrange
PINGER_LIBS	= -L../lib -llibmiscutil  $(XTRA_LIBS) -lsyslog -lsocket

PROGS           = squid.exe client.exe
UTILS           = dnsserver.exe unlinkd.exe
SUID_UTILS	= pinger.exe
CGIPROGS	= cachemgr.exe
OBJS	 	= \
               	access_log.o \
		acl.o \
		asn.o \
		authenticate.o \
		cache_cf.o \
		CacheDigest.o \
		cache_manager.o \
		carp.o \
		cbdata.o \
		client_db.o \
		client_side.o \
		comm.o \
		comm_select.o \
		debug.o \
		delay_pools.o \
		disk.o \
		dns.o \
		dns_internal.o \
		errorpage.o \
		ETag.o \
		event.o \
		fd.o \
		filemap.o \
		forward.o \
		fqdncache.o \
		ftp.o \
		globals.o \
		gopher.o \
		helper.o \
                htcp.o \
		http.o \
		HttpStatusLine.o \
		HttpHdrCc.o \
		HttpHdrRange.o \
		HttpHdrContRange.o \
		HttpHeader.o \
		HttpHeaderTools.o \
		HttpBody.o \
		HttpMsg.o \
		HttpReply.o \
		HttpRequest.o \
		icmp.o \
		icp_v2.o \
		icp_v3.o \
		ident.o \
		internal.o \
		ipc.o \
		ipcache.o \
		main.o \
		mem.o \
		MemPool.o \
		MemBuf.o \
		mime.o \
		multicast.o \
		neighbors.o \
		net_db.o \
		Packer.o \
		pconn.o \
		peer_digest.o \
		peer_select.o \
		pump.o \
		redirect.o \
		refresh.o \
		send-announce.o \
		ssl.o \
		stat.o \
		StatHist.o \
		String.o \
		stmem.o \
		store.o \
		store_client.o \
		store_digest.o \
		store_dir_ufs.o \
		store_dir.o \
		store_key_md5.o \
		store_log.o \
		store_rebuild.o \
		store_swapin.o \
		store_swapmeta.o \
		store_swapout.o \
		store_io.o \
		store_io_ufs.o \
		tools.o \
		unlinkd.o \
		url.o \
		snmp_agent.o \
		snmp_core.o \
		urn.o \
		useragent.o \
		wais.o \
		whois.o \
		string_arrays.o \
		wccp.o
HTCP_OBJS	= htcp.o

DELAY_OBJS	= delay_pools.o

ASYNC_OBJS	= \
		aiops.o \
		async_io.o

DEFAULTS        = \
	-DDEFAULT_CONFIG_FILE=\"$(DEFAULT_CONFIG_FILE)\"

all:    squid.conf $(PROGS) $(UTILS) $(SUID_UTILS) $(CGIPROGS)

$(OBJS): $(top_srcdir)/include/version.h

$(SNMP_OBJS): ../snmplib/libsnmp.a $(top_srcdir)/include/cache_snmp.h

squid.exe: $(OBJS)
	$(CC) -o $@ $(LDFLAGS) $(OBJS) $(SQUID_LIBS)

globals.o: globals.c Makefile
	$(CC) -c $< $(CFLAGS) -I$(srcdir) $(DEFAULTS)

client.exe: client.o
	$(CC) -o $@ $(LDFLAGS) client.o $(CLIENT_LIBS) -Zcrtdll

dnsserver.exe: dnsserver.o
	$(CC) -o $@ $(LDFLAGS) dnsserver.o $(DNSSERVER_LIBS) -Zcrtdll

cachemgr.exe: cachemgr.o
	$(CC) -o $@ $(LDFLAGS) cachemgr.o $(CLIENT_LIBS) -Zcrtdll

pinger.exe: pinger.o
	$(CC) -o $@ $(LDFLAGS) pinger.o debug.o globals.o $(PINGER_LIBS)

unlinkd.exe: unlinkd-daemon.o
	$(CC) $(LDFLAGS) unlinkd-daemon.o -o $@

unlinkd-daemon.o: unlinkd.c
	$(CC) -c $(CFLAGS) -DUNLINK_DAEMON $(srcdir)/unlinkd.c -o $@

cache_diff: cache_diff.o debug.o globals.o store_key_md5.o
	$(CC) -o $@ $(LDFLAGS) $@.o debug.o globals.o store_key_md5.o $(STD_APP_LIBS)

test_cache_digest: test_cache_digest.o CacheDigest.o debug.o globals.o store_key_md5.o
	$(CC) -o $@ $(LDFLAGS) $@.o CacheDigest.o debug.o globals.o store_key_md5.o $(STD_APP_LIBS)

cache_cf.o: cf_parser.c

squid.conf cf_parser.c: cf.data cf_gen.exe
	cf_gen.exe cf.data

cf_gen.exe: cf_gen.o
	$(CC) -o $@ cf_gen.o -L../lib -L. -llibmiscutil

cf.data: cf.data.pre Makefile
	sed "\
	s%@DEFAULT_MIME_TABLE@%$(DEFAULT_MIME_TABLE)%g;\
	s%@DEFAULT_DNSSERVER@%$(DEFAULT_DNSSERVER)%g;\
	s%@DEFAULT_UNLINKD@%$(DEFAULT_UNLINKD)%g;\
	s%@DEFAULT_PINGER@%$(DEFAULT_PINGER)%g;\
	s%@DEFAULT_CACHE_LOG@%$(DEFAULT_CACHE_LOG)%g;\
	s%@DEFAULT_ACCESS_LOG@%$(DEFAULT_ACCESS_LOG)%g;\
	s%@DEFAULT_STORE_LOG@%$(DEFAULT_STORE_LOG)%g;\
	s%@DEFAULT_PID_FILE@%$(DEFAULT_PID_FILE)%g;\
	s%@DEFAULT_SWAP_DIR@%$(DEFAULT_SWAP_DIR)%g;\
	s%@DEFAULT_ICON_DIR@%icons%g;\
	s%@DEFAULT_MIB_PATH@%$(DEFAULT_MIB_PATH)%g;\
	s%@DEFAULT_ERROR_DIR@%errors%g;\
	s%@DEFAULT_PREFIX@%$(DEFAULT_PREFIX)%g;"\
	< $(srcdir)/cf.data.pre >$@

install-mkdirs:
	-@if test ! -d $(prefix); then \
		echo "mkdir $(prefix)"; \
		mkdir $(prefix); \
	fi
	-@if test ! -d $(exec_prefix); then \
		echo "mkdir $(exec_prefix)"; \
		mkdir $(exec_prefix); \
	fi
	-@if test ! -d $(bindir); then \
		echo "mkdir $(bindir)"; \
		mkdir $(bindir); \
	fi
	-@if test ! -d $(libexecdir); then \
		echo "mkdir $(libexecdir)"; \
		mkdir $(libexecdir); \
	fi
	-@if test ! -d $(sysconfdir); then \
		echo "mkdir $(sysconfdir)"; \
		mkdir $(sysconfdir); \
	fi
	-@if test ! -d $(localstatedir); then \
		echo "mkdir $(localstatedir)"; \
		mkdir $(localstatedir); \
	fi
	-@if test ! -d $(localstatedir)/logs; then \
		echo "mkdir $(localstatedir)/logs"; \
		mkdir $(localstatedir)/logs; \
	fi

# Michael Lupp <mike@nemesis.saar.de> wants to know about additions
# to the install target.
install: all install-mkdirs
	@for f in $(PROGS); do \
		if test -f $(bindir)/$$f; then \
			echo $(MV) $(bindir)/$$f $(bindir)/-$$f; \
			$(MV) $(bindir)/$$f $(bindir)/-$$f; \
		fi; \
		echo $(INSTALL_BIN) $$f $(bindir); \
		$(INSTALL_BIN) $$f $(bindir); \
		if test -f $(bindir)/-$$f; then \
			echo $(RM) -f $(bindir)/-$$f; \
			$(RM) -f $(bindir)/-$$f; \
		fi; \
	done
	@for f in $(UTILS); do \
		if test -f $(libexecdir)/$$f; then \
			echo $(MV) $(libexecdir)/$$f $(libexecdir)/-$$f; \
			$(MV) $(libexecdir)/$$f $(libexecdir)/-$$f; \
		fi; \
		echo $(INSTALL_BIN) $$f $(libexecdir); \
		$(INSTALL_BIN) $$f $(libexecdir); \
		if test -f $(libexecdir)/-$$f; then \
			echo $(RM) -f $(libexecdir)/-$$f; \
			$(RM) -f $(libexecdir)/-$$f; \
		fi; \
	done
	@for f in $(CGIPROGS); do \
		if test -f $(libexecdir)/$$f; then \
			echo $(MV) $(libexecdir)/$$f $(libexecdir)/-$$f; \
			$(MV) $(libexecdir)/$$f $(libexecdir)/-$$f; \
		fi; \
		echo $(INSTALL_BIN) $$f $(libexecdir); \
		$(INSTALL_BIN) $$f $(libexecdir); \
		if test -f $(libexecdir)/-$$f; then \
			echo $(RM) -f $(libexecdir)/-$$f; \
			$(RM) -f $(libexecdir)/-$$f; \
		fi; \
	done
	$(INSTALL_FILE) $(srcdir)/mib.txt $(DEFAULT_MIB_PATH)
	$(INSTALL_FILE) squid.conf $(sysconfdir)/squid.conf.default
	@if test -f $(sysconfdir)/squid.conf ; then \
		echo "$@ will not overwrite existing $(sysconfdir)/squid.conf" ; \
	else \
		echo "$(INSTALL_FILE) squid.conf $(sysconfdir)"; \
		$(INSTALL_FILE) squid.conf $(sysconfdir); \
	fi

	$(INSTALL_FILE) $(srcdir)/mime.conf $(sysconfdir)/mime.conf.default
	@if test -f $(sysconfdir)/mime.conf ; then \
		echo "$@ will not overwrite existing $(sysconfdir)/mime.conf" ; \
	else \
		echo "$(INSTALL_FILE) $(srcdir)/mime.conf $(sysconfdir)"; \
		$(INSTALL_FILE) $(srcdir)/mime.conf $(sysconfdir); \
	fi

install-pinger:
	@f=pinger; \
	if test -f $(libexecdir)/$$f; then \
		echo $(MV) $(libexecdir)/$$f $(libexecdir)/-$$f; \
		$(MV) $(libexecdir)/$$f $(libexecdir)/-$$f; \
	fi; \
	echo $(INSTALL_SUID) $$f $(libexecdir); \
	$(INSTALL_SUID) $$f $(libexecdir) || exit 1; \
	if test -f $(libexecdir)/-$$f; then \
		echo $(RM) -f $(libexecdir)/-$$f; \
		$(RM) -f $(libexecdir)/-$$f; \
	fi

clean: 
	-rm -rf *.o *pure_* core $(PROGS) $(UTILS) $(CGIPROGS) $(SUID_UTILS)
	-rm -f cf_gen cf_parser.c cf.data globals.c string_arrays.c

distclean:	clean
	-rm -f Makefile squid.conf squid.conf.pre

tags:
	ctags *.[ch] ../include/*.h ../lib/*.[ch]

depend:
	$(MAKEDEPEND) -I../include -I. -fMakefile *.c
# DO NOT DELETE
