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

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

  ViewVC Help
Powered by ViewVC 1.1.5