if BUILD_WITH_MSVC cxxwrap_exe = $(top_srcdir)/cfg/cxxwrap.exe else cxxwrap_exe = ../tools/cxxwrap-*/cxxwrap endif all-local: java @echo "Java-wrapper build successful..." headers.tar: builddir=`pwd`; \ tmpdir=/tmp/coinjava; \ rm -rf $$tmpdir; \ mkdir $$tmpdir; \ ( cd ..; DESTDIR=$$tmpdir $(MAKE) install-data ); \ ( cd $$tmpdir/$(includedir); tar cf $$builddir/headers.tar * ); \ rm -rf $$tmpdir; headerlist.txt: headers.tar Makefile echo Inventor/C/basic.h >headerlist.txt tar tf headers.tar \ | grep "\.h\$$" \ | egrep -v "(SbOctTree\.h|SbHeap\.h|SbPList\.h|SbTesselator\.h|Inventor/C)" \ | egrep -v "(fields/So.*Long.h|elements/)" \ >>headerlist.txt # | egrep -v "(SoGLNormalizeElement|SoGLShadeModelElement|SoLongElement)" prep-done.txt: headerlist.txt $(top_srcdir)/scripts/prep.pl srcdir=`cd $(srcdir); pwd`; \ topsrcdir=`cd $(top_srcdir); pwd`; \ rm -rf include-pre; \ mkdir include-pre; \ rm -rf include-post; \ mkdir include-post; \ ( cd include-pre; tar xf ../headers.tar ); \ ( cd include-pre; patch -p0 <$$srcdir/headers.patch ); \ cppflags="`echo $(CPPFLAGS) | sed -e 's,-DCOIN_INTERNAL,,g'`"; \ cat headerlist.txt \ | ( cd include-pre; \ $$topsrcdir/scripts/prep.pl \ --cpp="$(CXXCPP) $$cppflags" \ --destdir=../include-post ); ( cd include-post/Inventor; \ mv SoInput.h SoInput.h.old; \ sed -e 's, setBuffer(void \* bufpointer, setBuffer(char * bufpointer,g' SoInput.h.old > SoInput.h ) touch prep-done.txt cxxwrap.log: prep-done.txt srcdir=`cd $(srcdir); pwd`; \ cxxwrap=`echo $(cxxwrap_exe)`; \ topsrcdir=`cd $(top_srcdir); pwd`; \ $$cxxwrap \ --root=include-post \ --classpath=jni/src \ --files=headerlist.txt \ --jni \ --jni-callbacks \ --jni-attributes \ --jni-operators \ --jni-expand-defaults \ --package-prefix=org.coin3d \ --verbose >cxxwrap.log; echo "TODO: Should patch jni/src/org/coin3d/Inventor/SoInput_jni.cxx here" cp $(srcdir)/files/SoSceneManager_jni.cxx jni/src/org/coin3d/Inventor/ cp $(srcdir)/files/hash_adt.h jni/src/org/coin3d/ cp $(srcdir)/files/hash_adt.cxx jni/src/org/coin3d/ cp $(srcdir)/files/RefQ.java jni/src/org/coin3d/ cp $(srcdir)/files/Deletable.java jni/src/org/coin3d/ sources := $(shell find jni -iregex .\*\\.cxx | grep -v UnitData\$) objects := $(patsubst %.cxx,%.o,$(sources)) if BUILD_WITH_MSVC LIBRARY = jni/CoinJava.dll COIN_LIB = -lcoin2 $(LIBRARY)-real: $(objects) @echo Linking dll... $(CXX) $(LDFLAGS) -DLL /INCREMENTAL:NO /RELEASE -L../src /OUT:$(LIBRARY) $(objects) $(COIN_LIB) else LIBRARY = jni/libCoinJava.so $(LIBRARY)-real: $(objects) @echo Linking shared library... $(CXX) $(LDFLAGS) -shared -Wl,-soname,$(LIBRARY) $(objects) $(COIN_LIB) -o $(LIBRARY) endif # need to re-invoke make to get $(objects) filled $(LIBRARY): $(MAKE) $(LIBRARY)-real $(objects): %.o: %.cxx $(CXX) -I. -I$(top_builddir)/include -I$(top_srcdir)/include $(COIN_EXTRA_CPPFLAGS) -c $< -o $@ # $(CXX) -DJNIEXPORT="__declspec(dllexport)" -I. -I$(top_builddir)/include -I$(top_srcdir)/include $(COIN_EXTRA_CPPFLAGS) -c $< -o $@ native: cxxwrap.log $(LIBRARY) JARFILE = jni/CoinJava.jar JAVAC = javac JAR = jar $(JARFILE): mkdir -p jni/java-build find jni/src -iregex ".*\.java$$" > jni/JAVA-SOURCES.LST $(JAVAC) -sourcepath jni/src -d jni/java-build @jni/JAVA-SOURCES.LST $(JAR) cf $(JARFILE) -C jni/java-build org java: native $(JARFILE) JNI_INC = -I$(JAVA_HOME)/include/linux -I$(JAVA_HOME)/include clean: rm -f $(shell find jni -iregex .\*\\.o\$) rm -f $(LIBRARY) $(JARFILE) rm -rf jni/java-build realclean: clean rm -rf jni/src jni/JAVA-SOURCES.LST INCLUDES.LST wrap.log rm -rf include/Inventor