1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
|
#.rst:
# FindPCRE
# --------
# Finds the PCRECPP library
#
# This will define the following variables::
#
# PCRE_FOUND - system has libpcrecpp
# PCRE_INCLUDE_DIRS - the libpcrecpp include directory
# PCRE_LIBRARIES - the libpcrecpp libraries
# PCRE_DEFINITIONS - the libpcrecpp definitions
#
# and the following imported targets::
#
# PCRE::PCRECPP - The PCRECPP library
# PCRE::PCRE - The PCRE library
if(NOT PCRE::PCRE)
if(ENABLE_INTERNAL_PCRE)
include(cmake/scripts/common/ModuleHelpers.cmake)
set(MODULE_LC pcre)
SETUP_BUILD_VARS()
# Check for existing PCRE. If version >= PCRE-VERSION file version, dont build
find_package(PCRE CONFIG QUIET)
if(PCRE_VERSION VERSION_LESS ${${MODULE}_VER})
set(PCRE_VERSION ${${MODULE}_VER})
set(PCRE_DEBUG_POSTFIX d)
set(patches "${CORE_SOURCE_DIR}/tools/depends/target/${MODULE_LC}/001-all-cmakeconfig.patch"
"${CORE_SOURCE_DIR}/tools/depends/target/${MODULE_LC}/002-all-enable_docs_pc.patch"
"${CORE_SOURCE_DIR}/tools/depends/target/${MODULE_LC}/003-all-postfix.patch"
"${CORE_SOURCE_DIR}/tools/depends/target/${MODULE_LC}/004-win-pdb.patch"
"${CORE_SOURCE_DIR}/tools/depends/target/${MODULE_LC}/jit_aarch64.patch")
if(CORE_SYSTEM_NAME STREQUAL darwin_embedded)
list(APPEND patches "${CORE_SOURCE_DIR}/tools/depends/target/${MODULE_LC}/tvos-bitcode-fix.patch"
"${CORE_SOURCE_DIR}/tools/depends/target/${MODULE_LC}/ios-clear_cache.patch")
endif()
generate_patchcommand("${patches}")
set(CMAKE_ARGS -DPCRE_NEWLINE=ANYCRLF
-DPCRE_NO_RECURSE=ON
-DPCRE_MATCH_LIMIT_RECURSION=1500
-DPCRE_SUPPORT_JIT=ON
-DPCRE_SUPPORT_PCREGREP_JIT=ON
-DPCRE_SUPPORT_UTF=ON
-DPCRE_SUPPORT_UNICODE_PROPERTIES=ON
-DPCRE_SUPPORT_LIBZ=OFF
-DPCRE_SUPPORT_LIBBZ2=OFF
-DPCRE_BUILD_PCREGREP=OFF
-DPCRE_BUILD_TESTS=OFF)
if(WIN32 OR WINDOWS_STORE)
list(APPEND CMAKE_ARGS -DINSTALL_MSVC_PDB=ON)
elseif(CORE_SYSTEM_NAME STREQUAL android)
# CMake CheckFunctionExists incorrectly detects strtoq for android
list(APPEND CMAKE_ARGS -DHAVE_STRTOQ=0)
endif()
# populate PCRECPP lib without a separate module
if(NOT CORE_SYSTEM_NAME MATCHES windows)
# Non windows platforms have a lib prefix for the lib artifact
set(_libprefix "lib")
endif()
# regex used to get platform extension (eg lib for windows, .a for unix)
string(REGEX REPLACE "^.*\\." "" _LIBEXT ${${MODULE}_BYPRODUCT})
set(PCRECPP_LIBRARY_DEBUG ${DEP_LOCATION}/lib/${_libprefix}pcrecpp${${MODULE}_DEBUG_POSTFIX}.${_LIBEXT})
set(PCRECPP_LIBRARY_RELEASE ${DEP_LOCATION}/lib/${_libprefix}pcrecpp.${_LIBEXT})
BUILD_DEP_TARGET()
else()
# Populate paths for find_package_handle_standard_args
find_path(PCRE_INCLUDE_DIR pcre.h)
find_library(PCRECPP_LIBRARY_RELEASE NAMES pcrecpp)
find_library(PCRECPP_LIBRARY_DEBUG NAMES pcrecppd)
find_library(PCRE_LIBRARY_RELEASE NAMES pcre)
find_library(PCRE_LIBRARY_DEBUG NAMES pcred)
endif()
else()
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_PCRE libpcrecpp QUIET)
endif()
find_path(PCRE_INCLUDE_DIR pcrecpp.h
PATHS ${PC_PCRE_INCLUDEDIR})
find_library(PCRECPP_LIBRARY_RELEASE NAMES pcrecpp
PATHS ${PC_PCRE_LIBDIR})
find_library(PCRE_LIBRARY_RELEASE NAMES pcre
PATHS ${PC_PCRE_LIBDIR})
find_library(PCRECPP_LIBRARY_DEBUG NAMES pcrecppd
PATHS ${PC_PCRE_LIBDIR})
find_library(PCRE_LIBRARY_DEBUG NAMES pcred
PATHS ${PC_PCRE_LIBDIR})
set(PCRE_VERSION ${PC_PCRE_VERSION})
endif()
include(SelectLibraryConfigurations)
select_library_configurations(PCRECPP)
select_library_configurations(PCRE)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(PCRE
REQUIRED_VARS PCRECPP_LIBRARY PCRE_LIBRARY PCRE_INCLUDE_DIR
VERSION_VAR PCRE_VERSION)
if(PCRE_FOUND)
set(PCRE_LIBRARIES ${PCRECPP_LIBRARY} ${PCRE_LIBRARY})
set(PCRE_INCLUDE_DIRS ${PCRE_INCLUDE_DIR})
if(WIN32)
set(PCRE_DEFINITIONS -DPCRE_STATIC=1)
endif()
if(NOT TARGET PCRE::PCRE)
add_library(PCRE::PCRE UNKNOWN IMPORTED)
if(PCRE_LIBRARY_RELEASE)
set_target_properties(PCRE::PCRE PROPERTIES
IMPORTED_CONFIGURATIONS RELEASE
IMPORTED_LOCATION "${PCRE_LIBRARY_RELEASE}")
endif()
if(PCRE_LIBRARY_DEBUG)
set_target_properties(PCRE::PCRE PROPERTIES
IMPORTED_CONFIGURATIONS DEBUG
IMPORTED_LOCATION "${PCRE_LIBRARY_DEBUG}")
endif()
set_target_properties(PCRE::PCRE PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${PCRE_INCLUDE_DIR}")
if(WIN32)
set_target_properties(PCRE::PCRE PROPERTIES
INTERFACE_COMPILE_DEFINITIONS PCRE_STATIC=1)
endif()
endif()
if(NOT TARGET PCRE::PCRECPP)
add_library(PCRE::PCRECPP UNKNOWN IMPORTED)
if(PCRE_LIBRARY_RELEASE)
set_target_properties(PCRE::PCRECPP PROPERTIES
IMPORTED_CONFIGURATIONS RELEASE
IMPORTED_LOCATION "${PCRECPP_LIBRARY_RELEASE}")
endif()
if(PCRE_LIBRARY_DEBUG)
set_target_properties(PCRE::PCRECPP PROPERTIES
IMPORTED_CONFIGURATIONS DEBUG
IMPORTED_LOCATION "${PCRECPP_LIBRARY_DEBUG}")
endif()
set_target_properties(PCRE::PCRECPP PROPERTIES
INTERFACE_LINK_LIBRARIES PCRE::PCRE)
endif()
if(TARGET pcre)
add_dependencies(PCRE::PCRE pcre)
endif()
set_property(GLOBAL APPEND PROPERTY INTERNAL_DEPS_PROP PCRE::PCRE)
else()
if(PCRE_FIND_REQUIRED)
message(FATAL_ERROR "PCRE not found. Possibly use -DENABLE_INTERNAL_PCRE=ON to build PCRE")
endif()
endif()
mark_as_advanced(PCRE_INCLUDE_DIR PCRECPP_LIBRARY PCRE_LIBRARY)
endif()
|