FindPerl{,Libs}: move version detection into FindPerl
If the first attempt of getting the version doesn't succeed, try a second approach.
This commit is contained in:
parent
b2838626dd
commit
31826b5166
|
@ -3,6 +3,7 @@
|
|||
#
|
||||
# PERL_EXECUTABLE - the full path to perl
|
||||
# PERL_FOUND - If false, don't attempt to use perl.
|
||||
# PERL_VERSION_STRING - version of perl found (since CMake 2.8.8)
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2001-2009 Kitware, Inc.
|
||||
|
@ -39,12 +40,44 @@ FIND_PROGRAM(PERL_EXECUTABLE
|
|||
PATHS ${PERL_POSSIBLE_BIN_PATHS}
|
||||
)
|
||||
|
||||
IF(PERL_EXECUTABLE)
|
||||
### PERL_VERSION
|
||||
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_STRING ${PERL_VERSION_OUTPUT_VARIABLE})
|
||||
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\\._]+)[ \\)]")
|
||||
STRING(REGEX REPLACE ".*This is perl.*[ \\(]v([0-9\\._]+)[ \\)].*" "\\1" PERL_VERSION_STRING ${PERL_VERSION_OUTPUT_VARIABLE})
|
||||
ELSEIF(NOT PERL_VERSION_RESULT_VARIABLE AND PERL_VERSION_OUTPUT_VARIABLE MATCHES "This is perl, version ([0-9\\._]+) +")
|
||||
STRING(REGEX REPLACE ".*This is perl, version ([0-9\\._]+) +.*" "\\1" PERL_VERSION_STRING ${PERL_VERSION_OUTPUT_VARIABLE})
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF(PERL_EXECUTABLE)
|
||||
|
||||
# Deprecated settings for compatibility with CMake1.4
|
||||
SET(PERL ${PERL_EXECUTABLE})
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set PERL_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
INCLUDE(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Perl DEFAULT_MSG PERL_EXECUTABLE)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Perl
|
||||
REQUIRED_VARS PERL_EXECUTABLE
|
||||
VERSION_VAR PERL_VERSION_STRING)
|
||||
|
||||
MARK_AS_ADVANCED(PERL_EXECUTABLE)
|
||||
|
|
|
@ -55,19 +55,6 @@ if (PERL_EXECUTABLE)
|
|||
string(REGEX REPLACE "prefix='([^']+)'.*" "\\1" PERL_PREFIX ${PERL_PREFIX_OUTPUT_VARIABLE})
|
||||
endif (NOT PERL_PREFIX_RESULT_VARIABLE)
|
||||
|
||||
### PERL_VERSION
|
||||
execute_process(
|
||||
COMMAND
|
||||
${PERL_EXECUTABLE} -V:version
|
||||
OUTPUT_VARIABLE
|
||||
PERL_VERSION_OUTPUT_VARIABLE
|
||||
RESULT_VARIABLE
|
||||
PERL_VERSION_RESULT_VARIABLE
|
||||
)
|
||||
if (NOT PERL_VERSION_RESULT_VARIABLE)
|
||||
string(REGEX REPLACE "version='([^']+)'.*" "\\1" PERL_VERSION ${PERL_VERSION_OUTPUT_VARIABLE})
|
||||
endif (NOT PERL_VERSION_RESULT_VARIABLE)
|
||||
|
||||
### PERL_ARCHNAME
|
||||
execute_process(
|
||||
COMMAND
|
||||
|
@ -206,19 +193,19 @@ if (PERL_EXECUTABLE)
|
|||
### PERL_POSSIBLE_INCLUDE_PATHS
|
||||
set(PERL_POSSIBLE_INCLUDE_PATHS
|
||||
${PERL_ARCHLIB}/CORE
|
||||
/usr/lib/perl5/${PERL_VERSION}/${PERL_ARCHNAME}/CORE
|
||||
/usr/lib/perl/${PERL_VERSION}/${PERL_ARCHNAME}/CORE
|
||||
/usr/lib/perl5/${PERL_VERSION}/CORE
|
||||
/usr/lib/perl/${PERL_VERSION}/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_POSSIBLE_LIB_PATHS
|
||||
set(PERL_POSSIBLE_LIB_PATHS
|
||||
${PERL_ARCHLIB}/CORE
|
||||
/usr/lib/perl5/${PERL_VERSION}/${PERL_ARCHNAME}/CORE
|
||||
/usr/lib/perl/${PERL_VERSION}/${PERL_ARCHNAME}/CORE
|
||||
/usr/lib/perl5/${PERL_VERSION}/CORE
|
||||
/usr/lib/perl/${PERL_VERSION}/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_POSSIBLE_LIBRARY_NAME
|
||||
|
@ -249,7 +236,7 @@ if (PERL_EXECUTABLE)
|
|||
find_library(PERL_LIBRARY
|
||||
NAMES
|
||||
${PERL_POSSIBLE_LIBRARY_NAME}
|
||||
perl${PERL_VERSION}
|
||||
perl${PERL_VERSION_STRING}
|
||||
perl
|
||||
PATHS
|
||||
${PERL_POSSIBLE_LIB_PATHS}
|
||||
|
@ -261,15 +248,16 @@ endif (PERL_EXECUTABLE)
|
|||
# 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)
|
||||
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.7
|
||||
set(PERL_VERSION ${PERL_VERSION_STRING})
|
||||
|
||||
mark_as_advanced(
|
||||
PERL_INCLUDE_PATH
|
||||
PERL_EXECUTABLE
|
||||
PERL_LIBRARY
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue