# $Id: Makefile,v 1.9 2001/06/27 18:34:58 supermathie Exp $
#
# Makefile for Spong (Version 2.6f and up).
#
# Presently you can put this in the directory with the build script
# and run:
#
#	make server	
#	make client SYSTEM=OS
#
# and if ./config/spong.conf.OS exists it will build a spong client
# installation in ./OS-client.
#
# Default for SYSTEM is defined in config.mk

include config.mk
include spong.mk

#---- Targets

default:	help

help:
#	@echo "Try 'make client SYSTEM=<OS>' where <OS> is in the list: "
#	@echo "	$(OS)"
#	@echo "Default OS is $(SYSTEM)"

	@echo "'make server'  installs the server for the default platform"
	@echo "               defined in config.mk"
	@echo
	@echo "'make client'  installs the client for the default platform"
	@echo "               in ./client-<OS>"
	@echo
	@echo "'make client SYSTEM=<OS>'  will build clients for other platforms"

#---- Clients [ this is incredibly ugly, GH. ]
#
# A better way might be to use a client.mk include file :) and use the
# server part below ...  We'd need to redefine the lists above.
#

server: beroot bindir etcdir libdir webdir cgidir tmpdir vardir

beroot:
	@[ `whoami` = root ] || false
	@echo " Yer root"

client:	$(SYSTEM)-client

$(SYSTEM)-test:
	@[ -f ./config/spong.conf.$(SYSTEM) ] || \
	( echo "No such system $(SYSTEM)" && false )
	mkdir -p $(SYSTEM)-client/lib/Spong

$(SYSTEM)-client:	$(SYSTEM)-test clientdir clientlib clientetc clientbin
	-find $(SYSTEM)-client -name CVS -exec rm -rf '{}' \;

clientdir:	$(SYSTEM)-client/lib/Spong 
	[ -d ./$(SYSTEM)-client/lib/Spong ] ||  \
	   mkdir -p ./$(SYSTEM)-client/lib/Spong
	[ -d  ./$(SYSTEM)-client/etc ] || mkdir ./$(SYSTEM)-client/etc
	[ -d ./$(SYSTEM)-client/bin ] || mkdir ./$(SYSTEM)-client/bin
	[ -d ./$(SYSTEM)-client/tmp ] || mkdir ./$(SYSTEM)-client/tmp

