blob: 390bdf5fd5401956d18536e7da61d474563c8359 [file] [log] [blame]
.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)