From b89e4f7352758891cd024da25a317114f00567b9 Mon Sep 17 00:00:00 2001 From: Andres Mejia Date: Thu, 31 Jan 2013 23:00:11 -0500 Subject: [PATCH] Redo check for pcreposix library. Other check was broken, it did not set PCRE_STATIC when necessary nor did it add needed PCREPOSIX_LIBRARIES for Visual Studio build. --- CMakeLists.txt | 46 +++++++-------------------------- build/cmake/FindPCREPOSIX.cmake | 25 ++++++++++++++++++ build/cmake/config.h.in | 6 +++++ 3 files changed, 41 insertions(+), 36 deletions(-) create mode 100644 build/cmake/FindPCREPOSIX.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index c277a6c6c..d23a88ca2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -890,51 +890,25 @@ IF(ENABLE_PCREPOSIX) # # If requested, try finding library for PCREPOSIX # - IF (PCRE_INCLUDE_DIRS) - # Already in cache, be silent - SET(PCREPOSIX_FIND_QUIETLY TRUE) - ENDIF (PCRE_INCLUDE_DIRS) - - FIND_PATH(PCRE_INCLUDE_DIR pcreposix.h) - - SET(PCREPOSIX_NAMES pcreposix) - FIND_LIBRARY(PCREPOSIX_LIBRARY NAMES ${PCREPOSIX_NAMES} ) - - # handle the QUIETLY and REQUIRED arguments and set PCREPOSIX_FOUND to TRUE if - # all listed variables are TRUE - INCLUDE(FindPackageHandleStandardArgs) - FIND_PACKAGE_HANDLE_STANDARD_ARGS(PCREPOSIX DEFAULT_MSG PCREPOSIX_LIBRARY PCRE_INCLUDE_DIR) - + FIND_PACKAGE(PCREPOSIX) IF(PCREPOSIX_FOUND) - SET( PCREPOSIX_LIBRARIES ${PCREPOSIX_LIBRARY} ) - SET( PCRE_INCLUDE_DIRS ${PCRE_INCLUDE_DIR} ) - - IF(PCREPOSIX_LIBRARY) - SET(CMAKE_REQUIRED_LIBRARIES ${PCREPOSIX_LIBRARY}) - ENDIF(PCREPOSIX_LIBRARY) - - IF(PCRE_INCLUDE_DIR) - INCLUDE_DIRECTORIES(${PCRE_INCLUDE_DIR}) - SET(CMAKE_REQUIRED_INCLUDES ${PCRE_INCLUDE_DIR}) - ENDIF(PCRE_INCLUDE_DIR) - LA_CHECK_INCLUDE_FILE("pcreposix.h" HAVE_PCREPOSIX_H) - + SET(HAVE_LIBPCREPOSIX 1) + SET(HAVE_LIBPCRE 1) + SET(HAVE_PCREPOSIX_H 1) + INCLUDE_DIRECTORIES(${PCRE_INCLUDE_DIR}) + LIST(APPEND ADDITIONAL_LIBS ${PCREPOSIX_LIBRARIES}) # Test if a macro is needed for the library. TRY_MACRO_FOR_LIBRARY( - "${PCRE_INCLUDE_DIR}" "${PCREPOSIX_LIBRARY}" + "${PCRE_INCLUDE_DIR}" "${PCREPOSIX_LIBRARIES}" COMPILES - "#include \n#include \nint main() {regex_t r;return regcomp(&r, \"\", 0);}" + "#include \nint main() {regex_t r;return regcomp(&r, \"\", 0);}" "PCRE_STATIC") IF(PCRE_STATIC) - # TODO: Need to link against libpcre if static linking ADD_DEFINITIONS(-DPCRE_STATIC) ENDIF(PCRE_STATIC) - ELSE(PCREPOSIX_FOUND) - SET( PCREPOSIX_LIBRARIES ) - SET( PCRE_INCLUDE_DIRS ) ENDIF(PCREPOSIX_FOUND) - - MARK_AS_ADVANCED( PCREPOSIX_LIBRARIES PCRE_INCLUDE_DIRS ) + MARK_AS_ADVANCED(CLEAR PCRE_INCLUDE_DIR) + MARK_AS_ADVANCED(CLEAR PCREPOSIX_LIBRARIES) ENDIF(ENABLE_PCREPOSIX) IF(NOT PCREPOSIX_FOUND) diff --git a/build/cmake/FindPCREPOSIX.cmake b/build/cmake/FindPCREPOSIX.cmake new file mode 100644 index 000000000..9e40620fe --- /dev/null +++ b/build/cmake/FindPCREPOSIX.cmake @@ -0,0 +1,25 @@ +# - Find pcreposix +# Find the native PCREPOSIX include and library +# +# PCRE_INCLUDE_DIR - where to find pcreposix.h, etc. +# PCREPOSIX_LIBRARIES - List of libraries when using libpcreposix. +# PCREPOSIX_FOUND - True if libpcreposix found. + +IF (PCRE_INCLUDE_DIR) + # Already in cache, be silent + SET(PCRE_FIND_QUIETLY TRUE) +ENDIF (PCRE_INCLUDE_DIR) + +FIND_PATH(PCRE_INCLUDE_DIR pcreposix.h) +FIND_LIBRARY(PCREPOSIX_LIBRARY NAMES pcreposix libpcreposix) +FIND_LIBRARY(PCRE_LIBRARY NAMES pcre libpcre) + +# handle the QUIETLY and REQUIRED arguments and set PCREPOSIX_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(PCREPOSIX DEFAULT_MSG PCREPOSIX_LIBRARY PCRE_INCLUDE_DIR) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(PCRE DEFAULT_MSG PCRE_LIBRARY PCRE_INCLUDE_DIR) + +IF(PCREPOSIX_FOUND AND PCRE_FOUND) + SET(PCREPOSIX_LIBRARIES ${PCREPOSIX_LIBRARY} ${PCRE_LIBRARY}) +ENDIF(PCREPOSIX_FOUND AND PCRE_FOUND) diff --git a/build/cmake/config.h.in b/build/cmake/config.h.in index 77b8d3bd2..0631195d6 100644 --- a/build/cmake/config.h.in +++ b/build/cmake/config.h.in @@ -588,6 +588,12 @@ typedef uint64_t uintmax_t; /* Define to 1 if you have the `lzo2' library (-llzo2). */ #cmakedefine HAVE_LIBLZO2 1 +/* Define to 1 if you have the `pcre' library (-lpcre). */ +#cmakedefine HAVE_LIBPCRE 1 + +/* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ +#cmakedefine HAVE_LIBPCREPOSIX 1 + /* Define to 1 if you have the `xml2' library (-lxml2). */ #cmakedefine HAVE_LIBXML2 1 -- 2.47.2