# This directory contains the main programs used to test classes in the RodCrate directory.
# At present, the programs are:
#    EchoTest - sends an ECHO primitive to the MDSP and prints the result
#    Echo2Test - sends a primlist of three ECHO primitives to the MDSP and prints the result
#    LedTest - Flashes a slave LED via a primitive sent to the slave from the MDSP
#    DspDump - dumps a listing of the contents of a block of any DSP's memory space. The 
#              user selects the DSP and the address reange from prompts.
#    MdspDump - Like DspDump, but works only for the MDSP address space.
#    TimModuleTest - Test the TimModule class.
#
LDPATH = -L$(SCTPIXEL_DAQ_ROOT)/../VmeInterface -L$(DAQ_SW_DIR)/lib -L$(DAQ_LIB_DIR) \
         -L$(SCTPIXEL_DAQ_ROOT)/RodCrate
LDLIBS = -lRodModule -lTimModule -lBocCard -lRCCVmeInterface -lpthread -lBaseException \
         -lvme_rcc -lcmem_rcc -lio_rcc -lrcc_error
CFLAGS = -c -g -Wall -DI_AM_LINUX_HOST -D$(ROD_TYPE) -I$(SCTPIXEL_DAQ_ROOT)/CommonWithDsp \
         -I$(SCTPIXEL_DAQ_ROOT)/CommonForHosts -I$(SCTPIXEL_DAQ_ROOT)/RodCrate \
         -I$(SCTPIXEL_DAQ_ROOT)/../VmeInterface \
         -I$(DAQ_SW_DIR)/include -I$(DAQ_INCL_DIR)
PROGS  = EchoTest Echo2Test LedTest MdspDump DspDump TimModuleTest BocTest \
         FlashTest FlashLoad FlashDump FlashSave MdspFlashLoad MdspFlashSave TouchRod SlaveEchoTest \
         MdspPeek MdspSnap DspPeek TextPeek RegPeek SlvSnap SlvMemPeek AddressList

ifneq ($(POSIX_ROOT),)
LDPATH += -L$(POSIX_ROOT)
LDLIBS += -lPPosix
CFLAGS += -I$(POSIX_ROOT)
PROGS += EchoTestThread
endif
         
all: $(PROGS)

EchoTest.o: EchoTest.cxx
	g++ $(CFLAGS) -o EchoTest.o EchoTest.cxx

EchoTest: EchoTest.o ../RodCrate/libRodModule.so
	g++ -o EchoTest -g EchoTest.o $(SCTPIXEL_DAQ_ROOT)/../VmeInterface/VmeModule.o $(LDPATH) $(LDLIBS)   

Echo2Test.o: Echo2Test.cxx
	g++ $(CFLAGS) -o Echo2Test.o Echo2Test.cxx

Echo2Test: Echo2Test.o ../RodCrate/libRodModule.so
	g++ -o Echo2Test -g Echo2Test.o $(SCTPIXEL_DAQ_ROOT)/../VmeInterface/VmeModule.o $(LDPATH) $(LDLIBS)   

EchoTestThread.o: EchoTestThread.cxx
	g++ $(CFLAGS) -o EchoTestThread.o EchoTestThread.cxx

EchoTestThread: EchoTestThread.o ../RodCrate/libRodModule.so
	g++ -o EchoTestThread -g EchoTestThread.o $(SCTPIXEL_DAQ_ROOT)/../VmeInterface/VmeModule.o $(LDPATH) $(LDLIBS)   

SlaveEchoTest.o: SlaveEchoTest.cxx
	g++ $(CFLAGS) -o SlaveEchoTest.o SlaveEchoTest.cxx

SlaveEchoTest: SlaveEchoTest.o ../RodCrate/libRodModule.so
	g++ -o SlaveEchoTest -g SlaveEchoTest.o $(SCTPIXEL_DAQ_ROOT)/../VmeInterface/VmeModule.o $(LDPATH) $(LDLIBS)   

LedTest.o: LedTest.cxx
	g++ $(CFLAGS) -o LedTest.o LedTest.cxx

