#	(c) CERN 1990, 1991 -- see Copyright.html for conditions
#
#	YOU NEED THE WWW LIBRARY TO USE THIS
#
#	make		Compile and link the daemon (private version)
#	make install	Copy it into the system (implies make)
#	make update	Copy installed version into installed version
#	make uninstall	Unlink installed version from the system
#	make clean	Remove intermediate files
#	make cleanall	Remove intermediate files and products
#
#	make httpd	as make
#	make tigate	Make Techinfo gateway
#
.PHONY: all install clean cleanall tags lib everything default

.c.o:
	$(CC) -c $(CFLAGS2) $<

WWW_MACH=os2
VD=os2
CC=gcc -Wall -DOS2 -DTHS_CACHE
EXE=
ifdef DEBUG
CFLAGS=-g -O
else
CFLAGS=-s -O2
endif
LD=ld
AR=ar rcs
MAKE=make
MV=mv
CP=cp
RM=rm -f
SLIBS=-lsocket -llibufc

CDEBUGFLAGS=-O3 -pipe

# Where is the WWW source root?
WWW=..

# Where should temporary (object) files go?
WTMP=

RULE_FILE="/etc/httpd.conf"

CMN=$(WWW)/Library
INC=$(WWW)/Library
SRC=

OBJ=.

DOC=\
 $(WWW)/Paper/www-server-guide.ps, $(WWW)/Paper/www-server-guide.txt

CFLAGS2=-I$(INC) -I.. $(CFLAGS)

PROD=httpd

USELIBDIR=..
OBJ=../Daemon
LIBWWW=../libwww.a

OBJS=HTDaemonDIR.o HTRequest.o HTRetrieve.o HTScript.o HTLoad.o \
HTCache.o HTCacheInfo.o HTConfig.o HTWild.o HTSInit.o HTSUtils.o HTims.o \
HTPasswd.o HTAuth.o HTLex.o HTGroup.o HTACL.o HTAAProt.o HTAAServ.o \
HTAAFile.o HTLog.o HTgc.o HTUserInit.o HTRFC931.o \
$(LIBWWW) $(WAISLIB)

FOBJS=HTDaemonNR.o FINDGate.o $(LIBWWW)
TIOBJS=HTDaemonNR.o TechInfoGate.o $(LIBWWW)
WOBJS=HTDaemonNR.o WAISGate.o ParseWSRC.o $(LIBWWW)
TWOBJS=test.o WAISGate.o $(LIBWWW)

SOURCES=HTDaemon.c HTDaemon.h HTRequest.c HTRequest.h HTRetrieve.c \
HTLoad.c HTims.c HTims.h HTCache.c HTCache.h HTCacheInfo.c HTgc.c \
HTConfig.c HTConfig.h HTWild.c HTWild.h HTScript.c HTScript.h \
HTPasswd.c HTPasswd.h HTAuth.c HTAuth.h HTLex.c HTLex.h HTGroup.c \
HTGroup.h HTACL.c HTACL.h HTAAProt.c HTAAProt.h HTAAServ.c HTAAServ.h \
HTAAFile.c HTAAFile.h HTLog.c HTLog.h HTRFC931.c HTImage.c CGIParse.c \
HTUserInit.c HTUserInit.h HTSInit.c HTSUtils.c HTSUtils.h HTAdm.c \
cgiutils.c CommonMakefile Version.make

# test.c Makefile
# DCLServer.c VMServer.c
# VMSHelpGate.c TechInfoGate.c
# install.csh

HTMLFILES=HTPasswd.h HTAuth.h HTLex.h HTGroup.h HTACL.h HTAAProt.h \
HTAAServ.h HTAAFile.h

.SUFFIXES: .h .html
.html.h:
#	- chmod +w $*.h
	www -w90 -na -to text/x-c $*.html > $*.h
#	chmod -w $*.h

# This is now done by cat in WWW/All/Makefile
# include $(ABS)Version.make

default: $(PROD)

everything: $(PROD) htadm.exe htimage.exe cgiparse.exe cgiutils.exe


# Hypertext File server

#
# CERN httpd itself.
#

Daemon: $(PROD)

$(PROD): $(OBJS)
	$(CC) $(EXE) -o $(PROD)_$(VD).exe $(OBJS) $(LFLAGS) $(MATHLIB) $(SLIBS)
#	-rm $(PROD)

HTRequest.o: HTRequest.c $(INC)/HTUtils.h $(INC)/tcp.h HTDaemon.h HTConfig.h
	$(CC) -c $(CFLAGS2) -DRULE_FILE=\"$(RULE_FILE)\" \
	 -DVD=\"$(VD)\" HTRequest.c

