Commit Graph

87 Commits

Author SHA1 Message Date
Peter Kokot
0fedf1592c Find*: Update *_FOUND variables
This marks all `<PACKAGENAME>_FOUND` result variables as deprecated
where possible (for `<PackageName>` find modules) to make it clearer
which variable to use.

In CMake 3.3, the FindPackageHandleStandardArgs module was refactored to
set both `<PackageName>_FOUND` and uppercase `<PACKAGENAME>_FOUND`
result variables to the same values. Before that, the FOUND_VAR argument
could be used to set the result variable.

* FindMatlab: Uppercased MATLAB_FOUND is not mentioned as it was never
  documented.
* Documentation for FindPythonInterp and FindPythonLibs modules synced
  accordingly to their deprecation (3.12 instead of 4.2).
* OPENGL_FOUND: deprecation version synced with other find modules.
* DevIL_FOUND was introduced in CMake 3.8. The uppercased variant not
  mentioned as it was previously never documented.

Fixes: #27242
2025-09-23 21:40:58 +02:00
Peter Kokot
1526655507 Find*: Add intro code blocks
- Added intro code blocks showing how to use find modules.
- Synced modules documentation.
- Extended few examples to make the intro code blocks fit into the
  modules descriptions.
- Synced some RST formatting, variables descriptions and positions.
- Removed few redundant internal comments.

Issue: #26555
2025-08-04 21:26:12 +02:00
Peter Kokot
bc3bcff18c FindJava: Update documentation
- Updated and reworded module documentation.
- Synced a bit with other similar find modules.
- Added separate examples section.
- Added `versionadded` directives for some components when they got
  introduced in the module.
2025-04-09 20:26:47 +02:00
Kitware Robot
1772622772 LICENSE: Replace references to Copyright.txt with LICENSE.rst
```
git grep -lz 'Copyright.txt or https://cmake.org/licensing ' |
  while IFS= read -r -d $'\0' f ; do
    sed -i '/Copyright.txt or https:\/\/cmake.org\/licensing / {
              s/Copyright.txt/LICENSE.rst/
            }' "$f" ; done
```
2025-03-03 10:43:35 -05:00
Brad King
7afa58b15d Modules/Find*: Include FindPackageHandleStandardArgs normally
Since commit d74210a8bd (CMP0017: Remove support for OLD behavior,
2024-11-17) we can rely on CMP0017's NEW behavior unconditionally.
Calling `include(FindPackageHandleStandardArgs)` in a builtin module
will always get the builtin `FindPackageHandleStandardArgs`.
2025-01-30 08:53:12 -05:00
Nikita Nemkin
9890cfc4ec Help: More syntax highlighting for literal blocks
Covers almost all blocks containing actual code, except:

* Parsed-literal blocks can't be highlighted, including many command
  summaries and substitution-heavy docs like find_... commands.
  This is a Sphinx limitation.

* Code with errors, like CMP0049, DEPLOYMENT_ADDITIONAL_FILES,
  DEPLOYMENT_REMOTE_DIRECTORY, @PACKAGE_INIT@ substitution in the
  tutorial, bracket arguments/comments in cmake-language.7 and
  cmake-developer.7.

* FindQt4 module, which needs reformatting.
2025-01-29 16:48:53 -05:00
scivision
b56d4e041a FindJava: use cmake_host_system_info to query registry 2023-09-20 14:22:37 -04:00
scivision
bab9a23724 FindJava: use modern foreach() syntax 2023-09-20 14:22:30 -04:00
Seth R Johnson
3acbe073ba FindJava: improve failure/verbosity when 'java -version' fails
On macOS monterey, `java -version` returns
```
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.

```
which does not match the existing regex. Instead of hitting a fatal error if required,
reset the variable and let FindPackage handle the result.

If `QUIET` is requested, don't print anything if the version query fails. Otherwise, print the message.

Additionally, clean up temporary variables set by the execute_process commands.
2022-05-31 07:34:49 -04: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
Nikita Nemkin
8fea95319b Help: Add .. versionadded directives to module docs
Issue: #19715
2020-12-02 21:00:30 +05:00
Brad King
e8051b1f20 FindJava: Update check to avoid accepting macOS stub 'java' as Java
Since commit dd378258f1 (FindJava: Do not accept OS X stub 'java' as
Java, 2014-10-24, v3.1.0-rc3~29^2) we try to avoid using the macOS
`/usr/bin/java` stub if no underlying implementation of Java is actually
installed.  However, the message that `/usr/bin/java` prints when there
is no Java available has changed since then.  Update our check to also
look for the new message.

