Commit Graph

111 Commits

Author SHA1 Message Date
Brad King 7402593a08 FindJNI: Improve output on macOS if Xcode is not installed
Improve the changes from:

* commit efa0e2ddaf (FindJNI: Update for Xcode greater than 12.1 on macOS,
                     2023-08-06, v3.27.2~5^2)
* commit 597139b853 (FindJNI: Restore support for macOS without Xcode,
                     2023-08-11, v3.27.3~8^2)

to avoid leaking `xcodebuild`'s stderr.

Issue: #26229
2024-08-19 11:37:48 -04:00
WANG Xuerui 983291669d FindJNI: Support finding libjvm.so for all OpenJDK variants
Formerly only the "client" and "server" variant directories are being
checked for libjvm.so, but according to a 2021 OpenJDK upstream change
present in OpenJDK >= 18, there can be "minimal" and "zero" variants as
well. In particular, formerly (OpenJDK <= 17) the Zero variant had its
libjvm.so in "server/", but "zero/" in newer versions, which regressed
downstream CMake project builds running on systems with OpenJDK Zero VM.

Fix it by checking all 4 variant directories for libjvm.so.

Link: https://bugs.openjdk.org/browse/JDK-8273494
Link: https://github.com/openjdk/jdk/pull/5440
Link: https://github.com/openjdk/jdk/commit/8fbcc8239a3fc04e56ebbd287c7bb5db731977b7
Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1078446
2024-08-15 09:41:57 -04:00
scivision d95988c8c3 FindJNI: use modern foreach() syntax 2023-09-20 14:22:37 -04:00
scivision 7e4fe71633 FindJNI: use 2-space indents 2023-09-20 14:22:37 -04:00
scivision 88411fd629 FindJNI: use cmake_host_system_info to query registry 2023-09-20 14:22:37 -04:00
Brad King 597139b853 FindJNI: Restore support for macOS without Xcode
Fix logic added by commit efa0e2ddaf (FindJNI: Update for Xcode greater than
12.1 on macOS, 2023-08-06, v3.27.2~5^2) to tolerate missing `xcodebuild`.

Fixes: #25181
2023-08-11 10:15:44 -04:00
Christian Oyarzun efa0e2ddaf FindJNI: Update for Xcode greater than 12.1 on macOS
`JavaVM.framework` was removed from Xcode in version 12.2+.

Fixes: #23364
2023-08-07 16:09:22 -04:00
Even Rouault 7f738313e0 FindJNI: add Ubuntu specific paths for more recent JDK versions 2023-05-01 22:26:07 +02:00
Sergiu Deitsch c833df0924 FindJNI: replace CMAKE_ANDROID_API by CMAKE_SYSTEM_VERSION
In commit 00c4f488f2 (FindJNI: support Android NDK, 2022-03-18,
v3.24.0-rc1~325^2) we used `CMAKE_ANDROID_API` to check the Android API
level.  However, `CMAKE_SYSTEM_VERSION` is the authoritative value.

When cross-compiling for Android, an unset `CMAKE_ANDROID_API` can
result in failure to locate JNI because the `NativeHelper` component
cannot be found. In this case, the component is falsely assumed to be
available by default (and thus required) since the comparison against an
unset `CMAKE_ANDROID_API` variable evaluates to true.  Use
`CMAKE_SYSTEM_VERSION` to determine the Android API level instead.

Issue: #23830
2022-10-17 15:51:10 -04:00
Marc Chevrier c80763c701 Merge branch 'backport-3.23-Java-version-handling' into Java-version-handling 2022-05-05 11:18:55 +02:00
Marc Chevrier 93e18a4eb6 FindJava, FindJNI: ensure correct handling of versions on Windows
* versions are sorted in correct order
* EXACT keyword is taken into account

Fixes: #23479
2022-05-05 11:14:52 +02:00
Sergiu Deitsch 00c4f488f2 FindJNI: support Android NDK 2022-04-05 23:56:28 +02:00
Sergiu Deitsch 171d45c039 FindJNI: added components and imported targets 2022-04-04 19:46:32 +02:00
Sergiu Deitsch 35e92ec619 FindJNI: improved description 2022-04-04 19:46:32 +02:00
Josef Angstenberger dad5b9d845 Modules: Fix typos and spelling in comments 2021-05-07 17:00:15 +02:00
Adriaan de Groot 79bfa0f75e FindJNI: Search in FreeBSD standard locations 2020-10-07 10:12:49 -04:00
Brad King 696d16ae6c FindJNI: Add aarch64 support
Extend the fix from commit 44dffbcc94 (FindJNI: Add arm64 support,
2020-08-25, v3.18.3~21^2) to cover the `aarch64` name too.

