summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt73
1 files changed, 64 insertions, 9 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 858a34b..16d89ff 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -67,16 +67,23 @@
# 2013-11-05 PH added support for PARENS_NEST_LIMIT
# 2016-03-01 PH applied Chris Wilson's patch for MSVC static build
# 2016-06-24 PH applied Chris Wilson's revised patch (adds a separate option)
+# 2021-06-14 PH changed CMAKE_MODULE_PATH definition to add, not replace
+# 2021-06-14 PH applied Wolfgang Stöggl's patch for generating pcre-config and
+# libpcre*.pc files (Bugzilla #2583)
PROJECT(PCRE C CXX)
-# Increased minimum to 2.8.0 to support newer add_test features. Set policy
+# Increased minimum to 2.8.5 to support GNUInstallDirs. Set policy
# CMP0026 to avoid warnings for the use of LOCATION in GET_TARGET_PROPERTY.
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8.0)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8.5)
CMAKE_POLICY(SET CMP0026 OLD)
-SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) # for FindReadline.cmake
+# For FindReadline.cmake. This was changed to allow setting CMAKE_MODULE_PATH
+# on the command line.
+# SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) # for FindReadline.cmake
+
+LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
# external packages
FIND_PACKAGE( BZip2 )
@@ -90,6 +97,7 @@ INCLUDE(CheckIncludeFile)
INCLUDE(CheckIncludeFileCXX)
INCLUDE(CheckFunctionExists)
INCLUDE(CheckTypeSize)
+INCLUDE(GNUInstallDirs) # for CMAKE_INSTALL_LIBDIR
CHECK_INCLUDE_FILE(dirent.h HAVE_DIRENT_H)
CHECK_INCLUDE_FILE(stdint.h HAVE_STDINT_H)
@@ -406,7 +414,7 @@ foreach(configure_line ${configure_lines})
foreach(_substitution_variable ${SEARCHED_VARIABLES})
string(TOUPPER ${_substitution_variable} _substitution_variable_upper)
if (NOT ${_substitution_variable_upper})
- string(REGEX MATCH "m4_define\\(${_substitution_variable}, \\[(.*)\\]" MACTHED_STRING ${configure_line})
+ string(REGEX MATCH "m4_define\\(${_substitution_variable}, \\[(.*)\\]" MATCHED_STRING ${configure_line})
if (CMAKE_MATCH_1)
set(${_substitution_variable_upper} ${CMAKE_MATCH_1})
endif()
@@ -418,8 +426,6 @@ CONFIGURE_FILE(pcre.h.in
${PROJECT_BINARY_DIR}/pcre.h
@ONLY)
-# What about pcre-config and libpcre.pc?
-
IF(PCRE_BUILD_PCRECPP)
CONFIGURE_FILE(pcre_stringpiece.h.in
${PROJECT_BINARY_DIR}/pcre_stringpiece.h
@@ -430,6 +436,49 @@ IF(PCRE_BUILD_PCRECPP)
@ONLY)
ENDIF(PCRE_BUILD_PCRECPP)
+# Generate pkg-config files
+SET(PACKAGE_VERSION "${PCRE_MAJOR}.${PCRE_MINOR}")
+SET(prefix "${CMAKE_INSTALL_PREFIX}")
+SET(exec_prefix "\${prefix}")
+SET(libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}")
+SET(includedir "\${prefix}/include")
+IF(NOT BUILD_SHARED_LIBS)
+ SET(PCRE_STATIC_CFLAG "-DPCRE_STATIC")
+ENDIF(NOT BUILD_SHARED_LIBS)
+# TO-DO: @PTHREAD_CFLAGS@ @PTHREAD_LIBS@
+
+CONFIGURE_FILE(libpcreposix.pc.in ${PROJECT_BINARY_DIR}/libpcreposix.pc @ONLY)
+
+IF(PCRE_BUILD_PCRE8)
+ CONFIGURE_FILE(libpcre.pc.in ${PROJECT_BINARY_DIR}/libpcre.pc @ONLY)
+ SET(enable_pcre8 "yes")
+ELSE()
+ SET(enable_pcre8 "no")
+ENDIF()
+
+IF(PCRE_BUILD_PCRE16)
+ CONFIGURE_FILE(libpcre16.pc.in ${PROJECT_BINARY_DIR}/libpcre16.pc @ONLY)
+ SET(enable_pcre16 "yes")
+ELSE()
+ SET(enable_pcre16 "no")
+ENDIF()
+
+IF(PCRE_BUILD_PCRE32)
+ CONFIGURE_FILE(libpcre32.pc.in ${PROJECT_BINARY_DIR}/libpcre32.pc @ONLY)
+ SET(enable_pcre32 "yes")
+ELSE()
+ SET(enable_pcre32 "no")
+ENDIF()
+
+IF(PCRE_BUILD_PCRECPP)
+ CONFIGURE_FILE(libpcrecpp.pc.in ${PROJECT_BINARY_DIR}/libpcrecpp.pc @ONLY)
+ SET(enable_cpp "yes")
+ELSE()
+ SET(enable_cpp "no")
+ENDIF()
+
+CONFIGURE_FILE(pcre-config.in pcre-config @ONLY)
+
# Character table generation
OPTION(PCRE_REBUILD_CHARTABLES "Rebuild char tables" OFF)
@@ -887,14 +936,15 @@ SET(CMAKE_INSTALL_ALWAYS 1)
INSTALL(TARGETS ${targets}
RUNTIME DESTINATION bin
- LIBRARY DESTINATION lib
- ARCHIVE DESTINATION lib)
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
INSTALL(FILES ${PCRE_HEADERS} ${PCREPOSIX_HEADERS} DESTINATION include)
FILE(GLOB html ${PROJECT_SOURCE_DIR}/doc/html/*.html)
FILE(GLOB man1 ${PROJECT_SOURCE_DIR}/doc/*.1)
FILE(GLOB man3 ${PROJECT_SOURCE_DIR}/doc/*.3)
+FILE(GLOB pc ${PROJECT_BINARY_DIR}/*.pc)
IF(PCRE_BUILD_PCRECPP)
INSTALL(FILES ${PCRECPP_HEADERS} DESTINATION include)
@@ -912,6 +962,11 @@ ENDIF(PCRE_BUILD_PCRECPP)
INSTALL(FILES ${man1} DESTINATION man/man1)
INSTALL(FILES ${man3} DESTINATION man/man3)
INSTALL(FILES ${html} DESTINATION share/doc/pcre/html)
+INSTALL(FILES ${pc} DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/pcre-config"
+ DESTINATION bin
+ # Set 0755 permissions
+ PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
IF(MSVC AND INSTALL_MSVC_PDB)
INSTALL(FILES ${PROJECT_BINARY_DIR}/pcre.pdb
@@ -941,7 +996,7 @@ IF(PCRE_SHOW_REPORT)
ENDIF(CMAKE_CXX_FLAGS)
MESSAGE(STATUS "")
MESSAGE(STATUS "")
- MESSAGE(STATUS "PCRE configuration summary:")
+ MESSAGE(STATUS "PCRE-${PCRE_MAJOR}.${PCRE_MINOR} configuration summary:")
MESSAGE(STATUS "")
MESSAGE(STATUS " Install prefix .................. : ${CMAKE_INSTALL_PREFIX}")
MESSAGE(STATUS " C compiler ...................... : ${CMAKE_C_COMPILER}")