Support: quest -f cjk_ngram
[xapian.git] / xapian-maintainer-tools / win32msvc / win32_bindings_java.mak
blob1437e820f837e5e278ef37bd229515419c7c11d3
1 # Makefile for Microsoft Visual C++ 7.0 (or compatible)
2 # Charlie Hull, Lemur Consulting Ltd. www.lemurconsulting.com
3 # 7th April 2008
5 # Will build the Java Swig bindings
7 # Where the core is, relative to the Java Swig bindings
8 # Change this to match your environment
10 XAPIAN_CORE_REL_JAVA=..\..\xapian-core
11 OUTLIBDIR=$(XAPIAN_CORE_REL_JAVA)\win32\$(XAPIAN_DEBUG_OR_RELEASE)\libs
13 !INCLUDE $(XAPIAN_CORE_REL_JAVA)\win32\config.mak
15 OUTDIR=$(XAPIAN_CORE_REL_JAVA)\win32\$(XAPIAN_DEBUG_OR_RELEASE)\Java
16 INTDIR=.
18 XAPIAN_SWIG_JAVA_SRCS=\
19 Auto.java\
20 BM25Weight.java\
21 BoolWeight.java\
22 Brass.java\
23 Chert.java\
24 Database.java\
25 DateValueRangeProcessor.java\
26 Document.java\
27 Enquire.java\
28 ESet.java\
29 ESetIterator.java\
30 ExpandDecider.java\
31 Flint.java\
32 InMemory.java\
33 MatchDecider.java\
34 MSet.java\
35 MSetIterator.java\
36 MultiValueSorter.java\
37 NumberValueRangeProcessor.java\
38 PositionIterator.java\
39 PostingIterator.java\
40 PostingSource.java\
41 Query.java\
42 QueryParser.java\
43 Remote.java\
44 RSet.java\
45 SimpleStopper.java\
46 Sorter.java\
47 Stem.java\
48 Stopper.java\
49 StringValueRangeProcessor.java\
50 SWIGTYPE_p_std__string.java\
51 TermGenerator.java\
52 TermIterator.java\
53 TradWeight.java\
54 ValueIterator.java\
55 ValueRangeProcessor.java\
56 Version.java\
57 Weight.java\
58 WritableDatabase.java\
59 Xapian.java\
60 XapianConstants.java\
61 XapianJNI.java
63 XAPIAN_SWIG_JAVA_CLASS = $(XAPIAN_SWIG_JAVA_SRCS:.java=.class)
65 # Java generates nested classes with filenames containing a $ (smart move) so
66 # we pick them up with a wildcard and omit them from dependencies to avoid
67 # escaping hell. The lack of a dependency shouldn't really be an issue since
68 # these classes are always generated along with the containing class which
69 # is listed in the dependencies.
70 XAPIAN_SWIG_JAVA_EXTRA_CLASSES=\
71 Enquire*docid_order.class\
72 Query*op.class\
73 QueryParser*feature_flag.class\
74 QueryParser*stem_strategy.class\
75 TermGenerator*flags.class
77 ALL : "$(OUTDIR)/xapian_jni.jar" \
78 SmokeTest.class \
79 "$(OUTDIR)/xapian_jni.dll" \
80 WriteJavaVersion.class
81 # REMOVE THIS NEXT LINE if using Visual C++ .net 2003 - you won't need to worry about manifests. For later compilers this prevents error R6034
82 $(MANIFEST) "$(OUTDIR)\xapian_jni.dll.manifest" -outputresource:"$(OUTDIR)\xapian_jni.dll;2"
83 copy "$(ZLIB_LIB_DIR)\zdll.lib"
84 copy "$(ZLIB_BIN_DIR)\zlib1.dll" $(OUTDIR)
86 CLEAN :
87 -@erase SmokeTest.class
88 -@erase "$(OUTDIR)\*.class"
89 -@erase "$(OUTDIR)\xapian_jni.jar"
90 -@erase xapian_wrap.obj
91 -@erase "$(OUTDIR)\xapian_jni.*"
92 -@erase $(XAPIAN_SWIG_JAVA_CLASS)
93 -@erase $(XAPIAN_SWIG_JAVA_EXTRA_CLASSES)
94 -@erase Query*1.class
95 -@erase *.pdb
96 -@erase MyMatchDecider.class
97 -@erase MyExpandDecider.class
98 -@erase WriteJavaVersion.class
99 -@erase version.res
100 -@erase javaversion.h
102 CLEANSWIG: CLEAN
103 -@erase xapian_wrap.cc
104 -@erase xapian_wrap.h
105 -@erase $(XAPIAN_SWIG_JAVA_SRCS)
107 DOTEST:
108 copy SmokeTest.class "$(OUTDIR)\SmokeTest.class"
109 copy MyMatchDecider.class "$(OUTDIR)\MyMatchDecider.class"
110 copy MyExpandDecider.class "$(OUTDIR)\MyExpandDecider.class"
111 cd $(OUTDIR)
112 $(JAVA) -classpath xapian_jni.jar; SmokeTest
114 CHECK: ALL DOTEST
116 DIST: CHECK
117 cd $(MAKEDIR)
118 if not exist "$(OUTDIR)\dist\$(NULL)" mkdir "$(OUTDIR)\dist"
119 if not exist "$(OUTDIR)\dist\docs/$(NULL)" mkdir "$(OUTDIR)\dist\docs"
120 if not exist "$(OUTDIR)\dist\docs\examples/$(NULL)" mkdir "$(OUTDIR)\dist\docs\examples"
121 copy "$(OUTDIR)\xapian_jni.dll" "$(OUTDIR)\dist"
122 copy "$(OUTDIR)\xapian_jni.jar" "$(OUTDIR)\dist"
123 if exist docs copy docs\*.htm* "$(OUTDIR)\dist\docs"
124 if exist docs\examples copy docs\examples\*.* "$(OUTDIR)\dist\docs\examples"
126 "$(OUTDIR)" :
127 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
130 $(OUTDIR)/xapian_jni.jar: xapian_wrap.obj "$(OUTDIR)" $(XAPIAN_SWIG_JAVA_CLASS)
131 $(JAR) -cf $(OUTDIR)/xapian_jni.jar $(XAPIAN_SWIG_JAVA_CLASS) $(XAPIAN_SWIG_JAVA_EXTRA_CLASSES)
133 CPP_PROJ=$(CPPFLAGS_EXTRA) /GR \
134 /I "$(XAPIAN_CORE_REL_JAVA)" /I "$(XAPIAN_CORE_REL_JAVA)\include" /I "$(JAVA_INCLUDE_DIR)" /I "$(JAVA_INCLUDE_DIR)/win32"\
135 /I"." /Fo"$(INTDIR)\\" /Tp$(INPUTNAME)
137 ALL_LINK32_FLAGS=$(LINK32_FLAGS) $(XAPIAN_LIBS)
139 "$(OUTDIR)\xapian_jni.dll" : "$(OUTDIR)" xapian_wrap.obj ".\version.res"
140 $(LINK32) @<<
141 $(ALL_LINK32_FLAGS) /DLL /out:"$(OUTDIR)\xapian_jni.dll" xapian_wrap.obj ".\version.res"
145 !IF "$(SWIGBUILD)" == "1"
146 # FIXME: make this work properly with SWIG
147 xapian_wrap.cc xapian_wrap.h $(XAPIAN_SWIG_JAVA_SRCS):
148 # Make sure that we don't package stale generated sources in the
149 # case where SWIG changes its mind as to which files it generates.
150 -@erase $(XAPIAN_SWIG_JAVA_SRCS)
151 $(SWIG) $(SWIG_FLAGS) -I$(XAPIAN_CORE_REL_JAVA)\include -I..\generic \
152 -c++ -java -module Xapian \
153 -o xapian_wrap.cc ../xapian.i
154 # Insert code to automatically load the JNI library.
155 $(PERL_EXE) -pe "print \" System.loadLibrary('xapian_jni'); \n\" if /^\s*swig_module_init/" XapianJNI.java >XapianJNI.java.tmp
156 -erase XapianJNI.java
157 -rename XapianJNI.java.tmp XapianJNI.java
158 !ENDIF
160 JAVAOPTS=-classpath $(INTDIR) -d $(INTDIR)
163 # Rules
166 ".\version.res": version.rc WriteJavaVersion.class
167 "$(JAVA)" WriteJavaVersion
168 $(RSC) /v \
169 /fo version.res \
170 /I "$(XAPIAN_CORE_REL_JAVA)\include" \
171 version.rc
173 .java{$(XAPIAN_SWIG_JAVA_CLASS)}.class:
174 $(JAVAC) $(JAVAOPTS) $*.java
176 xapian_wrap.obj : xapian_wrap.cc
177 $(CPP) @<<
178 $(CPP_PROJ) $**
181 SmokeTest.class: SmokeTest.java
182 $(JAVAC) $(JAVAOPTS) SmokeTest.java
184 WriteJavaVersion.class: WriteJavaVersion.java
185 $(JAVAC) $(JAVAOPTS) WriteJavaVersion.java