|
| 1 | +INCLUDE(CheckIncludeFile) |
| 2 | +INCLUDE(CheckFunctionExists) |
| 3 | +INCLUDE(CheckTypeSize) |
| 4 | + |
| 5 | +CHECK_INCLUDE_FILE(dirent.h HAVE_DIRENT_H) |
| 6 | +CHECK_INCLUDE_FILE(stdint.h HAVE_STDINT_H) |
| 7 | +CHECK_INCLUDE_FILE(inttypes.h HAVE_INTTYPES_H) |
| 8 | +CHECK_INCLUDE_FILE(sys/stat.h HAVE_SYS_STAT_H) |
| 9 | +CHECK_INCLUDE_FILE(sys/types.h HAVE_SYS_TYPES_H) |
| 10 | +CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H) |
| 11 | +CHECK_INCLUDE_FILE(windows.h HAVE_WINDOWS_H) |
| 12 | + |
| 13 | +CHECK_FUNCTION_EXISTS(bcopy HAVE_BCOPY) |
| 14 | +CHECK_FUNCTION_EXISTS(memmove HAVE_MEMMOVE) |
| 15 | +CHECK_FUNCTION_EXISTS(strerror HAVE_STRERROR) |
| 16 | +CHECK_FUNCTION_EXISTS(strtoll HAVE_STRTOLL) |
| 17 | +CHECK_FUNCTION_EXISTS(strtoq HAVE_STRTOQ) |
| 18 | +CHECK_FUNCTION_EXISTS(_strtoi64 HAVE__STRTOI64) |
| 19 | + |
| 20 | +CHECK_TYPE_SIZE("long long" LONG_LONG) |
| 21 | +CHECK_TYPE_SIZE("unsigned long long" UNSIGNED_LONG_LONG) |
| 22 | + |
| 23 | +DISABLE_WARNINGS(unused-function) |
| 24 | + |
| 25 | +# User-configurable options |
| 26 | + |
| 27 | +SET(SUPPORT_PCRE8 1) |
| 28 | +SET(PCRE_LINK_SIZE "2") |
| 29 | +SET(PCRE_PARENS_NEST_LIMIT "250") |
| 30 | +SET(PCRE_MATCH_LIMIT "10000000") |
| 31 | +SET(PCRE_MATCH_LIMIT_RECURSION "MATCH_LIMIT") |
| 32 | +SET(PCRE_NEWLINE "LF") |
| 33 | +SET(NO_RECURSE 1) |
| 34 | +SET(PCRE_POSIX_MALLOC_THRESHOLD "10") |
| 35 | +SET(BSR_ANYCRLF 0) |
| 36 | + |
| 37 | +IF (MINGW) |
| 38 | + OPTION(NON_STANDARD_LIB_PREFIX |
| 39 | + "ON=Shared libraries built in mingw will be named pcre.dll, etc., instead of libpcre.dll, etc." |
| 40 | + OFF) |
| 41 | + |
| 42 | + OPTION(NON_STANDARD_LIB_SUFFIX |
| 43 | + "ON=Shared libraries built in mingw will be named libpcre-0.dll, etc., instead of libpcre.dll, etc." |
| 44 | + OFF) |
| 45 | +ENDIF(MINGW) |
| 46 | + |
| 47 | +# Prepare build configuration |
| 48 | + |
| 49 | +SET(pcre_have_long_long 0) |
| 50 | +SET(pcre_have_ulong_long 0) |
| 51 | + |
| 52 | +IF(HAVE_LONG_LONG) |
| 53 | + SET(pcre_have_long_long 1) |
| 54 | +ENDIF(HAVE_LONG_LONG) |
| 55 | + |
| 56 | +IF(HAVE_UNSIGNED_LONG_LONG) |
| 57 | + SET(pcre_have_ulong_long 1) |
| 58 | +ENDIF(HAVE_UNSIGNED_LONG_LONG) |
| 59 | + |
| 60 | +SET(NEWLINE "") |
| 61 | + |
| 62 | +IF(PCRE_NEWLINE STREQUAL "LF") |
| 63 | + SET(NEWLINE "10") |
| 64 | +ENDIF(PCRE_NEWLINE STREQUAL "LF") |
| 65 | +IF(PCRE_NEWLINE STREQUAL "CR") |
| 66 | + SET(NEWLINE "13") |
| 67 | +ENDIF(PCRE_NEWLINE STREQUAL "CR") |
| 68 | +IF(PCRE_NEWLINE STREQUAL "CRLF") |
| 69 | + SET(NEWLINE "3338") |
| 70 | +ENDIF(PCRE_NEWLINE STREQUAL "CRLF") |
| 71 | +IF(PCRE_NEWLINE STREQUAL "ANY") |
| 72 | + SET(NEWLINE "-1") |
| 73 | +ENDIF(PCRE_NEWLINE STREQUAL "ANY") |
| 74 | +IF(PCRE_NEWLINE STREQUAL "ANYCRLF") |
| 75 | + SET(NEWLINE "-2") |
| 76 | +ENDIF(PCRE_NEWLINE STREQUAL "ANYCRLF") |
| 77 | + |
| 78 | +IF(NEWLINE STREQUAL "") |
| 79 | + MESSAGE(FATAL_ERROR "The PCRE_NEWLINE variable must be set to one of the following values: \"LF\", \"CR\", \"CRLF\", \"ANY\", \"ANYCRLF\".") |
| 80 | +ENDIF(NEWLINE STREQUAL "") |
| 81 | + |
| 82 | +# Output files |
| 83 | +CONFIGURE_FILE(config.h.in |
| 84 | + ${PROJECT_BINARY_DIR}/src/pcre/config.h |
| 85 | + @ONLY) |
| 86 | + |
| 87 | +# Source code |
| 88 | + |
| 89 | +SET(PCRE_HEADERS ${PROJECT_BINARY_DIR}/src/pcre/config.h) |
| 90 | + |
| 91 | +SET(PCRE_SOURCES |
| 92 | + pcre_byte_order.c |
| 93 | + pcre_chartables.c |
| 94 | + pcre_compile.c |
| 95 | + pcre_config.c |
| 96 | + pcre_dfa_exec.c |
| 97 | + pcre_exec.c |
| 98 | + pcre_fullinfo.c |
| 99 | + pcre_get.c |
| 100 | + pcre_globals.c |
| 101 | + pcre_jit_compile.c |
| 102 | + pcre_maketables.c |
| 103 | + pcre_newline.c |
| 104 | + pcre_ord2utf8.c |
| 105 | + pcre_refcount.c |
| 106 | + pcre_string_utils.c |
| 107 | + pcre_study.c |
| 108 | + pcre_tables.c |
| 109 | + pcre_ucd.c |
| 110 | + pcre_valid_utf8.c |
| 111 | + pcre_version.c |
| 112 | + pcre_xclass.c |
| 113 | +) |
| 114 | + |
| 115 | +SET(PCREPOSIX_HEADERS pcreposix.h) |
| 116 | + |
| 117 | +SET(PCREPOSIX_SOURCES pcreposix.c) |
| 118 | + |
| 119 | +# Fix static compilation with MSVC: https://bugs.exim.org/show_bug.cgi?id=1681 |
| 120 | +# This code was taken from the CMake wiki, not from WebM. |
| 121 | + |
| 122 | +# Build setup |
| 123 | + |
| 124 | +ADD_DEFINITIONS(-DHAVE_CONFIG_H) |
| 125 | + |
| 126 | +IF(MSVC) |
| 127 | + ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS) |
| 128 | +ENDIF(MSVC) |
| 129 | + |
| 130 | +SET(CMAKE_INCLUDE_CURRENT_DIR 1) |
| 131 | + |
| 132 | +SET(targets) |
| 133 | + |
| 134 | +# Libraries |
| 135 | +# pcre |
| 136 | +INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR}/src/pcre) |
| 137 | +ADD_LIBRARY(pcre OBJECT ${PCRE_HEADERS} ${PCRE_SOURCES} ${PCREPOSIX_SOURCES}) |
| 138 | + |
| 139 | +# end CMakeLists.txt |
0 commit comments