.SUFFIXES: .java .class ifeq ($(NEOTONIC_ROOT),) NEOTONIC_ROOT = .. endif include $(NEOTONIC_ROOT)/rules.mk NEO_UTIL_SO = libclearsilver-jni.so ifeq ($(OSTYPE),Darwin) NEO_UTIL_SO = libclearsilver-jni.jnilib endif NEO_UTIL_JAVA_SRC = HDF.java CS.java CSUtil.java CSFileLoader.java JNI.java # CGI.java NEO_UTIL_JAVA_JAR = clearsilver.jar NEO_UTIL_SRC = j_neo_util.c j_neo_cs.c NEO_UTIL_OBJ = $(NEO_UTIL_SRC:%.c=%.o) CFLAGS += $(JAVA_INCLUDE_PATH) DLIBS += -lneo_cgi -lneo_cs -lneo_utl LIBS += $(DLIBS) ifneq ($(OSTYPE),Darwin) LDFLAGS += -Wl,-soname=$(NEO_UTIL_SO) endif TARGETS = org_clearsilver_HDF.h org_clearsilver_CS.h $(NEO_UTIL_SO) all: $(TARGETS) test $(NEO_UTIL_JAVA_JAR): $(NEO_UTIL_JAVA_SRC) $(MKDIR) org/clearsilver $(JAVAC) -d . $(NEO_UTIL_JAVA_SRC) $(JAR) cf $(NEO_UTIL_JAVA_JAR) org $(RM) -r org org_clearsilver_HDF.h: $(NEO_UTIL_JAVA_JAR) $(JAVAH) -classpath $(NEO_UTIL_JAVA_JAR) -jni org.clearsilver.HDF org_clearsilver_CS.h: $(NEO_UTIL_JAVA_JAR) $(JAVAH) -classpath $(NEO_UTIL_JAVA_JAR) -jni org.clearsilver.CS CSTest.class: CSTest.java $(JAVAC) -classpath $(NEO_UTIL_JAVA_JAR) CSTest.java gold: CSTest.class @/bin/sh -c "LD_LIBRARY_PATH=$(NEOTONIC_ROOT)/java-jni; export LD_LIBRARY_PATH; CLASSPATH=$(NEO_UTIL_JAVA_JAR):.; export CLASSPATH; $(JAVA_PATH)/bin/java CSTest" > javatest.gold @echo "Generated gold files" test: CSTest.class @echo "Running java test" @failed=0; \ rm -f javatest.out; \ LD_LIBRARY_PATH=$(NEOTONIC_ROOT)/java-jni; export LD_LIBRARY_PATH; \ CLASSPATH=$(NEO_UTIL_JAVA_JAR):.; export CLASSPATH; \ $(JAVA_PATH)/bin/java CSTest > javatest.out; \ diff javatest.out javatest.gold > /dev/null 2>&1; \ return_code=$$?; \ if [ $$return_code -ne 0 ]; then \ diff javatest.out javatest.gold > javatest.err; \ echo "Failed Java Test: CSTest"; \ echo " See javatest.out and javatest.err"; \ failed=1; \ fi; \ if [ $$failed -eq 1 ]; then \ exit 1; \ fi; @echo "Passed java test" CGI.h: CGI.class $(JAVAH) -jni CGI $(NEO_UTIL_SO): $(NEO_UTIL_JAVA_JAR) $(NEO_UTIL_OBJ) $(DEP_LIBS) $(LDSHARED) -o $@ $(LDFLAGS) $(NEO_UTIL_OBJ) $(LIBS) # I guess we'll just stick the .jar file in the lib directory install: all $(INSTALL) $(NEO_UTIL_SO) $(DESTDIR)$(libdir) $(INSTALL) $(NEO_UTIL_JAVA_JAR) $(DESTDIR)$(libdir) clean: $(RM) *.o *.so $(RM) -r org $(RM) org_clearsilver_*.h $(RM) *.class $(RM) org_clearsilver_HDF.h org_clearsilver_CS.h $(RM) Makefile.depends distclean: clean $(RM) -f Makefile.depends $(TARGETS)