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

Legend:
Removed from v.137  
changed lines
  Added in v.411

  ViewVC Help
Powered by ViewVC 1.1.5