123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- # file Copyright.txt or https://cmake.org/licensing for details.
- #[=======================================================================[.rst:
- FindPerlLibs
- ------------
- Find Perl libraries
- This module finds if PERL is installed and determines where the
- include files and libraries are. It also determines what the name of
- the library is. This code sets the following variables:
- ::
- PERLLIBS_FOUND = True if perl.h & libperl were found
- PERL_INCLUDE_PATH = path to where perl.h is found
- PERL_LIBRARY = path to libperl
- PERL_EXECUTABLE = full path to the perl binary
- The minimum required version of Perl can be specified using the
- standard syntax, e.g. find_package(PerlLibs 6.0)
- ::
- The following variables are also available if needed
- (introduced after CMake 2.6.4)
- ::
- PERL_SITESEARCH = path to the sitesearch install dir (-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
- #]=======================================================================]
- # find the perl executable
- include(${CMAKE_CURRENT_LIST_DIR}/FindPerl.cmake)
- 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${PERL_VERSION_STRING} perl)
- 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, extends 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/${PERL_VERSION_STRING}/${PERL_ARCHNAME}/CORE
- /usr/lib/perl/${PERL_VERSION_STRING}/${PERL_ARCHNAME}/CORE
- /usr/lib/perl5/${PERL_VERSION_STRING}/CORE
- /usr/lib/perl/${PERL_VERSION_STRING}/CORE
- )
- ### PERL_LIBRARY
- find_library(PERL_LIBRARY
- NAMES
- ${PERL_POSSIBLE_LIBRARY_NAMES}
- PATHS
- "${PERL_UPDATE_ARCHLIB}/CORE"
- "${PERL_ARCHLIB}/CORE"
- /usr/lib/perl5/${PERL_VERSION_STRING}/${PERL_ARCHNAME}/CORE
- /usr/lib/perl/${PERL_VERSION_STRING}/${PERL_ARCHNAME}/CORE
- /usr/lib/perl5/${PERL_VERSION_STRING}/CORE
- /usr/lib/perl/${PERL_VERSION_STRING}/CORE
- )
- endif ()
- include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
- find_package_handle_standard_args(PerlLibs REQUIRED_VARS PERL_LIBRARY PERL_INCLUDE_PATH
- VERSION_VAR PERL_VERSION_STRING)
- # 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 ${PERL_VERSION_STRING})
- mark_as_advanced(
- PERL_INCLUDE_PATH
- PERL_LIBRARY
- )
|