| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- # file LICENSE.rst or https://cmake.org/licensing for details.
- #[=======================================================================[.rst:
- FindPerlLibs
- ------------
- Finds Perl libraries:
- .. code-block:: cmake
- find_package(PerlLibs [<version>] [...])
- Perl is a general-purpose, interpreted, dynamic programming language.
- This module detects whether Perl interpreter is installed via the
- :module:`FindPerl` module and determines the locations of Perl include paths,
- libraries, and the library name.
- Result Variables
- ^^^^^^^^^^^^^^^^
- This module defines the following variables:
- ``PerlLibs_FOUND``
- .. versionadded:: 3.3
- Boolean indicating whether (the requested version of) ``<perl.h>`` and
- ``libperl`` were found.
- ``PerlLibs_VERSION``
- .. versionadded:: 4.2
- The version of Perl library found.
- ``PERL_SITESEARCH``
- Path to the sitesearch install directory (``-V:installsitesearch``).
- ``PERL_SITEARCH``
- Path to the sitelib install directory (``-V:installsitearch``).
- ``PERL_SITELIB``
- Path to the sitelib install directory (``-V:installsitelib``).
- ``PERL_VENDORARCH``
- Path to the vendor arch install directory (``-V:installvendorarch``).
- ``PERL_VENDORLIB``
- Path to the vendor lib install directory (``-V:installvendorlib``).
- ``PERL_ARCHLIB``
- Path to the core arch lib install directory (``-V:archlib``).
- ``PERL_PRIVLIB``
- Path to the core priv lib install directory (``-V:privlib``).
- ``PERL_UPDATE_ARCHLIB``
- Path to the update arch lib install directory (``-V:installarchlib``).
- ``PERL_UPDATE_PRIVLIB``
- Path to the update priv lib install directory (``-V:installprivlib``).
- ``PERL_EXTRA_C_FLAGS``
- Compilation flags used to build Perl.
- Cache Variables
- ^^^^^^^^^^^^^^^
- The following cache variables may also be set:
- ``PERL_INCLUDE_PATH``
- Directory containing ``perl.h`` and other Perl header files.
- ``PERL_LIBRARY``
- Path to the ``libperl``.
- ``PERL_EXECUTABLE``
- Full path to the ``perl`` executable.
- Deprecated Variables
- ^^^^^^^^^^^^^^^^^^^^
- The following variables are provided for backward compatibility:
- ``PERLLIBS_FOUND``
- .. deprecated:: 4.2
- Use ``PerlLibs_FOUND``, which has the same value.
- Boolean indicating whether (the requested version of) ``<perl.h>`` and
- ``libperl`` were found.
- Examples
- ^^^^^^^^
- Finding Perl libraries and specifying the minimum required version:
- .. code-block:: cmake
- find_package(PerlLibs 6.0)
- See Also
- ^^^^^^^^
- * The :module:`FindPerl` module to find the Perl interpreter.
- #]=======================================================================]
- # find the perl executable
- include(${CMAKE_CURRENT_LIST_DIR}/FindPerl.cmake)
- set(PerlLibs_VERSION "${Perl_VERSION}")
- if (PERL_EXECUTABLE)
- function (perl_get_info _pgi_info tag)
- cmake_parse_arguments(_PGI "IS_PATH" "" "" ${ARGN})
- set (${_pgi_info} NOTFOUND PARENT_SCOPE)
- execute_process(COMMAND "${PERL_EXECUTABLE}" -V:${tag}
- OUTPUT_VARIABLE result
- RESULT_VARIABLE status)
- if (NOT status)
- string(REGEX REPLACE "${tag}='([^']*)'.*" "\\1" result "${result}")
- if (_PGI_IS_PATH)
- file(TO_CMAKE_PATH "${result}" result)
- endif()
- set (${_pgi_info} "${result}" PARENT_SCOPE)
- endif ()
- endfunction()
- ### PERL_PREFIX
- perl_get_info(PERL_PREFIX prefix IS_PATH)
- ### PERL_ARCHNAME
- perl_get_info(PERL_ARCHNAME archname)
- ### PERL_EXTRA_C_FLAGS
- perl_get_info(PERL_EXTRA_C_FLAGS cppflags)
- ### PERL_SITESEARCH
- perl_get_info(PERL_SITESEARCH installsitesearch IS_PATH)
- ### PERL_SITEARCH
- perl_get_info(PERL_SITEARCH installsitearch IS_PATH)
- ### PERL_SITELIB
- perl_get_info(PERL_SITELIB installsitelib IS_PATH)
- ### PERL_VENDORARCH
- perl_get_info(PERL_VENDORARCH installvendorarch IS_PATH)
- ### PERL_VENDORLIB
- perl_get_info(PERL_VENDORLIB installvendorlib IS_PATH)
- ### PERL_ARCHLIB
- perl_get_info(PERL_ARCHLIB archlib IS_PATH)
- ### PERL_PRIVLIB
- perl_get_info(PERL_PRIVLIB privlib IS_PATH)
- ### PERL_UPDATE_ARCHLIB
- perl_get_info(PERL_UPDATE_ARCHLIB installarchlib IS_PATH)
- ### PERL_UPDATE_PRIVLIB
- perl_get_info(PERL_UPDATE_PRIVLIB installprivlib IS_PATH)
- ### PERL_POSSIBLE_LIBRARY_NAMES
- perl_get_info(PERL_POSSIBLE_LIBRARY_NAMES libperl)
- if (NOT PERL_POSSIBLE_LIBRARY_NAMES)
- set(PERL_POSSIBLE_LIBRARY_NAMES perl${PerlLibs_VERSION} perl)
- endif()
- if(CMAKE_SYSTEM_NAME MATCHES "CYGWIN")
- list (APPEND PERL_POSSIBLE_LIBRARY_NAMES perl${PerlLibs_VERSION})
- endif()
- if (CMAKE_SYSTEM_NAME MATCHES "MSYS|CYGWIN")
- # On MSYS and CYGWIN environments, current perl -V:libperl gives shared
- # library name rather than the import library. So, extend possible library
- # names.
- list (APPEND PERL_POSSIBLE_LIBRARY_NAMES perl)
- endif()
- ### PERL_INCLUDE_PATH
- find_path(PERL_INCLUDE_PATH
- NAMES
- perl.h
- PATHS
- "${PERL_UPDATE_ARCHLIB}/CORE"
- "${PERL_ARCHLIB}/CORE"
- /usr/lib/perl5/${PerlLibs_VERSION}/${PERL_ARCHNAME}/CORE
- /usr/lib/perl/${PerlLibs_VERSION}/${PERL_ARCHNAME}/CORE
- /usr/lib/perl5/${PerlLibs_VERSION}/CORE
- /usr/lib/perl/${PerlLibs_VERSION}/CORE
- )
- ### PERL_LIBRARY
- find_library(PERL_LIBRARY
- NAMES
- ${PERL_POSSIBLE_LIBRARY_NAMES}
- PATHS
- "${PERL_UPDATE_ARCHLIB}/CORE"
- "${PERL_ARCHLIB}/CORE"
- /usr/lib/perl5/${PerlLibs_VERSION}/${PERL_ARCHNAME}/CORE
- /usr/lib/perl/${PerlLibs_VERSION}/${PERL_ARCHNAME}/CORE
- /usr/lib/perl5/${PerlLibs_VERSION}/CORE
- /usr/lib/perl/${PerlLibs_VERSION}/CORE
- )
- endif ()
- include(FindPackageHandleStandardArgs)
- find_package_handle_standard_args(PerlLibs REQUIRED_VARS PERL_LIBRARY PERL_INCLUDE_PATH
- VERSION_VAR PerlLibs_VERSION)
- # Introduced after CMake 2.6.4 to bring module into compliance
- set(PERL_INCLUDE_DIR ${PERL_INCLUDE_PATH})
- set(PERL_INCLUDE_DIRS ${PERL_INCLUDE_PATH})
- set(PERL_LIBRARIES ${PERL_LIBRARY})
- # For backward compatibility with CMake before 2.8.8
- set(PERL_VERSION ${PerlLibs_VERSION})
- mark_as_advanced(
- PERL_INCLUDE_PATH
- PERL_LIBRARY
- )
|