Fixes: #21237
2020-09-25 12:04:34 -04:00
Malcolm Parsons 44dffbcc94 FindJNI: Add arm64 support
On 64-bit ARM, JVM directories have an arm64 suffix.
2020-08-25 14:34:02 -04:00
Marc Chevrier 3d02593986 FindJava: ensure all versions can be found
Fixes: #19765
2019-10-02 14:47:11 +02:00
Christian Pfeiffer 77cede0977 FindJNI: Unify path search, fix support for Java 9
Java 9 restructured the standard location of the AWT libraries due to
the removal of the JRE/JDK separation. We should check all possible
combinations of subdirectories to the Java root directories to ensure
that the libraries will be found after an upgrade.

Furthermore, a root directory would contain both, include and library
paths, so the search should be unified to ease maintenance on the
module.
2019-03-01 08:53:26 -05:00
Bartosz Kosiorek 047bf93748 FindJNI: Update module documentation 2018-10-03 07:49:49 -04:00
Bartosz Kosiorek b6104f87cc FindJNI: Add Ubuntu 18.04 path to java-11-openjdk 2018-10-03 07:48:44 -04:00
Marc Chevrier b4e1569315 FindJava, FindJNI: fix erroneous regex, enhance registry lookup 2018-05-07 09:40:55 -04:00
Marc Chevrier 1013560a6a FindJava, FindJNI: Ensure most recent version is searched first 2018-04-27 08:52:22 -04:00
Marc Chevrier 5482f485b8 FindJava, FindJNI, UseJava: update for version 10 support
* new version format
* new registry layout on Windows

Fixes: #17938
2018-04-25 09:18:53 -04:00
YunQiang Su 8c92596e96 FindJNI: add some new architecture names for mips release 6 2018-03-14 11:17:19 -04:00
Christian Pfeiffer f88ef9a9b8 Modules: Remove paths set as global Unix prefixes
This commit removes hardcoded paths that are already given in the
platform files or in `UnixPath` on a global level.
2017-11-20 16:21:49 +01:00
luzpaz 777e87ae00 Fix trivial typos in text
Some are user facing.

