@@ -12,7 +12,7 @@ if(UNIX AND NOT APPLE)
12
12
endif ()
13
13
14
14
# Find Java and JNI
15
- find_package (Java COMPONENTS Development REQUIRED)
15
+ find_package (Java 1.8 COMPONENTS Development REQUIRED)
16
16
find_package (JNI REQUIRED)
17
17
18
18
# Find maven
@@ -85,6 +85,73 @@ set(JAVA_SRC_PATH src/main/java/${JAVA_DOMAIN_EXTENSION}/${JAVA_DOMAIN_NAME}/${J
85
85
set (JAVA_TEST_PATH src/test /java/${JAVA_DOMAIN_EXTENSION} /${JAVA_DOMAIN_NAME} /${JAVA_ARTIFACT} )
86
86
set (JAVA_RESSOURCES_PATH src/main/resources)
87
87
88
+ #################
89
+ ## Java Test ##
90
+ #################
91
+ # add_java_test()
92
+ # CMake function to generate and build java test.
93
+ # Parameters:
94
+ # the java filename
95
+ # e.g.:
96
+ # add_java_test(FooTests.java)
97
+ function (add_java_test FILE_NAME)
98
+ if (NOT BUILD_TESTING)
99
+ return ()
100
+ endif ()
101
+
102
+ message (STATUS "Configuring test ${FILE_NAME} : ..." )
103
+ get_filename_component (TEST_NAME ${FILE_NAME} NAME_WE )
104
+ get_filename_component (COMPONENT_DIR ${FILE_NAME} DIRECTORY )
105
+ get_filename_component (COMPONENT_NAME ${COMPONENT_DIR} NAME )
106
+
107
+ set (JAVA_TEST_DIR ${PROJECT_BINARY_DIR} /java/${COMPONENT_NAME} /${TEST_NAME} )
108
+ message (STATUS "build path: ${JAVA_TEST_DIR} " )
109
+
110
+ add_custom_command (
111
+ OUTPUT ${JAVA_TEST_DIR} /${JAVA_TEST_PATH} /${TEST_NAME} .java
112
+ COMMAND ${CMAKE_COMMAND} -E make_directory
113
+ ${JAVA_TEST_DIR} /${JAVA_TEST_PATH}
114
+ COMMAND ${CMAKE_COMMAND} -E copy ${FILE_NAME} ${JAVA_TEST_DIR} /${JAVA_TEST_PATH} /
115
+ MAIN_DEPENDENCY ${FILE_NAME}
116
+ VERBATIM
117
+ )
118
+
119
+ string (TOLOWER ${TEST_NAME} JAVA_TEST_PROJECT)
120
+ configure_file (
121
+ ${PROJECT_SOURCE_DIR} /java/pom-test .xml.in
122
+ ${JAVA_TEST_DIR} /pom.xml
123
+ @ONLY)
124
+
125
+ add_custom_command (
126
+ OUTPUT ${JAVA_TEST_DIR} /timestamp
127
+ COMMAND ${MAVEN_EXECUTABLE} compile -B
128
+ COMMAND ${CMAKE_COMMAND} -E touch ${JAVA_TEST_DIR} /timestamp
129
+ DEPENDS
130
+ ${JAVA_TEST_DIR} /pom.xml
131
+ ${JAVA_TEST_DIR} /${JAVA_TEST_PATH} /${TEST_NAME} .java
132
+ java_package
133
+ BYPRODUCTS
134
+ ${JAVA_TEST_DIR} /target
135
+ COMMENT "Compiling Java ${COMPONENT_NAME} /${TEST_NAME} .java (${JAVA_TEST_DIR} /timestamp)"
136
+ WORKING_DIRECTORY ${JAVA_TEST_DIR} )
137
+
138
+ add_custom_target (java_${COMPONENT_NAME} _${TEST_NAME} ALL
139
+ DEPENDS
140
+ ${JAVA_TEST_DIR} /timestamp
141
+ WORKING_DIRECTORY ${JAVA_TEST_DIR} )
142
+
143
+ add_test (
144
+ NAME java_${COMPONENT_NAME} _${TEST_NAME}
145
+ COMMAND ${MAVEN_EXECUTABLE} test
146
+ WORKING_DIRECTORY ${JAVA_TEST_DIR} )
147
+ message (STATUS "Configuring test ${FILE_NAME} : ...DONE" )
148
+ endfunction ()
149
+
150
+ #####################
151
+ ## JAVA WRAPPERS ##
152
+ #####################
153
+ list (APPEND CMAKE_SWIG_FLAGS "-I${PROJECT_SOURCE_DIR} " )
154
+
88
155
# Swig wrap all libraries
89
156
foreach (SUBPROJECT IN ITEMS Foo Bar FooBar)
90
157
add_subdirectory (${SUBPROJECT} /java)
@@ -101,20 +168,31 @@ configure_file(
101
168
${JAVA_NATIVE_PROJECT_DIR} /pom.xml
102
169
@ONLY)
103
170
171
+ set (is_windows "$<PLATFORM_ID:Windows>" )
172
+ set (is_not_windows "$<NOT:$<PLATFORM_ID:Windows>>" )
173
+
174
+
104
175
add_custom_command (
105
176
OUTPUT ${JAVA_NATIVE_PROJECT_DIR} /timestamp
177
+ COMMAND ${CMAKE_COMMAND} -E remove -f timestamp
178
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${JAVA_RESSOURCES_PATH} /${JAVA_NATIVE_PROJECT}
106
179
COMMAND ${CMAKE_COMMAND} -E copy
107
- $<TARGET_FILE:jni${JAVA_ARTIFACT} >
108
180
$<$<NOT :$<PLATFORM_ID:Windows>>:$<TARGET_SONAME_FILE:Foo>>
109
181
$<$<NOT :$<PLATFORM_ID:Windows>>:$<TARGET_SONAME_FILE:Bar>>
110
182
$<$<NOT :$<PLATFORM_ID:Windows>>:$<TARGET_SONAME_FILE:FooBar>>
111
183
${JAVA_RESSOURCES_PATH} /${JAVA_NATIVE_PROJECT} /
184
+
185
+ COMMAND ${CMAKE_COMMAND} -E copy
186
+ $<TARGET_FILE:jni${JAVA_ARTIFACT} >
187
+ ${JAVA_RESSOURCES_PATH} /${JAVA_NATIVE_PROJECT} /
188
+
112
189
COMMAND ${MAVEN_EXECUTABLE} compile -B
113
190
COMMAND ${MAVEN_EXECUTABLE} package -B $<$<BOOL :${BUILD_FAT_JAR} >:-Dfatjar=true >
114
191
COMMAND ${MAVEN_EXECUTABLE} install -B $<$<BOOL :${SKIP_GPG} >:-Dgpg.skip=true >
115
192
COMMAND ${CMAKE_COMMAND} -E touch ${JAVA_NATIVE_PROJECT_DIR} /timestamp
116
193
DEPENDS
117
194
${JAVA_NATIVE_PROJECT_DIR} /pom.xml
195
+ jni${JAVA_ARTIFACT}
118
196
BYPRODUCTS
119
197
${JAVA_NATIVE_PROJECT_DIR} /target
120
198
COMMENT "Generate Java native package ${JAVA_NATIVE_PROJECT} (${JAVA_NATIVE_PROJECT_DIR} /timestamp)"
@@ -191,68 +269,6 @@ add_custom_target(java_deploy
191
269
WORKING_DIRECTORY ${JAVA_PROJECT_DIR} )
192
270
add_dependencies (java_deploy java_package)
193
271
194
- #################
195
- ## Java Test ##
196
- #################
197
- if (BUILD_TESTING)
198
- # add_java_test()
199
- # CMake function to generate and build java test.
200
- # Parameters:
201
- # the java filename
202
- # e.g.:
203
- # add_java_test(FooTests.java)
204
- function (add_java_test FILE_NAME)
205
- message (STATUS "Configuring test ${FILE_NAME} : ..." )
206
- get_filename_component (TEST_NAME ${FILE_NAME} NAME_WE )
207
- get_filename_component (COMPONENT_DIR ${FILE_NAME} DIRECTORY )
208
- get_filename_component (COMPONENT_NAME ${COMPONENT_DIR} NAME )
209
-
210
- set (JAVA_TEST_DIR ${PROJECT_BINARY_DIR} /java/${COMPONENT_NAME} /${TEST_NAME} )
211
- message (STATUS "build path: ${JAVA_TEST_DIR} " )
212
-
213
- add_custom_command (
214
- OUTPUT ${JAVA_TEST_DIR} /${JAVA_TEST_PATH} /${TEST_NAME} .java
215
- COMMAND ${CMAKE_COMMAND} -E make_directory
216
- ${JAVA_TEST_DIR} /${JAVA_TEST_PATH}
217
- COMMAND ${CMAKE_COMMAND} -E copy
218
- ${FILE_NAME}
219
- ${JAVA_TEST_DIR} /${JAVA_TEST_PATH} /
220
- MAIN_DEPENDENCY ${FILE_NAME}
221
- VERBATIM
222
- )
223
-
224
- string (TOLOWER ${TEST_NAME} JAVA_TEST_PROJECT)
225
- configure_file (
226
- ${PROJECT_SOURCE_DIR} /java/pom-test .xml.in
227
- ${JAVA_TEST_DIR} /pom.xml
228
- @ONLY)
229
-
230
- add_custom_command (
231
- OUTPUT ${JAVA_TEST_DIR} /timestamp
232
- COMMAND ${MAVEN_EXECUTABLE} compile -B
233
- COMMAND ${CMAKE_COMMAND} -E touch ${JAVA_TEST_DIR} /timestamp
234
- DEPENDS
235
- ${JAVA_TEST_DIR} /pom.xml
236
- ${JAVA_TEST_DIR} /${JAVA_TEST_PATH} /${TEST_NAME} .java
237
- java_package
238
- BYPRODUCTS
239
- ${JAVA_TEST_DIR} /target
240
- COMMENT "Compiling Java ${COMPONENT_NAME} /${TEST_NAME} .java (${JAVA_TEST_DIR} /timestamp)"
241
- WORKING_DIRECTORY ${JAVA_TEST_DIR} )
242
-
243
- add_custom_target (java_${COMPONENT_NAME} _${TEST_NAME} ALL
244
- DEPENDS
245
- ${JAVA_TEST_DIR} /timestamp
246
- WORKING_DIRECTORY ${JAVA_TEST_DIR} )
247
-
248
- add_test (
249
- NAME java_${COMPONENT_NAME} _${TEST_NAME}
250
- COMMAND ${MAVEN_EXECUTABLE} test
251
- WORKING_DIRECTORY ${JAVA_TEST_DIR} )
252
- message (STATUS "Configuring test ${FILE_NAME} : ...DONE" )
253
- endfunction ()
254
- endif ()
255
-
256
272
####################
257
273
## Java Example ##
258
274
####################
0 commit comments