HTRetrieve.o: HTRetrieve.c $(INC)/HTUtils.h $(INC)/tcp.h HTDaemon.h \
HTConfig.h $(INC)/HTFile.h
	$(CC) -c $(CFLAGS2) -DRULE_FILE=\"$(RULE_FILE)\" HTRetrieve.c

HTLoad.o: HTLoad.c $(INC)/HTUtils.h HTDaemon.h HTConfig.h

HTCache.o: HTCache.c $(INC)/HTUtils.h HTCache.h HTDaemon.h HTConfig.h

HTCacheInfo.o: HTCacheInfo.c $(INC)/HTUtils.h HTCache.h HTDaemon.h HTConfig.h

HTConfig.o: HTConfig.c $(INC)/HTUtils.h HTDaemon.h HTConfig.h

HTWild.o: HTWild.c HTWild.h $(INC)/HTUtils.h HTDaemon.h HTConfig.h

HTScript.o: HTScript.c $(INC)/HTUtils.h $(INC)/tcp.h $(INC)/HTFile.h \
HTDaemon.h HTConfig.h
	$(CC) -c $(CFLAGS2) -DRULE_FILE=\"$(RULE_FILE)\" \
	 -DVD=\"$(VD)\" HTScript.c

HTRFC931.o: HTRFC931.c HTDaemon.h HTConfig.h

#		Access Authorization
#		(these were originally in libwww by mistake)

HTAAFile.o: HTAAFile.c HTAAFile.h $(INC)/HTAAUtil.h $(INC)/HTUtils.h \
$(INC)/HTList.h HTDaemon.h HTConfig.h

HTPasswd.o: HTPasswd.c HTPasswd.h $(INC)/HTAAUtil.h HTAAFile.h \
HTDaemon.h HTConfig.h

HTGroup.o: HTGroup.c HTGroup.h $(INC)/HTAAUtil.h HTAAFile.h \
$(INC)/HTAssoc.h HTLex.h HTDaemon.h HTConfig.h

HTACL.o: HTACL.c HTACL.h $(INC)/HTAAUtil.h HTAAFile.h HTGroup.h \
$(INC)/HTAssoc.h HTDaemon.h HTConfig.h

HTAuth.o: HTAuth.c HTAuth.h $(INC)/HTAAUtil.h HTPasswd.h HTAAFile.h \
$(INC)/HTAssoc.h HTDaemon.h HTConfig.h

HTAAServ.o: HTAAServ.c HTAAServ.h $(INC)/HTAAUtil.h HTAAFile.h \
HTPasswd.h HTGroup.h HTACL.h HTAuth.h $(INC)/HTUU.h $(INC)/HTParse.h \
$(INC)/HTList.h $(INC)/HTUtils.h $(INC)/HTString.h $(INC)/HTRules.h \
HTAAProt.h $(INC)/HTAssoc.h HTLex.h HTDaemon.h HTConfig.h

HTAAProt.o: HTAAProt.c HTAAProt.h $(INC)/HTUtils.h $(INC)/HTAAUtil.h \
HTAAFile.h $(INC)/HTAssoc.h HTLex.h HTDaemon.h HTConfig.h

HTLex.o: HTLex.c HTLex.h $(INC)/HTUtils.h HTDaemon.h HTConfig.h

HTLog.o: HTLog.c HTDaemon.h HTConfig.h

HTims.o: HTims.c HTDaemon.h HTConfig.h

HTgc.o: HTgc.c HTDaemon.h HTConfig.h

inc: $(HTMLFILES)
	echo "Include files generated from hypertext."

#		Administration program

htadm.exe: HTAdm.o $(INC)/HTUtils.h $(INC)/HTAlert.h $(INC)/HTAAUtil.h \
HTPasswd.h $(LIBWWW)
	$(CC) $(EXE) -o htadm.exe $(CFLAGS2) HTAdm.o HTPasswd.o HTAAFile.o \
$(LIBWWW) $(LFLAGS) -llibufc

#		CGI/1.0 QUERY_STRING environment variable parser

cgiparse.exe: CGIParse.o $(INC)/HTUtils.h $(LIBWWW)
	$(CC) $(EXE) -o cgiparse.exe $(CFLAGS2) CGIParse.o $(LIBWWW) \
$(LFLAGS) -lsocket

#		cgiutils

