#############################################################################
#	Makefile for the Master Name Server
#############################################################################
BIN   	= rcServer

export WRAPPER_ROOT = $(shell cd ../../SACE-3.1; pwd)
export ARCH = $(shell uname)
export CODA_CXX = $(shell cd ../..;pwd)


SUBDIRS = Components \
	Constants \
	Network \
	Transitioners 

OBJS	= codaIntHash.o codaSlist.o \
	codaStrHash.o rcMsg.o \
	rcServer.o rcServerLocater.o rcSvcLocaterRep.o \
	rcSvcInfoFinder.o \
	daqData.o daqDataManager.o \
	daqDataWriter.o daqDataTrigger.o daqNetData.o \
	daqArbStruct.o daqRunTypeStruct.o \
	daqCompBootStruct.o daqMonitorStruct.o daqArbStructFactory.o \
	rcSignalHandler.o ./Components/rcTclInterface.o

#-D_CODA_DEBUG

include Makefile.common

EXTRA_INCLUDES = -I. -I./include -I../Variables -I../Common

all: $(BIN)
install: $(BIN)
	cp -f $(BIN) $(CODA_BIN)
	chmod ugo+rx $(CODA_BIN)/$(BIN)
	cp -f Components/coda_activate.tcl $(CODA_BIN)
	chmod ugo+rx $(CODA_BIN)/coda_activate.tcl


$(BIN): mksubdirs $(OBJS)
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -o $@ $(OBJS) .objs/*.o $(LDLIBS)

mksubdirs:
	@for dir in $(SUBDIRS); \
	do \
	cd $$dir; \
	$(MAKE) ARCH="$(ARCH)" all; \
	cd ..; \
	done 

clean:
	@for dir in $(SUBDIRS); \
	do \
	cd $$dir; \
	$(MAKE) ARCH="$(ARCH)" clean; \
	cd ..; \
	done
	rm -rf *.o *.a core *~ ptrepository .objs $(BIN)

#############################################################################
rcServer.o: rcServer.cc
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -c rcServer.cc -o $@

rcSignalHandler.o: rcSignalHandler.cc
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -c rcSignalHandler.cc -o $@

codaIntHash.o: ../Common/codaIntHash.cc
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -c ../Common/codaIntHash.cc -o $@

codaSlist.o: ../Common/codaSlist.cc
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -c ../Common/codaSlist.cc -o $@

codaStrHash.o: ../Common/codaStrHash.cc
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -c ../Common/codaStrHash.cc -o $@

rcMsg.o: ../Common/rcMsg.cc
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -c ../Common/rcMsg.cc -o $@

rcServerLocater.o: ../Common/rcServerLocater.cc
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -c ../Common/rcServerLocater.cc -o $@

rcSvcLocaterRep.o: ../Common/rcSvcLocaterRep.cc
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -c ../Common/rcSvcLocaterRep.cc -o $@

rcSvcInfoFinder.o: ../Common/rcSvcInfoFinder.cc
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -c ../Common/rcSvcInfoFinder.cc -o $@

daqData.o: ../Variables/daqData.cc
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -c ../Variables/daqData.cc -o $@	

daqDataManager.o: ../Variables/daqDataManager.cc
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -c ../Variables/daqDataManager.cc -o $@

daqDataWriter.o: ../Variables/daqDataWriter.cc
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -c ../Variables/daqDataWriter.cc -o $@

daqDataTrigger.o: ../Variables/daqDataTrigger.cc
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -c ../Variables/daqDataTrigger.cc -o $@

daqNetData.o: ../Variables/daqNetData.cc
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -c ../Variables/daqNetData.cc -o $@

daqArbStruct.o: ../Variables/daqArbStruct.cc
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -c ../Variables/daqArbStruct.cc -o $@

daqCompBootStruct.o: ../Variables/daqCompBootStruct.cc
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -c ../Variables/daqCompBootStruct.cc -o $@

daqMonitorStruct.o: ../Variables/daqMonitorStruct.cc
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -c ../Variables/daqMonitorStruct.cc -o $@

daqRunTypeStruct.o: ../Variables/daqRunTypeStruct.cc
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -c ../Variables/daqRunTypeStruct.cc -o $@


daqArbStructFactory.o: ../Variables/daqArbStructFactory.cc
	rm -f $@
	$(CXX) $(INCLUDES) $(C++FLAGS) -c ../Variables/daqArbStructFactory.cc -o $@
