#Variables
include $(SCT_DAQ_ROOT)/build/Makefile.include
#Commands
include $(SCT_DAQ_ROOT)/build/Makefile.commands

#Lists of source files
BINS := FilePublisher StressFilePublisher
HDRS := $(wildcard *.h)
SRCS := $(wildcard *.cpp)
OBJS := $(filter-out $(BINS:=.o),$(SRCS:.cpp=.o))
INSTALLHDRS := ScanResultWriter.h scan.h dataTypes.h

#Flags
LDLIBS += -lSct
CPPFLAGS += $(ROOTINCLUDES)

#Phony Targets
.PHONY: all c++ java install clean install_lib install_bin install_headers distclean

all: c++

c++: libScanResultWriter.so $(BINS) install

#Do nothing
java:

install: install_lib install_bin install_headers

distclean: clean
	-rm -f *.d

clean:
	-rm -f *.o *.so $(BINS)

install_bin: $(BinDir)/FilePublisher

install_lib: $(LibDir)/libScanResultWriter.so

install_headers: $(IncludeDir)/ScanResultWriter $(addprefix $(IncludeDir)/ScanResultWriter/,$(INSTALLHDRS))

#Real targets
libScanResultWriter.so: $(OBJS)
	$(LIBCMD)

$(BinDir)/FilePublisher: FilePublisher
	$(CPCMD)

$(LibDir)/libScanResultWriter.so: libScanResultWriter.so
	$(CPCMD)

$(IncludeDir)/ScanResultWriter/%.h: %.h
	$(CPCMD)

$(IncludeDir)/ScanResultWriter:
	$(MKDIR)	

#Patterns
%.o: %.cpp
	$(CPPCMD)

%: %.o
	$(BINCMD)

#Pre-requisites
FilePublisher: LDLIBS += -lScanResultWriter
StressFilePublisher: LDLIBS += -lScanResultWriter

FilePublisher: $(LibDir)/libScanResultWriter.so
StressFilePublisher: $(LibDir)/libScanResultWriter.so

#dependencies
$(BINS): $(DEPENDLIBCMD)

%.d: %.cpp
	$(DEPENDCMD)

ifeq ($(INCLUDEDEPENDANCIES),)
include $(SRCS:.cpp=.d)
endif
