BASIS  r3148
FindPerlLibs.cmake
Go to the documentation of this file.
00001 ##############################################################################
00002 # @file  FindPerlLibs.cmake
00003 # @brief Find Perl libraries. Fixes issue with CMake's default FindPerlLibs.
00004 #
00005 # @sa http://www.cmake.org/pipermail/cmake/2008-July/022638.html
00006 #
00007 # Copyright (c) 2011, 2012 University of Pennsylvania. All rights reserved.<br />
00008 # See https://www.cbica.upenn.edu/sbia/software/license.html or COPYING file.
00009 #
00010 # Contact: SBIA Group <sbia-software at uphs.upenn.edu>
00011 #
00012 # @ingroup CMakeFindModules
00013 ##############################################################################
00014 
00015 # ----------------------------------------------------------------------------
00016 # use CMake's FindPerlLibs.cmake module
00017 set (CMAKE_MODULE_PATH_BACKUP "${CMAKE_MODULE_PATH}")
00018 set (PerlLIbs_FIND_REQUIRED_BACKUP "${PerlLibs_FIND_REQUIRED}")
00019 set (PerlLIbs_FIND_QUIETLY_BACKUP "${PerlLibs_FIND_QUIETLY}")
00020 set (CMAKE_MODULE_PATH)
00021 set (PerlLibs_FIND_REQUIRED FALSE)
00022 set (PerlLibs_FIND_QUIETLY  TRUE)
00023 
00024 find_package (PerlLibs)
00025 
00026 set (CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH_BACKUP}")
00027 set (PerlLIbs_FIND_REQUIRED "${PerlLibs_FIND_REQUIRED_BACKUP}")
00028 set (PerlLIbs_FIND_QUIETLY "${PerlLibs_FIND_QUIETLY_BACKUP}")
00029 set (PerlLibs_FIND_REQUIRED_BACKUP)
00030 set (PerlLibs_FIND_QUIETLY_BACKUP)
00031 set (CMAKE_MODULE_PATH_BACKUP)
00032 
00033 # ----------------------------------------------------------------------------
00034 # try to fix any issues
00035 if (PERL_EXECUTABLE)
00036   execute_process (
00037     COMMAND "${PERL_EXECUTABLE}" -MConfig -e "print \$Config{version}"
00038     OUTPUT_VARIABLE PERL_OUTPUT
00039     RESULT_VARIABLE PERL_RETURN_VALUE
00040   )
00041   if (PERL_RETURN_VALUE EQUAL 0)
00042     set (PERL_VERSION ${PERL_OUTPUT})
00043   endif ()
00044 
00045   # try to fix failure in PERL_INCLUDE_PATH
00046   if (PERL_INCLUDE_PATH MATCHES ".*-NOTFOUND")
00047     execute_process (
00048       COMMAND "${PERL_EXECUTABLE}" -MConfig -e "print \$Config{archlibexp}"
00049       OUTPUT_VARIABLE PERL_OUTPUT
00050       RESULT_VARIABLE PERL_RETURN_VALUE
00051     )
00052     if (NOT PERL_RETURN_VALUE)
00053       find_path (PERL_INCLUDE_PATH perl.h "${PERL_OUTPUT}/CORE")
00054     endif ()
00055   endif ()
00056 
00057   # try to fix failure in PERL_LIBRARY
00058   IF (PERL_LIBRARY MATCHES ".*-NOTFOUND")
00059     execute_process (
00060       COMMAND "${PERL_EXECUTABLE}" -MConfig -e "print \$Config{libperl}"
00061       OUTPUT_VARIABLE PERL_OUTPUT
00062       RESULT_VARIABLE PERL_RETURN_VALUE
00063     )
00064     if (NOT PERL_RETURN_VALUE)
00065       find_library (PERL_LIBRARY NAMES "${PERL_OUTPUT}" PATHS "${PERL_INCLUDE_PATH}")
00066     endif ()
00067   endif ()
00068 endif ()
00069 
00070 # ----------------------------------------------------------------------------
00071 # handle the QUIETLY and REQUIRED arguments and set *_FOUND to TRUE
00072 # if all listed variables are found or TRUE
00073 include (FindPackageHandleStandardArgs)
00074 
00075 find_package_handle_standard_args (
00076   PerlLibs
00077   REQUIRED_VARS
00078     PERL_LIBRARY
00079     PERL_INCLUDE_PATH
00080   VERSION_VAR
00081     PERL_VERSION
00082 )
00083 
00084 set (PerlLibs_FOUND "${PERLLIBS_FOUND}")