#
# Makefile for TACO source code distribution
# 
# Needs GNU make (gmake) to be available. When called
# with the target "all" it will make all TACO system
# processes (Manager, database server + message server)
# plus all TACO basic libraries (DSAPI, DBAPI and DSXDR)
# for the configured platform. Needs the file .configured
# with the necessary gmake variables positioned. To
# create this file (.configured) use the configure script
# in this directory and answer the questions.
#
# Targets supported by Makefile -
#
# 	all 
# 	install 
#	clean
#	clobber
#
# Define directories in which to call make
#
MANAGER=./dserver/system/manager/src
MSGSRVR=./dserver/system/msg/src
DBSRVR=./dbase/server/src
DBTOOLS=./dbase/tools/src
DSAPI=./dserver/system/api/apilib/src
DBAPI=./dbase/src
DSXDR=./dserver/system/xdr/src
DCAPI=./dserver/system/dc/src
DCMEM=./dserver/system/dc/server/library/src
DCSVR=./dserver/system/dc/server/src
DCTOOLS=./dserver/system/dc/server/tools/src
GDBM=./gdbm-1.7.3
#
MAKEARG=`cat ./.config`
#
all: 	includes gdbm dsapi dsapi++ dsxdr dcapi dbapi manager msgsrvr \
	dbsrvr dbtools dcmem dcsvr dctools

manager :
	cp ./.config $(MANAGER)
	cd $(MANAGER); make $(MAKEARG) all

msgsrvr :
	cp ./.config $(MSGSRVR)
	cd $(MSGSRVR); make $(MAKEARG) all

dbsrvr :
	cp ./.config $(DBSRVR)
	cd $(DBSRVR); make $(MAKEARG) all

dbtools :
	cp ./.config $(DBTOOLS)
	cd $(DBTOOLS); make $(MAKEARG) all

dsapi :
	cp ./.config $(DSAPI)
	cd $(DSAPI); make $(MAKEARG) all all_sl install install_sl

dsapi++ :
	cp ./.config $(DSAPI)
	cd $(DSAPI); make -f Makefile++ $(MAKEARG) all all_sl install install_sl

dbapi :
	cp ./.config $(DBAPI)
	cd $(DBAPI); make $(MAKEARG) all all_sl install install_sl

dsxdr :
	cp ./.config $(DSXDR)
	cd $(DSXDR); make $(MAKEARG) all all_sl install install_sl

dcapi :
	cp ./.config $(DCAPI)
	cd $(DCAPI); make $(MAKEARG) all all_sl install install_sl

dcmem :
	cp ./.config $(DCMEM)
	cd $(DCMEM); make $(MAKEARG) all install 

dcsvr :
	cp ./.config $(DCSVR)
	cd $(DCSVR); make $(MAKEARG) all install 

dctools :
	cp ./.config $(DCTOOLS)
	cd $(DCTOOLS); make $(MAKEARG) all install 

