###########################################################################
#
# FairCom Corporation makefile for c-treeACE c-treeDB C++ API Tutorials
#
###########################################################################

# c-treeACE base directory
ACEBASEDIR=../../..

# Subdirectory in which files for this API are located
MODEL=multithreaded/static
USEGLIB := $(shell expr `gcc -dumpversion | tr -d '.' | xargs printf %-3s | tr ' ' 0` \< 410)
USERT := $(shell expr `ldd --version | tail -n +1 | head -1 | awk '{print $$NF}' | cut -f2 -d.` \< 17)


# Directories in which c-tree header files are located
GLIBINC=$(shell pkg-config --cflags glib-2.0 | xargs)
SSLINC=-I$(ACEBASEDIR)/ctree.drivers/lib/License.Lib/openssl/include
INCDIRS=-I$(ACEBASEDIR)/ctree.drivers/include/unix/$(MODEL) -I$(ACEBASEDIR)/ctree.drivers/include/unix -I$(ACEBASEDIR)/ctree.drivers/include $(SSLINC)
ifeq "$(USEGLIB)" "1"
	INCDIRS += $(GLIBINC)
endif

# Compile options
CFLAGS=-fPIC -g -m32 $(INCDIRS) -ldl -o $@

# Directories in which c-tree libraries are located
LIBDIRS=-L$(ACEBASEDIR)/ctree.drivers/lib/$(MODEL) -L$(ACEBASEDIR)/ctree.drivers/lib/License.Lib/openssl/lib

# System libraries required for link
SYSLIBS=-lpthread -ldl -lm -lssl -lcrypto -lglib-2.0 
ifeq "$(USERT)" "1"
	SYSLIBS += -lrt
endif
# Directory in which tutorial source code is located
SRCDIR=..

# Directory in which tutorial binaries are created
OUTDIR=..

ALL: \
	$(OUTDIR)/ctpp_tutorial1 \
	$(OUTDIR)/ctpp_tutorial2 \
	$(OUTDIR)/ctpp_tutorial3 \
	$(OUTDIR)/ctpp_tutorial4	
	@echo The ctpp tutorials are ready to run.
	@echo Type \'make run\' to run the tutorials.

$(OUTDIR)/ctpp_tutorial1: $(SRCDIR)/ctpp_tutorial1.cpp
	g++ $(CFLAGS) $? $(LIBDIRS) -lmtclient $(SYSLIBS)

$(OUTDIR)/ctpp_tutorial2: $(SRCDIR)/ctpp_tutorial2.cpp
	g++ $(CFLAGS) $? $(LIBDIRS) -lmtclient $(SYSLIBS)

$(OUTDIR)/ctpp_tutorial3: $(SRCDIR)/ctpp_tutorial3.cpp
	g++ $(CFLAGS) $? $(LIBDIRS) -lmtclient $(SYSLIBS)

$(OUTDIR)/ctpp_tutorial4: $(SRCDIR)/ctpp_tutorial4.cpp
	g++ $(CFLAGS) $? $(LIBDIRS) -lmtclient $(SYSLIBS)

run:
	@echo Running CTPP Tutorial 1 ...
	@../ctpp_tutorial1
	@echo ''
	@echo Running CTPP Tutorial 2 ...
	@../ctpp_tutorial2
	@echo ''
	@echo Running CTPP Tutorial 3 ...
	@../ctpp_tutorial3
	@echo ''
	@echo Running CTPP  Tutorial 4 ...
	@../ctpp_tutorial4

clean:
	rm -f $(OUTDIR)/ctpp_tutorial1
	rm -f $(OUTDIR)/ctpp_tutorial2
	rm -f $(OUTDIR)/ctpp_tutorial3
	rm -f $(OUTDIR)/ctpp_tutorial4