LedTest: LedTest.o ../RodCrate/libRodModule.so
	g++ -o LedTest -g LedTest.o $(SCTPIXEL_DAQ_ROOT)/../VmeInterface/VmeModule.o $(LDPATH) $(LDLIBS)   

MdspDump.o: MdspDump.cxx
	g++ $(CFLAGS) -o MdspDump.o MdspDump.cxx

MdspDump: MdspDump.o ../RodCrate/libRodModule.so
	g++ -o MdspDump -g MdspDump.o $(SCTPIXEL_DAQ_ROOT)/../VmeInterface/VmeModule.o $(LDPATH) $(LDLIBS)   

DspDump.o: DspDump.cxx 
	g++ $(CFLAGS) -o DspDump.o DspDump.cxx

DspDump: DspDump.o ../RodCrate/libRodModule.so
	g++ -o DspDump -g DspDump.o $(SCTPIXEL_DAQ_ROOT)/../VmeInterface/VmeModule.o $(LDPATH) $(LDLIBS)   

TimModuleTest.o: TimModuleTest.cxx
	g++ $(CFLAGS) -o TimModuleTest.o TimModuleTest.cxx

TimModuleTest: TimModuleTest.o ../RodCrate/libRodModule.so ../RodCrate/libTimModule.so
	g++ -o TimModuleTest -g TimModuleTest.o $(LDPATH) $(LDLIBS)

BocTest.o: BocTest.cxx
	g++ $(CFLAGS) -o BocTest.o BocTest.cxx

BocTest: BocTest.o ../RodCrate/libRodModule.so ../RodCrate/libBocCard.so
	g++ -o BocTest -g BocTest.o ../RodCrate/BocCard.o $(LDPATH) $(LDLIBS)

FlashTest.o: FlashTest.cxx
	g++ $(CFLAGS) -o FlashTest.o FlashTest.cxx

FlashTest: FlashTest.o ../RodCrate/libRodModule.so
	g++ -o FlashTest -g FlashTest.o $(LDPATH) $(LDLIBS)

FlashLoad.o: FlashLoad.cxx
	g++ $(CFLAGS) -o FlashLoad.o FlashLoad.cxx

FlashLoad: FlashLoad.o ../RodCrate/libRodModule.so
	g++ -o FlashLoad -g FlashLoad.o $(LDPATH) $(LDLIBS)

FlashDump.o: FlashDump.cxx
	g++ $(CFLAGS) -o FlashDump.o FlashDump.cxx

FlashDump: FlashDump.o ../RodCrate/libRodModule.so
	g++ -o FlashDump -g FlashDump.o $(LDPATH) $(LDLIBS)

FlashSave.o: FlashSave.cxx
	g++ $(CFLAGS) -o FlashSave.o FlashSave.cxx

FlashSave: FlashSave.o ../RodCrate/libRodModule.so
	g++ -o FlashSave -g FlashSave.o $(LDPATH) $(LDLIBS)

MdspFlashLoad.o: MdspFlashLoad.cxx
	g++ $(CFLAGS) -o MdspFlashLoad.o MdspFlashLoad.cxx

MdspFlashLoad: MdspFlashLoad.o ../RodCrate/libRodModule.so
	g++ -o MdspFlashLoad -g MdspFlashLoad.o $(LDPATH) $(LDLIBS)

MdspFlashSave.o: MdspFlashSave.cxx
	g++ $(CFLAGS) -o MdspFlashSave.o MdspFlashSave.cxx

MdspFlashSave: MdspFlashSave.o ../RodCrate/libRodModule.so
	g++ -o MdspFlashSave -g MdspFlashSave.o $(LDPATH) $(LDLIBS)

TouchRod.o: TouchRod.cxx
	g++ $(CFLAGS) -o TouchRod.o TouchRod.cxx

TouchRod: TouchRod.o ../RodCrate/libRodModule.so
	g++ -o TouchRod -g TouchRod.o $(LDPATH) $(LDLIBS)

