1
- CMAKE_MINIMUM_REQUIRED (VERSION 2.6 )
1
+ CMAKE_MINIMUM_REQUIRED (VERSION 2.8 )
2
2
PROJECT (SevenZipJBinding)
3
3
4
4
# Compile on Mac OS https://bug477945.bugzilla.mozilla.org/attachment.cgi?id=376115
5
5
# 64 bit java: /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Commands/java
6
6
# CC="gcc-4.2 -arch i386"
7
7
# CXX="g++-4.2 -arch i386"
8
8
9
+ SET (CMAKE_BUILD_TYPE Release CACHE STRING "Build target: Release or Debug" )
9
10
10
- # Uncomment to build in debug mode
11
- # SET(CMAKE_BUILD_TYPE Debug)
11
+ SET (MINGW32 No CACHE BOOL "Use MinGW toolchain (32 bit)" )
12
+ SET (MINGW64 No CACHE BOOL "Use MinGW toolchain (64 bit)" )
13
+ SET (RUNTIME_LIB CACHE BOOL "Compiler runtime library to package and load before 7-Zip-JBinding" )
12
14
13
- # Uncomment to build Windows 64 version
14
- # SET(USE_MINGW_W64 Yes)
15
+ SET (JAVA_TMP CACHE PATH "Path to tmp directory" )
15
16
16
- IF (NOT CMAKE_BUILD_TYPE )
17
- SET (CMAKE_BUILD_TYPE Release)
17
+ IF (MINGW32 OR MINGW64)
18
+ SET (MINGW Yes )
19
+ ELSE ()
20
+ SET (MINGW No )
21
+ ENDIF ()
22
+
23
+ SET (WINDOWS ${CMAKE_HOST_WIN32} ) #true also for win64
24
+
25
+
26
+ IF (CMAKE_SYSTEM_NAME MATCHES "Windows.*" )
27
+ SET (WINDOWS Yes )
18
28
ENDIF ()
19
29
20
- SET (JAVA_TMP CACHE PATH "Path to tmp directory (optional)" )
30
+ IF (WINDOWS AND NOT MINGW)
31
+ MESSAGE (FATAL_ERROR "On Windows only MinGW build is supported" )
32
+ ENDIF ()
21
33
22
34
INCLUDE (cmake/FindJavaExtended.cmake)
23
35
#INCLUDE(cmake/CheckGCC.cmake)
@@ -37,31 +49,21 @@ IF("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") # TODO Switch to JAVA_SYSTEM
37
49
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch ${JAVA_ARCH} " )
38
50
ENDIF ()
39
51
40
- #IF(USE_MINGW_W64)
41
52
SET (PLATFORM ${JAVA_SYSTEM} -${JAVA_ARCH} )
42
- #ELSE()
43
- # SET(PLATFORM ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR})
44
- #ENDIF()
45
53
46
54
SET (SEVENZIPJBINDING_LIB_JAR ${PROJECT_BINARY_DIR} /sevenzipjbinding-${PLATFORM} .jar)
47
55
SET (SEVENZIPJBINDING_FILENAME sevenzipjbinding${SEVENZIPJBINDING_VERSON_POSTFIX} -${PLATFORM} )
48
56
SET (SEVENZIPJBINDING_SOURCE_FILENAME sevenzipjbinding${SEVENZIPJBINDING_VERSON_POSTFIX} -src)
49
- #SET(SEVENZIPJBINDING_ZIP ${RELEASE_PATH}/${SEVENZIPJBINDING_FILENAME}.zip)
50
-
51
- # ------------------- Java -------------------
52
-
53
- # Variables:
54
- #
55
- # JAVA_SOURCE_DIR - path to java source code
56
- # SEVENZIP_JBINDING_JAR - (global) target JAR file
57
57
58
58
SET (JAVA_SOURCE_DIR ${PROJECT_SOURCE_DIR} /jbinding-java/src)
59
59
SET (SEVENZIP_JBINDING_JAR ${PROJECT_BINARY_DIR} /jbinding-java/sevenzipjbinding.jar)
60
60
61
- FILE (MAKE_DIRECTORY ${PROJECT_BINARY_DIR} /jbinding-java)
62
61
SET_PROPERTY (GLOBAL PROPERTY SEVENZIP_JBINDING_JAR ${SEVENZIP_JBINDING_JAR} )
62
+ SET_PROPERTY (GLOBAL PROPERTY MINGW ${MINGW} )
63
+ SET_PROPERTY (GLOBAL PROPERTY WINDOWS ${WINDOWS} )
63
64
64
- IF (CMAKE_HOST_WIN32 ) #true for win64 also
65
+ FILE (MAKE_DIRECTORY ${PROJECT_BINARY_DIR} /jbinding-java)
66
+ IF (WINDOWS)
65
67
SET (PATH_SEP ";" )
66
68
ELSE ()
67
69
SET (PATH_SEP ":" )
@@ -123,32 +125,27 @@ ENDIF()
123
125
124
126
ADD_DEPENDENCIES (7-Zip-JBinding sevenzipjbinding-jar)
125
127
126
- GET_PROPERTY (USE_MINGW GLOBAL PROPERTY USE_MINGW)
127
- GET_PROPERTY (USE_MINGW_W64 GLOBAL PROPERTY USE_MINGW_W64)
128
128
GET_TARGET_PROPERTY (SEVENZIP_JBINDING_LIB 7-Zip-JBinding LOCATION )
129
129
GET_FILENAME_COMPONENT (SEVENZIP_JBINDING_LIB_FILENAME "${SEVENZIP_JBINDING_LIB} " NAME )
130
130
131
131
FILE (MAKE_DIRECTORY ${PROJECT_BINARY_DIR} /${PLATFORM} )
132
132
SET (SEVENZIP_JBINDING_LIB_PROPERTY_FILE ${PROJECT_BINARY_DIR} /${PLATFORM} /sevenzipjbinding-lib.properties)
133
133
FILE (WRITE ${SEVENZIP_JBINDING_LIB_PROPERTY_FILE} "sevenzipjbinding.libname.1=${SEVENZIP_JBINDING_LIB_FILENAME} \n " )
134
- IF (USE_MINGW_W64)
135
- IF (MINGW_RUNTIME_DLL_FILENAME MATCHES "/.*" AND USE_CYGWIN)
136
- IF (NOT CYGPATH_EXE_FILENAME)
137
- MESSAGE (FATAL_ERROR "cygpath.exe wasn't found" )
138
- ENDIF (NOT CYGPATH_EXE_FILENAME)
139
- EXECUTE_PROCESS (COMMAND cygpath.exe -m ${MINGW_RUNTIME_DLL_FILENAME} OUTPUT_VARIABLE MINGW_RUNTIME_DLL_FILENAME)
140
- ENDIF ()
141
- # !!! TODO
142
- # GET_FILENAME_COMPONENT(MINGW_RUNTIME_DLL_DIR ${MINGW_RUNTIME_DLL_FILENAME} PATH)
143
- GET_FILENAME_COMPONENT (MINGW_RUNTIME_DLL_NAME ${MINGW_RUNTIME_DLL_FILENAME} NAME )
144
- FILE (APPEND ${SEVENZIP_JBINDING_LIB_PROPERTY_FILE} "sevenzipjbinding.libname.2=${MINGW_RUNTIME_DLL_NAME} \n " )
145
- ENDIF (USE_MINGW_W64)
146
- STRING (RANDOM BUILD_REF)
134
+ IF (RUNTIME_LIB)
135
+ FILE (APPEND ${SEVENZIP_JBINDING_LIB_PROPERTY_FILE} "sevenzipjbinding.libname.2=${RUNTIME_LIB} \n " )
136
+ ENDIF (RUNTIME_LIB)
137
+ STRING (RANDOM LENGTH 12 BUILD_REF)
147
138
FILE (APPEND ${SEVENZIP_JBINDING_LIB_PROPERTY_FILE} "build.ref=${BUILD_REF} \n " )
148
139
149
140
SET (SEVENZIPJBINDING_PLATFORMS_PROPERTY_FILE sevenzipjbinding-platforms.properties)
150
141
FILE (WRITE ${PROJECT_BINARY_DIR} /${SEVENZIPJBINDING_PLATFORMS_PROPERTY_FILE} "platform.1=${PLATFORM} \n " )
151
142
143
+ IF (MINGW)
144
+ SET (MAKE_COMMAND "mingw32-make" )
145
+ ELSE ()
146
+ SET (MAKE_COMMAND "make" )
147
+ ENDIF ()
148
+
152
149
MESSAGE ("" )
153
150
MESSAGE ("Build type: ${CMAKE_BUILD_TYPE} , platform: ${PLATFORM} " )
154
151
MESSAGE ("" )
@@ -157,19 +154,18 @@ MESSAGE("Java compiler: ${JAVA_COMPILE}")
157
154
MESSAGE ("Java header compiler: ${JAVA_HEADER_COMPILE} " )
158
155
MESSAGE ("Java documentation tool: ${JAVA_DOC} " )
159
156
MESSAGE ("Java archiver: ${JAVA_ARCHIVE} " )
160
- IF (USE_MINGW_W64)
161
- MESSAGE ("libgcc_s_sjlj-1.dll to use: ${MINGW_RUNTIME_DLL_FILENAME} " )
157
+ MESSAGE ("MinGW: ${MINGW} " )
158
+ MESSAGE ("MinGW-32: ${MINGW32} " )
159
+ MESSAGE ("MinGW-64: ${MINGW64} " )
160
+ IF (RUNTIME_LIB)
161
+ MESSAGE ("Runtime libaray to use: ${RUNTIME_LIB_FILENAME} " )
162
162
ENDIF ()
163
163
MESSAGE ("Output package: ./${SEVENZIPJBINDING_FILENAME} .zip" )
164
164
MESSAGE ("" )
165
165
MESSAGE ("" )
166
- IF (USE_MINGW)
167
- MESSAGE ("Type 'mingw32-make' to compile" )
168
- ELSE ()
169
- MESSAGE ("Type 'make' to compile" )
170
- ENDIF ()
166
+ MESSAGE ("Type '${MAKE_COMMAND} ' to compile" )
171
167
MESSAGE ("Type 'ctest' to run tests (it could take up to 30 minutes on a slow CPU)" )
172
- MESSAGE ("Type 'make package' to build a distribution package" )
168
+ MESSAGE ("Type '${MAKE_COMMAND} package' to build a distribution package" )
173
169
MESSAGE ("" )
174
170
175
171
ADD_CUSTOM_TARGET (sevenzipjbinding-lib-jar ALL
@@ -192,10 +188,10 @@ ADD_CUSTOM_COMMAND(OUTPUT ${SEVENZIPJBINDING_LIB_JAR}
192
188
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
193
189
COMMENT Building Platformdependend jar)
194
190
195
- IF (USE_MINGW_W64 )
191
+ IF (RUNTIME_LIB )
196
192
ADD_CUSTOM_COMMAND (TARGET sevenzipjbinding-lib-jar POST_BUILD
197
193
COMMAND ${CMAKE_COMMAND} -E copy
198
- ${MINGW_RUNTIME_DLL_FILENAME }
194
+ ${RUNTIME_LIB_FILENAME }
199
195
${PLATFORM}
200
196
COMMAND ${JAVA_ARCHIVE} uf ${SEVENZIPJBINDING_LIB_JAR}
201
197
-C ${PROJECT_BINARY_DIR}
@@ -241,7 +237,7 @@ SET(PREPACKAGE_ACTIONS
241
237
ENDMACRO()
242
238
243
239
FILE(MAKE_DIRECTORY \" ${JAVADOC_DIR} \" )
244
- EXECUTE_PROCESS(COMMAND ${JAVA_DOC}
240
+ EXECUTE_PROCESS(COMMAND \" ${JAVA_DOC} \"
245
241
-public -version -author -quiet
246
242
-sourcepath ${PROJECT_SOURCE_DIR} /jbinding-java/src
247
243
-subpackages net.sf.sevenzipjbinding
@@ -251,13 +247,13 @@ SET(PREPACKAGE_ACTIONS
251
247
COPY_FROM_SRC(\" ${PROJECT_SOURCE_DIR} /jbinding-java/src\" \" ${PREPACKAGE_TMP} /java-src/\" \"\" )
252
248
COPY_FROM_SRC(\" ${PROJECT_SOURCE_DIR} /jbinding-cpp\" \" ${PREPACKAGE_TMP} /cpp-src/\" CMakeLists.txt)
253
249
254
- EXECUTE_PROCESS(COMMAND ${JAVA_ARCHIVE} cMf ${PREPACKAGE_TMP} /java-src.zip .
250
+ EXECUTE_PROCESS(COMMAND \" ${JAVA_ARCHIVE} \" cMf ${PREPACKAGE_TMP} /java-src.zip .
255
251
WORKING_DIRECTORY ${PREPACKAGE_TMP} /java-src/)
256
252
257
- EXECUTE_PROCESS(COMMAND ${JAVA_ARCHIVE} cMf ${PREPACKAGE_TMP} /cpp-src.zip .
253
+ EXECUTE_PROCESS(COMMAND \" ${JAVA_ARCHIVE} \" cMf ${PREPACKAGE_TMP} /cpp-src.zip .
258
254
WORKING_DIRECTORY ${PREPACKAGE_TMP} /cpp-src/)
259
255
260
- EXECUTE_PROCESS(COMMAND ${JAVA_ARCHIVE} cMf ${PREPACKAGE_TMP} /javadoc.zip .
256
+ EXECUTE_PROCESS(COMMAND \" ${JAVA_ARCHIVE} \" cMf ${PREPACKAGE_TMP} /javadoc.zip .
261
257
WORKING_DIRECTORY ${JAVADOC_DIR} )"
262
258
)
263
259
@@ -314,7 +310,7 @@ IF(BUILD_TESTING)
314
310
SET (JUNIT_TEST_RUNNER ${PROJECT_BINARY_DIR} /JUnitRunner.cmake)
315
311
FILE (WRITE ${JUNIT_TEST_RUNNER} "STRING(REPLACE \" %3D\" \" =\" JAVA_OPT_TO_USE \"\$ {JAVA_OPT}\" )
316
312
EXECUTE_PROCESS(COMMAND
317
- ${JAVA_RUNTIME} -cp \" ${JUNIT_LIB}${PATH_SEP}${TESTS_JAR}${PATH_SEP}${SEVENZIP_JBINDING_JAR}${PATH_SEP}${SEVENZIPJBINDING_LIB_JAR} \"
313
+ \" ${JAVA_RUNTIME} \" -cp \" ${JUNIT_LIB}${PATH_SEP}${TESTS_JAR}${PATH_SEP}${SEVENZIP_JBINDING_JAR}${PATH_SEP}${SEVENZIPJBINDING_LIB_JAR} \"
318
314
\" -DSINGLEBUNDLE=\$ {SINGLEBUNDLE}\" \$ {JAVA_OPT_TO_USE} " )
319
315
IF (JAVA_TMP)
320
316
FILE (APPEND ${JUNIT_TEST_RUNNER} "\" -Djava.io.tmpdir=${JAVA_TMP} \" " )
0 commit comments