includes :
	cd $(DSAPI)/../include; cp -f *.h $(DSHOME)/include
	mv $(DSHOME)/include/ApiP.h $(DSHOME)/include/private
	cd $(DSAPI)/../../../../classes/main/include;cp -f *.h $(DSHOME)/include
	mv $(DSHOME)/include/DevServerP.h $(DSHOME)/include/private
	cd $(DBAPI)/../include; cp -f *.h $(DSHOME)/include
	cd $(DSXDR)/../include; cp -f *.h $(DSHOME)/include
	cd $(DSAPI)/../../admin/include; cp -f *.h $(DSHOME)/include
	cd $(DSAPI)/../../cmds_err/include; cp -f *.h $(DSHOME)/include
	cd $(DSAPI)/../../../dc/include; cp -f *.h $(DSHOME)/include
	cd $(DSAPI)/../../../../classes++/device/include; cp -f *.H $(DSHOME)/include++
	chmod 664 $(DSHOME)/include/*.h
	chmod 664 $(DSHOME)/include++/*.H
	chmod 664 $(DSHOME)/include/private/*.h

gdbm :
	cd $(GDBM); make all
	cd $(GDBM); make install install-compat

install: 
	cp ./.config $(DSAPI)
	cd $(DSAPI); make $(MAKEARG) install install_sl
	cp ./.config $(DSAPI)
	cd $(DSAPI); make -f Makefile++ $(MAKEARG) install install_sl
	cp ./.config $(DBAPI)
	cd $(DBAPI); make $(MAKEARG) all all_sl install install_sl
	cp ./.config $(DSXDR)
	cd $(DSXDR); make $(MAKEARG) all all_sl install install_sl
	cp ./.config $(DCAPI)
	cd $(DCAPI); make $(MAKEARG) all all_sl install install_sl
	cp ./.config $(MANAGER)
	cd $(MANAGER); make $(MAKEARG) install
	cp ./.config $(MSGSRVR)
	cd $(MSGSRVR); make $(MAKEARG) install
	cp ./.config $(DBSRVR)
	cd $(DBSRVR); make $(MAKEARG) install
	cp ./.config $(DBTOOLS)
	cd $(DBTOOLS); make $(MAKEARG) install
	cp ./.config $(DCMEM)
	cd $(DCMEM); make $(MAKEARG) install
	cp ./.config $(DCSVR)
	cd $(DCSVR); make $(MAKEARG) install
	cp ./.config $(DCTOOLS)
	cd $(DCTOOLS); make $(MAKEARG) install

test:
	cp ./.config ./dserver/classes/instverify/src
	cd ./dserver/classes/instverify/src; make $(MAKEARG) all
	cp ./.config ./dserver/classes++/powersupply/src
	cd ./dserver/classes++/powersupply/src; make $(MAKEARG) all
	cp ./.config ./dserver/classes++/powersupply/ag/src
	cd ./dserver/classes++/powersupply/ag/src; make $(MAKEARG) all
	cp .taco_env etc/
	cd etc; make test

clean:
	cp ./.config $(MANAGER)
	cd $(MANAGER); make $(MAKEARG) clean
	cp ./.config $(MSGSRVR)
	cd $(MSGSRVR); make $(MAKEARG) clean
	cp ./.config $(DBSRVR)
	cd $(DBSRVR); make $(MAKEARG) clean
	cp ./.config $(DBTOOLS)
	cd $(DBTOOLS); make $(MAKEARG) clean
	cp ./.config $(DSAPI)
	cd $(DSAPI); make $(MAKEARG) clean
	cd $(DSAPI); make -f Makefile++ $(MAKEARG) clean
	cp ./.config $(DBAPI)
	cd $(DBAPI); make $(MAKEARG) clean
	cp ./.config $(DSXDR)
	cd $(DSXDR); make $(MAKEARG) clean
	cp ./.config $(DCAPI)
	cd $(DCAPI); make $(MAKEARG) clean
	cp ./.config $(DCMEM)
	cd $(DCMEM); make $(MAKEARG) clean
	cp ./.config $(DCSVR)
	cd $(DCSVR); make $(MAKEARG) clean
	cp ./.config $(DCTOOLS)
	cd $(DCTOOLS); make $(MAKEARG) clean

clobber:
	cp ./.config $(MANAGER)
	cd $(MANAGER); make $(MAKEARG) clobber
	cp ./.config $(MSGSRVR)
	cd $(MSGSRVR); make $(MAKEARG) clobber
	cp ./.config $(DBSRVR)
	cd $(DBSRVR); make $(MAKEARG) clobber
	cp ./.config $(DBTOOLS)
	cd $(DBTOOLS); make $(MAKEARG) clobber
	cp ./.config $(DSAPI)
	cd $(DSAPI); make $(MAKEARG) clobber
	cd $(DSAPI); make -f Makefile++ $(MAKEARG) clobber
	cp ./.config $(DBAPI)
	cd $(DBAPI); make $(MAKEARG) clobber
	cp ./.config $(DSXDR)
	cd $(DSXDR); make $(MAKEARG) clobber
	cp ./.config $(DCAPI)
	cd $(DCAPI); make $(MAKEARG) clobber
	cp ./.config $(DCMEM)
	cd $(DCMEM); make $(MAKEARG) clobber
	cp ./.config $(DCSVR)
	cd $(DCSVR); make $(MAKEARG) clobber
	cp ./.config $(DCTOOLS)
	cd $(DCTOOLS); make $(MAKEARG) clobber
