/[pcre]/code/trunk/CMakeLists.txt
ViewVC logotype

Diff of /code/trunk/CMakeLists.txt

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 200 by ph10, Wed Aug 1 09:10:40 2007 UTC revision 1162 by ph10, Tue Oct 23 10:46:43 2012 UTC
# Line 1  Line 1 
1  # CMakeLists.txt  # CMakeLists.txt
2  #  #
3    #
4  # This file allows building PCRE with the CMake configuration and build  # 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/  # tool. Download CMake in source or binary form from http://www.cmake.org/
6  #  #
7  # Original listfile by Christian Ehrlicher <Ch.Ehrlicher@gmx.de>  # Original listfile by Christian Ehrlicher <Ch.Ehrlicher@gmx.de>
8  # Refined and expanded by Daniel Richard G. <skunk@iSKUNK.ORG>  # 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
19    #            when 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
22    #            pcre.dll, 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    # 2009-03-23 PH applied Steven Van Ingelgem's patch to change the name
31    #            CMAKE_BINARY_DIR to PROJECT_BINARY_DIR so that it works when PCRE
32    #            is included within another project.
33    # 2009-03-23 PH applied a modified version of Steven Van Ingelgem's patches to
34    #            add options to stop the building of pcregrep and the tests, and
35    #            to disable the final configuration report.
36    # 2009-04-11 PH applied Christian Ehrlicher's patch to show compiler flags that
37    #            are set by specifying a release type.
38    # 2010-01-02 PH added test for stdint.h
39    # 2010-03-02 PH added test for inttypes.h
40    # 2011-08-01 PH added PCREGREP_BUFSIZE
41    # 2011-08-22 PH added PCRE_SUPPORT_JIT
42    # 2011-09-06 PH modified WIN32 ADD_TEST line as suggested by Sergey Cherepanov
43    # 2011-09-06 PH added PCRE_SUPPORT_PCREGREP_JIT
44    # 2011-10-04 Sheri added support for including coff data in windows shared libraries
45    #            compiled with MINGW if pcre.rc and/or pcreposix.rc are placed in
46    #            the source dir by the user prior to building
47    # 2011-10-04 Sheri changed various add_test's to use exes' location built instead
48    #            of DEBUG location only (likely only matters in MSVC)
49    # 2011-10-04 Sheri added scripts to provide needed variables to RunTest and
50    #            RunGrepTest (used for UNIX and Msys)
51    # 2011-10-04 Sheri added scripts to provide needed variables and to execute
52    #            RunTest.bat in Win32 (for effortless testing with "make test")
53    # 2011-10-04 Sheri Increased minimum required cmake version
54    # 2012-01-06 PH removed pcre_info.c and added pcre_string_utils.c
55    # 2012-01-10 Zoltan Herczeg added libpcre16 support
56    # 2012-01-13 Stephen Kelly added out of source build support
57    # 2012-01-17 PH applied Stephen Kelly's patch to parse the version data out
58    #            of the configure.ac file
59    # 2012-02-26 PH added support for libedit
60    # 2012-09-06 PH added support for PCRE_EBCDIC_NL25
61    # 2012-09-08 ChPe added PCRE32 support
62    # 2012-10-23 PH added support for VALGRIND and GCOV
63    
64  PROJECT(PCRE C CXX)  PROJECT(PCRE C CXX)
65    
66  CMAKE_MINIMUM_REQUIRED(VERSION 2.4.6)  # Increased minimum to 2.8.0 to support newer add_test features
67    
68    CMAKE_MINIMUM_REQUIRED(VERSION 2.8.0)
69    
70    SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) # for FindReadline.cmake
71    
72    # external packages
73    FIND_PACKAGE( BZip2 )
74    FIND_PACKAGE( ZLIB )
75    FIND_PACKAGE( Readline )
76    FIND_PACKAGE( Editline )
77    
78  # Configuration checks  # Configuration checks
79    
# Line 18  INCLUDE(CheckIncludeFileCXX) Line 82  INCLUDE(CheckIncludeFileCXX)
82  INCLUDE(CheckFunctionExists)  INCLUDE(CheckFunctionExists)
83  INCLUDE(CheckTypeSize)  INCLUDE(CheckTypeSize)
84    
85  CHECK_INCLUDE_FILE(dirent.h     HAVE_DIRENT_H)  CHECK_INCLUDE_FILE(dirent.h     HAVE_DIRENT_H)
86  CHECK_INCLUDE_FILE(unistd.h     HAVE_UNISTD_H)  CHECK_INCLUDE_FILE(stdint.h     HAVE_STDINT_H)
87  CHECK_INCLUDE_FILE(sys/stat.h   HAVE_SYS_STAT_H)  CHECK_INCLUDE_FILE(inttypes.h   HAVE_INTTYPES_H)
88  CHECK_INCLUDE_FILE(sys/types.h  HAVE_SYS_TYPES_H)  CHECK_INCLUDE_FILE(sys/stat.h   HAVE_SYS_STAT_H)
89    CHECK_INCLUDE_FILE(sys/types.h  HAVE_SYS_TYPES_H)
90  CHECK_INCLUDE_FILE_CXX(type_traits.h            HAVE_TYPE_TRAITS_H)  CHECK_INCLUDE_FILE(unistd.h     HAVE_UNISTD_H)
91  CHECK_INCLUDE_FILE_CXX(bits/type_traits.h       HAVE_BITS_TYPE_TRAITS_H)  CHECK_INCLUDE_FILE(windows.h    HAVE_WINDOWS_H)
92    
93  CHECK_FUNCTION_EXISTS(bcopy     HAVE_BCOPY)  CHECK_INCLUDE_FILE_CXX(type_traits.h            HAVE_TYPE_TRAITS_H)
94  CHECK_FUNCTION_EXISTS(memmove   HAVE_MEMMOVE)  CHECK_INCLUDE_FILE_CXX(bits/type_traits.h       HAVE_BITS_TYPE_TRAITS_H)
95  CHECK_FUNCTION_EXISTS(strerror  HAVE_STRERROR)  
96    CHECK_FUNCTION_EXISTS(bcopy     HAVE_BCOPY)
97    CHECK_FUNCTION_EXISTS(memmove   HAVE_MEMMOVE)
98    CHECK_FUNCTION_EXISTS(strerror  HAVE_STRERROR)
99    CHECK_FUNCTION_EXISTS(strtoll   HAVE_STRTOLL)
100    CHECK_FUNCTION_EXISTS(strtoq    HAVE_STRTOQ)
101    CHECK_FUNCTION_EXISTS(_strtoi64 HAVE__STRTOI64)
102    
103  CHECK_TYPE_SIZE("long long"             LONG_LONG)  CHECK_TYPE_SIZE("long long"             LONG_LONG)
104  CHECK_TYPE_SIZE("unsigned long long"    UNSIGNED_LONG_LONG)  CHECK_TYPE_SIZE("unsigned long long"    UNSIGNED_LONG_LONG)
105    
106  # User-configurable options  # User-configurable options
107  #  #
# Line 41  CHECK_TYPE_SIZE("unsigned long long"   UNS Line 111  CHECK_TYPE_SIZE("unsigned long long"   UNS
111  SET(BUILD_SHARED_LIBS OFF CACHE BOOL  SET(BUILD_SHARED_LIBS OFF CACHE BOOL
112      "Build shared libraries instead of static ones.")      "Build shared libraries instead of static ones.")
113    
114    OPTION(PCRE_BUILD_PCRE8 "Build 8 bit PCRE library" ON)
115    
116    OPTION(PCRE_BUILD_PCRE16 "Build 16 bit PCRE library" OFF)
117    
118    OPTION(PCRE_BUILD_PCRE32 "Build 32 bit PCRE library" OFF)
119    
120  OPTION(PCRE_BUILD_PCRECPP "Build the PCRE C++ library (pcrecpp)." ON)  OPTION(PCRE_BUILD_PCRECPP "Build the PCRE C++ library (pcrecpp)." ON)
121    
122  SET(PCRE_EBCDIC OFF CACHE BOOL  SET(PCRE_EBCDIC OFF CACHE BOOL
123      "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.)")
124    
125    SET(PCRE_EBCDIC_NL25 OFF CACHE BOOL
126        "Use 0x25 as EBCDIC NL character instead of 0x15; implies EBCDIC.")
127    
128  SET(PCRE_LINK_SIZE "2" CACHE STRING  SET(PCRE_LINK_SIZE "2" CACHE STRING
129      "Internal link size (2, 3 or 4 allowed). See LINK_SIZE in config.h.in for details.")      "Internal link size (2, 3 or 4 allowed). See LINK_SIZE in config.h.in for details.")
# Line 55  SET(PCRE_MATCH_LIMIT "10000000" CACHE ST Line 134  SET(PCRE_MATCH_LIMIT "10000000" CACHE ST
134  SET(PCRE_MATCH_LIMIT_RECURSION "MATCH_LIMIT" CACHE STRING  SET(PCRE_MATCH_LIMIT_RECURSION "MATCH_LIMIT" CACHE STRING
135      "Default limit on internal recursion. See MATCH_LIMIT_RECURSION in config.h.in for details.")      "Default limit on internal recursion. See MATCH_LIMIT_RECURSION in config.h.in for details.")
136    
137    SET(PCREGREP_BUFSIZE "20480" CACHE STRING
138        "Buffer size parameter for pcregrep. See PCREGREP_BUFSIZE in config.h.in for details.")
139    
140  SET(PCRE_NEWLINE "LF" CACHE STRING  SET(PCRE_NEWLINE "LF" CACHE STRING
141      "What to recognize as a newline (one of CR, LF, CRLF, ANY).")      "What to recognize as a newline (one of CR, LF, CRLF, ANY, ANYCRLF).")
142    
143  SET(PCRE_NO_RECURSE OFF CACHE BOOL  SET(PCRE_NO_RECURSE OFF CACHE BOOL
144      "If ON, then don't use stack recursion when matching. See NO_RECURSE in config.h.in for details.")      "If ON, then don't use stack recursion when matching. See NO_RECURSE in config.h.in for details.")
# Line 64  SET(PCRE_NO_RECURSE OFF CACHE BOOL Line 146  SET(PCRE_NO_RECURSE OFF CACHE BOOL
146  SET(PCRE_POSIX_MALLOC_THRESHOLD "10" CACHE STRING  SET(PCRE_POSIX_MALLOC_THRESHOLD "10" CACHE STRING
147      "Threshold for malloc() usage. See POSIX_MALLOC_THRESHOLD in config.h.in for details.")      "Threshold for malloc() usage. See POSIX_MALLOC_THRESHOLD in config.h.in for details.")
148    
149    SET(PCRE_SUPPORT_JIT OFF CACHE BOOL
150        "Enable support for Just-in-time compiling.")
151    
152    SET(PCRE_SUPPORT_PCREGREP_JIT ON CACHE BOOL
153        "Enable use of Just-in-time compiling in pcregrep.")
154    
155    SET(PCRE_SUPPORT_UTF OFF CACHE BOOL
156        "Enable support for Unicode Transformation Format (UTF-8/UTF-16/UTF-32) encoding.")
157    
158  SET(PCRE_SUPPORT_UNICODE_PROPERTIES OFF CACHE BOOL  SET(PCRE_SUPPORT_UNICODE_PROPERTIES OFF CACHE BOOL
159      "Enable support for Unicode properties. (If set, UTF-8 support will be enabled as well)")      "Enable support for Unicode properties (if set, UTF support will be enabled as well).")
160    
161  SET(PCRE_SUPPORT_UTF8 OFF CACHE BOOL  SET(PCRE_SUPPORT_BSR_ANYCRLF OFF CACHE BOOL
162      "Enable support for the Unicode UTF-8 encoding.")      "ON=Backslash-R matches only LF CR and CRLF, OFF=Backslash-R matches all Unicode Linebreaks")
163    
164    SET(PCRE_SUPPORT_VALGRIND OFF CACHE BOOL
165        "Enable Valgrind support.")
166    
167    SET(PCRE_SUPPORT_COVERAGE OFF CACHE BOOL
168        "Enable GCOV support.")
169    
170    OPTION(PCRE_SHOW_REPORT    "Show the final configuration report" ON)
171    OPTION(PCRE_BUILD_PCREGREP "Build pcregrep" ON)
172    OPTION(PCRE_BUILD_TESTS    "Build the tests" ON)
173    
174    IF (MINGW)
175      OPTION(NON_STANDARD_LIB_PREFIX
176             "ON=Shared libraries built in mingw will be named pcre.dll, etc., instead of libpcre.dll, etc."
177             OFF)
178    
179      OPTION(NON_STANDARD_LIB_SUFFIX
180             "ON=Shared libraries built in mingw will be named libpcre-0.dll, etc., instead of libpcre.dll, etc."
181             OFF)
182    ENDIF(MINGW)
183    
184    # bzip2 lib
185    IF(BZIP2_FOUND)
186      OPTION (PCRE_SUPPORT_LIBBZ2 "Enable support for linking pcregrep with libbz2." ON)
187    ENDIF(BZIP2_FOUND)
188    IF(PCRE_SUPPORT_LIBBZ2)
189      INCLUDE_DIRECTORIES(${BZIP2_INCLUDE_DIR})
190    ENDIF(PCRE_SUPPORT_LIBBZ2)
191    
192    # zlib
193    IF(ZLIB_FOUND)
194      OPTION (PCRE_SUPPORT_LIBZ "Enable support for linking pcregrep with libz." ON)
195    ENDIF(ZLIB_FOUND)
196    IF(PCRE_SUPPORT_LIBZ)
197      INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
198    ENDIF(PCRE_SUPPORT_LIBZ)
199    
200    # editline lib
201    IF(EDITLINE_FOUND)
202      OPTION (PCRE_SUPPORT_LIBEDIT  "Enable support for linking pcretest with libedit." OFF)
203    ENDIF(EDITLINE_FOUND)
204    IF(PCRE_SUPPORT_LIBEDIT)
205      INCLUDE_DIRECTORIES(${EDITLINE_INCLUDE_DIR})
206    ENDIF(PCRE_SUPPORT_LIBEDIT)
207    
208    # readline lib
209    IF(READLINE_FOUND)
210      OPTION (PCRE_SUPPORT_LIBREADLINE  "Enable support for linking pcretest with libreadline." ON)
211    ENDIF(READLINE_FOUND)
212    IF(PCRE_SUPPORT_LIBREADLINE)
213      INCLUDE_DIRECTORIES(${READLINE_INCLUDE_DIR})
214    ENDIF(PCRE_SUPPORT_LIBREADLINE)
215    
216  # Prepare build configuration  # Prepare build configuration
217    
# Line 76  SET(pcre_have_type_traits 0) Line 219  SET(pcre_have_type_traits 0)
219  SET(pcre_have_bits_type_traits 0)  SET(pcre_have_bits_type_traits 0)
220    
221  IF(HAVE_TYPE_TRAITS_H)  IF(HAVE_TYPE_TRAITS_H)
222          SET(pcre_have_type_traits 1)          SET(pcre_have_type_traits 1)
223  ENDIF(HAVE_TYPE_TRAITS_H)  ENDIF(HAVE_TYPE_TRAITS_H)
224    
225  IF(HAVE_BITS_TYPE_TRAITS_H)  IF(HAVE_BITS_TYPE_TRAITS_H)
226          SET(pcre_have_bits_type_traits 1)          SET(pcre_have_bits_type_traits 1)
227  ENDIF(HAVE_BITS_TYPE_TRAITS_H)  ENDIF(HAVE_BITS_TYPE_TRAITS_H)
228    
229  SET(pcre_have_long_long 0)  SET(pcre_have_long_long 0)
230  SET(pcre_have_ulong_long 0)  SET(pcre_have_ulong_long 0)
231    
232  IF(HAVE_LONG_LONG)  IF(HAVE_LONG_LONG)
233          SET(pcre_have_long_long 1)          SET(pcre_have_long_long 1)
234  ENDIF(HAVE_LONG_LONG)  ENDIF(HAVE_LONG_LONG)
235    
236  IF(HAVE_UNSIGNED_LONG_LONG)  IF(HAVE_UNSIGNED_LONG_LONG)
237          SET(pcre_have_ulong_long 1)          SET(pcre_have_ulong_long 1)
238  ENDIF(HAVE_UNSIGNED_LONG_LONG)  ENDIF(HAVE_UNSIGNED_LONG_LONG)
239    
240  IF(NOT BUILD_SHARED_LIBS)  IF(NOT BUILD_SHARED_LIBS)
241          SET(PCRE_STATIC 1)          SET(PCRE_STATIC 1)
242  ENDIF(NOT BUILD_SHARED_LIBS)  ENDIF(NOT BUILD_SHARED_LIBS)
243    
244  IF(PCRE_SUPPORT_UTF8 OR PCRE_SUPPORT_UNICODE_PROPERTIES)  IF(NOT PCRE_BUILD_PCRE8 AND NOT PCRE_BUILD_PCRE16 AND NOT PCRE_BUILD_PCRE32)
245          SET(SUPPORT_UTF8 1)          MESSAGE(FATAL_ERROR "At least one of PCRE_BUILD_PCRE8, PCRE_BUILD_PCRE16 or PCRE_BUILD_PCRE32 must be enabled")
246  ENDIF(PCRE_SUPPORT_UTF8 OR PCRE_SUPPORT_UNICODE_PROPERTIES)  ENDIF(NOT PCRE_BUILD_PCRE8 AND NOT PCRE_BUILD_PCRE16 AND NOT PCRE_BUILD_PCRE32)
247    
248    IF(PCRE_BUILD_PCRE8)
249            SET(SUPPORT_PCRE8 1)
250    ENDIF(PCRE_BUILD_PCRE8)
251    
252    IF(PCRE_BUILD_PCRE16)
253            SET(SUPPORT_PCRE16 1)
254    ENDIF(PCRE_BUILD_PCRE16)
255    
256    IF(PCRE_BUILD_PCRE32)
257            SET(SUPPORT_PCRE32 1)
258    ENDIF(PCRE_BUILD_PCRE32)
259    
260    IF(PCRE_BUILD_PCRECPP AND NOT PCRE_BUILD_PCRE8)
261            MESSAGE(STATUS "** PCRE_BUILD_PCRE8 must be enabled for the C++ library support")
262            SET(PCRE_BUILD_PCRECPP OFF)
263    ENDIF(PCRE_BUILD_PCRECPP AND NOT PCRE_BUILD_PCRE8)
264    
265    IF(PCRE_BUILD_PCREGREP AND NOT PCRE_BUILD_PCRE8)
266            MESSAGE(STATUS "** PCRE_BUILD_PCRE8 must be enabled for the pcregrep program")
267            SET(PCRE_BUILD_PCREGREP OFF)
268    ENDIF(PCRE_BUILD_PCREGREP AND NOT PCRE_BUILD_PCRE8)
269    
270    IF(PCRE_SUPPORT_LIBREADLINE AND PCRE_SUPPORT_LIBEDIT)
271            MESSAGE(FATAL_ERROR "Only one of libreadline or libeditline can be specified")
272    ENDIF(PCRE_SUPPORT_LIBREADLINE AND PCRE_SUPPORT_LIBEDIT)
273    
274    IF(PCRE_SUPPORT_BSR_ANYCRLF)
275            SET(BSR_ANYCRLF 1)
276    ENDIF(PCRE_SUPPORT_BSR_ANYCRLF)
277    
278    IF(PCRE_SUPPORT_UTF OR PCRE_SUPPORT_UNICODE_PROPERTIES)
279            SET(SUPPORT_UTF 1)
280            SET(PCRE_SUPPORT_UTF ON)
281    ENDIF(PCRE_SUPPORT_UTF OR PCRE_SUPPORT_UNICODE_PROPERTIES)
282    
283  IF(PCRE_SUPPORT_UNICODE_PROPERTIES)  IF(PCRE_SUPPORT_UNICODE_PROPERTIES)
284          SET(SUPPORT_UCP 1)          SET(SUPPORT_UCP 1)
285  ENDIF(PCRE_SUPPORT_UNICODE_PROPERTIES)  ENDIF(PCRE_SUPPORT_UNICODE_PROPERTIES)
286    
287    IF(PCRE_SUPPORT_JIT)
288            SET(SUPPORT_JIT 1)
289    ENDIF(PCRE_SUPPORT_JIT)
290    
291    IF(PCRE_SUPPORT_PCREGREP_JIT)
292            SET(SUPPORT_PCREGREP_JIT 1)
293    ENDIF(PCRE_SUPPORT_PCREGREP_JIT)
294    
295    IF(PCRE_SUPPORT_VALGRIND)
296            SET(SUPPORT_VALGRIND 1)
297    ENDIF(PCRE_SUPPORT_VALGRIND)
298    
299    IF(PCRE_SUPPORT_COVERAGE)
300            SET(SUPPORT_GCOV 1)
301    ENDIF(PCRE_SUPPORT_COVERAGE)
302    
303    # This next one used to contain
304    #       SET(PCRETEST_LIBS ${READLINE_LIBRARY})
305    # but I was advised to add the NCURSES test as well, along with
306    # some modifications to cmake/FindReadline.cmake which should
307    # make it possible to override the default if necessary. PH
308    
309    IF(PCRE_SUPPORT_LIBREADLINE)
310            SET(SUPPORT_LIBREADLINE 1)
311            SET(PCRETEST_LIBS ${READLINE_LIBRARY} ${NCURSES_LIBRARY})
312    ENDIF(PCRE_SUPPORT_LIBREADLINE)
313    
314    # libedit is a plug-compatible alternative to libreadline
315    
316    IF(PCRE_SUPPORT_LIBEDIT)
317            SET(SUPPORT_LIBEDIT 1)
318            SET(PCRETEST_LIBS ${EDITLINE_LIBRARY} ${NCURSES_LIBRARY})
319    ENDIF(PCRE_SUPPORT_LIBEDIT)
320    
321    IF(PCRE_SUPPORT_LIBZ)
322            SET(SUPPORT_LIBZ 1)
323            SET(PCREGREP_LIBS ${PCREGREP_LIBS} ${ZLIB_LIBRARIES})
324    ENDIF(PCRE_SUPPORT_LIBZ)
325    
326    IF(PCRE_SUPPORT_LIBBZ2)
327            SET(SUPPORT_LIBBZ2 1)
328            SET(PCREGREP_LIBS ${PCREGREP_LIBS} ${BZIP2_LIBRARIES})
329    ENDIF(PCRE_SUPPORT_LIBBZ2)
330    
331  SET(NEWLINE "")  SET(NEWLINE "")
332    
333  IF(PCRE_NEWLINE STREQUAL "LF")  IF(PCRE_NEWLINE STREQUAL "LF")
334          SET(NEWLINE "10")          SET(NEWLINE "10")
335  ENDIF(PCRE_NEWLINE STREQUAL "LF")  ENDIF(PCRE_NEWLINE STREQUAL "LF")
336  IF(PCRE_NEWLINE STREQUAL "CR")  IF(PCRE_NEWLINE STREQUAL "CR")
337          SET(NEWLINE "13")          SET(NEWLINE "13")
338  ENDIF(PCRE_NEWLINE STREQUAL "CR")  ENDIF(PCRE_NEWLINE STREQUAL "CR")
339  IF(PCRE_NEWLINE STREQUAL "CRLF")  IF(PCRE_NEWLINE STREQUAL "CRLF")
340          SET(NEWLINE "3338")          SET(NEWLINE "3338")
341  ENDIF(PCRE_NEWLINE STREQUAL "CRLF")  ENDIF(PCRE_NEWLINE STREQUAL "CRLF")
342  IF(PCRE_NEWLINE STREQUAL "ANY")  IF(PCRE_NEWLINE STREQUAL "ANY")
343          SET(NEWLINE "-1")          SET(NEWLINE "-1")
344  ENDIF(PCRE_NEWLINE STREQUAL "ANY")  ENDIF(PCRE_NEWLINE STREQUAL "ANY")
345    IF(PCRE_NEWLINE STREQUAL "ANYCRLF")
346            SET(NEWLINE "-2")
347    ENDIF(PCRE_NEWLINE STREQUAL "ANYCRLF")
348    
349  IF(NEWLINE STREQUAL "")  IF(NEWLINE STREQUAL "")
350          MESSAGE(FATAL_ERROR "The PCRE_NEWLINE variable must be set to one of the following values: \"LF\", \"CR\", \"CRLF\", \"ANY\".")          MESSAGE(FATAL_ERROR "The PCRE_NEWLINE variable must be set to one of the following values: \"LF\", \"CR\", \"CRLF\", \"ANY\", \"ANYCRLF\".")
351  ENDIF(NEWLINE STREQUAL "")  ENDIF(NEWLINE STREQUAL "")
352    
353  IF(PCRE_EBCDIC)  IF(PCRE_EBCDIC)
354          SET(EBCDIC 1)          SET(EBCDIC 1)
355    IF(PCRE_NEWLINE STREQUAL "LF")
356            SET(NEWLINE "21")
357    ENDIF(PCRE_NEWLINE STREQUAL "LF")
358    IF(PCRE_NEWLINE STREQUAL "CRLF")
359            SET(NEWLINE "3349")
360    ENDIF(PCRE_NEWLINE STREQUAL "CRLF")
361  ENDIF(PCRE_EBCDIC)  ENDIF(PCRE_EBCDIC)
362    
363    IF(PCRE_EBCDIC_NL25)
364            SET(EBCDIC 1)
365            SET(EBCDIC_NL25 1)
366    IF(PCRE_NEWLINE STREQUAL "LF")
367            SET(NEWLINE "37")
368    ENDIF(PCRE_NEWLINE STREQUAL "LF")
369    IF(PCRE_NEWLINE STREQUAL "CRLF")
370            SET(NEWLINE "3365")
371    ENDIF(PCRE_NEWLINE STREQUAL "CRLF")
372    ENDIF(PCRE_EBCDIC_NL25)
373    
374  IF(PCRE_NO_RECURSE)  IF(PCRE_NO_RECURSE)
375          SET(NO_RECURSE 1)          SET(NO_RECURSE 1)
376  ENDIF(PCRE_NO_RECURSE)  ENDIF(PCRE_NO_RECURSE)
377    
378  # Output files  # Output files
   
379  CONFIGURE_FILE(config-cmake.h.in  CONFIGURE_FILE(config-cmake.h.in
380                 ${CMAKE_BINARY_DIR}/config.h                 ${PROJECT_BINARY_DIR}/config.h
381                 @ONLY)                 @ONLY)
382    
383  CONFIGURE_FILE(pcre.h.generic  # Parse version numbers and date out of configure.ac
384                 ${CMAKE_BINARY_DIR}/pcre.h  
385                 COPYONLY)  file(STRINGS ${PROJECT_SOURCE_DIR}/configure.ac
386      configure_lines
387      LIMIT_COUNT 50 # Read only the first 50 lines of the file
388    )
389    
390    set(SEARCHED_VARIABLES "pcre_major" "pcre_minor" "pcre_prerelease" "pcre_date")
391    foreach(configure_line ${configure_lines})
392        foreach(_substitution_variable ${SEARCHED_VARIABLES})
393            string(TOUPPER ${_substitution_variable} _substitution_variable_upper)
394            if (NOT ${_substitution_variable_upper})
395                string(REGEX MATCH "m4_define\\(${_substitution_variable}, \\[(.*)\\]" MACTHED_STRING ${configure_line})
396                if (CMAKE_MATCH_1)
397                    set(${_substitution_variable_upper} ${CMAKE_MATCH_1})
398                endif()
399            endif()
400        endforeach()
401    endforeach()
402    
403    CONFIGURE_FILE(pcre.h.in
404                   ${PROJECT_BINARY_DIR}/pcre.h
405                   @ONLY)
406    
407  # What about pcre-config and libpcre.pc?  # What about pcre-config and libpcre.pc?
408    
409  IF(PCRE_BUILD_PCRECPP)  IF(PCRE_BUILD_PCRECPP)
410          CONFIGURE_FILE(pcre_stringpiece.h.in          CONFIGURE_FILE(pcre_stringpiece.h.in
411                         ${CMAKE_BINARY_DIR}/pcre_stringpiece.h                         ${PROJECT_BINARY_DIR}/pcre_stringpiece.h
412                         @ONLY)                         @ONLY)
413    
414          CONFIGURE_FILE(pcrecpparg.h.in          CONFIGURE_FILE(pcrecpparg.h.in
415                         ${CMAKE_BINARY_DIR}/pcrecpparg.h                         ${PROJECT_BINARY_DIR}/pcrecpparg.h
416                         @ONLY)                         @ONLY)
417  ENDIF(PCRE_BUILD_PCRECPP)  ENDIF(PCRE_BUILD_PCRECPP)
418    
419  # Character table generation  # Character table generation
420    
421  ADD_EXECUTABLE(dftables dftables.c)  OPTION(PCRE_REBUILD_CHARTABLES "Rebuild char tables" OFF)
422    IF(PCRE_REBUILD_CHARTABLES)
423  GET_TARGET_PROPERTY(DFTABLES_EXE dftables LOCATION)    ADD_EXECUTABLE(dftables dftables.c)
424    
425  ADD_CUSTOM_COMMAND(    GET_TARGET_PROPERTY(DFTABLES_EXE dftables LOCATION)
426          COMMENT "Generating character tables (pcre_chartables.c) for current locale"  
427          DEPENDS dftables    ADD_CUSTOM_COMMAND(
428          COMMAND ${DFTABLES_EXE}      COMMENT "Generating character tables (pcre_chartables.c) for current locale"
429          ARGS    ${CMAKE_BINARY_DIR}/pcre_chartables.c      DEPENDS dftables
430          OUTPUT  ${CMAKE_BINARY_DIR}/pcre_chartables.c      COMMAND ${DFTABLES_EXE}
431  )      ARGS        ${PROJECT_BINARY_DIR}/pcre_chartables.c
432        OUTPUT      ${PROJECT_BINARY_DIR}/pcre_chartables.c
433      )
434    ELSE(PCRE_REBUILD_CHARTABLES)
435      CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/pcre_chartables.c.dist
436                        ${PROJECT_BINARY_DIR}/pcre_chartables.c
437                        COPYONLY)
438    ENDIF(PCRE_REBUILD_CHARTABLES)
439    
440  # Source code  # Source code
441    
442  SET(PCRE_HEADERS ${CMAKE_BINARY_DIR}/pcre.h)  SET(PCRE_HEADERS ${PROJECT_BINARY_DIR}/pcre.h)
443    
444    IF(PCRE_BUILD_PCRE8)
445  SET(PCRE_SOURCES  SET(PCRE_SOURCES
446          ${CMAKE_BINARY_DIR}/pcre_chartables.c    pcre_byte_order.c
447          pcre_compile.c    pcre_chartables.c
448          pcre_config.c    pcre_compile.c
449          pcre_dfa_exec.c    pcre_config.c
450          pcre_exec.c    pcre_dfa_exec.c
451          pcre_fullinfo.c    pcre_exec.c
452          pcre_get.c    pcre_fullinfo.c
453          pcre_globals.c    pcre_get.c
454          pcre_info.c    pcre_globals.c
455          pcre_newline.c    pcre_jit_compile.c
456          pcre_maketables.c    pcre_maketables.c
457          pcre_ord2utf8.c    pcre_newline.c
458          pcre_refcount.c    pcre_ord2utf8.c
459          pcre_study.c    pcre_refcount.c
460          pcre_tables.c    pcre_string_utils.c
461          pcre_try_flipped.c    pcre_study.c
462          pcre_ucp_searchfuncs.c    pcre_tables.c
463          pcre_valid_utf8.c    pcre_ucd.c
464          pcre_version.c    pcre_valid_utf8.c
465          pcre_xclass.c    pcre_version.c
466      pcre_xclass.c
467  )  )
468    
469  SET(PCREPOSIX_HEADERS pcreposix.h)  SET(PCREPOSIX_HEADERS pcreposix.h)
470    
471  SET(PCREPOSIX_SOURCES pcreposix.c)  SET(PCREPOSIX_SOURCES pcreposix.c)
472    
473    ENDIF(PCRE_BUILD_PCRE8)
474    
475    IF(PCRE_BUILD_PCRE16)
476    SET(PCRE16_SOURCES
477      pcre16_byte_order.c
478      pcre16_chartables.c
479      pcre16_compile.c
480      pcre16_config.c
481      pcre16_dfa_exec.c
482      pcre16_exec.c
483      pcre16_fullinfo.c
484      pcre16_get.c
485      pcre16_globals.c
486      pcre16_jit_compile.c
487      pcre16_maketables.c
488      pcre16_newline.c
489      pcre16_ord2utf16.c
490      pcre16_refcount.c
491      pcre16_string_utils.c
492      pcre16_study.c
493      pcre16_tables.c
494      pcre16_ucd.c
495      pcre16_utf16_utils.c
496      pcre16_valid_utf16.c
497      pcre16_version.c
498      pcre16_xclass.c
499    )
500    ENDIF(PCRE_BUILD_PCRE16)
501    
502    IF(PCRE_BUILD_PCRE32)
503    SET(PCRE32_SOURCES
504      pcre32_byte_order.c
505      pcre32_chartables.c
506      pcre32_compile.c
507      pcre32_config.c
508      pcre32_dfa_exec.c
509      pcre32_exec.c
510      pcre32_fullinfo.c
511      pcre32_get.c
512      pcre32_globals.c
513      pcre32_jit_compile.c
514      pcre32_maketables.c
515      pcre32_newline.c
516      pcre32_ord2utf32.c
517      pcre32_refcount.c
518      pcre32_string_utils.c
519      pcre32_study.c
520      pcre32_tables.c
521      pcre32_ucd.c
522      pcre32_utf32_utils.c
523      pcre32_valid_utf32.c
524      pcre32_version.c
525      pcre32_xclass.c
526    )
527    ENDIF(PCRE_BUILD_PCRE32)
528    
529    IF(MINGW AND NOT PCRE_STATIC)
530    IF (EXISTS ${PROJECT_SOURCE_DIR}/pcre.rc)
531    ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_SOURCE_DIR}/pcre.o
532    PRE-LINK
533    COMMAND windres ARGS pcre.rc pcre.o
534    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
535    COMMENT Using pcre coff info in mingw build)
536    SET(PCRE_SOURCES
537      ${PCRE_SOURCES} ${PROJECT_SOURCE_DIR}/pcre.o
538    )
539    ENDIF(EXISTS ${PROJECT_SOURCE_DIR}/pcre.rc)
540    IF (EXISTS ${PROJECT_SOURCE_DIR}/pcreposix.rc)
541    ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_SOURCE_DIR}/pcreposix.o
542    PRE-LINK
543    COMMAND windres ARGS pcreposix.rc pcreposix.o
544    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
545    COMMENT Using pcreposix coff info in mingw build)
546    SET(PCREPOSIX_SOURCES
547      ${PCREPOSIX_SOURCES} ${PROJECT_SOURCE_DIR}/pcreposix.o
548    )
549    ENDIF(EXISTS ${PROJECT_SOURCE_DIR}/pcreposix.rc)
550    ENDIF(MINGW AND NOT PCRE_STATIC)
551    
552  SET(PCRECPP_HEADERS  SET(PCRECPP_HEADERS
553          pcrecpp.h    pcrecpp.h
554          pcre_scanner.h    pcre_scanner.h
555          ${CMAKE_BINARY_DIR}/pcrecpparg.h    ${PROJECT_BINARY_DIR}/pcrecpparg.h
556          ${CMAKE_BINARY_DIR}/pcre_stringpiece.h    ${PROJECT_BINARY_DIR}/pcre_stringpiece.h
557  )  )
558    
559  SET(PCRECPP_SOURCES  SET(PCRECPP_SOURCES
560          pcrecpp.cc          pcrecpp.cc
561          pcre_scanner.cc          pcre_scanner.cc
562          pcre_stringpiece.cc          pcre_stringpiece.cc
563  )  )
564    
565  # Build setup  # Build setup
566    
567  ADD_DEFINITIONS(-DHAVE_CONFIG_H)  ADD_DEFINITIONS(-DHAVE_CONFIG_H)
568    
569  IF(WIN32)  IF(MSVC)
570          ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE)          ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE)
571  ENDIF(WIN32)  ENDIF(MSVC)
572    
573  SET(CMAKE_INCLUDE_CURRENT_DIR 1)  SET(CMAKE_INCLUDE_CURRENT_DIR 1)
574    # needed to make sure to not link debug libs
575    # against release libs and vice versa
576    IF(WIN32)
577      SET(CMAKE_DEBUG_POSTFIX "d")
578    ENDIF(WIN32)
579    
580  #SET(CMAKE_DEBUG_POSTFIX "d")  SET(targets)
581    
582  # Libraries  # Libraries
583    # pcre
584  ADD_LIBRARY(pcre ${PCRE_HEADERS} ${PCRE_SOURCES})  IF(PCRE_BUILD_PCRE8)
585    ADD_LIBRARY(pcre ${PCRE_HEADERS} ${PCRE_SOURCES} ${PROJECT_BINARY_DIR}/config.h)
586    SET(targets ${targets} pcre)
587  ADD_LIBRARY(pcreposix ${PCREPOSIX_HEADERS} ${PCREPOSIX_SOURCES})  ADD_LIBRARY(pcreposix ${PCREPOSIX_HEADERS} ${PCREPOSIX_SOURCES})
588    SET(targets ${targets} pcreposix)
589  TARGET_LINK_LIBRARIES(pcreposix pcre)  TARGET_LINK_LIBRARIES(pcreposix pcre)
590    
591  IF(PCRE_BUILD_PCRECPP)  IF(MINGW AND NOT PCRE_STATIC)
592          ADD_LIBRARY(pcrecpp ${PCRECPP_HEADERS} ${PCRECPP_SOURCES})    IF(NON_STANDARD_LIB_PREFIX)
593          TARGET_LINK_LIBRARIES(pcrecpp pcre)      SET_TARGET_PROPERTIES(pcre pcreposix
594          IF(MINGW)                          PROPERTIES PREFIX ""
595                  SET_TARGET_PROPERTIES(pcrecpp PROPERTIES PREFIX "mingw-")      )
596          ENDIF(MINGW)    ENDIF(NON_STANDARD_LIB_PREFIX)
597  ENDIF(PCRE_BUILD_PCRECPP)  
598      IF(NON_STANDARD_LIB_SUFFIX)
599        SET_TARGET_PROPERTIES(pcre pcreposix
600                            PROPERTIES SUFFIX "-0.dll"
601        )
602      ENDIF(NON_STANDARD_LIB_SUFFIX)
603    ENDIF(MINGW AND NOT PCRE_STATIC)
604    
605    ENDIF(PCRE_BUILD_PCRE8)
606    
607    IF(PCRE_BUILD_PCRE16)
608    ADD_LIBRARY(pcre16 ${PCRE_HEADERS} ${PCRE16_SOURCES} ${PROJECT_BINARY_DIR}/config.h)
609    SET(targets ${targets} pcre16)
610    
611    IF(MINGW AND NOT PCRE_STATIC)
612      IF(NON_STANDARD_LIB_PREFIX)
613        SET_TARGET_PROPERTIES(pcre16
614                            PROPERTIES PREFIX ""
615        )
616      ENDIF(NON_STANDARD_LIB_PREFIX)
617    
618      IF(NON_STANDARD_LIB_SUFFIX)
619        SET_TARGET_PROPERTIES(pcre16
620                            PROPERTIES SUFFIX "-0.dll"
621        )
622      ENDIF(NON_STANDARD_LIB_SUFFIX)
623    ENDIF(MINGW AND NOT PCRE_STATIC)
624    
625    ENDIF(PCRE_BUILD_PCRE16)
626    
627    IF(PCRE_BUILD_PCRE32)
628    ADD_LIBRARY(pcre32 ${PCRE_HEADERS} ${PCRE32_SOURCES} ${PROJECT_BINARY_DIR}/config.h)
629    SET(targets ${targets} pcre32)
630    
631    IF(MINGW AND NOT PCRE_STATIC)
632      IF(NON_STANDARD_LIB_PREFIX)
633        SET_TARGET_PROPERTIES(pcre32
634                            PROPERTIES PREFIX ""
635        )
636      ENDIF(NON_STANDARD_LIB_PREFIX)
637    
638      IF(NON_STANDARD_LIB_SUFFIX)
639        SET_TARGET_PROPERTIES(pcre32
640                            PROPERTIES SUFFIX "-0.dll"
641        )
642      ENDIF(NON_STANDARD_LIB_SUFFIX)
643    ENDIF(MINGW AND NOT PCRE_STATIC)
644    
645  # Executables  ENDIF(PCRE_BUILD_PCRE32)
   
 ADD_EXECUTABLE(pcretest pcretest.c)  
 TARGET_LINK_LIBRARIES(pcretest pcreposix)  
   
 ADD_EXECUTABLE(pcregrep pcregrep.c)  
 TARGET_LINK_LIBRARIES(pcregrep pcreposix)  
