/[pcre]/code/tags/pcre-7.6/CMakeLists.txt
ViewVC logotype

Contents of /code/tags/pcre-7.6/CMakeLists.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 291 - (hide annotations) (download)
Wed Dec 26 18:46:46 2007 UTC (6 years, 7 months ago) by ph10
Original Path: code/trunk/CMakeLists.txt
File MIME type: text/plain
File size: 10759 byte(s)
Update CMake files for new build-arguments.

1 ph10 137 # CMakeLists.txt
2     #
3 ph10 258 #
4 ph10 137 # 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/
6     #
7     # Original listfile by Christian Ehrlicher <Ch.Ehrlicher@gmx.de>
8     # Refined and expanded by Daniel Richard G. <skunk@iSKUNK.ORG>
9 ph10 258 # 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 ph10 291 # 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 ph10 137 #
17    
18     PROJECT(PCRE C CXX)
19    
20     CMAKE_MINIMUM_REQUIRED(VERSION 2.4.6)
21    
22     # Configuration checks
23    
24     INCLUDE(CheckIncludeFile)
25     INCLUDE(CheckIncludeFileCXX)
26     INCLUDE(CheckFunctionExists)
27     INCLUDE(CheckTypeSize)
28    
29     CHECK_INCLUDE_FILE(dirent.h HAVE_DIRENT_H)
30     CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H)
31     CHECK_INCLUDE_FILE(sys/stat.h HAVE_SYS_STAT_H)
32     CHECK_INCLUDE_FILE(sys/types.h HAVE_SYS_TYPES_H)
33    
34 ph10 291 CHECK_INCLUDE_FILE(bzlib.h HAVE_BZLIB_H)
35     CHECK_INCLUDE_FILE(zlib.h HAVE_ZLIB_H)
36     CHECK_INCLUDE_FILE(readline/history.h HAVE_READLINE_HISTORY_H)
37     CHECK_INCLUDE_FILE(readline/readline.h HAVE_READLINE_READLINE_H)
38    
39 ph10 137 CHECK_INCLUDE_FILE_CXX(type_traits.h HAVE_TYPE_TRAITS_H)
40     CHECK_INCLUDE_FILE_CXX(bits/type_traits.h HAVE_BITS_TYPE_TRAITS_H)
41    
42     CHECK_FUNCTION_EXISTS(bcopy HAVE_BCOPY)
43     CHECK_FUNCTION_EXISTS(memmove HAVE_MEMMOVE)
44     CHECK_FUNCTION_EXISTS(strerror HAVE_STRERROR)
45    
46     CHECK_TYPE_SIZE("long long" LONG_LONG)
47     CHECK_TYPE_SIZE("unsigned long long" UNSIGNED_LONG_LONG)
48    
49     # User-configurable options
50     #
51     # (Note: CMakeSetup displays these in alphabetical order, regardless of
52     # the order we use here)
53    
54 ph10 144 SET(BUILD_SHARED_LIBS OFF CACHE BOOL
55     "Build shared libraries instead of static ones.")
56 ph10 137
57     OPTION(PCRE_BUILD_PCRECPP "Build the PCRE C++ library (pcrecpp)." ON)
58    
59 ph10 144 SET(PCRE_EBCDIC OFF CACHE BOOL
60 ph10 137 "Use EBCDIC coding instead of ASCII. (This is rarely used outside of mainframe systems)")
61    
62     SET(PCRE_LINK_SIZE "2" CACHE STRING
63     "Internal link size (2, 3 or 4 allowed). See LINK_SIZE in config.h.in for details.")
64    
65     SET(PCRE_MATCH_LIMIT "10000000" CACHE STRING
66     "Default limit on internal looping. See MATCH_LIMIT in config.h.in for details.")
67    
68     SET(PCRE_MATCH_LIMIT_RECURSION "MATCH_LIMIT" CACHE STRING
69     "Default limit on internal recursion. See MATCH_LIMIT_RECURSION in config.h.in for details.")
70    
71     SET(PCRE_NEWLINE "LF" CACHE STRING
72 ph10 258 "What to recognize as a newline (one of CR, LF, CRLF, ANY, ANYCRLF).")
73 ph10 137
74 ph10 199 SET(PCRE_NO_RECURSE OFF CACHE BOOL
75 ph10 137 "If ON, then don't use stack recursion when matching. See NO_RECURSE in config.h.in for details.")
76    
77     SET(PCRE_POSIX_MALLOC_THRESHOLD "10" CACHE STRING
78     "Threshold for malloc() usage. See POSIX_MALLOC_THRESHOLD in config.h.in for details.")
79    
80 ph10 144 SET(PCRE_SUPPORT_UNICODE_PROPERTIES OFF CACHE BOOL
81 ph10 137 "Enable support for Unicode properties. (If set, UTF-8 support will be enabled as well)")
82    
83 ph10 144 SET(PCRE_SUPPORT_UTF8 OFF CACHE BOOL
84 ph10 137 "Enable support for the Unicode UTF-8 encoding.")
85    
86 ph10 258 SET(PCRE_SUPPORT_BSR_ANYCRLF OFF CACHE BOOL
87     "ON=Backslash-R matches only LF CR and CRLF, OFF=Backslash-R matches all Unicode Linebreaks")
88    
89 ph10 291 SET(PCRE_SUPPORT_LIBBZ2 OFF CACHE BOOL
90     "Enable support for linking pcregrep with libbz2.")
91    
92     SET (PCRE_SUPPORT_LIBZ OFF CACHE BOOL
93     "Enable support for linking pcregrep with libz.")
94    
95     SET (PCRE_SUPPORT_LIBREADLINE OFF CACHE BOOL
96     "Enable support for linking pcretest with libreadline.")
97    
98 ph10 137 # Prepare build configuration
99    
100     SET(pcre_have_type_traits 0)
101     SET(pcre_have_bits_type_traits 0)
102    
103     IF(HAVE_TYPE_TRAITS_H)
104     SET(pcre_have_type_traits 1)
105     ENDIF(HAVE_TYPE_TRAITS_H)
106    
107     IF(HAVE_BITS_TYPE_TRAITS_H)
108     SET(pcre_have_bits_type_traits 1)
109     ENDIF(HAVE_BITS_TYPE_TRAITS_H)
110    
111     SET(pcre_have_long_long 0)
112     SET(pcre_have_ulong_long 0)
113    
114     IF(HAVE_LONG_LONG)
115     SET(pcre_have_long_long 1)
116     ENDIF(HAVE_LONG_LONG)
117    
118     IF(HAVE_UNSIGNED_LONG_LONG)
119     SET(pcre_have_ulong_long 1)
120     ENDIF(HAVE_UNSIGNED_LONG_LONG)
121    
122 ph10 144 IF(NOT BUILD_SHARED_LIBS)
123     SET(PCRE_STATIC 1)
124     ENDIF(NOT BUILD_SHARED_LIBS)
125    
126 ph10 258 IF(PCRE_SUPPORT_BSR_ANYCRLF)
127     SET(BSR_ANYCRLF 1)
128     ENDIF(PCRE_SUPPORT_BSR_ANYCRLF)
129    
130 ph10 137 IF(PCRE_SUPPORT_UTF8 OR PCRE_SUPPORT_UNICODE_PROPERTIES)
131     SET(SUPPORT_UTF8 1)
132     ENDIF(PCRE_SUPPORT_UTF8 OR PCRE_SUPPORT_UNICODE_PROPERTIES)
133    
134     IF(PCRE_SUPPORT_UNICODE_PROPERTIES)
135     SET(SUPPORT_UCP 1)
136     ENDIF(PCRE_SUPPORT_UNICODE_PROPERTIES)
137    
138 ph10 291 IF(PCRE_SUPPORT_LIBREADLINE)
139     SET(SUPPORT_LIBREADLINE 1)
140     SET(PCRETEST_LIBS readline)
141     ENDIF(PCRE_SUPPORT_LIBREADLINE)
142    
143     IF(PCRE_SUPPORT_LIBZ)
144     SET(SUPPORT_LIBZ 1)
145     SET(PCREGREP_LIBS z)
146     ENDIF(PCRE_SUPPORT_LIBZ)
147    
148     IF(PCRE_SUPPORT_LIBBZ2)
149     SET(SUPPORT_LIBBZ2 1)
150     SET(PCREGREP_LIBS ${PCREGREP_LIBS} bz2)
151     ENDIF(PCRE_SUPPORT_LIBBZ2)
152    
153 ph10 144 SET(NEWLINE "")
154    
155 ph10 137 IF(PCRE_NEWLINE STREQUAL "LF")
156 ph10 144 SET(NEWLINE "10")
157     ENDIF(PCRE_NEWLINE STREQUAL "LF")
158     IF(PCRE_NEWLINE STREQUAL "CR")
159     SET(NEWLINE "13")
160     ENDIF(PCRE_NEWLINE STREQUAL "CR")
161     IF(PCRE_NEWLINE STREQUAL "CRLF")
162     SET(NEWLINE "3338")
163     ENDIF(PCRE_NEWLINE STREQUAL "CRLF")
164     IF(PCRE_NEWLINE STREQUAL "ANY")
165 ph10 137 SET(NEWLINE "-1")
166 ph10 144 ENDIF(PCRE_NEWLINE STREQUAL "ANY")
167 ph10 258 IF(PCRE_NEWLINE STREQUAL "ANYCRLF")
168     SET(NEWLINE "-2")
169     ENDIF(PCRE_NEWLINE STREQUAL "ANYCRLF")
170 ph10 144
171     IF(NEWLINE STREQUAL "")
172 ph10 258 MESSAGE(FATAL_ERROR "The PCRE_NEWLINE variable must be set to one of the following values: \"LF\", \"CR\", \"CRLF\", \"ANY\", \"ANYCRLF\".")
173 ph10 144 ENDIF(NEWLINE STREQUAL "")
174 ph10 137
175     IF(PCRE_EBCDIC)
176     SET(EBCDIC 1)
177     ENDIF(PCRE_EBCDIC)
178    
179     IF(PCRE_NO_RECURSE)
180     SET(NO_RECURSE 1)
181     ENDIF(PCRE_NO_RECURSE)
182    
183     # Output files
184    
185     CONFIGURE_FILE(config-cmake.h.in
186     ${CMAKE_BINARY_DIR}/config.h
187     @ONLY)
188    
189     CONFIGURE_FILE(pcre.h.generic
190     ${CMAKE_BINARY_DIR}/pcre.h
191     COPYONLY)
192    
193     # What about pcre-config and libpcre.pc?
194    
195     IF(PCRE_BUILD_PCRECPP)
196     CONFIGURE_FILE(pcre_stringpiece.h.in
197 ph10 140 ${CMAKE_BINARY_DIR}/pcre_stringpiece.h
198     @ONLY)
199 ph10 137
200     CONFIGURE_FILE(pcrecpparg.h.in
201 ph10 140 ${CMAKE_BINARY_DIR}/pcrecpparg.h
202     @ONLY)
203 ph10 137 ENDIF(PCRE_BUILD_PCRECPP)
204    
205     # Character table generation
206    
207     ADD_EXECUTABLE(dftables dftables.c)
208    
209     GET_TARGET_PROPERTY(DFTABLES_EXE dftables LOCATION)
210    
211     ADD_CUSTOM_COMMAND(
212     COMMENT "Generating character tables (pcre_chartables.c) for current locale"
213     DEPENDS dftables
214     COMMAND ${DFTABLES_EXE}
215 ph10 140 ARGS ${CMAKE_BINARY_DIR}/pcre_chartables.c
216     OUTPUT ${CMAKE_BINARY_DIR}/pcre_chartables.c
217 ph10 137 )
218    
219     # Source code
220    
221     SET(PCRE_HEADERS ${CMAKE_BINARY_DIR}/pcre.h)
222    
223     SET(PCRE_SOURCES
224     ${CMAKE_BINARY_DIR}/pcre_chartables.c
225     pcre_compile.c
226     pcre_config.c
227     pcre_dfa_exec.c
228     pcre_exec.c
229     pcre_fullinfo.c
230     pcre_get.c
231     pcre_globals.c
232     pcre_info.c
233     pcre_newline.c
234     pcre_maketables.c
235     pcre_ord2utf8.c
236     pcre_refcount.c
237     pcre_study.c
238     pcre_tables.c
239     pcre_try_flipped.c
240     pcre_ucp_searchfuncs.c
241     pcre_valid_utf8.c
242     pcre_version.c
243     pcre_xclass.c
244     )
245    
246     SET(PCREPOSIX_HEADERS pcreposix.h)
247    
248     SET(PCREPOSIX_SOURCES pcreposix.c)
249    
250     SET(PCRECPP_HEADERS
251     pcrecpp.h
252     pcre_scanner.h
253     ${CMAKE_BINARY_DIR}/pcrecpparg.h
254     ${CMAKE_BINARY_DIR}/pcre_stringpiece.h
255     )
256    
257     SET(PCRECPP_SOURCES
258     pcrecpp.cc
259     pcre_scanner.cc
260     pcre_stringpiece.cc
261     )
262    
263     # Build setup
264    
265     ADD_DEFINITIONS(-DHAVE_CONFIG_H)
266    
267     IF(WIN32)
268     ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE)
269     ENDIF(WIN32)
270    
271     SET(CMAKE_INCLUDE_CURRENT_DIR 1)
272    
273     #SET(CMAKE_DEBUG_POSTFIX "d")
274    
275     # Libraries
276    
277     ADD_LIBRARY(pcre ${PCRE_HEADERS} ${PCRE_SOURCES})
278    
279     ADD_LIBRARY(pcreposix ${PCREPOSIX_HEADERS} ${PCREPOSIX_SOURCES})
280     TARGET_LINK_LIBRARIES(pcreposix pcre)
281    
282 ph10 291 IF(NOT UNIX)
283 ph10 258 SET_TARGET_PROPERTIES(pcre pcreposix
284     PROPERTIES PREFIX ""
285     )
286 ph10 291 ENDIF(NOT UNIX)
287 ph10 258
288 ph10 137 IF(PCRE_BUILD_PCRECPP)
289     ADD_LIBRARY(pcrecpp ${PCRECPP_HEADERS} ${PCRECPP_SOURCES})
290     TARGET_LINK_LIBRARIES(pcrecpp pcre)
291     IF(MINGW)
292     SET_TARGET_PROPERTIES(pcrecpp PROPERTIES PREFIX "mingw-")
293     ENDIF(MINGW)
294     ENDIF(PCRE_BUILD_PCRECPP)
295    
296     # Executables
297    
298     ADD_EXECUTABLE(pcretest pcretest.c)
299 ph10 291 TARGET_LINK_LIBRARIES(pcretest pcreposix ${PCRETEST_LIBS})
300 ph10 137
301     ADD_EXECUTABLE(pcregrep pcregrep.c)
302 ph10 291 TARGET_LINK_LIBRARIES(pcregrep pcreposix ${PCREGREP_LIBS})
303 ph10 137
304 ph10 144 IF(PCRE_BUILD_PCRECPP)
305     ADD_EXECUTABLE(pcrecpp_unittest pcrecpp_unittest.cc)
306     TARGET_LINK_LIBRARIES(pcrecpp_unittest pcrecpp)
307    
308     ADD_EXECUTABLE(pcre_scanner_unittest pcre_scanner_unittest.cc)
309     TARGET_LINK_LIBRARIES(pcre_scanner_unittest pcrecpp)
310    
311     ADD_EXECUTABLE(pcre_stringpiece_unittest pcre_stringpiece_unittest.cc)
312     TARGET_LINK_LIBRARIES(pcre_stringpiece_unittest pcrecpp)
313     ENDIF(PCRE_BUILD_PCRECPP)
314    
315 ph10 137 # Testing
316    
317     ENABLE_TESTING()
318    
319 ph10 144 GET_TARGET_PROPERTY(PCREGREP_EXE pcregrep DEBUG_LOCATION)
320     GET_TARGET_PROPERTY(PCRETEST_EXE pcretest DEBUG_LOCATION)
321    
322     # Write out a CTest configuration file that sets some needed environment
323     # variables for the test scripts.
324     #
325     FILE(WRITE ${CMAKE_BINARY_DIR}/CTestCustom.ctest
326     "# This is a generated file.
327     SET(ENV{srcdir} ${CMAKE_SOURCE_DIR})
328     SET(ENV{pcregrep} ${PCREGREP_EXE})
329     SET(ENV{pcretest} ${PCRETEST_EXE})
330     ")
331    
332 ph10 137 IF(UNIX)
333 ph10 199 ADD_TEST(pcre_test ${CMAKE_SOURCE_DIR}/RunTest)
334 ph10 144 ADD_TEST(pcre_grep_test ${CMAKE_SOURCE_DIR}/RunGrepTest)
335 ph10 137 ENDIF(UNIX)
336 ph10 144 IF(WIN32)
337     ADD_TEST(pcre_test cmd /C ${CMAKE_SOURCE_DIR}/RunTest.bat)
338     ENDIF(WIN32)
339 ph10 137
340 ph10 144 GET_TARGET_PROPERTY(PCRECPP_UNITTEST_EXE
341     pcrecpp_unittest
342     DEBUG_LOCATION)
343    
344     GET_TARGET_PROPERTY(PCRE_SCANNER_UNITTEST_EXE
345     pcre_scanner_unittest
346     DEBUG_LOCATION)
347    
348     GET_TARGET_PROPERTY(PCRE_STRINGPIECE_UNITTEST_EXE
349     pcre_stringpiece_unittest
350     DEBUG_LOCATION)
351    
352     ADD_TEST(pcrecpp_test ${PCRECPP_UNITTEST_EXE})
353     ADD_TEST(pcre_scanner_test ${PCRE_SCANNER_UNITTEST_EXE})
354     ADD_TEST(pcre_stringpiece_test ${PCRE_STRINGPIECE_UNITTEST_EXE})
355    
356 ph10 137 # Installation
357    
358     SET(CMAKE_INSTALL_ALWAYS 1)
359    
360     INSTALL(TARGETS pcre pcreposix pcregrep pcretest
361     RUNTIME DESTINATION bin
362     LIBRARY DESTINATION lib
363     ARCHIVE DESTINATION lib)
364    
365     INSTALL(FILES ${PCRE_HEADERS} ${PCREPOSIX_HEADERS} DESTINATION include)
366    
367     FILE(GLOB html ${CMAKE_SOURCE_DIR}/doc/html/*.html)
368     FILE(GLOB man1 ${CMAKE_SOURCE_DIR}/doc/*.1)
369     FILE(GLOB man3 ${CMAKE_SOURCE_DIR}/doc/*.3)
370    
371     IF(PCRE_BUILD_PCRECPP)
372 ph10 200 INSTALL(TARGETS pcrecpp
373 ph10 258 RUNTIME DESTINATION bin
374     LIBRARY DESTINATION lib
375     ARCHIVE DESTINATION lib)
376 ph10 137 INSTALL(FILES ${PCRECPP_HEADERS} DESTINATION include)
377     ELSE(PCRE_BUILD_PCRECPP)
378     # Remove pcrecpp.3
379     FOREACH(man ${man3})
380     GET_FILENAME_COMPONENT(man_tmp ${man} NAME)
381     IF(NOT man_tmp STREQUAL "pcrecpp.3")
382     SET(man3_new ${man3} ${man})
383     ENDIF(NOT man_tmp STREQUAL "pcrecpp.3")
384     ENDFOREACH(man ${man3})
385     SET(man3 ${man3_new})
386     ENDIF(PCRE_BUILD_PCRECPP)
387    
388     INSTALL(FILES ${man1} DESTINATION man/man1)
389     INSTALL(FILES ${man3} DESTINATION man/man3)
390 ph10 199 INSTALL(FILES ${html} DESTINATION share/doc/pcre/html)
391 ph10 137
392     # end CMakeLists.txt

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12