Skip to content

Commit 81c7a3e

Browse files
committed
CMakeModules: revert to support older CMake versions
1 parent 10b5fdf commit 81c7a3e

8 files changed

+256
-1243
lines changed

CMakeModules/CMakeFindJavaCommon.cmake

Lines changed: 0 additions & 41 deletions
This file was deleted.

CMakeModules/CMakeParseArguments.cmake

Lines changed: 0 additions & 21 deletions
This file was deleted.

CMakeModules/FindJNI2.cmake

Lines changed: 68 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,17 @@
1-
#.rst:
2-
# FindJNI
3-
# -------
4-
#
5-
# Find JNI java libraries.
6-
#
1+
# - Find JNI java libraries.
72
# This module finds if Java is installed and determines where the
8-
# include files and libraries are. It also determines what the name of
9-
# the library is. The caller may set variable JAVA_HOME to specify a
10-
# Java installation prefix explicitly.
11-
#
12-
# This module sets the following result variables:
3+
# include files and libraries are. It also determines what the name of
4+
# the library is. This code sets the following variables:
135
#
14-
# ::
6+
# JNI_INCLUDE_DIRS = the include dirs to use
7+
# JNI_LIBRARIES = the libraries to use
8+
# JNI_FOUND = TRUE if JNI headers and libraries were found.
9+
# JAVA_AWT_LIBRARY = the path to the jawt library
10+
# JAVA_JVM_LIBRARY = the path to the jvm library
11+
# JAVA_INCLUDE_PATH = the include path to jni.h
12+
# JAVA_INCLUDE_PATH2 = the include path to jni_md.h
13+
# JAVA_AWT_INCLUDE_PATH = the include path to jawt.h
1514
#
16-
# JNI_INCLUDE_DIRS = the include dirs to use
17-
# JNI_LIBRARIES = the libraries to use
18-
# JNI_FOUND = TRUE if JNI headers and libraries were found.
19-
# JAVA_AWT_LIBRARY = the path to the jawt library
20-
# JAVA_JVM_LIBRARY = the path to the jvm library
21-
# JAVA_INCLUDE_PATH = the include path to jni.h
22-
# JAVA_INCLUDE_PATH2 = the include path to jni_md.h
23-
# JAVA_AWT_INCLUDE_PATH = the include path to jawt.h
2415

2516
#=============================================================================
2617
# Copyright 2001-2009 Kitware, Inc.
@@ -42,11 +33,7 @@ macro(java_append_library_directories _var)
4233
# 1.6.0_18 + icedtea patches. However, it would be much better to base the
4334
# guess on the first part of the GNU config.guess platform triplet.
4435
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
45-
if(CMAKE_LIBRARY_ARCHITECTURE STREQUAL "x86_64-linux-gnux32")
46-
set(_java_libarch "x32" "amd64" "i386")
47-
else()
48-
set(_java_libarch "amd64" "i386")
49-
endif()
36+
set(_java_libarch "amd64")
5037
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$")
5138
set(_java_libarch "i386")
5239
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^alpha")
@@ -57,13 +44,11 @@ macro(java_append_library_directories _var)
5744
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^mips")
5845
# mips* machines are bi-endian mostly so processor does not tell
5946
# endianess of the underlying system.
60-
set(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}" "mips" "mipsel" "mipseb" "mips64" "mips64el" "mipsn32" "mipsn32el")
61-
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64le")
62-
set(_java_libarch "ppc64" "ppc64le")
47+
set(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}" "mips" "mipsel" "mipseb")
6348
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64")
64-
set(_java_libarch "ppc64" "ppc")
49+
set(_java_libarch "ppc64")
6550
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)")
66-
set(_java_libarch "ppc" "ppc64")
51+
set(_java_libarch "ppc")
6752
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^sparc")
6853
# Both flavours can run on the same processor
6954
set(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}" "sparc" "sparcv9")
@@ -92,49 +77,25 @@ macro(java_append_library_directories _var)
9277
if(_path MATCHES "{libarch}")
9378
foreach(_libarch ${_java_libarch})
9479
string(REPLACE "{libarch}" "${_libarch}" _newpath "${_path}")
95-
if(EXISTS ${_newpath})
96-
list(APPEND ${_var} "${_newpath}")
97-
endif()
80+
list(APPEND ${_var} "${_newpath}")
9881
endforeach()
9982
else()
100-
if(EXISTS ${_path})
101-
list(APPEND ${_var} "${_path}")
102-
endif()
83+
list(APPEND ${_var} "${_path}")
10384
endif()
10485
endforeach()
10586
endmacro()
10687