646    
647    # pcrecpp
648  IF(PCRE_BUILD_PCRECPP)  IF(PCRE_BUILD_PCRECPP)
649          ADD_EXECUTABLE(pcrecpp_unittest pcrecpp_unittest.cc)  ADD_LIBRARY(pcrecpp ${PCRECPP_HEADERS} ${PCRECPP_SOURCES})
650          TARGET_LINK_LIBRARIES(pcrecpp_unittest pcrecpp)  SET(targets ${targets} pcrecpp)
651    TARGET_LINK_LIBRARIES(pcrecpp pcre)
652    
653      IF(MINGW AND NOT PCRE_STATIC)
654        IF(NON_STANDARD_LIB_PREFIX)
655          SET_TARGET_PROPERTIES(pcrecpp
656                                PROPERTIES PREFIX ""
657          )
658        ENDIF(NON_STANDARD_LIB_PREFIX)
659    
660        IF(NON_STANDARD_LIB_SUFFIX)
661          SET_TARGET_PROPERTIES(pcrecpp
662                              PROPERTIES SUFFIX "-0.dll"
663          )
664        ENDIF(NON_STANDARD_LIB_SUFFIX)
665      ENDIF(MINGW AND NOT PCRE_STATIC)
666    ENDIF(PCRE_BUILD_PCRECPP)
667    
         ADD_EXECUTABLE(pcre_scanner_unittest pcre_scanner_unittest.cc)  
         TARGET_LINK_LIBRARIES(pcre_scanner_unittest pcrecpp)  
