sourcefiles:=$(shell find . -name "*.cpp")
objfiles:=$(patsubst %.cpp,%.o,$(sourcefiles))
GLOBAL_WORKING_DIR := $(shell pwd)/../../..


WINIX_NEEDED_MACROS = -DPT_HAS_MORM_LIBRARY \
			-DEZC_HAS_MORM_LIBRARY \
			-DMORM_HAS_EZC_LIBRARY


ifndef CXX
CXX = g++
endif

ifndef ADDITIONAL_CXXFLAGS
ADDITIONAL_CXXFLAGS=-O2
endif

ifndef ADDITIONAL_LDFLAGS
ADDITIONAL_LDFLAGS=-s
endif

ifndef CXXFLAGS
# /usr/include/postgresql is in Linux distros (Alpine)
CXXFLAGS = -Wall -pedantic -std=c++20 $(ADDITIONAL_CXXFLAGS) \
			-I/usr/local/include \
			-I/usr/include/postgresql \
			-I$(GLOBAL_WORKING_DIR)/winix/winixcli \
			-I$(GLOBAL_WORKING_DIR)/pikotools/src \
			-I$(GLOBAL_WORKING_DIR)/morm/src \
			-I$(GLOBAL_WORKING_DIR)/ezc/src \
			-I$(GLOBAL_WORKING_DIR)/tito/src \
			$(WINIX_NEEDED_MACROS)
endif

LDFLAGS = -L/usr/local/lib $(ADDITIONAL_LDFLAGS)


export CXX
export CXXFLAGS
export LDFLAGS
export GLOBAL_WORKING_DIR
export WINIX_NEEDED_MACROS



progname = winix


all: $(progname)


$(progname): $(objfiles) pikotools morm ezc
	$(CXX) -o $(progname) $(CXXFLAGS) $(LDFLAGS) $(objfiles) $(GLOBAL_WORKING_DIR)/ezc/src/ezc.a $(GLOBAL_WORKING_DIR)/morm/src/morm.a $(GLOBAL_WORKING_DIR)/pikotools/src/pikotools.a


%.o: %.cpp
	$(CXX) -c $(CXXFLAGS) -o $@ $<


.PHONY: pikotools
.PHONY: morm
.PHONY: ezc


pikotools: 
	$(MAKE) -C ../../../pikotools


morm: 
	$(MAKE) -C ../../../morm/src


ezc: 
	$(MAKE) -C ../../../ezc/src


clean: FORCE
	rm -f $(objfiles)
	rm -f $(progname)


depend:
	makedepend -w 10 -Y. -I../../../pikotools/src -I../../../morm/src -I../../../ezc/src -I../../../tito/src $(WINIX_NEEDED_MACROS) -f- $(sourcefiles) | sort -u > Makefile.dep


FORCE:


-include Makefile.dep

