1include ../../GDALmake.opt
2include java.opt
3CFLAGS += -DSWIG_NOARRAYS  # use for Swig 2.0.4 and earlier
4
5all: build
6
7BINDING = java
8include ../SWIGmake.base
9
10SHORT_NAME = $(subst _wrap,,$*)
11SWIGARGS += -outdir "org/gdal/$(SHORT_NAME)" -package "org.gdal.$(SHORT_NAME)"
12
13# Run "make ANDROID=yes" for Android JNI
14ifeq ($(ANDROID),yes)
15SWIGARGS += -DSWIGANDROID
16endif
17
18EXTRA_DIST = org
19
20LINK = $(LD_SHARED)
21LINK_EXTRAFLAGS =
22OBJ_EXT = o
23ifeq ($(HAVE_LIBTOOL),yes)
24LINK = $(LD)
25LINK_EXTRAFLAGS = -rpath $(INST_LIB) -no-undefined -version-info $(LIBGDAL_CURRENT):$(LIBGDAL_REVISION):$(LIBGDAL_AGE)
26OBJ_EXT = lo
27endif
28
29makedir:
30	mkdir -p org/gdal/gdal
31	mkdir -p org/gdal/gdalconst
32	mkdir -p org/gdal/ogr
33	mkdir -p org/gdal/osr
34	mkdir -p org/gdal/gnm
35
36JAVA_MODULES = libgdalalljni.$(SO_EXT)
37JAVA_OBJECTS = gdalconst_wrap.$(OBJ_EXT) gdal_wrap.$(OBJ_EXT) osr_wrap.$(OBJ_EXT) ogr_wrap.$(OBJ_EXT) gnm_wrap.$(OBJ_EXT)
38
39clean:
40	-rm -f ${JAVA_MODULES}
41	-rm -f *.$(OBJ_EXT)
42	-rm -f .libs/*.so
43	-rm -f .libs/*.dylib
44	-rm -f *.so
45	-rm -f *.dylib
46
47	ant clean
48
49veryclean: clean
50	-rm -f ${WRAPPERS}
51	-rm -rf ${EXTRA_DIST}/*
52
53generate: makedir ${WRAPPERS}
54
55build: generate ${JAVA_OBJECTS} ${JAVA_MODULES}
56ifeq ($(HAVE_LIBTOOL),yes)
57
58	if [ -f ".libs/libgdalalljni.so" ] ; then \
59		cp .libs/*.so . ; \
60	fi
61
62	echo "$(wildcard .libs/*.dylib)"
63
64	if [ -f ".libs/libgdalalljni.dylib" ] ; then \
65		cp .libs/*.dylib . ; \
66	fi
67
68endif # HAVE_LIBTOOL=yes
69	ant
70
71install: build
72	if [ -f "libgdalalljni.so" ] ; then \
73		for f in *.so; do $(INSTALL_LIB) $$f $(DESTDIR)$(INST_LIB) ; done ; \
74	fi
75
76	if [ -f "libgdalalljni.dylib" ] ; then \
77		for f in *.dylib; do $(INSTALL_LIB) $$f $(DESTDIR)$(INST_LIB) ; done ; \
78	fi
79
80	ant maven ; \
81	mkdir -p $(DESTDIR)${datarootdir}/java ; \
82	echo $(DESTDIR)${datarootdir}/java ; \
83	cp build/maven/* $(DESTDIR)${datarootdir}/java ; \
84
85
86JAVA_RUN = java -Djava.library.path=. -cp gdal.jar:build/apps
87
88test:
89	-rm -rf tmp_test
90	mkdir tmp_test
91	cp  test_data/byte.tif tmp_test
92	${JAVA_RUN} GDALOverviews tmp_test/byte.tif "NEAREST" 2 4
93	${JAVA_RUN} gdalinfo -checksum tmp_test/byte.tif
94	${JAVA_RUN} ogr2ogr tmp_test/out.shp test_data/poly.shp -progress -overwrite
95	${JAVA_RUN} ogrinfo -ro -al tmp_test/out.shp
96	${JAVA_RUN} ogrinfo -ro -al tmp_test/out.shp -fid 1
97	${JAVA_RUN} ogr2ogr_new tmp_test/out2.shp test_data/poly.shp -progress -overwrite
98	${JAVA_RUN} ogr2ogr_new tmp_test/out2.shp test_data/poly.shp -append
99	${JAVA_RUN} ogrinfo -ro -al tmp_test/out2.shp
100	${JAVA_RUN} OSRTransform
101	${JAVA_RUN} gdalmajorobject
102	${JAVA_RUN} GDALTestIO
103	${JAVA_RUN} GDALContour -i 1 tmp_test/byte.tif tmp_test/contour.shp
104	${JAVA_RUN} testgetpoints
105	${JAVA_RUN} ogrtindex tmp_test/contour_index.shp tmp_test/contour.shp
106	${JAVA_RUN} OSRTest
107
108ifdef INCLUDE_GDAL_LIB
109    LIB_GDAL=$(GDAL_LIB)
110endif
111
112$(JAVA_MODULES): $(JAVA_OBJECTS)
113	$(LINK) $(LDFLAGS) $^ $(LIB_GDAL) $(CONFIG_LIBS) -o $@ $(LINK_EXTRAFLAGS)
114
115# Do not remove -fno-strict-aliasing while SWIG generates weird code in upcast methods
116# See http://trac.osgeo.org/gdal/changeset/16006
117%.$(OBJ_EXT): %.cpp
118	$(CXX) -fno-strict-aliasing $(GDAL_INCLUDE) $(CFLAGS) $(CPPFLAGS) $(JAVA_INCLUDE) -c $<
119
120%.$(OBJ_EXT): %.cxx
121	$(CXX) -fno-strict-aliasing $(GDAL_INCLUDE) $(CFLAGS) $(CPPFLAGS) $(JAVA_INCLUDE) -c $<
122
123%.$(OBJ_EXT): %.c
124	$(CC) -fno-strict-aliasing $(GDAL_INCLUDE) $(CFLAGS) $(CPPFLAGS) $(JAVA_INCLUDE) -c $<
125
126.PHONY: all makedir clean veryclean generate build install test
127