668    
669          ADD_EXECUTABLE(pcre_stringpiece_unittest pcre_stringpiece_unittest.cc)  # Executables
670          TARGET_LINK_LIBRARIES(pcre_stringpiece_unittest pcrecpp)  
671  ENDIF(PCRE_BUILD_PCRECPP)  # Removed by PH (2008-01-23) because pcredemo shouldn't really be built
672    # automatically, and it gave trouble in some environments anyway.
673    # ADD_EXECUTABLE(pcredemo pcredemo.c)
674    # TARGET_LINK_LIBRARIES(pcredemo pcreposix)
675    # IF(NOT BUILD_SHARED_LIBS)
676    #     # make sure to not use declspec(dllimport) in static mode on windows
677    #         SET_TARGET_PROPERTIES(pcredemo PROPERTIES COMPILE_FLAGS "-DPCRE_STATIC")
678    # ENDIF(NOT BUILD_SHARED_LIBS)
679    
680    IF(PCRE_BUILD_PCREGREP)
681      ADD_EXECUTABLE(pcregrep pcregrep.c)
682      SET(targets ${targets} pcregrep)
683      TARGET_LINK_LIBRARIES(pcregrep pcreposix ${PCREGREP_LIBS})
684    ENDIF(PCRE_BUILD_PCREGREP)
685    
686  # Testing  # Testing
687    IF(PCRE_BUILD_TESTS)
688      ENABLE_TESTING()
689    
690      SET(PCRETEST_SOURCES pcretest.c)
691      IF(PCRE_BUILD_PCRE8)
692        LIST(APPEND PCRETEST_SOURCES pcre_printint.c)
693      ENDIF(PCRE_BUILD_PCRE8)
694      IF(PCRE_BUILD_PCRE16)
695        LIST(APPEND PCRETEST_SOURCES pcre16_printint.c)
696      ENDIF(PCRE_BUILD_PCRE16)
697      IF(PCRE_BUILD_PCRE32)
698        LIST(APPEND PCRETEST_SOURCES pcre32_printint.c)
699      ENDIF(PCRE_BUILD_PCRE32)
700    
701      ADD_EXECUTABLE(pcretest ${PCRETEST_SOURCES})
702      SET(targets ${targets} pcretest)
703      IF(PCRE_BUILD_PCRE8)
704        LIST(APPEND PCRETEST_LIBS pcreposix pcre)
705      ENDIF(PCRE_BUILD_PCRE8)
706      IF(PCRE_BUILD_PCRE16)
707        LIST(APPEND PCRETEST_LIBS pcre16)
708      ENDIF(PCRE_BUILD_PCRE16)
709      IF(PCRE_BUILD_PCRE32)
710        LIST(APPEND PCRETEST_LIBS pcre32)
711      ENDIF(PCRE_BUILD_PCRE32)
712      TARGET_LINK_LIBRARIES(pcretest ${PCRETEST_LIBS})
713    
714      IF(PCRE_SUPPORT_JIT)
715        ADD_EXECUTABLE(pcre_jit_test pcre_jit_test.c)
716        SET(targets ${targets} pcre_jit_test)
717        SET(PCRE_JIT_TEST_LIBS )
718        IF(PCRE_BUILD_PCRE8)
719          LIST(APPEND PCRE_JIT_TEST_LIBS pcre)
720        ENDIF(PCRE_BUILD_PCRE8)
721        IF(PCRE_BUILD_PCRE16)
722          LIST(APPEND PCRE_JIT_TEST_LIBS pcre16)
723        ENDIF(PCRE_BUILD_PCRE16)
724        IF(PCRE_BUILD_PCRE32)
725          LIST(APPEND PCRE_JIT_TEST_LIBS pcre32)
726        ENDIF(PCRE_BUILD_PCRE32)
727        TARGET_LINK_LIBRARIES(pcre_jit_test ${PCRE_JIT_TEST_LIBS})
728      ENDIF(PCRE_SUPPORT_JIT)
729    
730      IF(PCRE_BUILD_PCRECPP)
731        ADD_EXECUTABLE(pcrecpp_unittest pcrecpp_unittest.cc)
732        SET(targets ${targets} pcrecpp_unittest)
733        TARGET_LINK_LIBRARIES(pcrecpp_unittest pcrecpp)
734        IF(MINGW AND NON_STANDARD_LIB_NAMES AND NOT PCRE_STATIC)
735          SET_TARGET_PROPERTIES(pcrecpp
736                            PROPERTIES PREFIX ""
737          )
738        ENDIF(MINGW AND NON_STANDARD_LIB_NAMES AND NOT PCRE_STATIC)
739    
740        ADD_EXECUTABLE(pcre_scanner_unittest pcre_scanner_unittest.cc)
741        SET(targets ${targets} pcre_scanner_unittest)
742        TARGET_LINK_LIBRARIES(pcre_scanner_unittest pcrecpp)
743    
744        ADD_EXECUTABLE(pcre_stringpiece_unittest pcre_stringpiece_unittest.cc)
745        SET(targets ${targets} pcre_stringpiece_unittest)
746        TARGET_LINK_LIBRARIES(pcre_stringpiece_unittest pcrecpp)
747      ENDIF(PCRE_BUILD_PCRECPP)
748    
749      # exes in Debug location tested by the RunTest shell script
750      # via "make test"
751      IF(PCRE_BUILD_PCREGREP)
752        GET_TARGET_PROPERTY(PCREGREP_EXE pcregrep DEBUG_LOCATION)
753      ENDIF(PCRE_BUILD_PCREGREP)
754    
755      GET_TARGET_PROPERTY(PCRETEST_EXE pcretest DEBUG_LOCATION)
756    
757    # =================================================
758      # Write out a CTest configuration file
759      #
760      FILE(WRITE ${PROJECT_BINARY_DIR}/CTestCustom.ctest
761      "# This is a generated file.
762    MESSAGE(\"When testing is complete, review test output in the
763    \\\"${PROJECT_BINARY_DIR}/Testing/Temporary\\\" folder.\")
764    MESSAGE(\" \")
765    ")
766    
767  ENABLE_TESTING()    FILE(WRITE ${PROJECT_BINARY_DIR}/pcre_test.sh
768      "#! /bin/sh
769    # This is a generated file.
770    srcdir=${PROJECT_SOURCE_DIR}
771    pcretest=${PCRETEST_EXE}
772    source ${PROJECT_SOURCE_DIR}/RunTest
773    if test \"$?\" != \"0\"; then exit 1; fi
774    # End
775    ")
776    
777  GET_TARGET_PROPERTY(PCREGREP_EXE pcregrep DEBUG_LOCATION)    IF(UNIX)
778  GET_TARGET_PROPERTY(PCRETEST_EXE pcretest DEBUG_LOCATION)      ADD_TEST(pcre_test      sh ${PROJECT_BINARY_DIR}/pcre_test.sh)
779      ENDIF(UNIX)
780    
781      IF(PCRE_BUILD_PCREGREP)
782        FILE(WRITE ${PROJECT_BINARY_DIR}/pcre_grep_test.sh
783        "#! /bin/sh
784    # This is a generated file.
785    srcdir=${PROJECT_SOURCE_DIR}
786    pcregrep=${PCREGREP_EXE}
787    pcretest=${PCRETEST_EXE}
788    source ${PROJECT_SOURCE_DIR}/RunGrepTest
789    if test \"$?\" != \"0\"; then exit 1; fi
790    # End
791    ")
792    
793  # Write out a CTest configuration file that sets some needed environment      IF(UNIX)
794  # variables for the test scripts.        ADD_TEST(pcre_grep_test sh ${PROJECT_BINARY_DIR}/pcre_grep_test.sh)
795  #      ENDIF(UNIX)
796  FILE(WRITE ${CMAKE_BINARY_DIR}/CTestCustom.ctest    ENDIF(PCRE_BUILD_PCREGREP)
797  "# This is a generated file.  
798  SET(ENV{srcdir} ${CMAKE_SOURCE_DIR})    IF(WIN32)
799  SET(ENV{pcregrep} ${PCREGREP_EXE})      # Provide environment for executing the bat file version of RunTest
800  SET(ENV{pcretest} ${PCRETEST_EXE})      FILE(TO_NATIVE_PATH ${PROJECT_SOURCE_DIR} winsrc)
801        FILE(TO_NATIVE_PATH ${PROJECT_BINARY_DIR} winbin)
802        FILE(TO_NATIVE_PATH ${PCRETEST_EXE} winexe)
803    
804        FILE(WRITE ${PROJECT_BINARY_DIR}/pcre_test.bat
805        "\@REM This is a generated file.
806    \@echo off
807    setlocal
808    SET srcdir=\"${winsrc}\"
809    SET pcretest=\"${winexe}\"
810    if not [%CMAKE_CONFIG_TYPE%]==[] SET pcretest=\"${winbin}\\%CMAKE_CONFIG_TYPE%\\pcretest.exe\"
811    call %srcdir%\\RunTest.Bat
812    if errorlevel 1 exit /b 1
813    echo RunTest.bat tests successfully completed
814  ")  ")
815    
816  IF(UNIX)    ADD_TEST(NAME pcre_test_bat
817          ADD_TEST(pcre_test      ${CMAKE_SOURCE_DIR}/RunTest)    COMMAND pcre_test.bat)
818          ADD_TEST(pcre_grep_test ${CMAKE_SOURCE_DIR}/RunGrepTest)    SET_TESTS_PROPERTIES(pcre_test_bat PROPERTIES
819  ENDIF(UNIX)    PASS_REGULAR_EXPRESSION "RunTest\\.bat tests successfully completed")
820  IF(WIN32)  
821          ADD_TEST(pcre_test cmd /C ${CMAKE_SOURCE_DIR}/RunTest.bat)      IF("$ENV{OSTYPE}" STREQUAL "msys")
822  ENDIF(WIN32)        # Both the sh and bat file versions of RunTest are run if make test is used
823          # in msys
824          ADD_TEST(pcre_test_sh    sh.exe ${PROJECT_BINARY_DIR}/pcre_test.sh)
825          IF(PCRE_BUILD_PCREGREP)
826            ADD_TEST(pcre_grep_test  sh.exe ${PROJECT_BINARY_DIR}/pcre_grep_test.sh)
827          ENDIF(PCRE_BUILD_PCREGREP)
828        ENDIF("$ENV{OSTYPE}" STREQUAL "msys")
829    
830      ENDIF(WIN32)
831    
832      # Changed to accommodate testing whichever location was just built
833    
834      IF(PCRE_SUPPORT_JIT)
835        ADD_TEST(pcre_jit_test         pcre_jit_test)
836      ENDIF(PCRE_SUPPORT_JIT)
837    
838      IF(PCRE_BUILD_PCRECPP)
839        ADD_TEST(pcrecpp_test          pcrecpp_unittest)
840        ADD_TEST(pcre_scanner_test     pcre_scanner_unittest)
841        ADD_TEST(pcre_stringpiece_test pcre_stringpiece_unittest)
842      ENDIF(PCRE_BUILD_PCRECPP)
843    
844  GET_TARGET_PROPERTY(PCRECPP_UNITTEST_EXE  ENDIF(PCRE_BUILD_TESTS)
                     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})  
845    
846  # Installation  # Installation
   
847  SET(CMAKE_INSTALL_ALWAYS 1)  SET(CMAKE_INSTALL_ALWAYS 1)
848    
849  INSTALL(TARGETS pcre pcreposix pcregrep pcretest  INSTALL(TARGETS ${targets}
850          RUNTIME DESTINATION bin          RUNTIME DESTINATION bin
851          LIBRARY DESTINATION lib          LIBRARY DESTINATION lib
852          ARCHIVE DESTINATION lib)          ARCHIVE DESTINATION lib)
853    
854  INSTALL(FILES ${PCRE_HEADERS} ${PCREPOSIX_HEADERS} DESTINATION include)  INSTALL(FILES ${PCRE_HEADERS} ${PCREPOSIX_HEADERS} DESTINATION include)
855    
856  FILE(GLOB html ${CMAKE_SOURCE_DIR}/doc/html/*.html)  FILE(GLOB html ${PROJECT_SOURCE_DIR}/doc/html/*.html)
857  FILE(GLOB man1 ${CMAKE_SOURCE_DIR}/doc/*.1)  FILE(GLOB man1 ${PROJECT_SOURCE_DIR}/doc/*.1)
858  FILE(GLOB man3 ${CMAKE_SOURCE_DIR}/doc/*.3)  FILE(GLOB man3 ${PROJECT_SOURCE_DIR}/doc/*.3)
859    
860  IF(PCRE_BUILD_PCRECPP)  IF(PCRE_BUILD_PCRECPP)
861          INSTALL(TARGETS pcrecpp          INSTALL(FILES ${PCRECPP_HEADERS} DESTINATION include)
                 RUNTIME DESTINATION bin  
                 LIBRARY DESTINATION lib  
                 ARCHIVE DESTINATION lib)  
         INSTALL(FILES ${PCRECPP_HEADERS} DESTINATION include)  
862  ELSE(PCRE_BUILD_PCRECPP)  ELSE(PCRE_BUILD_PCRECPP)
863          # Remove pcrecpp.3          # Remove pcrecpp.3
864          FOREACH(man ${man3})          FOREACH(man ${man3})
865                  GET_FILENAME_COMPONENT(man_tmp ${man} NAME)                  GET_FILENAME_COMPONENT(man_tmp ${man} NAME)
866                  IF(NOT man_tmp STREQUAL "pcrecpp.3")                  IF(NOT man_tmp STREQUAL "pcrecpp.3")
867                          SET(man3_new ${man3} ${man})                          SET(man3_new ${man3} ${man})
868                  ENDIF(NOT man_tmp STREQUAL "pcrecpp.3")                  ENDIF(NOT man_tmp STREQUAL "pcrecpp.3")
869          ENDFOREACH(man ${man3})          ENDFOREACH(man ${man3})
870          SET(man3 ${man3_new})          SET(man3 ${man3_new})
871  ENDIF(PCRE_BUILD_PCRECPP)  ENDIF(PCRE_BUILD_PCRECPP)
872    
873  INSTALL(FILES ${man1} DESTINATION man/man1)  INSTALL(FILES ${man1} DESTINATION man/man1)
874  INSTALL(FILES ${man3} DESTINATION man/man3)  INSTALL(FILES ${man3} DESTINATION man/man3)
875  INSTALL(FILES ${html} DESTINATION share/doc/pcre/html)  INSTALL(FILES ${html} DESTINATION share/doc/pcre/html)
876    
877    # help, only for nice output
878    IF(BUILD_SHARED_LIBS)
879      SET(BUILD_STATIC_LIBS OFF)
880    ELSE(BUILD_SHARED_LIBS)
881      SET(BUILD_STATIC_LIBS ON)
882    ENDIF(BUILD_SHARED_LIBS)
883    
884    IF(PCRE_SHOW_REPORT)
885      STRING(TOUPPER "${CMAKE_BUILD_TYPE}" buildtype)
886      IF (CMAKE_C_FLAGS)
887        SET(cfsp " ")
888      ENDIF(CMAKE_C_FLAGS)
889      IF (CMAKE_CXX_FLAGS)
890        SET(cxxfsp " ")
891      ENDIF(CMAKE_CXX_FLAGS)
892      MESSAGE(STATUS "")
893      MESSAGE(STATUS "")
894      MESSAGE(STATUS "PCRE configuration summary:")
895      MESSAGE(STATUS "")
896      MESSAGE(STATUS "  Install prefix .................. : ${CMAKE_INSTALL_PREFIX}")
897      MESSAGE(STATUS "  C compiler ...................... : ${CMAKE_C_COMPILER}")
898      MESSAGE(STATUS "  C++ compiler .................... : ${CMAKE_CXX_COMPILER}")
899      MESSAGE(STATUS "  C compiler flags ................ : ${CMAKE_C_FLAGS}${cfsp}${CMAKE_C_FLAGS_${buildtype}}")
900      MESSAGE(STATUS "  C++ compiler flags .............. : ${CMAKE_CXX_FLAGS}${cxxfsp}${CMAKE_CXX_FLAGS_${buildtype}}")
901      MESSAGE(STATUS "")
902      MESSAGE(STATUS "  Build 8 bit PCRE library ........ : ${PCRE_BUILD_PCRE8}")
903      MESSAGE(STATUS "  Build 16 bit PCRE library ....... : ${PCRE_BUILD_PCRE16}")
904      MESSAGE(STATUS "  Build 32 bit PCRE library ....... : ${PCRE_BUILD_PCRE32}")
905      MESSAGE(STATUS "  Build C++ library ............... : ${PCRE_BUILD_PCRECPP}")
906      MESSAGE(STATUS "  Enable JIT compiling support .... : ${PCRE_SUPPORT_JIT}")
907      MESSAGE(STATUS "  Enable UTF support .............. : ${PCRE_SUPPORT_UTF}")
908      MESSAGE(STATUS "  Unicode properties .............. : ${PCRE_SUPPORT_UNICODE_PROPERTIES}")
909      MESSAGE(STATUS "  Newline char/sequence ........... : ${PCRE_NEWLINE}")
910      MESSAGE(STATUS "  \\R matches only ANYCRLF ......... : ${PCRE_SUPPORT_BSR_ANYCRLF}")
911      MESSAGE(STATUS "  EBCDIC coding ................... : ${PCRE_EBCDIC}")
912      MESSAGE(STATUS "  EBCDIC coding with NL=0x25 ...... : ${PCRE_EBCDIC_NL25}")
913      MESSAGE(STATUS "  Rebuild char tables ............. : ${PCRE_REBUILD_CHARTABLES}")
914      MESSAGE(STATUS "  No stack recursion .............. : ${PCRE_NO_RECURSE}")
915      MESSAGE(STATUS "  POSIX mem threshold ............. : ${PCRE_POSIX_MALLOC_THRESHOLD}")
916      MESSAGE(STATUS "  Internal link size .............. : ${PCRE_LINK_SIZE}")
917      MESSAGE(STATUS "  Match limit ..................... : ${PCRE_MATCH_LIMIT}")
918      MESSAGE(STATUS "  Match limit recursion ........... : ${PCRE_MATCH_LIMIT_RECURSION}")
919      MESSAGE(STATUS "  Build shared libs ............... : ${BUILD_SHARED_LIBS}")
920      MESSAGE(STATUS "  Build static libs ............... : ${BUILD_STATIC_LIBS}")
921      MESSAGE(STATUS "  Build pcregrep .................. : ${PCRE_BUILD_PCREGREP}")
922      MESSAGE(STATUS "  Enable JIT in pcregrep .......... : ${PCRE_SUPPORT_PCREGREP_JIT}")
923      MESSAGE(STATUS "  Buffer size for pcregrep ........ : ${PCREGREP_BUFSIZE}")
924      MESSAGE(STATUS "  Build tests (implies pcretest  .. : ${PCRE_BUILD_TESTS}")
925      MESSAGE(STATUS "               and pcregrep)")
926      IF(ZLIB_FOUND)
927        MESSAGE(STATUS "  Link pcregrep with libz ......... : ${PCRE_SUPPORT_LIBZ}")
928      ELSE(ZLIB_FOUND)
929        MESSAGE(STATUS "  Link pcregrep with libz ......... : Library not found" )
930      ENDIF(ZLIB_FOUND)
931      IF(BZIP2_FOUND)
932        MESSAGE(STATUS "  Link pcregrep with libbz2 ....... : ${PCRE_SUPPORT_LIBBZ2}")
933      ELSE(BZIP2_FOUND)
934        MESSAGE(STATUS "  Link pcregrep with libbz2 ....... : Library not found" )
935      ENDIF(BZIP2_FOUND)
936      IF(EDITLINE_FOUND)
937        MESSAGE(STATUS "  Link pcretest with libeditline .. : ${PCRE_SUPPORT_LIBEDIT}")
938      ELSE(EDITLINE_FOUND)
939        MESSAGE(STATUS "  Link pcretest with libeditline .. : Library not found" )
940      ENDIF(EDITLINE_FOUND)
941      IF(READLINE_FOUND)
942        MESSAGE(STATUS "  Link pcretest with libreadline .. : ${PCRE_SUPPORT_LIBREADLINE}")
943      ELSE(READLINE_FOUND)
944        MESSAGE(STATUS "  Link pcretest with libreadline .. : Library not found" )
945      ENDIF(READLINE_FOUND)
946      MESSAGE(STATUS "  Support Valgrind .................: ${PCRE_SUPPORT_VALGRIND}")
947      MESSAGE(STATUS "  Support coverage .................: ${PCRE_SUPPORT_COVERAGE}")
948    
949      IF(MINGW AND NOT PCRE_STATIC)
950        MESSAGE(STATUS "  Non-standard dll names (prefix) . : ${NON_STANDARD_LIB_PREFIX}")
951        MESSAGE(STATUS "  Non-standard dll names (suffix) . : ${NON_STANDARD_LIB_SUFFIX}")
952      ENDIF(MINGW AND NOT PCRE_STATIC)
953      MESSAGE(STATUS "")
954    ENDIF(PCRE_SHOW_REPORT)
955    
956  # end CMakeLists.txt  # end CMakeLists.txt

Legend:
Removed from v.200  
changed lines
  Added in v.1162

  ViewVC Help
Powered by ViewVC 1.1.5