--- embedaddon/pcre/CMakeLists.txt 2012/10/09 09:19:17 1.1.1.3 +++ embedaddon/pcre/CMakeLists.txt 2013/07/22 08:25:55 1.1.1.4 @@ -57,6 +57,10 @@ # 2012-01-17 PH applied Stephen Kelly's patch to parse the version data out # of the configure.ac file # 2012-02-26 PH added support for libedit +# 2012-09-06 PH added support for PCRE_EBCDIC_NL25 +# 2012-09-08 ChPe added PCRE32 support +# 2012-10-23 PH added support for VALGRIND and GCOV +# 2012-12-08 PH added patch from Daniel Richard G to quash some MSVC warnings PROJECT(PCRE C CXX) @@ -112,11 +116,16 @@ OPTION(PCRE_BUILD_PCRE8 "Build 8 bit PCRE library" ON) OPTION(PCRE_BUILD_PCRE16 "Build 16 bit PCRE library" OFF) +OPTION(PCRE_BUILD_PCRE32 "Build 32 bit PCRE library" OFF) + OPTION(PCRE_BUILD_PCRECPP "Build the PCRE C++ library (pcrecpp)." ON) SET(PCRE_EBCDIC OFF CACHE BOOL - "Use EBCDIC coding instead of ASCII. (This is rarely used outside of mainframe systems)") + "Use EBCDIC coding instead of ASCII. (This is rarely used outside of mainframe systems.)") +SET(PCRE_EBCDIC_NL25 OFF CACHE BOOL + "Use 0x25 as EBCDIC NL character instead of 0x15; implies EBCDIC.") + SET(PCRE_LINK_SIZE "2" CACHE STRING "Internal link size (2, 3 or 4 allowed). See LINK_SIZE in config.h.in for details.") @@ -145,7 +154,7 @@ SET(PCRE_SUPPORT_PCREGREP_JIT ON CACHE BOOL "Enable use of Just-in-time compiling in pcregrep.") SET(PCRE_SUPPORT_UTF OFF CACHE BOOL - "Enable support for Unicode Transformation Format (UTF-8 and/or UTF-16) encoding.") + "Enable support for Unicode Transformation Format (UTF-8/UTF-16/UTF-32) encoding.") SET(PCRE_SUPPORT_UNICODE_PROPERTIES OFF CACHE BOOL "Enable support for Unicode properties (if set, UTF support will be enabled as well).") @@ -153,6 +162,12 @@ SET(PCRE_SUPPORT_UNICODE_PROPERTIES 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") +SET(PCRE_SUPPORT_VALGRIND OFF CACHE BOOL + "Enable Valgrind support.") + +SET(PCRE_SUPPORT_COVERAGE OFF CACHE BOOL + "Enable code coverage support using gcov.") + 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) @@ -227,9 +242,9 @@ IF(NOT BUILD_SHARED_LIBS) SET(PCRE_STATIC 1) ENDIF(NOT BUILD_SHARED_LIBS) -IF(NOT PCRE_BUILD_PCRE8 AND NOT PCRE_BUILD_PCRE16) - MESSAGE(FATAL_ERROR "Either PCRE_BUILD_PCRE8 or PCRE_BUILD_PCRE16 must be enabled") -ENDIF(NOT PCRE_BUILD_PCRE8 AND NOT PCRE_BUILD_PCRE16) +IF(NOT PCRE_BUILD_PCRE8 AND NOT PCRE_BUILD_PCRE16 AND NOT PCRE_BUILD_PCRE32) + MESSAGE(FATAL_ERROR "At least one of PCRE_BUILD_PCRE8, PCRE_BUILD_PCRE16 or PCRE_BUILD_PCRE32 must be enabled") +ENDIF(NOT PCRE_BUILD_PCRE8 AND NOT PCRE_BUILD_PCRE16 AND NOT PCRE_BUILD_PCRE32) IF(PCRE_BUILD_PCRE8) SET(SUPPORT_PCRE8 1) @@ -239,6 +254,10 @@ IF(PCRE_BUILD_PCRE16) SET(SUPPORT_PCRE16 1) ENDIF(PCRE_BUILD_PCRE16) +IF(PCRE_BUILD_PCRE32) + SET(SUPPORT_PCRE32 1) +ENDIF(PCRE_BUILD_PCRE32) + IF(PCRE_BUILD_PCRECPP AND NOT PCRE_BUILD_PCRE8) MESSAGE(STATUS "** PCRE_BUILD_PCRE8 must be enabled for the C++ library support") SET(PCRE_BUILD_PCRECPP OFF) @@ -274,6 +293,17 @@ IF(PCRE_SUPPORT_PCREGREP_JIT) SET(SUPPORT_PCREGREP_JIT 1) ENDIF(PCRE_SUPPORT_PCREGREP_JIT) +IF(PCRE_SUPPORT_VALGRIND) + SET(SUPPORT_VALGRIND 1) +ENDIF(PCRE_SUPPORT_VALGRIND) + +IF(PCRE_SUPPORT_COVERAGE) + SET(SUPPORT_GCOV 1) + IF(NOT CMAKE_COMPILER_IS_GNUCC) + MESSAGE(FATAL_ERROR "Code coverage reports can only be generated when using GCC") + ENDIF(NOT CMAKE_COMPILER_IS_GNUCC) +ENDIF(PCRE_SUPPORT_COVERAGE) + # This next one used to contain # SET(PCRETEST_LIBS ${READLINE_LIBRARY}) # but I was advised to add the NCURSES test as well, along with @@ -326,8 +356,25 @@ ENDIF(NEWLINE STREQUAL "") IF(PCRE_EBCDIC) SET(EBCDIC 1) +IF(PCRE_NEWLINE STREQUAL "LF") + SET(NEWLINE "21") +ENDIF(PCRE_NEWLINE STREQUAL "LF") +IF(PCRE_NEWLINE STREQUAL "CRLF") + SET(NEWLINE "3349") +ENDIF(PCRE_NEWLINE STREQUAL "CRLF") ENDIF(PCRE_EBCDIC) +IF(PCRE_EBCDIC_NL25) + SET(EBCDIC 1) + SET(EBCDIC_NL25 1) +IF(PCRE_NEWLINE STREQUAL "LF") + SET(NEWLINE "37") +ENDIF(PCRE_NEWLINE STREQUAL "LF") +IF(PCRE_NEWLINE STREQUAL "CRLF") + SET(NEWLINE "3365") +ENDIF(PCRE_NEWLINE STREQUAL "CRLF") +ENDIF(PCRE_EBCDIC_NL25) + IF(PCRE_NO_RECURSE) SET(NO_RECURSE 1) ENDIF(PCRE_NO_RECURSE) @@ -456,6 +503,33 @@ SET(PCRE16_SOURCES ) ENDIF(PCRE_BUILD_PCRE16) +IF(PCRE_BUILD_PCRE32) +SET(PCRE32_SOURCES + pcre32_byte_order.c + pcre32_chartables.c + pcre32_compile.c + pcre32_config.c + pcre32_dfa_exec.c + pcre32_exec.c + pcre32_fullinfo.c + pcre32_get.c + pcre32_globals.c + pcre32_jit_compile.c + pcre32_maketables.c + pcre32_newline.c + pcre32_ord2utf32.c + pcre32_refcount.c + pcre32_string_utils.c + pcre32_study.c + pcre32_tables.c + pcre32_ucd.c + pcre32_utf32_utils.c + pcre32_valid_utf32.c + pcre32_version.c + pcre32_xclass.c +) +ENDIF(PCRE_BUILD_PCRE32) + IF(MINGW AND NOT PCRE_STATIC) IF (EXISTS ${PROJECT_SOURCE_DIR}/pcre.rc) ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_SOURCE_DIR}/pcre.o @@ -497,7 +571,7 @@ SET(PCRECPP_SOURCES ADD_DEFINITIONS(-DHAVE_CONFIG_H) IF(MSVC) - ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE) + ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS) ENDIF(MSVC) SET(CMAKE_INCLUDE_CURRENT_DIR 1) @@ -554,6 +628,26 @@ ENDIF(MINGW AND NOT PCRE_STATIC) ENDIF(PCRE_BUILD_PCRE16) +IF(PCRE_BUILD_PCRE32) +ADD_LIBRARY(pcre32 ${PCRE_HEADERS} ${PCRE32_SOURCES} ${PROJECT_BINARY_DIR}/config.h) +SET(targets ${targets} pcre32) + +IF(MINGW AND NOT PCRE_STATIC) + IF(NON_STANDARD_LIB_PREFIX) + SET_TARGET_PROPERTIES(pcre32 + PROPERTIES PREFIX "" + ) + ENDIF(NON_STANDARD_LIB_PREFIX) + + IF(NON_STANDARD_LIB_SUFFIX) + SET_TARGET_PROPERTIES(pcre32 + PROPERTIES SUFFIX "-0.dll" + ) + ENDIF(NON_STANDARD_LIB_SUFFIX) +ENDIF(MINGW AND NOT PCRE_STATIC) + +ENDIF(PCRE_BUILD_PCRE32) + # pcrecpp IF(PCRE_BUILD_PCRECPP) ADD_LIBRARY(pcrecpp ${PCRECPP_HEADERS} ${PCRECPP_SOURCES}) @@ -604,6 +698,9 @@ IF(PCRE_BUILD_TESTS) IF(PCRE_BUILD_PCRE16) LIST(APPEND PCRETEST_SOURCES pcre16_printint.c) ENDIF(PCRE_BUILD_PCRE16) + IF(PCRE_BUILD_PCRE32) + LIST(APPEND PCRETEST_SOURCES pcre32_printint.c) + ENDIF(PCRE_BUILD_PCRE32) ADD_EXECUTABLE(pcretest ${PCRETEST_SOURCES}) SET(targets ${targets} pcretest) @@ -613,6 +710,9 @@ IF(PCRE_BUILD_TESTS) IF(PCRE_BUILD_PCRE16) LIST(APPEND PCRETEST_LIBS pcre16) ENDIF(PCRE_BUILD_PCRE16) + IF(PCRE_BUILD_PCRE32) + LIST(APPEND PCRETEST_LIBS pcre32) + ENDIF(PCRE_BUILD_PCRE32) TARGET_LINK_LIBRARIES(pcretest ${PCRETEST_LIBS}) IF(PCRE_SUPPORT_JIT) @@ -625,6 +725,9 @@ IF(PCRE_BUILD_TESTS) IF(PCRE_BUILD_PCRE16) LIST(APPEND PCRE_JIT_TEST_LIBS pcre16) ENDIF(PCRE_BUILD_PCRE16) + IF(PCRE_BUILD_PCRE32) + LIST(APPEND PCRE_JIT_TEST_LIBS pcre32) + ENDIF(PCRE_BUILD_PCRE32) TARGET_LINK_LIBRARIES(pcre_jit_test ${PCRE_JIT_TEST_LIBS}) ENDIF(PCRE_SUPPORT_JIT) @@ -661,8 +764,8 @@ IF(PCRE_BUILD_TESTS) FILE(WRITE ${PROJECT_BINARY_DIR}/CTestCustom.ctest "# This is a generated file. MESSAGE(\"When testing is complete, review test output in the -${PROJECT_BINARY_DIR}/Testing/Temporary folder.\") -MESSAGE(\"\") +\\\"${PROJECT_BINARY_DIR}/Testing/Temporary\\\" folder.\") +MESSAGE(\" \") ") FILE(WRITE ${PROJECT_BINARY_DIR}/pcre_test.sh @@ -698,37 +801,24 @@ if test \"$?\" != \"0\"; then exit 1; fi IF(WIN32) # Provide environment for executing the bat file version of RunTest - string(REPLACE "/" "\\" winsrc "${PROJECT_SOURCE_DIR}") + FILE(TO_NATIVE_PATH ${PROJECT_SOURCE_DIR} winsrc) + FILE(TO_NATIVE_PATH ${PROJECT_BINARY_DIR} winbin) + FILE(TO_NATIVE_PATH ${PCRETEST_EXE} winexe) - FILE(WRITE ${PROJECT_BINARY_DIR}/pcre_test.txt + FILE(WRITE ${PROJECT_BINARY_DIR}/pcre_test.bat "\@REM This is a generated file. -\@Echo off +\@echo off setlocal -SET\ srcdir=\${srcdir} -SET\ pcretest=\${pcretest} -call \"\${srcdir}\\RunTest.Bat\" +SET srcdir=\"${winsrc}\" +SET pcretest=\"${winexe}\" +if not [%CMAKE_CONFIG_TYPE%]==[] SET pcretest=\"${winbin}\\%CMAKE_CONFIG_TYPE%\\pcretest.exe\" +call %srcdir%\\RunTest.Bat if errorlevel 1 exit /b 1 echo RunTest.bat tests successfully completed ") - FILE(WRITE ${PROJECT_BINARY_DIR}/BatDriver.cmake - "# This is a generated file. -# this script is run with arguments via the cmake command in add_test(NAME pcre_test_bat) -# BatDriver feeds the actual location of pcretest.exe -FILE(TO_NATIVE_PATH \${pcretestx} pcretest) -FILE(TO_NATIVE_PATH \${srcdirx} srcdir) -configure_file(\"\${bindirx}/pcre_test.txt\" \"\${bindirx}/pcre_test.bat\") -# MESSAGE(\"cmake\ variable\ pcretest\ is\ \${pcretest}\") -# STRING(REPLACE \" \" \"\\ \" bindir \${bindirx}) -MESSAGE(\"COMMAND pcre_test.bat \") -EXECUTE_PROCESS(COMMAND pcre_test.bat -WORKING_DIRECTORY . -OUTPUT_VARIABLE batoutput) -MESSAGE(\"OUTPUT: \${batoutput}\") -") - ADD_TEST(NAME pcre_test_bat - COMMAND ${CMAKE_COMMAND} -D bindirx=${PROJECT_BINARY_DIR} -D srcdirx=${PROJECT_SOURCE_DIR} -D pcretestx=$ -P "${PROJECT_BINARY_DIR}/BatDriver.cmake") + COMMAND pcre_test.bat) SET_TESTS_PROPERTIES(pcre_test_bat PROPERTIES PASS_REGULAR_EXPRESSION "RunTest\\.bat tests successfully completed") @@ -815,6 +905,7 @@ IF(PCRE_SHOW_REPORT) MESSAGE(STATUS "") MESSAGE(STATUS " Build 8 bit PCRE library ........ : ${PCRE_BUILD_PCRE8}") MESSAGE(STATUS " Build 16 bit PCRE library ....... : ${PCRE_BUILD_PCRE16}") + MESSAGE(STATUS " Build 32 bit PCRE library ....... : ${PCRE_BUILD_PCRE32}") MESSAGE(STATUS " Build C++ library ............... : ${PCRE_BUILD_PCRECPP}") MESSAGE(STATUS " Enable JIT compiling support .... : ${PCRE_SUPPORT_JIT}") MESSAGE(STATUS " Enable UTF support .............. : ${PCRE_SUPPORT_UTF}") @@ -822,6 +913,7 @@ IF(PCRE_SHOW_REPORT) 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 " EBCDIC coding with NL=0x25 ...... : ${PCRE_EBCDIC_NL25}") 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}") @@ -855,6 +947,8 @@ IF(PCRE_SHOW_REPORT) ELSE(READLINE_FOUND) MESSAGE(STATUS " Link pcretest with libreadline .. : Library not found" ) ENDIF(READLINE_FOUND) + MESSAGE(STATUS " Support Valgrind .................: ${PCRE_SUPPORT_VALGRIND}") + MESSAGE(STATUS " Support coverage .................: ${PCRE_SUPPORT_COVERAGE}") IF(MINGW AND NOT PCRE_STATIC) MESSAGE(STATUS " Non-standard dll names (prefix) . : ${NON_STANDARD_LIB_PREFIX}")