#
# If requested, try finding library for PCREPOSIX
#
+ FIND_PACKAGE(LibGCC)
FIND_PACKAGE(PCREPOSIX)
IF(PCREPOSIX_FOUND)
- 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.
"WITHOUT_PCRE_STATIC;PCRE_STATIC")
IF(NOT WITHOUT_PCRE_STATIC AND PCRE_STATIC)
ADD_DEFINITIONS(-DPCRE_STATIC)
+ ELSEIF(MSVC AND NOT WITHOUT_PCRE_STATIC AND NOT PCRE_STATIC AND LIBGCC_FOUND)
+ # When doing a Visual Studio build using pcre static libraries
+ # built using the mingw toolchain, -lgcc is needed to resolve
+ # ___chkstk_ms.
+ MESSAGE(STATUS "Visual Studio build detected, trying again with -lgcc")
+ LIST(APPEND ADDITIONAL_LIBS ${LIBGCC_LIBRARIES})
+ SET(TMP_LIBRARIES ${PCREPOSIX_LIBRARIES} ${LIBGCC_LIBRARIES})
+ TRY_MACRO_FOR_LIBRARY(
+ "${PCRE_INCLUDE_DIR}" "${TMP_LIBRARIES}"
+ COMPILES
+ "#include <pcreposix.h>\nint main() {regex_t r;return regcomp(&r, \"\", 0);}"
+ "WITHOUT_PCRE_STATIC;PCRE_STATIC")
+ IF(NOT WITHOUT_PCRE_STATIC AND PCRE_STATIC)
+ ADD_DEFINITIONS(-DPCRE_STATIC)
+ ENDIF(NOT WITHOUT_PCRE_STATIC AND PCRE_STATIC)
ENDIF(NOT WITHOUT_PCRE_STATIC AND PCRE_STATIC)
ENDIF(PCREPOSIX_FOUND)
MARK_AS_ADVANCED(CLEAR PCRE_INCLUDE_DIR)
MARK_AS_ADVANCED(CLEAR PCREPOSIX_LIBRARIES)
+ MARK_AS_ADVANCED(CLEAR LIBGCC_LIBRARIES)
ENDIF(NOT FOUND_POSIX_REGEX_LIB AND POSIX_REGEX_LIB MATCHES "^(AUTO|LIBPCREPOSIX)$")
#
# PCRE_INCLUDE_DIR - where to find pcreposix.h, etc.\r
# PCREPOSIX_LIBRARIES - List of libraries when using libpcreposix.\r
# PCREPOSIX_FOUND - True if libpcreposix found.\r
+# PCRE_FOUND - True if libpcre found.\r
\r
IF (PCRE_INCLUDE_DIR)\r
# Already in cache, be silent\r
# all listed variables are TRUE\r
INCLUDE(FindPackageHandleStandardArgs)\r
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PCREPOSIX DEFAULT_MSG PCREPOSIX_LIBRARY PCRE_INCLUDE_DIR)\r
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(PCRE DEFAULT_MSG PCRE_LIBRARY PCRE_INCLUDE_DIR)\r
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(PCRE DEFAULT_MSG PCRE_LIBRARY)\r
\r
-IF(PCREPOSIX_FOUND AND PCRE_FOUND)\r
- SET(PCREPOSIX_LIBRARIES ${PCREPOSIX_LIBRARY} ${PCRE_LIBRARY})\r
-ENDIF(PCREPOSIX_FOUND AND PCRE_FOUND)\r
+IF(PCREPOSIX_FOUND)\r
+ SET(PCREPOSIX_LIBRARIES ${PCREPOSIX_LIBRARY})\r
+ SET(HAVE_LIBPCREPOSIX 1)\r
+ SET(HAVE_PCREPOSIX_H 1)\r
+ENDIF(PCREPOSIX_FOUND)\r
+\r
+IF(PCRE_FOUND)\r
+ SET(PCREPOSIX_LIBRARIES ${PCREPOSIX_LIBRARIES} ${PCRE_LIBRARY})\r
+ SET(HAVE_LIBPCRE 1)\r
+ENDIF(PCRE_FOUND)\r