#
# Makefile
#
# Copyright 2000, 2002 by Anthony Howe.  All rights reserved.
#

.POSIX:

########################################################################
### Pick one that best suits your system.
########################################################################

#
# Apache source tree directory.
#
APACHEDIR=/usr/local/src/apache_1.3.22

#
# More strict ownership controls. Apache child process will die after
# each request so that the new Apache child process can change user/group
# ID between requests. 
#
DEF=-DSET_PROCESS_OWNER=REAL_OWNER
INC=-I`$(APXS) -q INCLUDEDIR`
LIB=

#
# For systems that support seteuid() and setegid(). Apache child process 
# can remain alive between requests. This module will then toggle between
# root and the per request user/group id. This is more efficient, but
# raises yet further secuirty concerns should the Apache child process
# become compromised.
#
#DEF=-DSET_PROCESS_OWNER=EFFECTIVE_OWNER
#INC=-I`$(APXS) -q INCLUDEDIR`
#LIB=

#
#
#
#DEF=-DIGNORE_SYMLINK_OWNER
#INC=-I`$(APXS) -q INCLUDEDIR`
#LIB=

########################################################################
### No further configuration beyond this point.
########################################################################

APXS=apxs
APACHECTL=apachectl
CC=`$(APXS) -q CC`
CFLAGS=`$(APXS) -q CFLAGS`
CFLAGS_SHLIB=`$(APXS) -q CFLAGS_SHLIB`

.SUFFIXES:

O = .o
R = .lo
A = .a

.SUFFIXES: .c $O $R $A

MODULE	= become
STATIC = lib$(MODULE)$A
DYNAMIC = lib$(MODULE)$R$A

MODULEDIR = $(APACHEDIR)/src/modules/$(MODULE)

# Static .c to .o
.c$O:
	@echo $(CC) $(CFLAGS) $(DEF) $(INC) -c $<
	$(CC) $(CFLAGS) $(DEF) $(INC) -c $<
	$(AR) $(ARFLAGS) $(STATIC) $@

# Dynamic .c to relocatable .o
.c$R:
	$(CC) $(CFLAGS) $(CFLAGS_SHLIB) $(DEF) $(INC) -o $@ -c $<
	$(AR) $(ARFLAGS) $(DYNAMIC) $@
	
all:
	@echo
	@echo '***************************************************************'
	@echo 'Please verify the configuration at the top of the Makefile then'
	@echo 'type either:'
	@echo
	@echo '  make build-static'
	@echo
	@echo 'or'
	@echo
	@echo '  make build-dynamic'
	@echo
	@echo '***************************************************************'
	@echo

settings:
	@uname -a
	@echo "CC=`$(APXS) -q CC`"
	@echo "CFLAGS=`$(APXS) -q CFLAGS`"
	@echo "CFLAGS_SHLIB=`$(APXS) -q CFLAGS_SHLIB`"
	@echo "DEF=$(DEF)"
	@echo "INC=`$(APXS) -q INCLUDEDIR`"
	@echo "LIB=$(LIB)"

build-static: $(STATIC)

$(STATIC): mod_$(MODULE)$O

mod_$(MODULE)$O: mod_$(MODULE).c
	$(CC) $(CFLAGS) $(DEF) $(INC) -c $*.c
	$(AR) $(ARFLAGS) $(STATIC) $@

build-dynamic: mod_$(MODULE).so

mod_$(MODULE).so: mod_$(MODULE).c
	$(APXS) $(DEF) $(INC) $(LIB) -c -o $@ mod_$(MODULE).c

install:
	@echo
	@echo '***************************************************************'
	@echo 'Please verify the configuration at the top of the Makefile then'
	@echo 'type either:'
	@echo
	@echo '  make install-static'
	@echo
	@echo 'or'
	@echo
	@echo '  make install-dynamic'
	@echo
	@echo '***************************************************************'
	@echo

$(MODULEDIR):
	mkdir $(MODULEDIR)

$(MODULEDIR)/Makefile: $(MODULEDIR) $(MODULE).mk
	cp -f $(MODULE).mk $@
	
$(MODULEDIR)/$(STATIC): $(MODULEDIR) $(STATIC)
	cp -f $(STATIC) $(MODULEDIR)


install-static: $(MODULEDIR)/$(STATIC) $(MODULEDIR)/Makefile
	@echo
	@echo '***************************************************************'
	@cat notes-static.txt
	@cat notes-conf.txt
	@echo '***************************************************************'
	@cat notes-support.txt
	@echo
	
install-dynamic: build-dynamic
	$(APXS) -i -a -n '$(MODULE)' mod_$(MODULE).so
	@echo
	@echo '***************************************************************'
	@cat notes-dynamic.txt
	@cat notes-conf.txt
	@echo '***************************************************************'
	@cat notes-support.txt
	@echo

clean:
	-rm -f ./*$O ./*$R $(STATIC) $(DYNAMIC) mod_$(MODULE).so
	
distclean: clean

reload: stop start

start:
	$(APACHECTL) start
stop:
	$(APACHECTL) stop