MdspPeek.o: MdspPeek.cxx
	g++ $(CFLAGS) -o MdspPeek.o MdspPeek.cxx

MdspPeek: MdspPeek.o ../RodCrate/libRodModule.so
	g++ -o MdspPeek -g MdspPeek.o $(SCTPIXEL_DAQ_ROOT)/../VmeInterface/VmeModule.o $(LDPATH) $(LDLIBS)   

MdspSnap.o: MdspSnap.cxx
	g++ $(CFLAGS) -o MdspSnap.o MdspSnap.cxx

MdspSnap: MdspSnap.o ../RodCrate/libRodModule.so
	g++ -o MdspSnap -g MdspSnap.o $(SCTPIXEL_DAQ_ROOT)/../VmeInterface/VmeModule.o $(LDPATH) $(LDLIBS)   

DspPeek.o: DspPeek.cxx
	g++ $(CFLAGS) -o DspPeek.o DspPeek.cxx

DspPeek: DspPeek.o ../RodCrate/libRodModule.so
	g++ -o DspPeek -g DspPeek.o $(SCTPIXEL_DAQ_ROOT)/../VmeInterface/VmeModule.o $(LDPATH) $(LDLIBS)   

TextPeek.o: TextPeek.cxx
	g++ $(CFLAGS) -o TextPeek.o TextPeek.cxx

TextPeek: TextPeek.o ../RodCrate/libRodModule.so
	g++ -o TextPeek -g TextPeek.o $(SCTPIXEL_DAQ_ROOT)/../VmeInterface/VmeModule.o $(LDPATH) $(LDLIBS)   

RegPeek.o: RegPeek.cxx
	g++ $(CFLAGS) -o RegPeek.o RegPeek.cxx

RegPeek: RegPeek.o ../RodCrate/libRodModule.so
	g++ -o RegPeek -g RegPeek.o $(SCTPIXEL_DAQ_ROOT)/../VmeInterface/VmeModule.o $(LDPATH) $(LDLIBS)   

XmlTest.o: XmlTest.cxx
	g++ $(CFLAGS) -o XmlTest.o XmlTest.cxx

XmlTest: XmlTest.o ../RodCrate/libRodModule.so
	g++ -o XmlTest -g XmlTest.o $(SCTPIXEL_DAQ_ROOT)/../VmeInterface/VmeModule.o $(LDPATH) $(LDLIBS)   

SlvSnap.o: SlvSnap.cxx
	g++ $(CFLAGS) -o SlvSnap.o SlvSnap.cxx

SlvSnap: SlvSnap.o ../RodCrate/libRodModule.so
	g++ -o SlvSnap -g SlvSnap.o $(SCTPIXEL_DAQ_ROOT)/../VmeInterface/VmeModule.o $(LDPATH) $(LDLIBS)   

SlvMemPeek.o: SlvMemPeek.cxx
	g++ $(CFLAGS) -o SlvMemPeek.o SlvMemPeek.cxx

SlvMemPeek: SlvMemPeek.o ../RodCrate/libRodModule.so
	g++ -o SlvMemPeek -g SlvMemPeek.o $(SCTPIXEL_DAQ_ROOT)/../VmeInterface/VmeModule.o $(LDPATH) $(LDLIBS)   

AddressList.o: AddressList.cxx
	g++ $(CFLAGS) -o AddressList.o AddressList.cxx

AddressList: AddressList.o ../RodCrate/libRodModule.so
	g++ -o AddressList -g AddressList.o $(SCTPIXEL_DAQ_ROOT)/../VmeInterface/VmeModule.o $(LDPATH) $(LDLIBS)   


.PHONY : clean
clean:
	-rm *.o *~ core $(PROGS)

SRCS=$(wildcard *.cxx)
include $(SRCS:.cxx=.d)

%.d: %.cxx
	$(SHELL) -ec '$(CC) -MM $(CFLAGS) $< | sed '\''s%\($(*F)\)\.o[ :]*%$(*D)/\1.o $@ : %g'\'' > $@; [ -s $@ ] || rm -f $@' && echo