107-
include(${CMAKE_CURRENT_LIST_DIR}/CMakeFindJavaCommon.cmake)
108-
109-
# Save CMAKE_FIND_FRAMEWORK
110-
if(DEFINED CMAKE_FIND_FRAMEWORK)
111-
set(_JNI_CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK})
112-
else()
113-
unset(_JNI_CMAKE_FIND_FRAMEWORK)
114-
endif()
115-
116-
if(_JAVA_HOME_EXPLICIT)
117-
set(CMAKE_FIND_FRAMEWORK NEVER)
118-
endif()
119-
120-
set(JAVA_AWT_LIBRARY_DIRECTORIES)
121-
if(_JAVA_HOME)
122-
JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_LIBRARY_DIRECTORIES
123-
${_JAVA_HOME}/jre/lib/{libarch}
124-
${_JAVA_HOME}/jre/lib
125-
${_JAVA_HOME}/lib/{libarch}
126-
${_JAVA_HOME}/lib
127-
${_JAVA_HOME}
128-
)
129-
endif()
13088
get_filename_component(java_install_version
13189
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit;CurrentVersion]" NAME)
13290

133-
list(APPEND JAVA_AWT_LIBRARY_DIRECTORIES
91+
set(JAVA_AWT_LIBRARY_DIRECTORIES
13492
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/lib"
13593
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/lib"
13694
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\${java_install_version};JavaHome]/lib"
13795
)
96+
97+
file(TO_CMAKE_PATH "$ENV{JAVA_HOME}" _JAVA_HOME)
98+
13899
JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_LIBRARY_DIRECTORIES
139100
${_JAVA_HOME}/jre/lib/{libarch}
140101
${_JAVA_HOME}/jre/lib
@@ -180,7 +141,8 @@ JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_LIBRARY_DIRECTORIES
180141