cgiutils.exe: cgiutils.o $(INC)/HTUtils.h HTSUtils.h HTSUtils.o $(LIBWWW)
	$(CC) $(EXE) -o cgiutils.exe $(CFLAGS2) cgiutils.o HTSUtils.o \
	$(LIBWWW) $(LFLAGS)

#		ISMAP image handling

htimage.exe: HTImage.o $(INC)/HTUtils.h $(LIBWWW)
	$(CC) $(EXE) -o htimage.exe $(CFLAGS2) HTImage.o $(LIBWWW)

$(USELIBDIR)/libwww.a:
	@echo You must get and make the WWWLibrary first!
	(cd $(WWW)/Library && make)

lib:
	(cd $(WWW)/Library && make)

# Things we check on all platforms and export binaries

all: $(PROD).exe tigate.exe
	echo "httpd and tigate daemons up to date"


# 		FIND gateway - test only (has to run on VM!)

FINDGate.exe: $(FOBJS)
	$(CC) -o FINDGate.exe $(FOBJS) $(LFLAGS)
FINDGate.o: FINDGate.c $(INC)/HTUtils.h $(INC)/tcp.h
	$(CC) -c $(CFLAGS2) FINDGate.c

#		Techinfo Gateway

tigate.exe: $(TIOBJS)
	$(CC) $(LFLAGS) -o tigate.exe $(TIOBJS)

TechInfoGate.o: TechInfoGate.c
	$(CC) $(CFLAGS2) -c TechInfoGate.c

# 		WAIS Gateway is just httpd linked with freeWAIS
#	and a libwww copmpiled with the right flags.

# 		Common Code

test.o: test.c $(INC)/HTUtils.h $(INC)/tcp.h $(INC)/HTTCP.h
	$(CC) -c $(CFLAGS2) -DRULE_FILE=\"$(RULE_FILE)\" test.c
HTDaemon.o: HTDaemon.c $(INC)/HTUtils.h $(INC)/tcp.h $(INC)/HTTCP.h \
HTDaemon.h HTConfig.h
	$(CC) -c $(CFLAGS2) -DRULE_FILE=\"$(RULE_FILE)\" \
	 -DVD=\"$(VD)\" HTDaemon.c
#
# The following are version of the daemon code with different options.
# They have to be made with a copy of the source because the -o
# option does not work for object files for the AIX compiler!:-(
#
HTDaemonNR.o: HTDaemon.c $(INC)/HTUtils.h $(INC)/tcp.h $(INC)/HTTCP.h
	cp HTDaemon.c $(OBJ)/HTDaemonNR.c
	$(CC) -c $(CFLAGS2) -DNOCONVERT -DVD=\"$(VD)\" $(OBJ)/HTDaemonNR.c
	rm $(OBJ)/HTDaemonNR.c

HTDaemonDIR.o: HTDaemon.c $(INC)/HTUtils.h $(INC)/tcp.h $(INC)/HTTCP.h \
HTDaemon.h HTConfig.h
#	cp HTDaemon.c HTDaemonDIR.c
	$(CC) -c $(CFLAGS2) \
	-DRULE_FILE=\"$(RULE_FILE)\" -DDIR_OPTIONS -DVD=\"$(VD)\" \
		HTDaemonDIR.c
#	rm HTDaemonDIR.c

HTSUtils.o: HTSUtils.c HTSUtils.h
	$(CC) -c $(CFLAGS2) -I$(CMN) HTSUtils.c

HTSInit.o: HTSInit.c
	$(CC) -c $(CFLAGS) -I$(CMN) HTSInit.c

HTUserInit.o: HTUserInit.c HTUserInit.h
	$(CC) -c $(CFLAGS) -I$(CMN) HTUserInit.c

htimage.o: htimage.c

cgiparse.o: cgiparse.c

cgiutils.o: cgiutils.c

clean:
	- rm $(OBJ)/*.o
	- rmdir $(OBJ)

#	Clean up everything generatable including final products

cleanall: clean
	- rm $(PROD)

#		Hypertext supplied in text format
#		---------------------------------

$(WWW)/README.txt: $(WWW)/../README.html
	www -n -p66 http://www.w3.org/hypertext/README.html \
> $(WWW)/README.txt
/mnt/www0/pub/www/README.txt: $(WWW)/README.txt
	cp $(WWW)/README.txt /mnt/www0/pub/www/README.txt

$(WWW)/Copyright.txt: $(WWW)/../Copyright.html
	www -n -p66 http://www.w3.org/hypertext/Copyright.html \
> $(WWW)/Copyright.txt
/mnt/www0/pub/www/Copyright.txt: $(WWW)/Copyright.txt
	cp $? $@