clientlib:
	mkdir -p ./$(SYSTEM)-client/lib/Spong
	for f in $(CLIENT_LIBS) ; do cp ./src/lib/Spong/$$f $(SYSTEM)-client/lib/Spong/; done
	cp -rp ./src/lib/Spong/Client $(SYSTEM)-client/lib/Spong/
	chmod 644 $(SYSTEM)-client/lib/Spong/*
	chmod 755 $(SYSTEM)-client/lib/Spong/Client
	chown -R $(ADMUSER) ./$(SYSTEM)-client/lib
	chgrp -R $(ADMGROUP) ./$(SYSTEM)-client/lib

clientbin:	$(SYSTEM)-client/bin/spong-client

$(SYSTEM)-client/bin/%:	./src/%.pl
	sed -e "s%@@PERL@@%$(PERL)%g" \
	-e "s%@@BINDIR@@%$(BINDIR)%g" \
	-e "s%@@LIBDIR@@%$(LIBDIR)%g" \
	-e "s%@@ETCDIR@@%$(ETCDIR)%g" \
	-e "s%@@WWWDIR@@%$(WWWDIR)%g" \
	$< > $@
	chmod +x ./$(SYSTEM)-client/bin/*
	chown $(ADMUSER) ./$(SYSTEM)-client/bin/*
	chgrp $(ADMGROUP) ./$(SYSTEM)-client/bin/*

clientetc: ./config/spong.conf
	for f in $(CCONFIGS) ; do cp ./config/$$f $(SYSTEM)-client/etc; done
	cat ./config/spong.conf.$(SYSTEM) >> ./$(SYSTEM)-client/etc/spong.conf
	chown -R $(ADMUSER) ./$(SYSTEM)-client/etc
	chgrp -R $(ADMGROUP) ./$(SYSTEM)-client/etc

client-install:


# Server [ much nicer :) ]

cvsclean:
	find $(BINDIR) $(ETCDIR) $(LIBDIR) $(CGIDIR) $(WWWDIR) \
	-type d -name CVS -exec rm -rf '{}' \;

# --- daemons ---

bindir:		$(BINDIR) daemons

daemons:	$(DAEMONS)

$(BINDIR):
	mkdir -p $@

daemons:	$(DAEMONS)

$(BINDIR)/%:	./src/%.pl
	sed -e "s%@@PERL@@%$(PERL)%g" \
	-e "s%@@BINDIR@@%$(BINDIR)%g" \
	-e "s%@@LIBDIR@@%$(LIBDIR)%g" \
	-e "s%@@ETCDIR@@%$(ETCDIR)%g" \
	-e "s%@@WWWDIR@@%$(WWWDIR)%g" \
	$< > $@
	chmod -R 755 $(BINDIR)
	chown -R $(ADMUSER) $(BINDIR)
	chgrp -R $(ADMGROUP) $(BINDIR)

# --- configs ---

etcdir:		$(ETCDIR) configs etcown

$(ETCDIR):
	mkdir -p $@
	chmod 751 $(ETCDIR)
etcown:
	chown -R $(ADMUSER) $(ETCDIR)
	chgrp -R $(ADMGROUP) $(ETCDIR)

configs:	$(CONFIGS)

$(ETCDIR)/spong.conf:	./config/spong.conf ./config/spong.conf.$(SYSTEM)
	cat $< > $@.dist
	cat ./config/spong.conf.$(SYSTEM) >> $@.dist
	chmod 644 $@.dist
	[ -f $@ ] || mv $@.dist $@
	touch $@

$(ETCDIR)/%:	./config/%
	cat $< > $@.dist
	[ -f $@ ] || mv $@.dist $@
	touch $@

./config/spong.conf:	./config/spong.conf.in
	./utils/mkTarg $< > ./spong.conf.mk
	$(MAKE) -f ./spong.conf.mk
	rm -f ./spong.conf.mk

# --- library ---

libdir:		$(LIBDIR) library

$(LIBDIR):
	mkdir -p $@

library:	$(LIBDIR)/Spong

$(LIBDIR)/Spong:	./src/lib/Spong
	cp -rp ./src/lib/Spong $(LIBDIR)/Spong/
	chmod -R ugo+rwX,go-w $(LIBDIR)/Spong/
	chown -R $(ADMUSER) $(LIBDIR)
	chgrp -R $(ADMGROUP) $(LIBDIR)

# --- webpages ---

webdir:		$(WWWDIR) webpages

$(WWWDIR):
	mkdir -p $@
	mkdir $@/html
	chown $(WEBUSER) $@ $@/html
	chgrp $(WEBGROUP) $@ $@/html

webpages:	$(WEBDIRS) $(WEBPAGES)

# $(WEBDIRS). Must create WEBDIR first and other directories must be
# Subdirectories.
$(WWWDIR)/docs:	./www/docs
	cp -rp $< $@
	chmod -R ugo+rwX,go-w $@
	chown -R $(WEBUSER) $@
	chgrp -R $(WEBGROUP) $@

$(WWWDIR)/gifs:	./www/gifs
	cp -rp $< $@
	chmod -R ugo+rwX,go-w $@
	chown -R $(WEBUSER) $@
	chgrp -R $(WEBGROUP) $@

$(WWWDIR)/html/%:	./www/html/%
	sed -e "s%__DIR__%$(DOCROOT)%g" $< > $@
	chmod ugo+rwX,go-w $@
	chown $(WEBUSER) $@
	chgrp $(WEBGROUP) $@

# --- cgiscripts ---

cgidir:		$(CGIDIR) cgiscripts cgiown

$(CGIDIR):
	mkdir -p $@
cgiown:
	chown -R $(ADMUSER) $(CGIDIR)
	chgrp -R $(ADMGROUP) $(CGIDIR)

cgiscripts:	$(CGISCRIPTS)

$(CGIDIR)/%:	./src/%.pl
	sed -e "s%@@PERL@@%$(PERL)%g" \
	-e "s%@@BINDIR@@%$(BINDIR)%g" \
	-e "s%@@LIBDIR@@%$(LIBDIR)%g" \
	-e "s%@@ETCDIR@@%$(ETCDIR)%g" \
	-e "s%@@WWWDIR@@%$(WWWDIR)%g" \
	-e "s%@@VER@@%$(SPONGVER)%g" \
	$< > $@
	chmod 0755 $@
	chown $(WEBUSER) $@
	chgrp $(WEBGROUP) $@

# --- misc install directories ---

tmpdir:	$(TMPDIR)

$(TMPDIR):
	[ -d $@ ] || mkdir -p $@
	chmod ugo+rwX,go-w $@
	chown $(ADMUSER) $@
	chgrp $(ADMGROUP) $@

vardir:	$(VARDIR) $(VARDIR)/archives $(DBDIR)

$(VARDIR):
	[ -d $@ ] || mkdir -p $@
	chmod ugo+rwX,go-w $@
	chown $(ADMUSER) $@
	chgrp $(ADMGROUP) $@

$(DBDIR):
	[ -d $@ ] || mkdir -p $@
	chmod ugo+rwX,go-w $@
	chown $(ADMUSER) $@
	chgrp $(ADMGROUP) $@

$(VARDIR)/archives:
	[ -d $@ ] || mkdir -p $@
	chmod ugo+rwX,go-w $@
	chown $(ADMUSER) $@
	chgrp $(ADMGROUP) $@
