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

ALLHDRS := $(shell find -name "*.h")
ALLSRCS := $(shell find -name "*.cpp") Version.cpp
ALLOBJS := $(ALLSRCS:.cpp=.o)

HDRS := $(wildcard *.h)
SRCS := $(wildcard *.cpp) Version.cpp
OBJS := $(SRCS:.cpp=.o)
LDLIBS += -lboost_thread
LIBS := libSct.so

.PHONY: all c++ java install clean distclean install_lib install_headers IS ISProxy File PrimReflect Archive

all: c++

c++: IS ISProxy File Archive libSct.so install

java:
clean: IS ISProxy File PrimReflect Archive
	-rm -f *.o libSct.so Version.cpp

distclean: clean
	-rm -f *.d

IS:
	$(MAKE) -C $@ $(MAKECMDGOALS)

ISProxy:
	$(MAKE) -C $@ $(MAKECMDGOALS)

File:
	$(MAKE) -C $@ $(MAKECMDGOALS)

PrimReflect:
	$(MAKE) -C $@ $(MAKECMDGOALS)

Archive:
	$(MAKE) -C $@ $(MAKECMDGOALS)

install: install_lib install_headers

install_headers: $(IncludeDir)/Sct $(IncludeDir)/Sct/IS $(IncludeDir)/Sct/File $(IncludeDir)/Sct/Archive $(IncludeDir)/Sct/ISProxy $(addprefix $(IncludeDir)/Sct/,$(ALLHDRS))

install_lib: $(LibDir)/libSct.so

libSct.so: $(ALLOBJS)
	$(LIBCMD)

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

$(IncludeDir)/Sct:
	$(MKDIR)

$(IncludeDir)/Sct/IS:	
	$(MKDIR)
$(IncludeDir)/Sct/ISProxy:	
	$(MKDIR)
$(IncludeDir)/Sct/File:	
	$(MKDIR)
$(IncludeDir)/Sct/Archive:
	$(MKDIR)	

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

Version.cpp: Version.cpp.input
	$(VERSIONCMD)

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


#dependencies
%.d: %.cpp
	$(DEPENDCMD)

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


