INCLUDE (ExternalProject)

SET (_PCRE2_CMAKE_ARGS
  "-DCMAKE_INSTALL_PREFIX:PATH=${3RDPARTY_OUTPUT_PATH}"
  "-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}"
  -DBUILD_SHARED_LIBS=N
  -DPCRE2_BUILD_PCRE2_8=Y
  -DPCRE2_BUILD_PCRE2_16=N
  -DPCRE2_BUILD_PCRE2_32=N
  -DPCRE2_BUILD_PCRE2GREP=N
  -DPCRE2_SUPPORT_JIT=Y
  -DPCRE2_BUILD_TESTS=N)
IF (MSVC)
  LIST (APPEND _PCRE2_CMAKE_ARGS "${_PCRE2_CMAKE_OPTIONS} -DPCRE_STATIC_RUNTIME=1")
ENDIF ()

EXTERNALPROJECT_ADD(pcre2
  URL "${PROJECT_SOURCE_DIR}/3rdparty/tar/pcre2-10.23-patched.tar.gz"
  UPDATE_COMMAND "${CMAKE_COMMAND}" -E copy "${PROJECT_SOURCE_DIR}/3rdparty/tar/pcre2-10.23/CMakeLists_fixed.txt" "${CMAKE_CURRENT_BINARY_DIR}/pcre2/src/pcre2/CMakeLists.txt"
  PREFIX "${CMAKE_CURRENT_BINARY_DIR}/pcre2"
  CMAKE_ARGS ${_PCRE2_CMAKE_ARGS}
  )
SET (PCRE2_INCLUDE_DIR "${3RDPARTY_OUTPUT_PATH}/include")
IF (WIN32 AND (CMAKE_BUILD_TYPE MATCHES Debug))
  SET (PCRE2_LINK_FLAGS  "${3RDPARTY_OUTPUT_PATH}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}pcre2-8d${CMAKE_STATIC_LIBRARY_SUFFIX}")
ELSE (WIN32 AND (CMAKE_BUILD_TYPE MATCHES Debug))
  SET (PCRE2_LINK_FLAGS  "${3RDPARTY_OUTPUT_PATH}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}pcre2-8${CMAKE_STATIC_LIBRARY_SUFFIX}")
ENDIF (WIN32 AND (CMAKE_BUILD_TYPE MATCHES Debug))
SET (PCRE2_LIBRARIES   "${PCRE2_LINK_FLAGS}")
MESSAGE(STATUS "-----------------------------------------")
MESSAGE(STATUS "Setup PCRE2:")
MESSAGE(STATUS "")
MESSAGE(STATUS "        INCLUDE_DIR: ${PCRE2_INCLUDE_DIR}")
MESSAGE(STATUS "         LINK_FLAGS: ${PCRE2_LINK_FLAGS}")
MESSAGE(STATUS "          LIBRARIES: ${PCRE2_LIBRARIES}")
MESSAGE(STATUS "-----------------------------------------")
SET (PCRE2_INCLUDE_DIRS "${PCRE2_INCLUDE_DIR}")
#
# For linkage in static mode
#
ADD_DEFINITIONS(-DPCRE2_EXP_DECL=extern)

SET (PCRE2_FOUND FALSE)
MARK_AS_ADVANCED (
  PCRE2_FOUND
  PCRE2_INCLUDE_DIRS
  PCRE2_LIBRARIES
  )