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

Legend:
Removed from v.142  
changed lines
  Added in v.318

  ViewVC Help
Powered by ViewVC 1.1.5