CURDIR  = $(shell pwd)
CURDIR1 = $(shell cd ..; pwd; cd $(CURDIR))
CURDIR2 = $(shell cd ../..; pwd; cd $(CURDIR))


RelDir = ./release/
DebDir = ./debug/

#$(info curdir1 is $(CURDIR1))
#$(info curdir2 is $(CURDIR2))

ifeq "$(strip $(filter debug,$(MAKECMDGOALS)))" "debug"
 PREDEFS := -g -O0 -fno-inline -D_DEBUG
 IntDir = $(DebDir)
 SHAddFlags = -g
 LDAddFlags = -r

 OUTDIR  = $(CURDIR2)/debug_lnx

 ifndef PCOCOMMONLIBDIR
  PCOCOMMONLIBDIR = /opt/pco/pco_lib/lib_debug_lnx
 endif


else
 PREDEFS := -O2
 IntDir = $(RelDir)
 SHAddFlags =
 LDAddFlags = -r -s

 OUTDIR  = $(CURDIR2)/release_lnx

 ifndef PCOCOMMONLIBDIR
  PCOCOMMONLIBDIR = /opt/pco/pco_lib/lib_release_lnx
 endif

endif


PREDEFS += -DPCO_LINUX

PCOINCDIR  = /opt/pco/pco_include
PCOEXTDIR  = $(PCOINCDIR)/srcwin/sdk/sc2/extern

PCOLIBDIR  = $(PCOCOMMONLIBDIR)

INCLUDES = -I$(PCOEXTDIR) -I$(PCOINCDIR)/srccommon/pco -I$(PCOINCDIR)/srccommon/sc2

CXXFLAGS += -std=c++17 -Wall $(PREDEFS)

HEADERS = $(PCOEXTDIR)/pco_device.h $(PCOEXTDIR)/sc2_camexport.h $(PCOEXTDIR)/pco_camexport.h

PCOLIB = -lpco_sc2cam
LIBADD = -lpthread 

LFLAGS +=  -L$(OUTDIR)
LIBADD_START = -Wl,--start-group
LIBADD_END   = -Wl,--end-group

LINKRPATH += -Wl,-rpath,'$$ORIGIN'
LINKRPATH += -Wl,-z,origin
LINKRPATH += -Wl,-rpath,$(PCOLIBDIR)

TARGETS = pco_cam_open pco_cam_getversions pco_cam_openex

all: dirs $(TARGETS) copy
debug: predebug dirs $(TARGETS) copy


predebug:
		@echo build debug
		$(RM) $(addprefix $(OUTDIR)/,$(TARGETS))

clean:
		$(RM) *.o $(RelDir)*.o $(DebDir)*.o *~ $(addprefix $(OUTDIR)/,$(TARGETS)) $(OUTDIR)/*.log

dirs:
		@if [ ! -d $(OUTDIR) ]; then \
		echo create directory $(OUTDIR); \
		mkdir $(OUTDIR); \
		fi
 
copy:

pco_%:	pco_%.cpp $(HEADERS) Makefile_develop
		$(CXX) $(CXXFLAGS) $@.cpp -o $(OUTDIR)/$@ $(INCLUDES) $(LFLAGS) $(LINKRPATH) $(LIBADD_START) $(PCOLIB) $(LIBADD) $(LIBADD_END)