While at it, revise the way we suppress `Java_JAVA_EXECUTABLE`.
Previously we set its cache entry to `Java_JAVA_EXECUTABLE-NOTFOUND`,
but that would cause the same find-and-reject sequence to be followed
every time CMake runs in a build tree.  Instead, use the approach from
commit 2c0db404d1 (FindSubversion: Do not accept macOS stub without
Xcode implementation, 2020-05-28, v3.18.0-rc1~67^2).  Leave the cache
entry alone and just set a normal variable of the same name to hide it.
2020-07-08 16:17:40 -04:00
Marc Chevrier
3d02593986 FindJava: ensure all versions can be found
Fixes: #19765
2019-10-02 14:47:11 +02:00
Kitware Robot
df4ed1e9ff Help: Convert remaining modules to block-style comments 2018-10-22 11:09:34 -04:00
Bartosz Kosiorek
8d23264b50 FindJava: Update module documentation 2018-10-03 07:50:03 -04:00
Brad King
14bfd267e5 Merge topic 'java-new-packaging-fixes'
b4e1569315 FindJava, FindJNI: fix erroneous regex, enhance registry lookup

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2042
2018-05-08 08:20:36 -04:00
Marc Chevrier
b4e1569315 FindJava, FindJNI: fix erroneous regex, enhance registry lookup 2018-05-07 09:40:55 -04:00
Brad King
27279fa2db Merge topic 'java-new-packaging-version-sort'
1013560a6a FindJava, FindJNI: Ensure most recent version is searched first

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2016
2018-04-30 09:20:42 -04:00
Marc Chevrier
1013560a6a FindJava, FindJNI: Ensure most recent version is searched first 2018-04-27 08:52:22 -04:00
Brad King
ea54a9c666 Merge branch 'backport-java-new-packaging' into java-new-packaging
Fix conflicts by combining the changes from both sides.
2018-04-25 09:19:35 -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
Giel van Schijndel
596a7f262a FindJava: Add Java_JAR_EXECUTABLE to a component: Development
All discovered executables were placed in a component, except for 'jar'.
This forced the use of find_package(Java) without any component
specification.  This commit adds 'jar' to the 'Development' component,
because that's what it's used for.
2018-02-27 17:32:09 +01:00
Stefan Brüns
3c08d2075f FindJava: ignore javah for JDK 10, it has been removed
The standalone javah tool has been removed, header generation happens
during execution of javac.  `javac -h` allows generation of headers
only.  See http://openjdk.java.net/projects/jdk/10/ and
http://openjdk.java.net/jeps/313 for details.

Fixes: #17613
2018-01-19 11:15:11 -05:00
Brad King
6feb0c3318 FindJava: Revise version parsing to support Java 9
Java 9 has only one component.  Revise the logic to tolerate any number
of version components 1 through 4.  Fix the parsing of individual
components.

