.PHONY: gen_const clean JAVA_HOME := $(shell jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));') JAVA_INC := $(shell realpath $(JAVA_HOME)/../include) JAVA_PLATFORM_INC := $(shell dirname `find $(JAVA_INC) -name jni_md.h`) UNICORN_INC=../../include SAMPLES := $(shell ls samples/*.java) SRC := $(shell ls unicorn/*.java) OS := $(shell uname) ifeq ($(OS),Darwin) LIB_EXT=.dylib else ifeq ($(OS),Linux) LIB_EXT=.so else LIB_EXT=.dll endif CC=gcc CFLAGS=-fPIC LDFLAGS=-shared -fPIC LIBS=-lunicorn LIBDIR=-L../../ INCS=-I$(JAVA_INC) -I$(JAVA_PLATFORM_INC) -I$(UNICORN_INC) JC=javac CLASSPATH=./ .SUFFIXES: .java .class %.class: %.java $(JC) $(JFLAGS) $< OBJS=unicorn_Unicorn.o JARFILE=unicorn.jar all: lib jar samples %.o: %.c $(CC) -c $(CFLAGS) $(INCS) $< -o $@ unicorn_Unicorn.h: unicorn/Unicorn.java javah unicorn.Unicorn unicorn_Unicorn.o: unicorn_Unicorn.c unicorn_Unicorn.h $(CC) -c $(CFLAGS) $(INCS) $< -o $@ libunicorn_java$(LIB_EXT): unicorn_Unicorn.o lib: libunicorn_java$(LIB_EXT) unicorn_Unicorn.h $(CC) -o $< $(LDFLAGS) $(OBJS) $(LIBDIR) $(LIBS) samples: $(SAMPLES:.java=.class) jarfiles: $(SRC:.java=.class) jar: jarfiles jar cf $(JARFILE) unicorn/*.class install: lib jar cp libunicorn_java$(LIB_EXT) $(JAVA_HOME)/lib/ext cp $(JARFILE) $(JAVA_HOME)/lib/ext uninstall: rm $(JAVA_HOME)/lib/ext/libunicorn_java$(LIB_EXT) rm $(JAVA_HOME)/lib/ext/$(JARFILE) gen_const: cd .. && python const_generator.py java clean: rm unicorn/*.class rm samples/*.class rm *.so rm *.dylib rm *.dll