Found using

    codespell -q 3 --skip="./Utilities" -I .cmake-whitelist.txt`

whereby the whitelist contained:

    ans
    dum
    helpfull
    emmited
    emmitted
    buil
    iff
    isnt
    nto
    ot
    pathes
    substract
    te
    todays
    upto
    whitespaces
2017-11-03 10:25:05 -04:00
Kitsu d0ada3e218 FindJNI: Add jvm paths for Arch Linux 2017-03-03 08:14:34 -05:00
Brad King c1f97af640 Merge topic 'simplify-license-notices'
19671831 Help: Update cmake-developer(7) module license docs for new notice
756169ac Tests: Update ModuleNotices test for new notice
845d86bc Utilities/Scripts: Remove temporary script that filtered license notices
86578ecc Simplify CMake per-source license notices
b7180cfe Utilities/Scripts: Add temporary script to filter license notices
7feb4ecc Copyright.txt: Add notice of copyright by contributors
78f77f60 Utilities/KWStyle: Remove unused header check reference file
681e0429 Tests: Fix RunCMake.CTest output match to tolerate line number changes
2016-09-28 08:05:10 -04:00
Brad King 86578eccf2 Simplify CMake per-source license notices
Per-source copyright/license notice headers that spell out copyright holder
names and years are hard to maintain and often out-of-date or plain wrong.
Precise contributor information is already maintained automatically by the
version control tool.  Ultimately it is the receiver of a file who is
responsible for determining its licensing status, and per-source notices are
merely a convenience.  Therefore it is simpler and more accurate for
each source to have a generic notice of the license name and references to
more detailed information on copyright holders and full license terms.

Our `Copyright.txt` file now contains a list of Contributors whose names
appeared source-level copyright notices.  It also references version control
history for more precise information.  Therefore we no longer need to spell
out the list of Contributors in each source file notice.

Replace CMake per-source copyright/license notice headers with a short
description of the license and links to `Copyright.txt` and online information
available from "https://cmake.org/licensing".  The online URL also handles
cases of modules being copied out of our source into other projects, so we
can drop our notices about replacing links with full license text.

Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority
of the replacements mechanically.  Manually fix up shebang lines and trailing
newlines in a few files.  Manually update the notices in a few files that the
script does not handle.
2016-09-27 15:14:44 -04:00
Orion Poplawski 59eb75d9d2 FindJNI: Add aarch32 path on arm 2016-09-27 08:31:02 -04:00
Brad King 7c8c07d03c Merge topic 'FindJNI-cleanup'
4e11c966 FindJNI: Improve formatting of FPHSA call
2016-07-06 09:36:10 -04:00
O Libre 4e11c9660f FindJNI: Improve formatting of FPHSA call
Pass one argument per line for better readability.
2016-07-05 14:35:24 -04:00
O Libre 26d16380b0 FindJNI: Fix support for Ubuntu 15.10
The library search paths added by commit v3.6.0-rc1~281^2~1 (FindJNI:
Add support for Ubuntu 15.10, 2016-03-08) were incorrect.  Fix them.
2016-07-05 14:33:46 -04:00
O. Libre 1b029ea91f FindJNI: Append path only "if(EXISTS" 2016-03-09 08:55:13 -05:00
O. Libre add2557865 FindJNI: Add support for Ubuntu 15.10
- Reuse JAVA_APPEND_LIBRARY_DIRECTORIES for JAVA_AWT_INCLUDE_DIRECTORIES
- Append three directories /usr/lib/jvm/java-{8,7,6}-openjdk-{libarch}
2016-03-09 08:55:13 -05:00
Marc Chevrier 4d4fcabdfd FindJNI: Add support for AIX java sdk 2015-12-04 09:31:35 -05:00
Yunqiang Su 90a22c3ac5 FindJNI: Add mips64(el) mipsn32(el) support (#15714)
Submitted-by: Felix Geyer <fgeyer@debian.org>
2015-08-28 09:37:22 -04:00
Marc Chevrier 290b0f94b5 FindJNI: Add support for SuSE platform and IBM Java SDK 2015-08-25 09:47:05 -04:00
Thorsten Glaser c4d78b8bc0 FindJNI: Add support for x32 architecture on Linux (#15710)
This architecture uses an amd64 kernel but x32 userland.
Use CMAKE_LIBRARY_ARCHITECTURE to distinguish it for now.
2015-08-24 10:54:13 -04:00
Tiago Stürmer Daitx bce4e20f78 FindJNI: Add arch-specific library dir for JDK 9 layout (#15408)
JDK9's directory structure changes and no jdk/jre exists.  The arch
lib path is now jdk/lib/<arch> (instead of jdk/jre/lib/<arch>).
2015-02-18 09:19:17 -05:00
Dinar Valeev 18ac6713e8 FindJNI: search for ppc64 on ppc64le as well
IcedTea 2.5 have changed libarch for ppc64le to ppc64. Adjust FindJNI
to look for both for backward compatibility.

Signed-off-by: Dinar Valeev <dvaleev@suse.com>
2014-07-01 12:07:37 +02:00
Dinar Valeev ac2527e1d9 FindJNI: Add ppc64le architecture
Signed-off-by: Dinar Valeev <dvaleev@suse.com>
2014-02-18 08:30:51 -05:00
Brad King 70560ee146 FindJNI: Overhaul finding JDK libraries and headers on OS X
Drop the hard-coded framework paths and "-framework JavaJM" on APPLE.

Save and restore the value of CMAKE_FIND_FRAMEWORK.  Use its value to
choose and order between a normal search for jvm&jawt and a framework
search for JavaVM.  When JAVA_HOME is set explicitly by the user then
force a normal search by setting CMAKE_FIND_FRAMEWORK to NEVER.  Once
the library is found, set CMAKE_FIND_FRAMEWORK to help find_path locate
the matching headers (framework v. normal).
2014-01-29 14:12:54 -05:00
Brad King fcd66a7f7b Find{Java,JNI}: Consider JAVA_HOME before ENV{JAVA_HOME}
Add a helper module CMakeFindJavaCommon shared between FindJava
and FindJNI to select a JAVA_HOME value.  Prefer a CMake variable
or cache entry first, then an environment variable.
2014-01-29 14:12:54 -05:00
Brad King 4b3614b25a Find{Java,JNI}: Use ENV{JAVA_HOME} first when set
Use list(APPEND) instead of set() to append to lists.
When ENV{JAVA_HOME} is set explicitly place values based
on it at the front their lists.
2014-01-29 14:02:29 -05:00
Joe Abbey 519084cd2e FindJNI: Set JAVA_INCLUDE_PATH2 for darwin (#14508) 2014-01-09 09:59:56 -05:00
Modestas Vainius cde56c1223 FindJNI: Support biarch installations (#14541)
On biarch architecture, CMAKE_SYSTEM_PROCESSOR might be a 64bit one
while the system 32bit one. Take this into consideration while looking
for Java library directory.

Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=718290
2013-11-04 08:55:02 -05:00
Kitware Robot f051814ed0 Convert builtin help to reStructuredText source files
Run the convert-help.bash script to convert documentation:

 ./convert-help.bash "/path/to/CMake-build/bin"

Then remove it.
2013-10-15 14:12:03 -04:00