Fixes: #17325
2017-10-06 07:29:30 -04:00
Brad King
155dc75b89 Merge topic 'FindJava-fix-1.6-registry'
5479074b FindJava: fix hint for windows jre 1.6

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1079
2017-08-02 11:42:07 -04:00
Rechi Rechi
5479074be1 FindJava: fix hint for windows jre 1.6
Fix typo in commit v3.8.0-rc1~112^2 (FindJava: add hints for jre,
2017-01-11).
2017-08-02 11:30:48 -04:00
Craig Scott
e42fa012b6 Allow early access version trailing string to be mixed case
The original regex was expecting to match strings like "ea", but it has
been reported that other strings like "Debian" are also possible.
2017-07-25 22:35:45 +10:00
Bryan Donlan
f5a3ec4d76 FindJava: Add support for OpenJDK early access builds
OpenJDK 9 early access builds use a version string of "9-ea", and
locally built installations use "9-internal", neither of which is
currently accepted by the FindJava macro.  Map those versions to "1.9".
If the final released version is "9.0" the version interpretation could
be changed to match at that time.
2017-05-04 10:49:17 -04:00
Rechi Rechi
eb728d266e FindJava: add hints for jre 2017-01-11 16:31:01 +01:00
Rolf Eike Beer
745b56f58c Find*.cmake: drop the comments before including FPHSA
No need to explain this over and over again.  While at it, do some other
minor cleanups to whitespace and comments (i.e. delete them).
2016-11-28 16:40:13 -05: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
Brad King
10a7459a22 FindJava: Do not document variables we do not provide
Drop Java_INCLUDE_DIRS and Java_LIBRARIES from the documentation since
we do not provide them.  Also add a link to FindJNI to help users find
it.  Fixes #16180.
2016-07-05 14:18:21 -04:00
Felix Geyer
49e82c15d5 Fix spelling typos in comments and documentation (#16037)
The Debian package checker tool (lintian) detected several typos in
CMake.
2016-03-29 14:31:02 -04:00
Marc Chevrier
d8b251e2ea FindJava: Fix typos in IdlJ and JarSigner component implementation
Fix typos introduced by commit v3.4.0-rc1~257^2~2 (FindJava: Add support
for idlj and jarsigner tools, 2015-07-31) to correctly report when these
components are found.
2015-12-03 09:17:00 -05:00
Marc Chevrier
e72806fb30 FindJava: Add support for idlj and jarsigner tools 2015-08-04 11:19:40 -04:00
Felix Geyer
7953867ba4 FindJava: Fix OpenJDK 8 version detection (#15565)
The openjdk-8 (8u45-b14-2) package on Debian unstable has extra
text after the version number components.  Match this and add it
to the reported version string.
2015-05-12 13:46:12 -04:00
Brad King
3749ad49e3 Merge topic 'FindJava-no-osx-stub'
dd378258 FindJava: Do not accept OS X stub 'java' as Java
2014-11-20 08:57:07 -05:00
Brad King
dd378258f1 FindJava: Do not accept OS X stub 'java' as Java
OS X provides a stub 'java' to inform callers that Java is not present.
When checking the 'java -version' output, look for such a message and if
found pretend 'java' was not found.

Suggested-by: Sean McBride <sean@rogue-research.com>
2014-11-19 16:14:56 -05:00
Brad King
20c5f4fbd9 Modules: Wrap long lines in pre-formatted documentation blocks
Help format the blocks better for display without a wide screen.
2014-11-06 14:52:26 -05:00
Rolf Eike Beer
2622bc3f65 Clean up usage of if(... MATCHES regex) followed string(REGEX REPLACE regex)
The matches have already been calculated and can simply be taken from
CMAKE_MATCH_n variables. This avoids multiple compilations of the same or very
similar regular expressions.
2014-04-14 18:16:58 +02: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
Rolf Eike Beer
c832299e90 FindJava: fix message output (#14502) 2013-10-22 20:51:32 +02: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
Amit Kulkarni
6e7a3453b4 OpenBSD: Add paths for Java 1.6.0/1.7.0 JRE/JDK 2012-12-04 08:35:23 -05:00
Kitware Robot
9db3116226 Remove CMake-language block-end command arguments
Ancient versions of CMake required else(), endif(), and similar block
termination commands to have arguments matching the command starting the
block.  This is no longer the preferred style.

Run the following shell code:

for c in else endif endforeach endfunction endmacro endwhile; do
    echo 's/\b'"$c"'\(\s*\)(.\+)/'"$c"'\1()/'
done >convert.sed &&
git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' |
egrep -z -v '^(Utilities/cm|Source/kwsys/)' |
egrep -z -v 'Tests/CMakeTests/While-Endwhile-' |
xargs -0 sed -i -f convert.sed &&
rm convert.sed
2012-08-13 14:19:16 -04:00
Kitware Robot
77543bde41 Convert CMake-language commands to lower case
Ancient CMake versions required upper-case commands.  Later command
names became case-insensitive.  Now the preferred style is lower-case.

Run the following shell code:

cmake --help-command-list |
grep -v "cmake version" |
while read c; do
    echo 's/\b'"$(echo $c | tr '[:lower:]' '[:upper:]')"'\(\s*\)(/'"$c"'\1(/g'
done >convert.sed &&
git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' |
egrep -z -v '^(Utilities/cm|Source/kwsys/)' |
xargs -0 sed -i -f convert.sed &&
rm convert.sed
2012-08-13 14:19:16 -04:00
Kitware Robot
7bbaa4283d Remove trailing whitespace from most CMake and C/C++ code
Our Git commit hooks disallow modification or addition of lines with
trailing whitespace.  Wipe out all remnants of trailing whitespace
everywhere except third-party code.

Run the following shell code:

git ls-files -z -- \
 bootstrap doxygen.config '*.readme' \
 '*.c' '*.cmake' '*.cpp' '*.cxx' \
 '*.el' '*.f' '*.f90' '*.h' '*.in' '*.in.l' '*.java' \
 '*.mm' '*.pike' '*.py' '*.txt' '*.vim' |
egrep -z -v '^(Utilities/cm|Source/(kwsys|CursesDialog/form)/)' |
egrep -z -v '^(Modules/CPack\..*\.in)' |
xargs -0 sed -i 's/ \+$//'
2012-08-13 14:18:39 -04:00
Rolf Eike Beer
304562e7b5 FindJava: improve version matching (#12878) 2012-06-25 18:53:53 +02:00
Rolf Eike Beer
f46236949e remove extra output message from FindJava.cmake
FPHSA already prints out the version number. And this line was printed on
every subsequent CMake run.
2011-08-03 09:40:10 -04:00