commit e702abfd16f610e773fb0310d8c6512991794c63
Author: Yury G. Kudryashov [diff odt] <urkud.urkud@gmail.com>
Date:   Wed Mar 21 00:50:02 2012 +0400

    Rewrite FindPerlMore.cmake
    
    * Ask perl for expanded paths
    * Move execute_process to a macro
    * Add PERL_*_INSTALL_DIR variables that point to CMAKE_INSTALL_PREFIX
    
    The last change makes it easy to install a file into CMAKE_INSTALL_PREFIX
    instead of perl install prefix.Add debug message

diff --git a/cmake/FindPerlMore.cmake b/cmake/FindPerlMore.cmake
index 6412a47..cc8faf8 100644
--- a/cmake/FindPerlMore.cmake
+++ b/cmake/FindPerlMore.cmake
@@ -5,54 +5,52 @@
 #
 #  PERL_INCLUDE_PATH = path to where perl.h can be found
 
-if(PERL_INCLUDE_PATH)
-   # Already in cache, be silent
-   SET(PERL_HEADERS_FOUND TRUE)
-endif (PERL_INCLUDE_PATH)		
-
-IF(PERL_EXECUTABLE)
-	EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{archlib}"
-   		OUTPUT_VARIABLE PERL_ARCH_LIB_DIR)
-
-	EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{sitearch}"
-   		OUTPUT_VARIABLE PERL_SITE_ARCH_DIR)
-
-	EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{vendorarch}"
-   		OUTPUT_VARIABLE PERL_VENDOR_ARCH_DIR)
-
-	EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{sitelib}"
-   		OUTPUT_VARIABLE PERL_SITE_LIB_DIR)
-
-	EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{vendorlib}"
-   		OUTPUT_VARIABLE PERL_VENDOR_LIB_DIR)
-
-	EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{version}"
-   		OUTPUT_VARIABLE PERL_VERSION)
-
-	EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{ccflags}"
-   		OUTPUT_VARIABLE PERL_CXX_FLAGS)
-
-	EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{ccdlflags}"
-   		OUTPUT_VARIABLE PERL_CCDL_FLAGS)
-
-	EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -MFile::Spec -e "print '-L' . File::Spec->catdir(\$Config{archlibexp}, 'CORE')"
-   		OUTPUT_VARIABLE PERL_EXTRA_LIB_PATHS)
-
-	EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{perllibs}"
-   		OUTPUT_VARIABLE PERL_LIBS)
-
-	FIND_PATH(PERL_INCLUDE_PATH 
-  		NAMES perl.h
-  		PATHS ${PERL_ARCH_LIB_DIR}/CORE
-  	)
-
-	if(PERL_INCLUDE_PATH)
-		SET(PERL_HEADERS_FOUND TRUE)
-	endif (PERL_INCLUDE_PATH)
-
-	MARK_AS_ADVANCED(
-	  PERL_INCLUDE_PATH
-	  )
+if(FIND_PERLMORE_REQUIRED)
+  find_package(Perl REQUIRED)
+else()
+ find_package(Perl)
+endif()
+
+macro(_perl_get_config_var name output)
+  execute_process(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{${name}}"
+                  OUTPUT_VARIABLE PERL_${output})
+endmacro()
+
+macro(_perl_get_config_dir name)
+  string(TOLOWER ${name} _tmp)
+  string(REPLACE "_" "" _tmp ${_tmp})
+  _perl_get_config_var(${_tmp}exp ${name}_DIR)
+  string(REPLACE "${PERL_ROOT_DIR}" "${CMAKE_INSTALL_PREFIX}" PERL_${name}_INSTALL_DIR "${PERL_${name}_DIR}")
+endmacro()
+
+if(PERL_EXECUTABLE)
+  _perl_get_config_var(prefixexp ROOT_DIR)
+
+  _perl_get_config_dir(ARCH_LIB)
+  _perl_get_config_dir(SITE_ARCH)
+  _perl_get_config_dir(VENDOR_ARCH)
+  _perl_get_config_dir(SITE_LIB)
+  _perl_get_config_dir(VENDOR_LIB)
+
+  _perl_get_config_var(version VERSION)
+  _perl_get_config_var(ccflags CXX_FLAGS)
+  _perl_get_config_var(ccdlflags CCDL_FLAGS)
+
+  EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -MFile::Spec -e "print '-L' . File::Spec->catdir(\$Config{archlibexp}, 'CORE')"
+                  OUTPUT_VARIABLE PERL_EXTRA_LIB_PATHS)
+
+  _perl_get_config_var(perllibs LIBS)
+
+  FIND_PATH(PERL_INCLUDE_PATH
+            NAMES perl.h
+            HINTS ${PERL_ARCH_LIB_DIR}/CORE
+  )
+
+  if(PERL_INCLUDE_PATH)
+    SET(PERL_HEADERS_FOUND TRUE)
+  endif (PERL_INCLUDE_PATH)
+
+  MARK_AS_ADVANCED(PERL_INCLUDE_PATH)
 ENDIF(PERL_EXECUTABLE)
 
 IF(PERL_HEADERS_FOUND)
