# ---------- CONFIGURATION ----------
# comment in and rebuild to debug mutexes
#CFLAGS+=-DDEBUG

# comment in and rebuild to get remove mutex protection from engine access
#CFLAGS+=-DNOLOCK
# ------ END OF CONFIGURATION -------

MATLAB=$(shell matlab -e | grep MATLAB= | sed -e "s/MATLAB=//")
MLARCH=$(shell matlab -e | grep ^ARCH= | sed -e "s/ARCH=//")
COMPILER=$(shell if (gcc --version 2>/dev/null | grep clang > /dev/null); then echo clang; else echo gcc; fi)

TARGET=plml
SOBJ=$(PACKSODIR)/$(TARGET).$(SOEXT)
TARGET2=plml2
SOBJ2=$(PACKSODIR)/$(TARGET2).$(SOEXT)
CFLAGS+=-I$(MATLAB)/extern/include
LIBDIR=$(MATLAB)/bin/$(MLARCH)
LIBS=-L$(LIBDIR) -leng -lmx

ifeq ($(COMPILER),clang)
	POST_LDFLAGS=-rpath $(LIBDIR) $(LIBS)$
else
	POST_LDFLAGS=-Wl,-rpath $(LIBDIR) $(LIBS) # -rpath=$(LIBDIR)?
endif

$(SOBJ): cpp/$(TARGET).o
	mkdir -p $(PACKSODIR)
	$(LD) $(LDSOFLAGS) -o $@ $(SWISOLIB) $< -lstdc++ $(POST_LDFLAGS)
	strip -x $@

$(SOBJ2): cpp/$(TARGET2).o
	mkdir -p $(PACKSODIR)
	$(LD) $(LDSOFLAGS) -o $@ $(SWISOLIB) $< -lstdc++ $(POST_LDFLAGS)
	strip -x $@

.SUFFIXES: .cpp .o
all: $(SOBJ) $(SOBJ2)

.cpp.o:
	$(CC) $(CFLAGS) -o $@ -c $<

check::
install:
	chmod +x scripts/logio
	chmod +x scripts/swiplml
	chmod +x scripts/fixdylibs
clean:
	rm -f c/$(TARGET).o c/$(TARGET2).o

distclean: clean
	rm -f $(SOBJ) $(SOBJ2)

fixdylibs:
	sudo scripts/fixdylibs

install-me:
	swipl -f none -g "pack_install('file:.',[upgrade(true)]), halt"

publish:
	swipl -f none -g "pack_property(plml,download(D)), pack_install(D), halt"