|
1 # CMakeLists.txt |
|
2 # |
|
3 # |
|
4 # This file allows building PCRE with the CMake configuration and build |
|
5 # tool. Download CMake in source or binary form from http://www.cmake.org/ |
|
6 # |
|
7 # Original listfile by Christian Ehrlicher <Ch.Ehrlicher@gmx.de> |
|
8 # Refined and expanded by Daniel Richard G. <skunk@iSKUNK.ORG> |
|
9 # 2007-09-14 mod by Sheri so 7.4 supported configuration options can be entered |
|
10 # 2007-09-19 Adjusted by PH to retain previous default settings |
|
11 # 2007-12-26 (a) On UNIX, use names libpcre instead of just pcre |
|
12 # (b) Ensure pcretest and pcregrep link with the local library, |
|
13 # not a previously-installed one. |
|
14 # (c) Add PCRE_SUPPORT_LIBREADLINE, PCRE_SUPPORT_LIBZ, and |
|
15 # PCRE_SUPPORT_LIBBZ2. |
|
16 # 2008-01-20 Brought up to date to include several new features by Christian |
|
17 # Ehrlicher. |
|
18 # 2008-01-22 Sheri added options for backward compatibility of library names when |
|
19 # building with minGW: |
|
20 # if "ON", NON_STANDARD_LIB_PREFIX causes shared libraries to |
|
21 # be built without "lib" as prefix. (The libraries will be named pcre.dll, |
|
22 # pcreposix.dll and pcrecpp.dll). |
|
23 # if "ON", NON_STANDARD_LIB_SUFFIX causes shared libraries to |
|
24 # be built with suffix of "-0.dll". (The libraries will be named |
|
25 # libpcre-0.dll, libpcreposix-0.dll and libpcrecpp-0.dll - same names |
|
26 # built by default with Configure and Make. |
|
27 # 2008-01-23 PH removed the automatic build of pcredemo. |
|
28 # 2008-04-22 PH modified READLINE support so it finds NCURSES when needed. |
|
29 # 2008-07-03 PH updated for revised UCP property support (change of files) |
|
30 |
|
31 PROJECT(PCRE C CXX) |
|
32 |
|
33 CMAKE_MINIMUM_REQUIRED(VERSION 2.4.6) |
|
34 |
|
35 SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) # for FindReadline.cmake |
|
36 |
|
37 # external packages |
|
38 FIND_PACKAGE( BZip2 ) |
|
39 FIND_PACKAGE( ZLIB ) |
|
40 FIND_PACKAGE( Readline ) |
|
41 |
|
42 # Configuration checks |
|
43 |
|
44 INCLUDE(CheckIncludeFile) |
|
45 INCLUDE(CheckIncludeFileCXX) |
|
46 INCLUDE(CheckFunctionExists) |
|
47 INCLUDE(CheckTypeSize) |
|
48 |
|
49 CHECK_INCLUDE_FILE(dirent.h HAVE_DIRENT_H) |
|
50 CHECK_INCLUDE_FILE(sys/stat.h HAVE_SYS_STAT_H) |
|
51 CHECK_INCLUDE_FILE(sys/types.h HAVE_SYS_TYPES_H) |
|
52 CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H) |
|
53 CHECK_INCLUDE_FILE(windows.h HAVE_WINDOWS_H) |
|
54 |
|
55 CHECK_INCLUDE_FILE_CXX(type_traits.h HAVE_TYPE_TRAITS_H) |
|
56 CHECK_INCLUDE_FILE_CXX(bits/type_traits.h HAVE_BITS_TYPE_TRAITS_H) |
|
57 |
|
58 CHECK_FUNCTION_EXISTS(bcopy HAVE_BCOPY) |
|
59 CHECK_FUNCTION_EXISTS(memmove HAVE_MEMMOVE) |
|
60 CHECK_FUNCTION_EXISTS(strerror HAVE_STRERROR) |
|
61 CHECK_FUNCTION_EXISTS(strtoll HAVE_STRTOLL) |
|
62 CHECK_FUNCTION_EXISTS(strtoq HAVE_STRTOQ) |
|
63 CHECK_FUNCTION_EXISTS(_strtoi64 HAVE__STRTOI64) |
|
64 |
|
65 CHECK_TYPE_SIZE("long long" LONG_LONG) |
|
66 CHECK_TYPE_SIZE("unsigned long long" UNSIGNED_LONG_LONG) |
|
67 |
|
68 # User-configurable options |
|
69 # |
|
70 # (Note: CMakeSetup displays these in alphabetical order, regardless of |
|
71 # the order we use here) |
|
72 |
|
73 SET(BUILD_SHARED_LIBS OFF CACHE BOOL |
|
74 "Build shared libraries instead of static ones.") |
|
75 |
|
76 OPTION(PCRE_BUILD_PCRECPP "Build the PCRE C++ library (pcrecpp)." ON) |
|
77 |
|
78 SET(PCRE_EBCDIC OFF CACHE BOOL |
|
79 "Use EBCDIC coding instead of ASCII. (This is rarely used outside of mainframe systems)") |
|
80 |
|
81 SET(PCRE_LINK_SIZE "2" CACHE STRING |
|
82 "Internal link size (2, 3 or 4 allowed). See LINK_SIZE in config.h.in for details.") |
|
83 |
|
84 SET(PCRE_MATCH_LIMIT "10000000" CACHE STRING |
|
85 "Default limit on internal looping. See MATCH_LIMIT in config.h.in for details.") |
|
86 |
|
87 SET(PCRE_MATCH_LIMIT_RECURSION "MATCH_LIMIT" CACHE STRING |
|
88 "Default limit on internal recursion. See MATCH_LIMIT_RECURSION in config.h.in for details.") |
|
89 |
|
90 SET(PCRE_NEWLINE "LF" CACHE STRING |
|
91 "What to recognize as a newline (one of CR, LF, CRLF, ANY, ANYCRLF).") |
|
92 |
|
93 SET(PCRE_NO_RECURSE OFF CACHE BOOL |
|
94 "If ON, then don't use stack recursion when matching. See NO_RECURSE in config.h.in for details.") |
|
95 |
|
96 SET(PCRE_POSIX_MALLOC_THRESHOLD "10" CACHE STRING |
|
97 "Threshold for malloc() usage. See POSIX_MALLOC_THRESHOLD in config.h.in for details.") |
|
98 |
|
99 SET(PCRE_SUPPORT_UNICODE_PROPERTIES OFF CACHE BOOL |
|
100 "Enable support for Unicode properties. (If set, UTF-8 support will be enabled as well)") |
|
101 |
|
102 SET(PCRE_SUPPORT_UTF8 OFF CACHE BOOL |
|
103 "Enable support for the Unicode UTF-8 encoding.") |
|
104 |
|
105 SET(PCRE_SUPPORT_BSR_ANYCRLF OFF CACHE BOOL |
|
106 "ON=Backslash-R matches only LF CR and CRLF, OFF=Backslash-R matches all Unicode Linebreaks") |
|
107 |
|
108 |
|
109 IF (MINGW) |
|
110 OPTION(NON_STANDARD_LIB_PREFIX |
|
111 "ON=Shared libraries built in mingw will be named pcre.dll, etc., instead of libpcre.dll, etc." |
|
112 OFF) |
|
113 |
|
114 OPTION(NON_STANDARD_LIB_SUFFIX |
|
115 "ON=Shared libraries built in mingw will be named libpcre-0.dll, etc., instead of libpcre.dll, etc." |
|
116 OFF) |
|
117 ENDIF(MINGW) |
|
118 |
|
119 # bzip2 lib |
|
120 IF(BZIP2_FOUND) |
|
121 OPTION (PCRE_SUPPORT_LIBBZ2 "Enable support for linking pcregrep with libbz2." ON) |
|
122 ENDIF(BZIP2_FOUND) |
|
123 IF(PCRE_SUPPORT_LIBBZ2) |
|
124 INCLUDE_DIRECTORIES(${BZIP2_INCLUDE_DIR}) |
|
125 ENDIF(PCRE_SUPPORT_LIBBZ2) |
|
126 |
|
127 # zlib |
|
128 IF(ZLIB_FOUND) |
|
129 OPTION (PCRE_SUPPORT_LIBZ "Enable support for linking pcregrep with libz." ON) |
|
130 ENDIF(ZLIB_FOUND) |
|
131 IF(PCRE_SUPPORT_LIBZ) |
|
132 INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR}) |
|
133 ENDIF(PCRE_SUPPORT_LIBZ) |
|
134 |
|
135 # readline lib |
|
136 IF(READLINE_FOUND) |
|
137 OPTION (PCRE_SUPPORT_LIBREADLINE "Enable support for linking pcretest with libreadline." ON) |
|
138 ENDIF(READLINE_FOUND) |
|
139 IF(PCRE_SUPPORT_LIBREADLINE) |
|
140 INCLUDE_DIRECTORIES(${READLINE_INCLUDE_DIR}) |
|
141 ENDIF(PCRE_SUPPORT_LIBREADLINE) |
|
142 |
|
143 # Prepare build configuration |
|
144 |
|
145 SET(pcre_have_type_traits 0) |
|
146 SET(pcre_have_bits_type_traits 0) |
|
147 |
|
148 IF(HAVE_TYPE_TRAITS_H) |
|
149 SET(pcre_have_type_traits 1) |
|
150 ENDIF(HAVE_TYPE_TRAITS_H) |
|
151 |
|
152 IF(HAVE_BITS_TYPE_TRAITS_H) |
|
153 SET(pcre_have_bits_type_traits 1) |
|
154 ENDIF(HAVE_BITS_TYPE_TRAITS_H) |
|
155 |
|
156 SET(pcre_have_long_long 0) |
|
157 SET(pcre_have_ulong_long 0) |
|
158 |
|
159 IF(HAVE_LONG_LONG) |
|
160 SET(pcre_have_long_long 1) |
|
161 ENDIF(HAVE_LONG_LONG) |
|
162 |
|
163 IF(HAVE_UNSIGNED_LONG_LONG) |
|
164 SET(pcre_have_ulong_long 1) |
|
165 ENDIF(HAVE_UNSIGNED_LONG_LONG) |
|
166 |
|
167 IF(NOT BUILD_SHARED_LIBS) |
|
168 SET(PCRE_STATIC 1) |
|
169 ENDIF(NOT BUILD_SHARED_LIBS) |
|
170 |
|
171 IF(PCRE_SUPPORT_BSR_ANYCRLF) |
|
172 SET(BSR_ANYCRLF 1) |
|
173 ENDIF(PCRE_SUPPORT_BSR_ANYCRLF) |
|
174 |
|
175 IF(PCRE_SUPPORT_UTF8 OR PCRE_SUPPORT_UNICODE_PROPERTIES) |
|
176 SET(SUPPORT_UTF8 1) |
|
177 ENDIF(PCRE_SUPPORT_UTF8 OR PCRE_SUPPORT_UNICODE_PROPERTIES) |
|
178 |
|
179 IF(PCRE_SUPPORT_UNICODE_PROPERTIES) |
|
180 SET(SUPPORT_UCP 1) |
|
181 ENDIF(PCRE_SUPPORT_UNICODE_PROPERTIES) |
|
182 |
|
183 # This next one used to contain |
|
184 # SET(PCRETEST_LIBS ${READLINE_LIBRARY}) |
|
185 # but I was advised to add the NCURSES test as well, along with |
|
186 # some modifications to cmake/FindReadline.cmake which should |
|
187 # make it possible to override the default if necessary. PH |
|
188 |
|
189 IF(PCRE_SUPPORT_LIBREADLINE) |
|
190 SET(SUPPORT_LIBREADLINE 1) |
|
191 SET(PCRETEST_LIBS ${READLINE_LIBRARY} ${NCURSES_LIBRARY}) |
|
192 ENDIF(PCRE_SUPPORT_LIBREADLINE) |
|
193 |
|
194 IF(PCRE_SUPPORT_LIBZ) |
|
195 SET(SUPPORT_LIBZ 1) |
|
196 SET(PCREGREP_LIBS ${PCREGREP_LIBS} ${ZLIB_LIBRARIES}) |
|
197 ENDIF(PCRE_SUPPORT_LIBZ) |
|
198 |
|
199 IF(PCRE_SUPPORT_LIBBZ2) |
|
200 SET(SUPPORT_LIBBZ2 1) |
|
201 SET(PCREGREP_LIBS ${PCREGREP_LIBS} ${BZIP2_LIBRARIES}) |
|
202 ENDIF(PCRE_SUPPORT_LIBBZ2) |
|
203 |
|
204 SET(NEWLINE "") |
|
205 |
|
206 IF(PCRE_NEWLINE STREQUAL "LF") |
|
207 SET(NEWLINE "10") |
|
208 ENDIF(PCRE_NEWLINE STREQUAL "LF") |
|
209 IF(PCRE_NEWLINE STREQUAL "CR") |
|
210 SET(NEWLINE "13") |
|
211 ENDIF(PCRE_NEWLINE STREQUAL "CR") |
|
212 IF(PCRE_NEWLINE STREQUAL "CRLF") |
|
213 SET(NEWLINE "3338") |
|
214 ENDIF(PCRE_NEWLINE STREQUAL "CRLF") |
|
215 IF(PCRE_NEWLINE STREQUAL "ANY") |
|
216 SET(NEWLINE "-1") |
|
217 ENDIF(PCRE_NEWLINE STREQUAL "ANY") |
|
218 IF(PCRE_NEWLINE STREQUAL "ANYCRLF") |
|
219 SET(NEWLINE "-2") |
|
220 ENDIF(PCRE_NEWLINE STREQUAL "ANYCRLF") |
|
221 |
|
222 IF(NEWLINE STREQUAL "") |
|
223 MESSAGE(FATAL_ERROR "The PCRE_NEWLINE variable must be set to one of the following values: \"LF\", \"CR\", \"CRLF\", \"ANY\", \"ANYCRLF\".") |
|
224 ENDIF(NEWLINE STREQUAL "") |
|
225 |
|
226 IF(PCRE_EBCDIC) |
|
227 SET(EBCDIC 1) |
|
228 ENDIF(PCRE_EBCDIC) |
|
229 |
|
230 IF(PCRE_NO_RECURSE) |
|
231 SET(NO_RECURSE 1) |
|
232 ENDIF(PCRE_NO_RECURSE) |
|
233 |
|
234 # Output files |
|
235 |
|
236 CONFIGURE_FILE(config-cmake.h.in |
|
237 ${CMAKE_BINARY_DIR}/config.h |
|
238 @ONLY) |
|
239 |
|
240 CONFIGURE_FILE(pcre.h.generic |
|
241 ${CMAKE_BINARY_DIR}/pcre.h |
|
242 COPYONLY) |
|
243 |
|
244 # What about pcre-config and libpcre.pc? |
|
245 |
|
246 IF(PCRE_BUILD_PCRECPP) |
|
247 CONFIGURE_FILE(pcre_stringpiece.h.in |
|
248 ${CMAKE_BINARY_DIR}/pcre_stringpiece.h |
|
249 @ONLY) |
|
250 |
|
251 CONFIGURE_FILE(pcrecpparg.h.in |
|
252 ${CMAKE_BINARY_DIR}/pcrecpparg.h |
|
253 @ONLY) |
|
254 ENDIF(PCRE_BUILD_PCRECPP) |
|
255 |
|
256 # Character table generation |
|
257 |
|
258 OPTION(PCRE_REBUILD_CHARTABLES "Rebuild char tables" OFF) |
|
259 IF(PCRE_REBUILD_CHARTABLES) |
|
260 ADD_EXECUTABLE(dftables dftables.c) |
|
261 |
|
262 GET_TARGET_PROPERTY(DFTABLES_EXE dftables LOCATION) |
|
263 |
|
264 ADD_CUSTOM_COMMAND( |
|
265 COMMENT "Generating character tables (pcre_chartables.c) for current locale" |
|
266 DEPENDS dftables |
|
267 COMMAND ${DFTABLES_EXE} |
|
268 ARGS ${CMAKE_BINARY_DIR}/pcre_chartables.c |
|
269 OUTPUT ${CMAKE_BINARY_DIR}/pcre_chartables.c |
|
270 ) |
|
271 ELSE(PCRE_REBUILD_CHARTABLES) |
|
272 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/pcre_chartables.c.dist |
|
273 ${CMAKE_BINARY_DIR}/pcre_chartables.c |
|
274 COPYONLY) |
|
275 ENDIF(PCRE_REBUILD_CHARTABLES) |
|
276 |
|
277 # Source code |
|
278 |
|
279 SET(PCRE_HEADERS ${CMAKE_BINARY_DIR}/pcre.h) |
|
280 |
|
281 SET(PCRE_SOURCES |
|
282 ${CMAKE_BINARY_DIR}/pcre_chartables.c |
|
283 pcre_compile.c |
|
284 pcre_config.c |
|
285 pcre_dfa_exec.c |
|
286 pcre_exec.c |
|
287 pcre_fullinfo.c |
|
288 pcre_get.c |
|
289 pcre_globals.c |
|
290 pcre_info.c |
|
291 pcre_newline.c |
|
292 pcre_maketables.c |
|
293 pcre_ord2utf8.c |
|
294 pcre_refcount.c |
|
295 pcre_study.c |
|
296 pcre_tables.c |
|
297 pcre_try_flipped.c |
|
298 pcre_ucd.c |
|
299 pcre_valid_utf8.c |
|
300 pcre_version.c |
|
301 pcre_xclass.c |
|
302 ) |
|
303 |
|
304 SET(PCREPOSIX_HEADERS pcreposix.h) |
|
305 |
|
306 SET(PCREPOSIX_SOURCES pcreposix.c) |
|
307 |
|
308 SET(PCRECPP_HEADERS |
|
309 pcrecpp.h |
|
310 pcre_scanner.h |
|
311 ${CMAKE_BINARY_DIR}/pcrecpparg.h |
|
312 ${CMAKE_BINARY_DIR}/pcre_stringpiece.h |
|
313 ) |
|
314 |
|
315 SET(PCRECPP_SOURCES |
|
316 pcrecpp.cc |
|
317 pcre_scanner.cc |
|
318 pcre_stringpiece.cc |
|
319 ) |
|
320 |
|
321 # Build setup |
|
322 |
|
323 ADD_DEFINITIONS(-DHAVE_CONFIG_H) |
|
324 |
|
325 IF(MSVC) |
|
326 ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE) |
|
327 ENDIF(MSVC) |
|
328 |
|
329 SET(CMAKE_INCLUDE_CURRENT_DIR 1) |
|
330 # needed to make sure to not link debug libs |
|
331 # against release libs and vice versa |
|
332 IF(WIN32) |
|
333 SET(CMAKE_DEBUG_POSTFIX "d") |
|
334 ENDIF(WIN32) |
|
335 |
|
336 # Libraries |
|
337 # pcre |
|
338 ADD_LIBRARY(pcre ${PCRE_HEADERS} ${PCRE_SOURCES} ${CMAKE_BINARY_DIR}/config.h) |
|
339 ADD_LIBRARY(pcreposix ${PCREPOSIX_HEADERS} ${PCREPOSIX_SOURCES}) |
|
340 TARGET_LINK_LIBRARIES(pcreposix pcre) |
|
341 IF(MINGW AND NOT PCRE_STATIC) |
|
342 IF(NON_STANDARD_LIB_PREFIX) |
|
343 SET_TARGET_PROPERTIES(pcre pcreposix |
|
344 PROPERTIES PREFIX "" |
|
345 ) |
|
346 ENDIF(NON_STANDARD_LIB_PREFIX) |
|
347 |
|
348 IF(NON_STANDARD_LIB_SUFFIX) |
|
349 SET_TARGET_PROPERTIES(pcre pcreposix |
|
350 PROPERTIES SUFFIX "-0.dll" |
|
351 ) |
|
352 ENDIF(NON_STANDARD_LIB_SUFFIX) |
|
353 ENDIF(MINGW AND NOT PCRE_STATIC) |
|
354 |
|
355 |
|
356 # pcrecpp |
|
357 IF(PCRE_BUILD_PCRECPP) |
|
358 ADD_LIBRARY(pcrecpp ${PCRECPP_HEADERS} ${PCRECPP_SOURCES}) |
|
359 TARGET_LINK_LIBRARIES(pcrecpp pcre) |
|
360 |
|
361 IF(MINGW AND NOT PCRE_STATIC) |
|
362 IF(NON_STANDARD_LIB_PREFIX) |
|
363 SET_TARGET_PROPERTIES(pcrecpp |
|
364 PROPERTIES PREFIX "" |
|
365 ) |
|
366 ENDIF(NON_STANDARD_LIB_PREFIX) |
|
367 |
|
368 IF(NON_STANDARD_LIB_SUFFIX) |
|
369 SET_TARGET_PROPERTIES(pcrecpp |
|
370 PROPERTIES SUFFIX "-0.dll" |
|
371 ) |
|
372 ENDIF(NON_STANDARD_LIB_SUFFIX) |
|
373 ENDIF(MINGW AND NOT PCRE_STATIC) |
|
374 ENDIF(PCRE_BUILD_PCRECPP) |
|
375 |
|
376 |
|
377 # Executables |
|
378 |
|
379 ADD_EXECUTABLE(pcretest pcretest.c) |
|
380 TARGET_LINK_LIBRARIES(pcretest pcreposix ${PCRETEST_LIBS}) |
|
381 |
|
382 ADD_EXECUTABLE(pcregrep pcregrep.c) |
|
383 TARGET_LINK_LIBRARIES(pcregrep pcreposix ${PCREGREP_LIBS}) |
|
384 |
|
385 # Removed by PH (2008-01-23) because pcredemo shouldn't really be built |
|
386 # automatically, and it gave trouble in some environments anyway. |
|
387 # ADD_EXECUTABLE(pcredemo pcredemo.c) |
|
388 # TARGET_LINK_LIBRARIES(pcredemo pcreposix) |
|
389 # IF(NOT BUILD_SHARED_LIBS) |
|
390 # # make sure to not use declspec(dllimport) in static mode on windows |
|
391 # SET_TARGET_PROPERTIES(pcredemo PROPERTIES COMPILE_FLAGS "-DPCRE_STATIC") |
|
392 # ENDIF(NOT BUILD_SHARED_LIBS) |
|
393 |
|
394 IF(PCRE_BUILD_PCRECPP) |
|
395 ADD_EXECUTABLE(pcrecpp_unittest pcrecpp_unittest.cc) |
|
396 TARGET_LINK_LIBRARIES(pcrecpp_unittest pcrecpp) |
|
397 IF(MINGW AND NON_STANDARD_LIB_NAMES AND NOT PCRE_STATIC) |
|
398 SET_TARGET_PROPERTIES(pcrecpp |
|
399 PROPERTIES PREFIX "" |
|
400 ) |
|
401 ENDIF(MINGW AND NON_STANDARD_LIB_NAMES AND NOT PCRE_STATIC) |
|
402 |
|
403 |
|
404 ADD_EXECUTABLE(pcre_scanner_unittest pcre_scanner_unittest.cc) |
|
405 TARGET_LINK_LIBRARIES(pcre_scanner_unittest pcrecpp) |
|
406 |
|
407 ADD_EXECUTABLE(pcre_stringpiece_unittest pcre_stringpiece_unittest.cc) |
|
408 TARGET_LINK_LIBRARIES(pcre_stringpiece_unittest pcrecpp) |
|
409 ENDIF(PCRE_BUILD_PCRECPP) |
|
410 |
|
411 # Testing |
|
412 |
|
413 ENABLE_TESTING() |
|
414 |
|
415 GET_TARGET_PROPERTY(PCREGREP_EXE pcregrep DEBUG_LOCATION) |
|
416 GET_TARGET_PROPERTY(PCRETEST_EXE pcretest DEBUG_LOCATION) |
|
417 |
|
418 # Write out a CTest configuration file that sets some needed environment |
|
419 # variables for the test scripts. |
|
420 # |
|
421 FILE(WRITE ${CMAKE_BINARY_DIR}/CTestCustom.ctest |
|
422 "# This is a generated file. |
|
423 SET(ENV{srcdir} ${CMAKE_SOURCE_DIR}) |
|
424 SET(ENV{pcregrep} ${PCREGREP_EXE}) |
|
425 SET(ENV{pcretest} ${PCRETEST_EXE}) |
|
426 ") |
|
427 |
|
428 IF(UNIX) |
|
429 ADD_TEST(pcre_test ${CMAKE_SOURCE_DIR}/RunTest) |
|
430 ADD_TEST(pcre_grep_test ${CMAKE_SOURCE_DIR}/RunGrepTest) |
|
431 ENDIF(UNIX) |
|
432 IF(WIN32) |
|
433 ADD_TEST(pcre_test cmd /C ${CMAKE_SOURCE_DIR}/RunTest.bat) |
|
434 ENDIF(WIN32) |
|
435 |
|
436 GET_TARGET_PROPERTY(PCRECPP_UNITTEST_EXE |
|
437 pcrecpp_unittest |
|
438 DEBUG_LOCATION) |
|
439 |
|
440 GET_TARGET_PROPERTY(PCRE_SCANNER_UNITTEST_EXE |
|
441 pcre_scanner_unittest |
|
442 DEBUG_LOCATION) |
|
443 |
|
444 GET_TARGET_PROPERTY(PCRE_STRINGPIECE_UNITTEST_EXE |
|
445 pcre_stringpiece_unittest |
|
446 DEBUG_LOCATION) |
|
447 |
|
448 ADD_TEST(pcrecpp_test ${PCRECPP_UNITTEST_EXE}) |
|
449 ADD_TEST(pcre_scanner_test ${PCRE_SCANNER_UNITTEST_EXE}) |
|
450 ADD_TEST(pcre_stringpiece_test ${PCRE_STRINGPIECE_UNITTEST_EXE}) |
|
451 |
|
452 # Installation |
|
453 |
|
454 SET(CMAKE_INSTALL_ALWAYS 1) |
|
455 |
|
456 INSTALL(TARGETS pcre pcreposix pcregrep pcretest |
|
457 RUNTIME DESTINATION bin |
|
458 LIBRARY DESTINATION lib |
|
459 ARCHIVE DESTINATION lib) |
|
460 |
|
461 INSTALL(FILES ${PCRE_HEADERS} ${PCREPOSIX_HEADERS} DESTINATION include) |
|
462 |
|
463 FILE(GLOB html ${CMAKE_SOURCE_DIR}/doc/html/*.html) |
|
464 FILE(GLOB man1 ${CMAKE_SOURCE_DIR}/doc/*.1) |
|
465 FILE(GLOB man3 ${CMAKE_SOURCE_DIR}/doc/*.3) |
|
466 |
|
467 IF(PCRE_BUILD_PCRECPP) |
|
468 INSTALL(TARGETS pcrecpp |
|
469 RUNTIME DESTINATION bin |
|
470 LIBRARY DESTINATION lib |
|
471 ARCHIVE DESTINATION lib) |
|
472 INSTALL(FILES ${PCRECPP_HEADERS} DESTINATION include) |
|
473 ELSE(PCRE_BUILD_PCRECPP) |
|
474 # Remove pcrecpp.3 |
|
475 FOREACH(man ${man3}) |
|
476 GET_FILENAME_COMPONENT(man_tmp ${man} NAME) |
|
477 IF(NOT man_tmp STREQUAL "pcrecpp.3") |
|
478 SET(man3_new ${man3} ${man}) |
|
479 ENDIF(NOT man_tmp STREQUAL "pcrecpp.3") |
|
480 ENDFOREACH(man ${man3}) |
|
481 SET(man3 ${man3_new}) |
|
482 ENDIF(PCRE_BUILD_PCRECPP) |
|
483 |
|
484 |
|
485 INSTALL(FILES ${man1} DESTINATION man/man1) |
|
486 INSTALL(FILES ${man3} DESTINATION man/man3) |
|
487 INSTALL(FILES ${html} DESTINATION share/doc/pcre/html) |
|
488 |
|
489 # help, only for nice output |
|
490 IF(BUILD_SHARED_LIBS) |
|
491 SET(BUILD_STATIC_LIBS OFF) |
|
492 ELSE(BUILD_SHARED_LIBS) |
|
493 SET(BUILD_STATIC_LIBS ON) |
|
494 ENDIF(BUILD_SHARED_LIBS) |
|
495 |
|
496 MESSAGE(STATUS "") |
|
497 MESSAGE(STATUS "") |
|
498 MESSAGE(STATUS "PCRE configuration summary:") |
|
499 MESSAGE(STATUS "") |
|
500 MESSAGE(STATUS " Install prefix .................. : " ${CMAKE_INSTALL_PREFIX}) |
|
501 MESSAGE(STATUS " C compiler ...................... : " ${CMAKE_C_COMPILER}) |
|
502 MESSAGE(STATUS " C++ compiler .................... : " ${CMAKE_CXX_COMPILER}) |
|
503 MESSAGE(STATUS " C compiler flags ................ : " ${CMAKE_C_FLAGS}) #FIXME |
|
504 MESSAGE(STATUS " C++ compiler flags .............. : " ${CMAKE_CXX_FLAGS}) #FIXME |
|
505 MESSAGE(STATUS "") |
|
506 MESSAGE(STATUS " Build C++ library ............... : " ${PCRE_BUILD_PCRECPP}) |
|
507 MESSAGE(STATUS " Enable UTF-8 support ............ : " ${PCRE_SUPPORT_UNICODE_PROPERTIES}) |
|
508 MESSAGE(STATUS " Unicode properties .............. : " ${PCRE_SUPPORT_UNICODE_PROPERTIES}) |
|
509 MESSAGE(STATUS " Newline char/sequence ........... : " ${PCRE_NEWLINE}) |
|
510 MESSAGE(STATUS " \\R matches only ANYCRLF ......... : " ${PCRE_SUPPORT_BSR_ANYCRLF}) |
|
511 MESSAGE(STATUS " EBCDIC coding ................... : " ${PCRE_EBCDIC}) |
|
512 MESSAGE(STATUS " Rebuild char tables ............. : " ${PCRE_REBUILD_CHARTABLES}) |
|
513 MESSAGE(STATUS " No stack recursion .............. : " ${PCRE_NO_RECURSE}) |
|
514 MESSAGE(STATUS " POSIX mem threshold ............. : " ${PCRE_POSIX_MALLOC_THRESHOLD}) |
|
515 MESSAGE(STATUS " Internal link size .............. : " ${PCRE_LINK_SIZE}) |
|
516 MESSAGE(STATUS " Match limit ..................... : " ${PCRE_MATCH_LIMIT}) |
|
517 MESSAGE(STATUS " Match limit recursion ........... : " ${PCRE_MATCH_LIMIT_RECURSION}) |
|
518 MESSAGE(STATUS " Build shared libs ............... : " ${BUILD_SHARED_LIBS}) |
|
519 MESSAGE(STATUS " Build static libs ............... : " ${BUILD_STATIC_LIBS}) |
|
520 IF(ZLIB_FOUND) |
|
521 MESSAGE(STATUS " Link pcregrep with libz ......... : " ${PCRE_SUPPORT_LIBZ}) |
|
522 ELSE(ZLIB_FOUND) |
|
523 MESSAGE(STATUS " Link pcregrep with libz ......... : None" ) |
|
524 ENDIF(ZLIB_FOUND) |
|
525 IF(BZIP2_FOUND) |
|
526 MESSAGE(STATUS " Link pcregrep with libbz2 ....... : " ${PCRE_SUPPORT_LIBBZ2}) |
|
527 ELSE(BZIP2_FOUND) |
|
528 MESSAGE(STATUS " Link pcregrep with libbz2 ....... : None" ) |
|
529 ENDIF(BZIP2_FOUND) |
|
530 IF(NOT PCRE_SUPPORT_LIBREADLINE) |
|
531 MESSAGE(STATUS " Link pcretest with libreadline .. : None" ) |
|
532 ELSE(NOT PCRE_SUPPORT_LIBREADLINE) |
|
533 MESSAGE(STATUS " Link pcretest with libreadline .. : " ${PCRE_SUPPORT_LIBREADLINE}) |
|
534 ENDIF(NOT PCRE_SUPPORT_LIBREADLINE) |
|
535 IF(MINGW AND NOT PCRE_STATIC) |
|
536 MESSAGE(STATUS " Non-standard dll names (prefix) . : " ${NON_STANDARD_LIB_PREFIX}) |
|
537 MESSAGE(STATUS " Non-standard dll names (suffix) . : " ${NON_STANDARD_LIB_SUFFIX}) |
|
538 ENDIF(MINGW AND NOT PCRE_STATIC) |
|
539 MESSAGE(STATUS "") |
|
540 |
|
541 # end CMakeLists.txt |