OSNAME:=$(shell uname -s | sed 's/_.*//')

ifeq ($(OSNAME),Darwin)
	CPPFLAGS =
	JAVA_INCLUDE = -I/System/Library/Frameworks/JavaVM.framework/Headers
	LINK = $(CXX) $(CXXFLAGS) -dynamiclib -framework JavaVM -o adaptagrams.dylib
else 
	# Some make versions say only one else per if statment.
	ifeq ($(OSNAME),Linux)
		CPPFLAGS = -fPIC
		JAVA_INCLUDE = -I/usr/lib/jvm/java-6-sun/include \
						-I/usr/lib/jvm/java-6-sun/include/linux
		LINK = $(CXX) $(CXXFLAGS) -shared -o adaptagrams.so
	else 
	    ifeq ($(OSNAME),MINGW32)
			CPPFLAGS =
			JAVA_INCLUDE = -I/c/Programme/Java/jdk1.6.0_24/include \
							-I/c/Programme/Java/jdk1.6.0_24/include/win32
			LINK = $(CXX) $(CXXFLAGS) -Wl,--add-stdcall-alias -shared -o adaptagrams.dll
		endif
	endif
endif

all: adaptagrams jar

swig-worked: clean adaptagrams.i
	mkdir -p java/src/org/adaptagrams
	mkdir -p java/build/org/adaptagrams
	swig -DUSE_ASSERT_EXCEPTIONS -c++ -java -package org.adaptagrams -outdir java/src/org/adaptagrams adaptagrams.i
	touch swig-worked

adaptagrams_wrap.o: swig-worked
	$(CXX) $(CXXFLAGS) $(CPPFLAGS) -I. $(JAVA_INCLUDE) -c adaptagrams_wrap.cxx

adaptagrams: adaptagrams_wrap.o
	$(LINK) adaptagrams_wrap.o libcola/.libs/libcola.a libtopology/.libs/libtopology.a libavoid/.libs/libavoid.a libvpsc/.libs/libvpsc.a libdialect/.libs/libdialect.a

jar: swig-worked
	javac -d java/build/ java/src/org/adaptagrams/*.java
	jar cf adaptagrams.jar -C java/build/ .

realclean: clean

clean: mostlyclean
	rm -f adaptagrams.so adaptagrams.dylib adaptagrams.so

mostlyclean:
	rm -f swig-worked
	rm -f adaptagrams_wrap.o adaptagrams_wrap.cxx adaptagrams.jar
	rm -rf java/*

.PHONY: all clean mostlyclean realclean

