mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-30 02:10:10 -06:00
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
150 lines
4.0 KiB
CMake
150 lines
4.0 KiB
CMake
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
# file LICENSE.rst or https://cmake.org/licensing for details.
|
|
|
|
#[=======================================================================[.rst:
|
|
FindPerl
|
|
--------
|
|
|
|
Finds a Perl interpreter:
|
|
|
|
.. code-block:: cmake
|
|
|
|
find_package(Perl [<version>] [...])
|
|
|
|
Perl is a general-purpose, interpreted, dynamic programming language.
|
|
|
|
Result Variables
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
This module defines the following variables:
|
|
|
|
``Perl_FOUND``
|
|
.. versionadded:: 3.3
|
|
|
|
Boolean indicating whether the (requested version of) Perl executable was
|
|
found.
|
|
|
|
``Perl_VERSION``
|
|
.. versionadded:: 4.2
|
|
|
|
The version of Perl found.
|
|
|
|
Cache Variables
|
|
^^^^^^^^^^^^^^^
|
|
|
|
The following cache variables may also be set:
|
|
|
|
``PERL_EXECUTABLE``
|
|
Full path to the ``perl`` executable.
|
|
|
|
Deprecated Variables
|
|
^^^^^^^^^^^^^^^^^^^^
|
|
|
|
The following variables are provided for backward compatibility:
|
|
|
|
``PERL_FOUND``
|
|
.. deprecated:: 4.2
|
|
Use ``Perl_FOUND``, which has the same value.
|
|
|
|
Boolean indicating whether the (requested version of) Perl executable was
|
|
found.
|
|
|
|
``PERL_VERSION_STRING``
|
|
.. deprecated:: 4.2
|
|
Superseded by the ``Perl_VERSION``.
|
|
|
|
The version of Perl found.
|
|
|
|
Examples
|
|
^^^^^^^^
|
|
|
|
Finding the Perl interpreter and executing it in a process:
|
|
|
|
.. code-block:: cmake
|
|
|
|
find_package(Perl)
|
|
|
|
if(Perl_FOUND)
|
|
execute_process(COMMAND ${PERL_EXECUTABLE} --help)
|
|
endif()
|
|
|
|
See Also
|
|
^^^^^^^^
|
|
|
|
* The :module:`FindPerlLibs` to find Perl libraries.
|
|
#]=======================================================================]
|
|
|
|
include(${CMAKE_CURRENT_LIST_DIR}/FindCygwin.cmake)
|
|
include(${CMAKE_CURRENT_LIST_DIR}/FindMsys.cmake)
|
|
|
|
set(PERL_POSSIBLE_BIN_PATHS
|
|
${CYGWIN_INSTALL_PATH}/bin
|
|
${MSYS_INSTALL_PATH}/usr/bin
|
|
)
|
|
|
|
if(WIN32)
|
|
get_filename_component(
|
|
ActivePerl_CurrentVersion
|
|
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActivePerl;CurrentVersion]"
|
|
NAME)
|
|
set(PERL_POSSIBLE_BIN_PATHS ${PERL_POSSIBLE_BIN_PATHS}
|
|
"C:/Perl/bin"
|
|
"C:/Strawberry/perl/bin"
|
|
[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActivePerl\\${ActivePerl_CurrentVersion}]/bin
|
|
)
|
|
endif()
|
|
|
|
find_program(PERL_EXECUTABLE
|
|
NAMES perl
|
|
PATHS ${PERL_POSSIBLE_BIN_PATHS}
|
|
)
|
|
|
|
if(PERL_EXECUTABLE)
|
|
execute_process(
|
|
COMMAND
|
|
${PERL_EXECUTABLE} -V:version
|
|
OUTPUT_VARIABLE
|
|
PERL_VERSION_OUTPUT_VARIABLE
|
|
RESULT_VARIABLE
|
|
PERL_VERSION_RESULT_VARIABLE
|
|
ERROR_QUIET
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
if(NOT PERL_VERSION_RESULT_VARIABLE AND NOT PERL_VERSION_OUTPUT_VARIABLE MATCHES "^version='UNKNOWN'")
|
|
string(REGEX REPLACE "version='([^']+)'.*" "\\1" Perl_VERSION ${PERL_VERSION_OUTPUT_VARIABLE})
|
|
set(PERL_VERSION_STRING "${Perl_VERSION}")
|
|
else()
|
|
execute_process(
|
|
COMMAND ${PERL_EXECUTABLE} -v
|
|
OUTPUT_VARIABLE PERL_VERSION_OUTPUT_VARIABLE
|
|
RESULT_VARIABLE PERL_VERSION_RESULT_VARIABLE
|
|
ERROR_QUIET
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
if(NOT PERL_VERSION_RESULT_VARIABLE AND PERL_VERSION_OUTPUT_VARIABLE MATCHES "This is perl.*[ \\(]v([0-9\\._]+)[ \\)]")
|
|
set(Perl_VERSION "${CMAKE_MATCH_1}")
|
|
set(PERL_VERSION_STRING "${Perl_VERSION}")
|
|
elseif(NOT PERL_VERSION_RESULT_VARIABLE AND PERL_VERSION_OUTPUT_VARIABLE MATCHES "This is perl, version ([0-9\\._]+) +")
|
|
set(Perl_VERSION "${CMAKE_MATCH_1}")
|
|
set(PERL_VERSION_STRING "${Perl_VERSION}")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
# Deprecated settings for compatibility with CMake1.4
|
|
set(PERL ${PERL_EXECUTABLE})
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
if (CMAKE_FIND_PACKAGE_NAME STREQUAL "PerlLibs")
|
|
# FindPerlLibs include()'s this module. It's an old pattern, but rather than
|
|
# trying to suppress this from outside the module (which is then sensitive to
|
|
# the contents, detect the case in this module and suppress it explicitly.
|
|
set(FPHSA_NAME_MISMATCHED 1)
|
|
endif ()
|
|
find_package_handle_standard_args(Perl
|
|
REQUIRED_VARS PERL_EXECUTABLE
|
|
VERSION_VAR Perl_VERSION)
|
|
unset(FPHSA_NAME_MISMATCHED)
|
|
|
|
mark_as_advanced(PERL_EXECUTABLE)
|