| # 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 |
| # PERL_SITELIB = path to the sitelib install directory |
| # PERL_VENDORARCH = path to the vendor arch install directory |
| # PERL_VENDORLIB = path to the vendor lib install directory |
| # PERL_ARCHLIB = path to the arch lib install directory |
| # PERL_PRIVLIB = path to the priv lib install directory |
| # PERL_EXTRA_C_FLAGS = Compilation flags used to build perl |
| |
| # find the perl executable |
| include(${CMAKE_CURRENT_LIST_DIR}/FindPerl.cmake) |
| |
| if (PERL_EXECUTABLE) |
| ### PERL_PREFIX |
| execute_process( |
| COMMAND |
| ${PERL_EXECUTABLE} -V:prefix |
| OUTPUT_VARIABLE |
| PERL_PREFIX_OUTPUT_VARIABLE |
| RESULT_VARIABLE |
| PERL_PREFIX_RESULT_VARIABLE |
| ) |
| |
| if (NOT PERL_PREFIX_RESULT_VARIABLE) |
| string(REGEX REPLACE "prefix='([^']+)'.*" "\\1" PERL_PREFIX ${PERL_PREFIX_OUTPUT_VARIABLE}) |
| endif () |
| |
| ### PERL_ARCHNAME |
| execute_process( |
| COMMAND |
| ${PERL_EXECUTABLE} -V:archname |
| OUTPUT_VARIABLE |
| PERL_ARCHNAME_OUTPUT_VARIABLE |
| RESULT_VARIABLE |
| PERL_ARCHNAME_RESULT_VARIABLE |
| ) |
| if (NOT PERL_ARCHNAME_RESULT_VARIABLE) |
| string(REGEX REPLACE "archname='([^']+)'.*" "\\1" PERL_ARCHNAME ${PERL_ARCHNAME_OUTPUT_VARIABLE}) |
| endif () |
| |
| |
| |
| ### PERL_EXTRA_C_FLAGS |
| execute_process( |
| COMMAND |
| ${PERL_EXECUTABLE} -V:cppflags |
| OUTPUT_VARIABLE |
| PERL_CPPFLAGS_OUTPUT_VARIABLE |
| RESULT_VARIABLE |
| PERL_CPPFLAGS_RESULT_VARIABLE |
| ) |
| if (NOT PERL_CPPFLAGS_RESULT_VARIABLE) |
| string(REGEX REPLACE "cppflags='([^']+)'.*" "\\1" PERL_EXTRA_C_FLAGS ${PERL_CPPFLAGS_OUTPUT_VARIABLE}) |
| endif () |
| |
| ### PERL_SITESEARCH |
| execute_process( |
| COMMAND |
| ${PERL_EXECUTABLE} -V:installsitesearch |
| OUTPUT_VARIABLE |
| PERL_SITESEARCH_OUTPUT_VARIABLE |
| RESULT_VARIABLE |
| PERL_SITESEARCH_RESULT_VARIABLE |
| ) |
| if (NOT PERL_SITESEARCH_RESULT_VARIABLE) |
| string(REGEX REPLACE "install[a-z]+='([^']+)'.*" "\\1" PERL_SITESEARCH ${PERL_SITESEARCH_OUTPUT_VARIABLE}) |
| file(TO_CMAKE_PATH "${PERL_SITESEARCH}" PERL_SITESEARCH) |
| endif () |
| |
| ### PERL_SITELIB |
| execute_process( |
| COMMAND |
| ${PERL_EXECUTABLE} -V:installsitelib |
| OUTPUT_VARIABLE |
| PERL_SITELIB_OUTPUT_VARIABLE |
| RESULT_VARIABLE |
| PERL_SITELIB_RESULT_VARIABLE |
| ) |
| if (NOT PERL_SITELIB_RESULT_VARIABLE) |
| string(REGEX REPLACE "install[a-z]+='([^']+)'.*" "\\1" PERL_SITELIB ${PERL_SITELIB_OUTPUT_VARIABLE}) |
| file(TO_CMAKE_PATH "${PERL_SITELIB}" PERL_SITELIB) |
| endif () |
| |
| ### PERL_VENDORARCH |
| execute_process( |
| COMMAND |
| ${PERL_EXECUTABLE} -V:installvendorarch |
| OUTPUT_VARIABLE |
| PERL_VENDORARCH_OUTPUT_VARIABLE |
| RESULT_VARIABLE |
| PERL_VENDORARCH_RESULT_VARIABLE |
| ) |
| if (NOT PERL_VENDORARCH_RESULT_VARIABLE) |
| string(REGEX REPLACE "install[a-z]+='([^']+)'.*" "\\1" PERL_VENDORARCH ${PERL_VENDORARCH_OUTPUT_VARIABLE}) |
| file(TO_CMAKE_PATH "${PERL_VENDORARCH}" PERL_VENDORARCH) |
| endif () |
| |
| ### PERL_VENDORLIB |
| execute_process( |
| COMMAND |
| ${PERL_EXECUTABLE} -V:installvendorlib |
| OUTPUT_VARIABLE |
| PERL_VENDORLIB_OUTPUT_VARIABLE |
| RESULT_VARIABLE |
| PERL_VENDORLIB_RESULT_VARIABLE |
| ) |
| if (NOT PERL_VENDORLIB_RESULT_VARIABLE) |
| string(REGEX REPLACE "install[a-z]+='([^']+)'.*" "\\1" PERL_VENDORLIB ${PERL_VENDORLIB_OUTPUT_VARIABLE}) |
| file(TO_CMAKE_PATH "${PERL_VENDORLIB}" PERL_VENDORLIB) |
| endif () |
| |
| macro(perl_adjust_darwin_lib_variable varname) |
| string( TOUPPER PERL_${varname} FINDPERL_VARNAME ) |
| string( TOLOWER install${varname} PERL_VARNAME ) |
| |
| if (NOT PERL_MINUSV_OUTPUT_VARIABLE) |
| execute_process( |
| COMMAND |
| ${PERL_EXECUTABLE} -V |
| OUTPUT_VARIABLE |
| PERL_MINUSV_OUTPUT_VARIABLE |
| RESULT_VARIABLE |
| PERL_MINUSV_RESULT_VARIABLE |
| ) |
| endif() |
| |
| if (NOT PERL_MINUSV_RESULT_VARIABLE) |
| string(REGEX MATCH "(${PERL_VARNAME}.*points? to the Updates directory)" |
| PERL_NEEDS_ADJUSTMENT ${PERL_MINUSV_OUTPUT_VARIABLE}) |
| |
| if (PERL_NEEDS_ADJUSTMENT) |
| string(REGEX REPLACE "(.*)/Updates/" "/System/\\1/" ${FINDPERL_VARNAME} ${${FINDPERL_VARNAME}}) |
| endif () |
| |
| endif () |
| endmacro() |
| |
| ### PERL_ARCHLIB |
| execute_process( |
| COMMAND |
| ${PERL_EXECUTABLE} -V:installarchlib |
| OUTPUT_VARIABLE |
| PERL_ARCHLIB_OUTPUT_VARIABLE |
| RESULT_VARIABLE |
| PERL_ARCHLIB_RESULT_VARIABLE |
| ) |
| if (NOT PERL_ARCHLIB_RESULT_VARIABLE) |
| string(REGEX REPLACE "install[a-z]+='([^']+)'.*" "\\1" PERL_ARCHLIB ${PERL_ARCHLIB_OUTPUT_VARIABLE}) |
| perl_adjust_darwin_lib_variable( ARCHLIB ) |
| file(TO_CMAKE_PATH "${PERL_ARCHLIB}" PERL_ARCHLIB) |
| endif () |
| |
| ### PERL_PRIVLIB |
| execute_process( |
| COMMAND |
| ${PERL_EXECUTABLE} -V:installprivlib |
| OUTPUT_VARIABLE |
| PERL_PRIVLIB_OUTPUT_VARIABLE |
| RESULT_VARIABLE |
| PERL_PRIVLIB_RESULT_VARIABLE |
| ) |
| if (NOT PERL_PRIVLIB_RESULT_VARIABLE) |
| string(REGEX REPLACE "install[a-z]+='([^']+)'.*" "\\1" PERL_PRIVLIB ${PERL_PRIVLIB_OUTPUT_VARIABLE}) |
| perl_adjust_darwin_lib_variable( PRIVLIB ) |
| file(TO_CMAKE_PATH "${PERL_PRIVLIB}" PERL_PRIVLIB) |
| endif () |
| |
| ### PERL_POSSIBLE_LIBRARY_NAMES |
| execute_process( |
| COMMAND |
| ${PERL_EXECUTABLE} -V:libperl |
| OUTPUT_VARIABLE |
| PERL_LIBRARY_OUTPUT_VARIABLE |
| RESULT_VARIABLE |
| PERL_LIBRARY_RESULT_VARIABLE |
| ) |
| if (NOT PERL_LIBRARY_RESULT_VARIABLE) |
| string(REGEX REPLACE "libperl='([^']+)'.*" "\\1" PERL_POSSIBLE_LIBRARY_NAMES ${PERL_LIBRARY_OUTPUT_VARIABLE}) |
| else () |
| set(PERL_POSSIBLE_LIBRARY_NAMES perl${PERL_VERSION_STRING} perl) |
| endif () |
| |
| ### PERL_INCLUDE_PATH |
| find_path(PERL_INCLUDE_PATH |
| NAMES |
| perl.h |
| PATHS |
| ${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_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 () |
| |
| # handle the QUIETLY and REQUIRED arguments and set PERLLIBS_FOUND to TRUE if |
| # all listed variables are TRUE |
| 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 |
| ) |