From 2e5df43d98087d1d85dc828cf24d4669ff1e1c22 Mon Sep 17 00:00:00 2001 From: Murilo Opsfelder Araujo Date: Thu, 24 Oct 2013 16:30:45 -0200 Subject: [PATCH] Check for errors on Perl detection Cc: mopsfelder@gmail.com Use OUTPUT_STRIP_TRAILING_WHITESPACE to clean trailing whitespaces on setting PERL_INTERNAL_DIR, PERL_CFLAGS and PERL_LFLAGS. Verify if any error occurred on calling functions from Config.pm and ExtUtils::Embed.pm. If PERL_LFLAGS is not set, src/plugins/perl/CMakeLists.txt throws an error: CMake Error at src/plugins/perl/CMakeLists.txt:34 (STRING): string sub-command REGEX, mode MATCH needs at least 5 arguments total to command. Also, only consider FOUND_PERL = TRUE if both PERL_CFLAGS and PERL_LFLAGS are set. Signed-off-by: Murilo Opsfelder Araujo --- cmake/FindPerl.cmake | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/cmake/FindPerl.cmake b/cmake/FindPerl.cmake index 87479ba..892f61d 100644 --- a/cmake/FindPerl.cmake +++ b/cmake/FindPerl.cmake @@ -43,22 +43,35 @@ IF(PERL_EXECUTABLE) EXECUTE_PROCESS( COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \"\$Config{archlibexp}/CORE\"" OUTPUT_VARIABLE PERL_INTERNAL_DIR + ERROR_VARIABLE PERL_INTERNAL_DIR_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE ) EXECUTE_PROCESS( COMMAND ${PERL_EXECUTABLE} -MExtUtils::Embed -e ccopts OUTPUT_VARIABLE PERL_CFLAGS + ERROR_VARIABLE PERL_CFLAGS_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE ) EXECUTE_PROCESS( COMMAND ${PERL_EXECUTABLE} -MExtUtils::Embed -e ldopts OUTPUT_VARIABLE PERL_LFLAGS + ERROR_VARIABLE PERL_LFLAGS_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE ) - # remove the new lines from the output by replacing them with empty strings - STRING(REPLACE "\n" "" PERL_INTERNAL_DIR "${PERL_INTERNAL_DIR}") - STRING(REPLACE "\n" "" PERL_CFLAGS "${PERL_CFLAGS}") - STRING(REPLACE "\n" "" PERL_LFLAGS "${PERL_LFLAGS}") + IF(PERL_INTERNAL_DIR_ERROR) + MESSAGE(FATAL_ERROR "Is Config.pm installed?") + ENDIF(PERL_INTERNAL_DIR_ERROR) + + IF(PERL_CFLAGS_ERROR) + MESSAGE(FATAL_ERROR "Unable to execute ccopts(). Is ExtUtils::Embed installed?") + ENDIF(PERL_CFLAGS_ERROR) + + IF(PERL_LFLAGS_ERROR) + MESSAGE(FATAL_ERROR "Unable to execute ldopts(). Is ExtUtils::Embed installed?") + ENDIF(PERL_LFLAGS_ERROR) FIND_PATH(PERL_INCLUDE_PATH NAMES perl.h @@ -70,9 +83,9 @@ IF(PERL_EXECUTABLE) PATHS /usr/lib /usr/local/lib /usr/pkg/lib ${PERL_INTERNAL_DIR} ) - IF(PERL_LIBRARY AND PERL_INCLUDE_PATH) + IF(PERL_LIBRARY AND PERL_INCLUDE_PATH AND PERL_CFLAGS AND PERL_LFLAGS) SET(PERL_FOUND TRUE) - ENDIF(PERL_LIBRARY AND PERL_INCLUDE_PATH) + ENDIF(PERL_LIBRARY AND PERL_INCLUDE_PATH AND PERL_CFLAGS AND PERL_LFLAGS) MARK_AS_ADVANCED( PERL_EXECUTABLE @@ -82,4 +95,3 @@ IF(PERL_EXECUTABLE) PERL_LFLAGS ) ENDIF(PERL_EXECUTABLE) - -- 1.8.4.1.600.g3d092bf