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

Legend:
Removed from v.140  
changed lines
  Added in v.475

  ViewVC Help
Powered by ViewVC 1.1.5