181142
set(JAVA_JVM_LIBRARY_DIRECTORIES)
182143
foreach(dir ${JAVA_AWT_LIBRARY_DIRECTORIES})
183-
list(APPEND JAVA_JVM_LIBRARY_DIRECTORIES
144+
set(JAVA_JVM_LIBRARY_DIRECTORIES
145+
${JAVA_JVM_LIBRARY_DIRECTORIES}
184146
"${dir}"
185147
"${dir}/client"
186148
"${dir}/server"
@@ -190,17 +152,15 @@ foreach(dir ${JAVA_AWT_LIBRARY_DIRECTORIES})
190152
)
191153
endforeach()
192154

193-
set(JAVA_AWT_INCLUDE_DIRECTORIES)
194-
if(_JAVA_HOME)
195-
list(APPEND JAVA_AWT_INCLUDE_DIRECTORIES ${_JAVA_HOME}/include)
196-
endif()
197-
list(APPEND JAVA_AWT_INCLUDE_DIRECTORIES
155+
156+
set(JAVA_AWT_INCLUDE_DIRECTORIES
198157
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/include"
199158
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/include"
200159
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\${java_install_version};JavaHome]/include"
201160
)
202161

203162
JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_INCLUDE_DIRECTORIES
163+
${_JAVA_HOME}/include
204164
/usr/include
205165
/usr/local/include
206166
/usr/lib/java/include
@@ -222,6 +182,8 @@ JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_INCLUDE_DIRECTORIES
222182
# Debian specific path for default JVM
223183
/usr/lib/jvm/default-java/include
224184
# Ubuntu
185+
/usr/lib/jvm/java-7-openjdk-{libarch}/include
186+
/usr/lib/jvm/java-6-openjdk-{libarch}/include
225187
/usr/lib/jvm/java-1.5.0-gcj-4.6/include
226188
/usr/lib/jvm/java-1.5.0-gcj-4.5/include
227189
/usr/lib/jvm/java-1.5.0-gcj-4.4/include
@@ -236,97 +198,84 @@ foreach(JAVA_PROG "${JAVA_RUNTIME}" "${JAVA_COMPILE}" "${JAVA_ARCHIVE}")
236198
get_filename_component(jpath "${JAVA_PROG}" PATH)
237199
foreach(JAVA_INC_PATH ../include ../java/include ../share/java/include)
238200
if(EXISTS ${jpath}/${JAVA_INC_PATH})
239-
list(APPEND JAVA_AWT_INCLUDE_DIRECTORIES "${jpath}/${JAVA_INC_PATH}")
201+
set(JAVA_AWT_INCLUDE_DIRECTORIES ${JAVA_AWT_INCLUDE_DIRECTORIES} "${jpath}/${JAVA_INC_PATH}")
240202
endif()
241203
endforeach()
242204
foreach(JAVA_LIB_PATH
243205
../lib ../jre/lib ../jre/lib/i386
244206
../java/lib ../java/jre/lib ../java/jre/lib/i386
245207
../share/java/lib ../share/java/jre/lib ../share/java/jre/lib/i386)
246208
if(EXISTS ${jpath}/${JAVA_LIB_PATH})
247-
list(APPEND JAVA_AWT_LIBRARY_DIRECTORIES "${jpath}/${JAVA_LIB_PATH}")
209+
set(JAVA_AWT_LIBRARY_DIRECTORIES ${JAVA_AWT_LIBRARY_DIRECTORIES} "${jpath}/${JAVA_LIB_PATH}")
248210
endif()
249211
endforeach()
250212
endforeach()
251213

252214
if(APPLE)
253-
if(CMAKE_FIND_FRAMEWORK STREQUAL "ONLY")
254-
set(_JNI_SEARCHES FRAMEWORK)
255-
elseif(CMAKE_FIND_FRAMEWORK STREQUAL "NEVER")
256-
set(_JNI_SEARCHES NORMAL)
257-
elseif(CMAKE_FIND_FRAMEWORK STREQUAL "LAST")
258-
set(_JNI_SEARCHES NORMAL FRAMEWORK)
259-
else()
260-
set(_JNI_SEARCHES FRAMEWORK NORMAL)
215+
if(EXISTS ~/Library/Frameworks/JavaVM.framework)
216+
set(JAVA_HAVE_FRAMEWORK 1)
217+
endif()
218+
if(EXISTS /Library/Frameworks/JavaVM.framework)
219+
set(JAVA_HAVE_FRAMEWORK 1)
220+
endif()
221+
if(EXISTS /System/Library/Frameworks/JavaVM.framework)
222+
set(JAVA_HAVE_FRAMEWORK 1)
261223
endif()
262-
set(_JNI_FRAMEWORK_JVM NAMES JavaVM)
263-
set(_JNI_FRAMEWORK_JAWT "${_JNI_FRAMEWORK_JVM}")
264-
else()
265-
set(_JNI_SEARCHES NORMAL)
266-
endif()
267224

268-
set(_JNI_NORMAL_JVM
269-
NAMES jvm
270-
PATHS ${JAVA_JVM_LIBRARY_DIRECTORIES}
271-
)
225+
if(JAVA_HAVE_FRAMEWORK)
226+
if(NOT JAVA_AWT_LIBRARY)
227+
set (JAVA_AWT_LIBRARY "-framework JavaVM" CACHE FILEPATH "Java Frameworks" FORCE)
228+
endif()
272229

273-
set(_JNI_NORMAL_JAWT
274-
NAMES jawt
275-
PATHS ${JAVA_AWT_LIBRARY_DIRECTORIES}
276-
)
230+
if(NOT JAVA_JVM_LIBRARY)
231+
set (JAVA_JVM_LIBRARY "-framework JavaVM" CACHE FILEPATH "Java Frameworks" FORCE)
232+
endif()
277233

278-
foreach(search ${_JNI_SEARCHES})
279-
find_library(JAVA_JVM_LIBRARY ${_JNI_${search}_JVM})
280-
find_library(JAVA_AWT_LIBRARY ${_JNI_${search}_JAWT})
281-
if(JAVA_JVM_LIBRARY)
282-
break()
283-
endif()
284-
endforeach()
285-
unset(_JNI_SEARCHES)
286-
unset(_JNI_FRAMEWORK_JVM)
287-
unset(_JNI_FRAMEWORK_JAWT)
288-
unset(_JNI_NORMAL_JVM)
289-
unset(_JNI_NORMAL_JAWT)
234+
if(NOT JAVA_AWT_INCLUDE_PATH)
235+
if(EXISTS /System/Library/Frameworks/JavaVM.framework/Headers/jawt.h)
236+
set (JAVA_AWT_INCLUDE_PATH "/System/Library/Frameworks/JavaVM.framework/Headers" CACHE FILEPATH "jawt.h location" FORCE)
237+
endif()
238+
endif()
290239

291-
# Find headers matching the library.
292-
if("${JAVA_JVM_LIBRARY};${JAVA_AWT_LIBRARY};" MATCHES "(/JavaVM.framework|-framework JavaVM);")
293-
set(CMAKE_FIND_FRAMEWORK ONLY)
240+
# If using "-framework JavaVM", prefer its headers *before* the others in
241+
# JAVA_AWT_INCLUDE_DIRECTORIES... (*prepend* to the list here)
242+
#
243+
set(JAVA_AWT_INCLUDE_DIRECTORIES
244+
~/Library/Frameworks/JavaVM.framework/Headers
245+
/Library/Frameworks/JavaVM.framework/Headers
246+
/System/Library/Frameworks/JavaVM.framework/Headers
247+
${JAVA_AWT_INCLUDE_DIRECTORIES}
248+
)
249+
endif()
294250
else()
295-
set(CMAKE_FIND_FRAMEWORK NEVER)
251+
find_library(JAVA_AWT_LIBRARY jawt
252+
PATHS ${JAVA_AWT_LIBRARY_DIRECTORIES}
253+
)
254+
find_library(JAVA_JVM_LIBRARY NAMES jvm JavaVM
255+
PATHS ${JAVA_JVM_LIBRARY_DIRECTORIES}
256+
)
296257
endif()
297258

298259
# add in the include path
299260
find_path(JAVA_INCLUDE_PATH jni.h
300261
${JAVA_AWT_INCLUDE_DIRECTORIES}
301262
)
302263

303-
find_path(JAVA_INCLUDE_PATH2 NAMES jni_md.h jniport.h
304-
PATHS
264+
find_path(JAVA_INCLUDE_PATH2 jni_md.h
305265
${JAVA_INCLUDE_PATH}
306-
${JAVA_INCLUDE_PATH}/darwin
307266
${JAVA_INCLUDE_PATH}/win32
308267
${JAVA_INCLUDE_PATH}/linux
309268
${JAVA_INCLUDE_PATH}/freebsd
310-
${JAVA_INCLUDE_PATH}/openbsd
311269
${JAVA_INCLUDE_PATH}/solaris
312270
${JAVA_INCLUDE_PATH}/hp-ux
313271
${JAVA_INCLUDE_PATH}/alpha
314-
${JAVA_INCLUDE_PATH}/aix
315272
)
316273

317274
find_path(JAVA_AWT_INCLUDE_PATH jawt.h
318275
${JAVA_INCLUDE_PATH}
319276
)
320277

321-
# Restore CMAKE_FIND_FRAMEWORK
322-
if(DEFINED _JNI_CMAKE_FIND_FRAMEWORK)
323-
set(CMAKE_FIND_FRAMEWORK ${_JNI_CMAKE_FIND_FRAMEWORK})
324-
unset(_JNI_CMAKE_FIND_FRAMEWORK)
325-
else()
326-
unset(CMAKE_FIND_FRAMEWORK)
327-
endif()
328-
329-
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
278+
include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
330279
FIND_PACKAGE_HANDLE_STANDARD_ARGS(JNI DEFAULT_MSG JAVA_AWT_LIBRARY JAVA_JVM_LIBRARY
331280
JAVA_INCLUDE_PATH JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH)
332281

0 commit comments

Comments
 (0)