
SWIG = swig -noproxy
CC = g++ -O3
LINKER = g++ -O3

OS    := $(shell uname -s)
OBJD  := .

SHARED := $(if $(findstring Darwin, $(OS)),bundle,so)

TARGETB = ../lib/ML
TARGET = $(TARGETB)/$(OS)

IPERL := $(shell perl -e 'use Config; print $$Config{archlib}."/CORE";')
IML   = ../..


kk : ml.so

all  : echo dirs $(TARGET)/ml.$(SHARED)


echo :
	@echo OS is $(OS)
	@echo SHARED is $(SHARED)
	@echo OBJD is -$(OBJD)-
	@echo Target directory is $(TARGET)
	@echo Include directory for Perl is $(IPERL)

%_wrap.o : %_wrap.cxx
	$(CC) -c $^ -I $(IPERL) -I $(IML) -o $@

ml.so : ml_wrap.o $(OBJD)/vperceptron.o  $(OBJD)/example.o $(OBJD)/dataset.o $(OBJD)/fvinput.o
	$(LINKER) -shared ml_wrap.o $(OBJD)/vperceptron.o $(OBJD)/fvinput.o $(OBJD)/example.o $(OBJD)/dataset.o -o ml.so


$(TARGETB)/Linux/ml.so : $(TARGETB)/Linux/ml_wrap.o $(OBJD)/vperceptron.o  $(OBJD)/example.o $(OBJD)/dataset.o $(OBJD)/fvinput.o
	$(LINKER) -shared $(TARGETB)/Linux/ml_wrap.o $(OBJD)/vperceptron.o $(OBJD)/fvinput.o $(OBJD)/example.o $(OBJD)/dataset.o -o $(TARGET)/ml.so


$(TARGETB)/Linux/%_wrap.o : %_wrap.cxx
	$(CC) -c $^ -I $(IPERL) -I $(IML) -o $@

%_wrap.cxx: %.i
	$(SWIG) -perl5 -c++ $^

dirs :
	@test ! -d $(TARGET) && install -d $(TARGET) ; true
