summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>2009-03-23 15:29:18 +0000
committerph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>2009-03-23 15:29:18 +0000
commitf7afd81e3ed1e9d273b857526d4ae87a9846e183 (patch)
tree9d2b58689f63b80f65d8b4988a9684d53b26f430
parent628f1efe8c0ee0a200b7c05e3cc1f8d40bf860ca (diff)
downloadpcre-f7afd81e3ed1e9d273b857526d4ae87a9846e183.tar.gz
Upgrade CMake support to disable tests, pcregrep, and configuration listing.
git-svn-id: svn://vcs.exim.org/pcre/code/trunk@407 2f5784b3-3f2a-0410-8824-cb99058d5e15
-rw-r--r--CMakeLists.txt248
-rw-r--r--ChangeLog10
2 files changed, 146 insertions, 112 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e4c9d27..260181e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -27,9 +27,12 @@
# 2008-01-23 PH removed the automatic build of pcredemo.
# 2008-04-22 PH modified READLINE support so it finds NCURSES when needed.
# 2008-07-03 PH updated for revised UCP property support (change of files)
-# 2009-03-23 PH applied Steven Van Ingelgem's patch to change the name
+# 2009-03-23 PH applied Steven Van Ingelgem's patch to change the name
# CMAKE_BINARY_DIR to PROJECT_BINARY_DIR so that it works when PCRE
# is included within another project.
+# 2009-03-23 PH applied a modified version of Steven Van Ingelgem's patches to
+# add options to stop the building of pcregrep and the tests, and
+# to disable the final configuration report.
PROJECT(PCRE C CXX)
@@ -108,6 +111,16 @@ SET(PCRE_SUPPORT_UTF8 OFF CACHE BOOL
SET(PCRE_SUPPORT_BSR_ANYCRLF OFF CACHE BOOL
"ON=Backslash-R matches only LF CR and CRLF, OFF=Backslash-R matches all Unicode Linebreaks")
+OPTION(PCRE_SHOW_REPORT "Show the final configuration report" ON)
+OPTION(PCRE_BUILD_PCREGREP "Build pcregrep" ON)
+OPTION(PCRE_BUILD_TESTS "Build the tests" ON)
+
+IF (PCRE_BUILD_TESTS)
+ IF (NOT PCRE_BUILD_PCREGREP)
+ MESSAGE(STATUS "** Building tests requires pcregrep: PCRE_BUILD_PCREGREP forced ON")
+ SET(PCRE_BUILD_PCREGREP ON)
+ ENDIF(NOT PCRE_BUILD_PCREGREP)
+ENDIF(PCRE_BUILD_TESTS)
IF (MINGW)
OPTION(NON_STANDARD_LIB_PREFIX
@@ -335,10 +348,14 @@ IF(WIN32)
SET(CMAKE_DEBUG_POSTFIX "d")
ENDIF(WIN32)
+SET(targets)
+
# Libraries
# pcre
ADD_LIBRARY(pcre ${PCRE_HEADERS} ${PCRE_SOURCES} ${PROJECT_BINARY_DIR}/config.h)
+SET(targets ${targets} pcre)
ADD_LIBRARY(pcreposix ${PCREPOSIX_HEADERS} ${PCREPOSIX_SOURCES})
+SET(targets ${targets} pcreposix)
TARGET_LINK_LIBRARIES(pcreposix pcre)
IF(MINGW AND NOT PCRE_STATIC)
IF(NON_STANDARD_LIB_PREFIX)
@@ -358,6 +375,7 @@ ENDIF(MINGW AND NOT PCRE_STATIC)
# pcrecpp
IF(PCRE_BUILD_PCRECPP)
ADD_LIBRARY(pcrecpp ${PCRECPP_HEADERS} ${PCRECPP_SOURCES})
+SET(targets ${targets} pcrecpp)
TARGET_LINK_LIBRARIES(pcrecpp pcre)
IF(MINGW AND NOT PCRE_STATIC)
@@ -378,12 +396,6 @@ ENDIF(PCRE_BUILD_PCRECPP)
# Executables
-ADD_EXECUTABLE(pcretest pcretest.c)
-TARGET_LINK_LIBRARIES(pcretest pcreposix ${PCRETEST_LIBS})
-
-ADD_EXECUTABLE(pcregrep pcregrep.c)
-TARGET_LINK_LIBRARIES(pcregrep pcreposix ${PCREGREP_LIBS})
-
# Removed by PH (2008-01-23) because pcredemo shouldn't really be built
# automatically, and it gave trouble in some environments anyway.
# ADD_EXECUTABLE(pcredemo pcredemo.c)
@@ -393,69 +405,83 @@ TARGET_LINK_LIBRARIES(pcregrep pcreposix ${PCREGREP_LIBS})
# SET_TARGET_PROPERTIES(pcredemo PROPERTIES COMPILE_FLAGS "-DPCRE_STATIC")
# ENDIF(NOT BUILD_SHARED_LIBS)
-IF(PCRE_BUILD_PCRECPP)
- ADD_EXECUTABLE(pcrecpp_unittest pcrecpp_unittest.cc)
- TARGET_LINK_LIBRARIES(pcrecpp_unittest pcrecpp)
-IF(MINGW AND NON_STANDARD_LIB_NAMES AND NOT PCRE_STATIC)
-SET_TARGET_PROPERTIES(pcrecpp
- PROPERTIES PREFIX ""
-)
-ENDIF(MINGW AND NON_STANDARD_LIB_NAMES AND NOT PCRE_STATIC)
-
+IF(PCRE_BUILD_PCREGREP)
+ ADD_EXECUTABLE(pcregrep pcregrep.c)
+ SET(targets ${targets} pcregrep)
+ TARGET_LINK_LIBRARIES(pcregrep pcreposix ${PCREGREP_LIBS})
+ENDIF(PCRE_BUILD_PCREGREP)
- ADD_EXECUTABLE(pcre_scanner_unittest pcre_scanner_unittest.cc)
- TARGET_LINK_LIBRARIES(pcre_scanner_unittest pcrecpp)
-
- ADD_EXECUTABLE(pcre_stringpiece_unittest pcre_stringpiece_unittest.cc)
- TARGET_LINK_LIBRARIES(pcre_stringpiece_unittest pcrecpp)
-ENDIF(PCRE_BUILD_PCRECPP)
# Testing
-
-ENABLE_TESTING()
-
-GET_TARGET_PROPERTY(PCREGREP_EXE pcregrep DEBUG_LOCATION)
-GET_TARGET_PROPERTY(PCRETEST_EXE pcretest DEBUG_LOCATION)
-
-# Write out a CTest configuration file that sets some needed environment
-# variables for the test scripts.
-#
-FILE(WRITE ${PROJECT_BINARY_DIR}/CTestCustom.ctest
-"# This is a generated file.
-SET(ENV{srcdir} ${PROJECT_SOURCE_DIR})
-SET(ENV{pcregrep} ${PCREGREP_EXE})
-SET(ENV{pcretest} ${PCRETEST_EXE})
-")
-
-IF(UNIX)
- ADD_TEST(pcre_test ${PROJECT_SOURCE_DIR}/RunTest)
- ADD_TEST(pcre_grep_test ${PROJECT_SOURCE_DIR}/RunGrepTest)
-ENDIF(UNIX)
-IF(WIN32)
- ADD_TEST(pcre_test cmd /C ${PROJECT_SOURCE_DIR}/RunTest.bat)
-ENDIF(WIN32)
-
-GET_TARGET_PROPERTY(PCRECPP_UNITTEST_EXE
- pcrecpp_unittest
- DEBUG_LOCATION)
-
-GET_TARGET_PROPERTY(PCRE_SCANNER_UNITTEST_EXE
- pcre_scanner_unittest
- DEBUG_LOCATION)
-
-GET_TARGET_PROPERTY(PCRE_STRINGPIECE_UNITTEST_EXE
- pcre_stringpiece_unittest
- DEBUG_LOCATION)
-
-ADD_TEST(pcrecpp_test ${PCRECPP_UNITTEST_EXE})
-ADD_TEST(pcre_scanner_test ${PCRE_SCANNER_UNITTEST_EXE})
-ADD_TEST(pcre_stringpiece_test ${PCRE_STRINGPIECE_UNITTEST_EXE})
+IF(PCRE_BUILD_TESTS)
+ ENABLE_TESTING()
+
+ ADD_EXECUTABLE(pcretest pcretest.c)
+ SET(targets ${targets} pcretest)
+ TARGET_LINK_LIBRARIES(pcretest pcreposix ${PCRETEST_LIBS})
+
+ IF(PCRE_BUILD_PCRECPP)
+ ADD_EXECUTABLE(pcrecpp_unittest pcrecpp_unittest.cc)
+ SET(targets ${targets} pcrecpp_unittest)
+ TARGET_LINK_LIBRARIES(pcrecpp_unittest pcrecpp)
+ IF(MINGW AND NON_STANDARD_LIB_NAMES AND NOT PCRE_STATIC)
+ SET_TARGET_PROPERTIES(pcrecpp
+ PROPERTIES PREFIX ""
+ )
+ ENDIF(MINGW AND NON_STANDARD_LIB_NAMES AND NOT PCRE_STATIC)
+
+
+ ADD_EXECUTABLE(pcre_scanner_unittest pcre_scanner_unittest.cc)
+ SET(targets ${targets} pcre_scanner_unittest)
+ TARGET_LINK_LIBRARIES(pcre_scanner_unittest pcrecpp)
+
+ ADD_EXECUTABLE(pcre_stringpiece_unittest pcre_stringpiece_unittest.cc)
+ SET(targets ${targets} pcre_stringpiece_unittest)
+ TARGET_LINK_LIBRARIES(pcre_stringpiece_unittest pcrecpp)
+ ENDIF(PCRE_BUILD_PCRECPP)
+
+ GET_TARGET_PROPERTY(PCREGREP_EXE pcregrep DEBUG_LOCATION)
+ GET_TARGET_PROPERTY(PCRETEST_EXE pcretest DEBUG_LOCATION)
+
+ # Write out a CTest configuration file that sets some needed environment
+ # variables for the test scripts.
+ #
+ FILE(WRITE ${PROJECT_BINARY_DIR}/CTestCustom.ctest
+ "# This is a generated file.
+ SET(ENV{srcdir} ${PROJECT_SOURCE_DIR})
+ SET(ENV{pcregrep} ${PCREGREP_EXE})
+ SET(ENV{pcretest} ${PCRETEST_EXE})
+ ")
+
+ IF(UNIX)
+ ADD_TEST(pcre_test ${PROJECT_SOURCE_DIR}/RunTest)
+ ADD_TEST(pcre_grep_test ${PROJECT_SOURCE_DIR}/RunGrepTest)
+ ENDIF(UNIX)
+ IF(WIN32)
+ ADD_TEST(pcre_test cmd /C ${PROJECT_SOURCE_DIR}/RunTest.bat)
+ ENDIF(WIN32)
+
+ GET_TARGET_PROPERTY(PCRECPP_UNITTEST_EXE
+ pcrecpp_unittest
+ DEBUG_LOCATION)
+
+ GET_TARGET_PROPERTY(PCRE_SCANNER_UNITTEST_EXE
+ pcre_scanner_unittest
+ DEBUG_LOCATION)
+
+ GET_TARGET_PROPERTY(PCRE_STRINGPIECE_UNITTEST_EXE
+ pcre_stringpiece_unittest
+ DEBUG_LOCATION)
+
+ ADD_TEST(pcrecpp_test ${PCRECPP_UNITTEST_EXE})
+ ADD_TEST(pcre_scanner_test ${PCRE_SCANNER_UNITTEST_EXE})
+ ADD_TEST(pcre_stringpiece_test ${PCRE_STRINGPIECE_UNITTEST_EXE})
+ENDIF(PCRE_BUILD_TESTS)
# Installation
-
SET(CMAKE_INSTALL_ALWAYS 1)
-INSTALL(TARGETS pcre pcreposix pcregrep pcretest
+INSTALL(TARGETS ${targets}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
@@ -467,10 +493,6 @@ FILE(GLOB man1 ${PROJECT_SOURCE_DIR}/doc/*.1)
FILE(GLOB man3 ${PROJECT_SOURCE_DIR}/doc/*.3)
IF(PCRE_BUILD_PCRECPP)
- INSTALL(TARGETS pcrecpp
- RUNTIME DESTINATION bin
- LIBRARY DESTINATION lib
- ARCHIVE DESTINATION lib)
INSTALL(FILES ${PCRECPP_HEADERS} DESTINATION include)
ELSE(PCRE_BUILD_PCRECPP)
# Remove pcrecpp.3
@@ -495,49 +517,53 @@ ELSE(BUILD_SHARED_LIBS)
SET(BUILD_STATIC_LIBS ON)
ENDIF(BUILD_SHARED_LIBS)
-MESSAGE(STATUS "")
-MESSAGE(STATUS "")
-MESSAGE(STATUS "PCRE configuration summary:")
-MESSAGE(STATUS "")
-MESSAGE(STATUS " Install prefix .................. : " ${CMAKE_INSTALL_PREFIX})
-MESSAGE(STATUS " C compiler ...................... : " ${CMAKE_C_COMPILER})
-MESSAGE(STATUS " C++ compiler .................... : " ${CMAKE_CXX_COMPILER})
-MESSAGE(STATUS " C compiler flags ................ : " ${CMAKE_C_FLAGS}) #FIXME
-MESSAGE(STATUS " C++ compiler flags .............. : " ${CMAKE_CXX_FLAGS}) #FIXME
-MESSAGE(STATUS "")
-MESSAGE(STATUS " Build C++ library ............... : " ${PCRE_BUILD_PCRECPP})
-MESSAGE(STATUS " Enable UTF-8 support ............ : " ${PCRE_SUPPORT_UNICODE_PROPERTIES})
-MESSAGE(STATUS " Unicode properties .............. : " ${PCRE_SUPPORT_UNICODE_PROPERTIES})
-MESSAGE(STATUS " Newline char/sequence ........... : " ${PCRE_NEWLINE})
-MESSAGE(STATUS " \\R matches only ANYCRLF ......... : " ${PCRE_SUPPORT_BSR_ANYCRLF})
-MESSAGE(STATUS " EBCDIC coding ................... : " ${PCRE_EBCDIC})
-MESSAGE(STATUS " Rebuild char tables ............. : " ${PCRE_REBUILD_CHARTABLES})
-MESSAGE(STATUS " No stack recursion .............. : " ${PCRE_NO_RECURSE})
-MESSAGE(STATUS " POSIX mem threshold ............. : " ${PCRE_POSIX_MALLOC_THRESHOLD})
-MESSAGE(STATUS " Internal link size .............. : " ${PCRE_LINK_SIZE})
-MESSAGE(STATUS " Match limit ..................... : " ${PCRE_MATCH_LIMIT})
-MESSAGE(STATUS " Match limit recursion ........... : " ${PCRE_MATCH_LIMIT_RECURSION})
-MESSAGE(STATUS " Build shared libs ............... : " ${BUILD_SHARED_LIBS})
-MESSAGE(STATUS " Build static libs ............... : " ${BUILD_STATIC_LIBS})
-IF(ZLIB_FOUND)
- MESSAGE(STATUS " Link pcregrep with libz ......... : " ${PCRE_SUPPORT_LIBZ})
-ELSE(ZLIB_FOUND)
- MESSAGE(STATUS " Link pcregrep with libz ......... : None" )
-ENDIF(ZLIB_FOUND)
-IF(BZIP2_FOUND)
- MESSAGE(STATUS " Link pcregrep with libbz2 ....... : " ${PCRE_SUPPORT_LIBBZ2})
-ELSE(BZIP2_FOUND)
- MESSAGE(STATUS " Link pcregrep with libbz2 ....... : None" )
-ENDIF(BZIP2_FOUND)
-IF(NOT PCRE_SUPPORT_LIBREADLINE)
- MESSAGE(STATUS " Link pcretest with libreadline .. : None" )
-ELSE(NOT PCRE_SUPPORT_LIBREADLINE)
- MESSAGE(STATUS " Link pcretest with libreadline .. : " ${PCRE_SUPPORT_LIBREADLINE})
-ENDIF(NOT PCRE_SUPPORT_LIBREADLINE)
-IF(MINGW AND NOT PCRE_STATIC)
- MESSAGE(STATUS " Non-standard dll names (prefix) . : " ${NON_STANDARD_LIB_PREFIX})
- MESSAGE(STATUS " Non-standard dll names (suffix) . : " ${NON_STANDARD_LIB_SUFFIX})
-ENDIF(MINGW AND NOT PCRE_STATIC)
-MESSAGE(STATUS "")
+IF(PCRE_SHOW_REPORT)
+ MESSAGE(STATUS "")
+ MESSAGE(STATUS "")
+ MESSAGE(STATUS "PCRE configuration summary:")
+ MESSAGE(STATUS "")
+ MESSAGE(STATUS " Install prefix .................. : " ${CMAKE_INSTALL_PREFIX})
+ MESSAGE(STATUS " C compiler ...................... : " ${CMAKE_C_COMPILER})
+ MESSAGE(STATUS " C++ compiler .................... : " ${CMAKE_CXX_COMPILER})
+ MESSAGE(STATUS " C compiler flags ................ : " ${CMAKE_C_FLAGS}) #FIXME
+ MESSAGE(STATUS " C++ compiler flags .............. : " ${CMAKE_CXX_FLAGS}) #FIXME
+ MESSAGE(STATUS "")
+ MESSAGE(STATUS " Build C++ library ............... : " ${PCRE_BUILD_PCRECPP})
+ MESSAGE(STATUS " Enable UTF-8 support ............ : " ${PCRE_SUPPORT_UNICODE_PROPERTIES})
+ MESSAGE(STATUS " Unicode properties .............. : " ${PCRE_SUPPORT_UNICODE_PROPERTIES})
+ MESSAGE(STATUS " Newline char/sequence ........... : " ${PCRE_NEWLINE})
+ MESSAGE(STATUS " \\R matches only ANYCRLF ......... : " ${PCRE_SUPPORT_BSR_ANYCRLF})
+ MESSAGE(STATUS " EBCDIC coding ................... : " ${PCRE_EBCDIC})
+ MESSAGE(STATUS " Rebuild char tables ............. : " ${PCRE_REBUILD_CHARTABLES})
+ MESSAGE(STATUS " No stack recursion .............. : " ${PCRE_NO_RECURSE})
+ MESSAGE(STATUS " POSIX mem threshold ............. : " ${PCRE_POSIX_MALLOC_THRESHOLD})
+ MESSAGE(STATUS " Internal link size .............. : " ${PCRE_LINK_SIZE})
+ MESSAGE(STATUS " Match limit ..................... : " ${PCRE_MATCH_LIMIT})
+ MESSAGE(STATUS " Match limit recursion ........... : " ${PCRE_MATCH_LIMIT_RECURSION})
+ MESSAGE(STATUS " Build shared libs ............... : " ${BUILD_SHARED_LIBS})
+ MESSAGE(STATUS " Build static libs ............... : " ${BUILD_STATIC_LIBS})
+ MESSAGE(STATUS " Build pcregrep .................. : " ${PCRE_BUILD_PCREGREP})
+ MESSAGE(STATUS " Build tests (implies pcretest) .. : " ${PCRE_BUILD_TESTS})
+ IF(ZLIB_FOUND)
+ MESSAGE(STATUS " Link pcregrep with libz ......... : " ${PCRE_SUPPORT_LIBZ})
+ ELSE(ZLIB_FOUND)
+ MESSAGE(STATUS " Link pcregrep with libz ......... : None" )
+ ENDIF(ZLIB_FOUND)
+ IF(BZIP2_FOUND)
+ MESSAGE(STATUS " Link pcregrep with libbz2 ....... : " ${PCRE_SUPPORT_LIBBZ2})
+ ELSE(BZIP2_FOUND)
+ MESSAGE(STATUS " Link pcregrep with libbz2 ....... : None" )
+ ENDIF(BZIP2_FOUND)
+ IF(NOT PCRE_SUPPORT_LIBREADLINE)
+ MESSAGE(STATUS " Link pcretest with libreadline .. : None" )
+ ELSE(NOT PCRE_SUPPORT_LIBREADLINE)
+ MESSAGE(STATUS " Link pcretest with libreadline .. : " ${PCRE_SUPPORT_LIBREADLINE})
+ ENDIF(NOT PCRE_SUPPORT_LIBREADLINE)
+ IF(MINGW AND NOT PCRE_STATIC)
+ MESSAGE(STATUS " Non-standard dll names (prefix) . : " ${NON_STANDARD_LIB_PREFIX})
+ MESSAGE(STATUS " Non-standard dll names (suffix) . : " ${NON_STANDARD_LIB_SUFFIX})
+ ENDIF(MINGW AND NOT PCRE_STATIC)
+ MESSAGE(STATUS "")
+ENDIF(PCRE_SHOW_REPORT)
# end CMakeLists.txt
diff --git a/ChangeLog b/ChangeLog
index d57d2ff..15963e3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -94,7 +94,15 @@ Version 7.9 xx-xxx-09
23. Steven Van Ingelgem's patch to CMakeLists.txt to change the name
CMAKE_BINARY_DIR to PROJECT_BINARY_DIR so that it works when PCRE is
included within another project.
-
+
+24. Steven Van Ingelgem's patches to add more options to the CMake support,
+ slightly modified by me:
+
+ (a) PCRE_BUILD_TESTS can be set OFF not to build the tests, including
+ not building pcregrep.
+
+ (b) PCRE_BUILD_PCREGREP can be see OFF not to build pcregrep, but only
+ if PCRE_BUILD_TESTS is also set OFF, because the tests use pcregrep.
Version 7.8 05-Sep-08