

CC=gcc
CFLAGS=-Wall

CFLAGS += "-I/System/Library/Frameworks/JavaVM.framework/Headers"
SHARED = -bundle # linux = -shared
SO_EXT = jnilib  # linux = so

all: Ex1.class libEx1.$(SO_EXT) Ex2.class libEx2.$(SO_EXT)

libEx1.$(SO_EXT): ex1_native.o Ex1.h
	gcc -o libEx1.$(SO_EXT) $(SHARED) $<

libEx2.$(SO_EXT): ex2_native.o Ex2.h
	gcc -o libEx2.$(SO_EXT) $(SHARED) $<

%.class: %.java
	javac $<

ex1_native.o: Ex1.h
Ex1.h: Ex1.class
	rm -f $@
	javah Ex1

ex2_native.o: Ex2.h
Ex2.h: Ex2.class
	rm -f $@
	javah Ex2

clean:
	rm -f *.o *.class *.$(SO_EXT)

.PHONY: run
run:
	java -Djava.library.path=. Ex1
	java -Djava.library.path=. Ex2