-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathFindPerlLibs.cmake
130 lines (116 loc) · 4.74 KB
/
FindPerlLibs.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
##############################################################################
# @file FindPerlLibs.cmake
# @brief Find Perl libraries. Fixes issue with CMake's default FindPerlLibs.
#
# @sa http://www.cmake.org/pipermail/cmake/2008-July/022638.html
#
# @ingroup CMakeFindModules
##############################################################################
#=============================================================================
# Copyright 2011-2012 University of Pennsylvania
# Copyright 2013-2016 Andreas Schuh <[email protected]>
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
# ----------------------------------------------------------------------------
# use CMake's FindPerlLibs.cmake module
set (PerlLibs_FIND_REQUIRED_BACKUP "${PerlLibs_FIND_REQUIRED}")
set (PerlLibs_FIND_QUIETLY_BACKUP "${PerlLibs_FIND_QUIETLY}")
set (PerlLibs_FIND_REQUIRED FALSE)
set (PerlLibs_FIND_QUIETLY TRUE)
include ("${CMAKE_ROOT}/Modules/FindPerlLibs.cmake")
set (PerlLibs_FIND_REQUIRED "${PerlLibs_FIND_REQUIRED_BACKUP}")
set (PerlLibs_FIND_QUIETLY "${PerlLibs_FIND_QUIETLY_BACKUP}")
unset (PerlLibs_FIND_REQUIRED_BACKUP)
unset (PerlLibs_FIND_QUIETLY_BACKUP)
# ----------------------------------------------------------------------------
# try to fix any issues
if (PERL_EXECUTABLE)
execute_process (
COMMAND "${PERL_EXECUTABLE}" -MConfig -e "print \$Config{version}"
OUTPUT_VARIABLE PERL_OUTPUT
RESULT_VARIABLE PERL_RETURN_VALUE
)
if (PERL_RETURN_VALUE EQUAL 0)
set (PERL_VERSION_STRING ${PERL_OUTPUT})
endif ()
if (PERL_VERSION_STRING MATCHES "([0-9]+)\\.([0-9]+)\\.([0-9]+)")
set (PERL_VERSION_MAJOR "${CMAKE_MATCH_1}")
set (PERL_VERSION_MINOR "${CMAKE_MATCH_2}")
set (PERL_VERSION_PATCH "${CMAKE_MATCH_3}")
else ()
message (WARNING "Perl interpreter version string has unexpected format: ${PERL_VERSION_STRING}")
endif ()
# try to fix failure in PERL_INCLUDE_PATH
if (PERL_INCLUDE_PATH MATCHES ".*-NOTFOUND")
execute_process (
COMMAND "${PERL_EXECUTABLE}" -MConfig -e "print \$Config{archlibexp}"
OUTPUT_VARIABLE PERL_OUTPUT
RESULT_VARIABLE PERL_RETURN_VALUE
)
if (NOT PERL_RETURN_VALUE)
find_path (PERL_INCLUDE_PATH perl.h "${PERL_OUTPUT}/CORE")
endif ()
endif ()
# try to fix failure in PERL_LIBRARY
IF (PERL_LIBRARY MATCHES ".*-NOTFOUND")
execute_process (
COMMAND "${PERL_EXECUTABLE}" -MConfig -e "print \$Config{libperl}"
OUTPUT_VARIABLE PERL_OUTPUT
RESULT_VARIABLE PERL_RETURN_VALUE
)
if (NOT PERL_RETURN_VALUE)
find_library (PERL_LIBRARY NAMES "${PERL_OUTPUT}" PATHS "${PERL_INCLUDE_PATH}")
endif ()
endif ()
# unset local variables
unset (PERL_OUTPUT)
unset (PERL_RETURN_VALUE)
endif ()
# ----------------------------------------------------------------------------
# handle the QUIETLY and REQUIRED arguments and set *_FOUND to TRUE
# if all listed variables are found or TRUE
include (FindPackageHandleStandardArgs)
find_package_handle_standard_args (
PerlLibs
REQUIRED_VARS
PERL_LIBRARY
PERL_INCLUDE_PATH
VERSION_VAR
PERL_VERSION_STRING
)
if (NOT DEFINED PerlLibs_FOUND AND DEFINED PERLLIBS_FOUND)
set (PerlLibs_FOUND "${PERLLIBS_FOUND}")
endif ()
# ----------------------------------------------------------------------------
# map names of variables from upper-case prefix to case-sensitive prefix
#
# This is normally automatically done by CMake BASIS find_package,
# but because "PerlLibs" sets variables also for "Perl" by *including*
# the FindPerl module, we have to do it here explicitly at least for
# those variables which are set by the FindPerl module.
if (NOT DEFINED Perl_FOUND AND DEFINED PERL_FOUND)
set (Perl_FOUND "${PERL_FOUND}")
endif ()
if (Perl_FOUND)
set (Perl_EXECUTABLE "${PERL_EXECUTABLE}")
set (Perl_VERSION_MAJOR "${PERL_VERSION_MAJOR}")
set (Perl_VERSION_MINOR "${PERL_VERSION_MINOR}")
set (Perl_VERSION_PATCH "${PERL_VERSION_PATCH}")
set (Perl_VERSION_STRING "${PERL_VERSION_STRING}")
endif ()
if (PerlLibs_FOUND)
set (PerlLibs_LIBRARY "${PERL_LIBRARY}")
set (PerlLibs_INCLUDE_DIR "${PERL_INCLUDE_PATH}")
set (PerlLibs_VERSION_MAJOR "${PERL_VERSION_MAJOR}")
set (PerlLibs_VERSION_MINOR "${PERL_VERSION_MINOR}")
set (PerlLibs_VERSION_PATCH "${PERL_VERSION_PATCH}")
set (PerlLibs_VERSION_STRING "${PERL_VERSION_STRING}")
endif ()