# Can be overriden by the including Makefile: toolchain passed in
XCROSS_HOME ?= 

SRC_LIB_DIR := ../../src

CC=$(XCROSS_HOME)gcc
CXX=$(XCROSS_HOME)g++

CFLAGS := -Wall -DLINUX -fPIC -O3
#CFLAGS := -g -Wall -DLINUX -fPIC -O3

BOOSTINCP=-I/afs/slac/g/lcls/package/boost/1.57.0/$(ARCH)/include
BOOSTLIBP=-L/afs/slac/g/lcls/package/boost/1.57.0/$(ARCH)/lib

CPSWINC=-I/afs/slac/g/lcls/package/cpsw/framework/mdewart/$(ARCH)/include
CPSWLIB=-L/afs/slac/g/lcls/package/cpsw/framework/mdewart/$(ARCH)/lib


CPPFLAGS += -I$(SRC_LIB_DIR) $(BOOSTINCP) $(CPSWINC)

LDFLAGS += -L.
LDLIBS  += -lpthread -lrt

CXXFLAGS = -I$(SRC_LIB_DIR) $(BOOSTINCP) $(CPSWINC) -g -Wall -O3 -DLINUX -fPIC

CLEANEXTS   = o a d so

# source files.
LSRCS = Adc16Dx370.cc  AmcGenericAdcDac.cc      AxiAd5780.cc  AxiLtc2270.cc     AxiMicronP30.cc  AxiXadc.cc      Dac38J84.cc  JesdRxDaq.cc  Lmk04828.cc        Pgp2bAxi.cc  RingBuffer.cc AmcCarrier.cc  AmcGenericAdcDacCtrl.cc  AxiCommon.cc  AxiMicronN25Q.cc  AxiVersion.cc    CentralNode.cc  JesdRx.cc    JesdTx.cc     MitigationNode.cc  PrbsTx.cc    TenGigEthReg.cc

STATIC_LIBRARY = libcpswdev.a
SHARED_LIBRARY = libcpswdev.so
INSTALL_BIN_DIR  = bin
INSTALL_LIB_DIR  = lib
INSTALL_INC_DIR  = include
#CPSW_INTERFACE  = $(SRC_LIB_DIR)/cpsw_api_builder.h $(SRC_LIB_DIR)/cpsw_api_user.h $(SRC_LIB_DIR)/cpsw_api_timeout.h
#CPSW_INTERFACE += $(SRC_LIB_DIR)/cpsw_mmio_dev.h
#CPSW_INTERFACE += $(SRC_LIB_DIR)/cpsw_nossi_dev.h
CPSW_INTERFACE  = $(wildcard $(SRC_LIB_DIR)/*.h)

# Default target
.PHONY:	all
all:	$(STATIC_LIBRARY) $(SHARED_LIBRARY)

	# Build libcpsw.a from SRC files
$(STATIC_LIBRARY): $(LSRCS:%.cc=%.o)
	ar ru $@ $^
	ranlib $@

$(SHARED_LIBRARY): $(LSRCS:%.cc=%.o)
	$(CXX) $(CXXFLAGS) -o $@ $^ -shared

deps: $(LSRCS)
	$(CXX) $(CXXFLAGS) -MM $(LSRCS) > $@
	
.PHONY:	install
install: all
	mkdir -p $(INSTALL_LOCATION)/$(INSTALL_LIB_DIR)
	mkdir -p $(INSTALL_LOCATION)/$(INSTALL_INC_DIR)
	cp -p $(STATIC_LIBRARY) $(INSTALL_LOCATION)/$(INSTALL_LIB_DIR)
	cp -p $(SHARED_LIBRARY) $(INSTALL_LOCATION)/$(INSTALL_LIB_DIR)
	cp -p $(CPSW_INTERFACE) $(INSTALL_LOCATION)/$(INSTALL_INC_DIR)

.PHONY:	uninstall
uninstall:
	-cd $(INSTALL_LOCATION)/$(INSTALL_LIB_DIR); \
		rm $(STATIC_LIBRARY) $(SHARED_LIBRARY)
		
	-cd $(INSTALL_LOCATION)/$(INSTALL_INC_DIR); \
		rm -f  *.h 


.PHONY:	clean 
clean:
	for file in $(CLEANEXTS); do rm -f *.$$file; done
#	-rm $(STATIC_LIBRARY) $(SHARED_LIBRARY) deps

.SUFFIXES: .c .o

%.o : $(SRC_LIB_DIR)/%.cc 
	$(CC) -c $(CPPFLAGS) $(CFLAGS) -MD -o $@ $<

-include deps
