Recurse into children to find address ranges when the parent doesn't provide any
[hiphop-php.git] / third-party / libzip / CMakeLists.txt
blob75d4e39555f4b8d6099c17416a0eb7f8446ccea8
1 # TODO:
2 # 1. pkgconfig file not yet built.
3 # 2. installation not tested.
4 # 3. Problems generating html pages.
5 # 4. create usable libtool .la file
7 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
9 PROJECT(libzip C)
11 INCLUDE(CheckFunctionExists)
12 INCLUDE(CheckIncludeFiles)
13 INCLUDE(CheckSymbolExists)
14 INCLUDE(CheckTypeSize)
15 INCLUDE(CheckCSourceRuns)
16 INCLUDE(CheckCSourceCompiles)
17 INCLUDE(CheckStructHasMember)
19 SET(PACKAGE "libzip")
20 SET(PACKAGE_NAME ${PACKAGE})
21 SET(PACKAGE_VERSION_MAJOR "1")
22 SET(PACKAGE_VERSION_MINOR "1")
23 SET(PACKAGE_VERSION_PATCH "3")
24 #SET(VERSION "${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}")
25 SET(VERSION "${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}.${PACKAGE_VERSION_PATCH}")
26 SET(PACKAGE_VERSION ${VERSION})
27 SET(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
29 # Checks
31 CHECK_FUNCTION_EXISTS(_close HAVE__CLOSE)
32 CHECK_FUNCTION_EXISTS(_dup HAVE__DUP)
33 CHECK_FUNCTION_EXISTS(_fdopen HAVE__FDOPEN)
34 CHECK_FUNCTION_EXISTS(_fileno HAVE__FILENO)
35 CHECK_FUNCTION_EXISTS(_open HAVE__OPEN)
36 CHECK_FUNCTION_EXISTS(_setmode HAVE__SETMODE)
37 CHECK_FUNCTION_EXISTS(_snprintf HAVE__SNPRINTF)
38 CHECK_FUNCTION_EXISTS(_strdup HAVE__STRDUP)
39 CHECK_FUNCTION_EXISTS(_stricmp HAVE__STRICMP)
40 CHECK_FUNCTION_EXISTS(fileno HAVE_FILENO)
41 CHECK_FUNCTION_EXISTS(fseeko HAVE_FSEEKO)
42 CHECK_FUNCTION_EXISTS(ftello HAVE_FTELLO)
43 CHECK_FUNCTION_EXISTS(getprogname HAVE_GETPROGNAME)
44 CHECK_FUNCTION_EXISTS(open HAVE_OPEN)
45 CHECK_FUNCTION_EXISTS(mkstemp HAVE_MKSTEMP)
46 CHECK_FUNCTION_EXISTS(setmode HAVE_SETMODE)
47 CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF)
48 CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP)
49 CHECK_FUNCTION_EXISTS(strdup HAVE_STRDUP)
50 CHECK_FUNCTION_EXISTS(stricmp HAVE_STRICMP)
52 CHECK_INCLUDE_FILES(fts.h HAVE_FTS_H)
53 CHECK_INCLUDE_FILES(stdbool.h HAVE_STDBOOL_H)
54 CHECK_INCLUDE_FILES(strings.h HAVE_STRINGS_H)
55 CHECK_INCLUDE_FILES(unistd.h HAVE_UNISTD_H)
57 CHECK_INCLUDE_FILES(inttypes.h HAVE_INTTYPES_H_LIBZIP)
58 CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H_LIBZIP)
59 CHECK_INCLUDE_FILES(sys/types.h HAVE_SYS_TYPES_H_LIBZIP)
61 # TODO: fix test
62 # this test does not find __progname even when it exists
63 #CHECK_SYMBOL_EXISTS(__progname stdlib.h HAVE___PROGNAME)
65 CHECK_TYPE_SIZE(__int8 __INT8_LIBZIP)
66 CHECK_TYPE_SIZE(int8_t INT8_T_LIBZIP)
67 CHECK_TYPE_SIZE(uint8_t UINT8_T_LIBZIP)
68 CHECK_TYPE_SIZE(__int16 __INT16_LIBZIP)
69 CHECK_TYPE_SIZE(int16_t INT16_T_LIBZIP)
70 CHECK_TYPE_SIZE(uint16_t UINT16_T_LIBZIP)
71 CHECK_TYPE_SIZE(__int32 __INT32_LIBZIP)
72 CHECK_TYPE_SIZE(int32_t INT32_T_LIBZIP)
73 CHECK_TYPE_SIZE(uint32_t UINT32_T_LIBZIP)
74 CHECK_TYPE_SIZE(__int64 __INT64_LIBZIP)
75 CHECK_TYPE_SIZE(int64_t INT64_T_LIBZIP)
76 CHECK_TYPE_SIZE(uint64_t UINT64_T_LIBZIP)
77 CHECK_TYPE_SIZE("short" SHORT_LIBZIP)
78 CHECK_TYPE_SIZE("int" INT_LIBZIP)
79 CHECK_TYPE_SIZE("long" LONG_LIBZIP)
80 CHECK_TYPE_SIZE("long long" LONG_LONG_LIBZIP)
81 CHECK_TYPE_SIZE("off_t" SIZEOF_OFF_T)
82 CHECK_TYPE_SIZE("size_t" SIZE_T_LIBZIP)
83 CHECK_TYPE_SIZE("ssize_t" SSIZE_T_LIBZIP)
85 FIND_PACKAGE(ZLIB REQUIRED)
86 INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
87 set(CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIR})
88 IF(ZLIB_VERSION_STRING VERSION_LESS "1.1.2")
89   MESSAGE(FATAL_ERROR "-- ZLIB version too old, please install at least v1.1.2")
90 ENDIF(ZLIB_VERSION_STRING VERSION_LESS "1.1.2")
92 IF(MSVC)
93 ADD_DEFINITIONS("-D_CRT_SECURE_NO_WARNINGS")
94 ENDIF(MSVC)
96 ADD_DEFINITIONS("-DHAVE_CONFIG_H")
97 ADD_DEFINITIONS("-DZIP_STATIC")
98 ADD_DEFINITIONS(-UPACKAGE -UPACKAGE_VERSION)
100 # TODO: pkgconfig file
102 # write out config file
103 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/src/cmake-config.h.in
104   ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/config.h)
105 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/src/cmake-zipconf.h.in
106   ${CMAKE_CURRENT_BINARY_DIR}/src/lib/zipconf.h)
108 SET(LIBZIP_SOURCES
109   src/lib/zip_add.c
110   src/lib/zip_add_dir.c
111   src/lib/zip_add_entry.c
112   src/lib/zip_buffer.c
113   src/lib/zip_close.c
114   src/lib/zip_delete.c
115   src/lib/zip_dir_add.c
116   src/lib/zip_dirent.c
117   src/lib/zip_discard.c
118   src/lib/zip_entry.c
119   src/lib/zip_err_str.c
120   src/lib/zip_error.c
121   src/lib/zip_error_clear.c
122   src/lib/zip_error_get.c
123   src/lib/zip_error_get_sys_type.c
124   src/lib/zip_error_strerror.c
125   src/lib/zip_error_to_str.c
126   src/lib/zip_extra_field.c
127   src/lib/zip_extra_field_api.c
128   src/lib/zip_fclose.c
129   src/lib/zip_fdopen.c
130   src/lib/zip_file_add.c
131   src/lib/zip_file_error_clear.c
132   src/lib/zip_file_error_get.c
133   src/lib/zip_file_get_comment.c
134   src/lib/zip_file_get_external_attributes.c
135   src/lib/zip_file_get_offset.c
136   src/lib/zip_file_rename.c
137   src/lib/zip_file_replace.c
138   src/lib/zip_file_set_comment.c
139   src/lib/zip_file_set_external_attributes.c
140   src/lib/zip_file_set_mtime.c
141   src/lib/zip_file_strerror.c
142   src/lib/zip_filerange_crc.c
143   src/lib/zip_fopen.c
144   src/lib/zip_fopen_encrypted.c
145   src/lib/zip_fopen_index.c
146   src/lib/zip_fopen_index_encrypted.c
147   src/lib/zip_fread.c
148   src/lib/zip_get_archive_comment.c
149   src/lib/zip_get_archive_flag.c
150   src/lib/zip_get_compression_implementation.c
151   src/lib/zip_get_encryption_implementation.c
152   src/lib/zip_get_file_comment.c
153   src/lib/zip_get_name.c
154   src/lib/zip_get_num_entries.c
155   src/lib/zip_get_num_files.c
156   src/lib/zip_hash.c
157   src/lib/zip_io_util.c
158   src/lib/zip_memdup.c
159   src/lib/zip_name_locate.c
160   src/lib/zip_new.c
161   src/lib/zip_open.c
162   src/lib/zip_rename.c
163   src/lib/zip_replace.c
164   src/lib/zip_set_archive_comment.c
165   src/lib/zip_set_archive_flag.c
166   src/lib/zip_set_default_password.c
167   src/lib/zip_set_file_comment.c
168   src/lib/zip_set_file_compression.c
169   src/lib/zip_set_name.c
170   src/lib/zip_source_begin_write.c
171   src/lib/zip_source_buffer.c
172   src/lib/zip_source_call.c
173   src/lib/zip_source_close.c
174   src/lib/zip_source_commit_write.c
175   src/lib/zip_source_crc.c
176   src/lib/zip_source_deflate.c
177   src/lib/zip_source_error.c
178   src/lib/zip_source_filep.c
179   src/lib/zip_source_free.c
180   src/lib/zip_source_function.c
181   src/lib/zip_source_is_deleted.c
182   src/lib/zip_source_layered.c
183   src/lib/zip_source_open.c
184   src/lib/zip_source_pkware.c
185   src/lib/zip_source_read.c
186   src/lib/zip_source_remove.c
187   src/lib/zip_source_rollback_write.c
188   src/lib/zip_source_seek.c
189   src/lib/zip_source_seek_write.c
190   src/lib/zip_source_stat.c
191   src/lib/zip_source_supports.c
192   src/lib/zip_source_tell.c
193   src/lib/zip_source_tell_write.c
194   src/lib/zip_source_window.c
195   src/lib/zip_source_write.c
196   src/lib/zip_source_zip.c
197   src/lib/zip_source_zip_new.c
198   src/lib/zip_stat.c
199   src/lib/zip_stat_index.c
200   src/lib/zip_stat_init.c
201   src/lib/zip_strerror.c
202   src/lib/zip_string.c
203   src/lib/zip_unchange.c
204   src/lib/zip_unchange_all.c
205   src/lib/zip_unchange_archive.c
206   src/lib/zip_unchange_data.c
207   src/lib/zip_utf-8.c
210 IF(WIN32)
211   SET(LIBZIP_OPSYS_FILES
212     src/lib/zip_source_win32a.c
213     src/lib/zip_source_win32handle.c
214     src/lib/zip_source_win32utf8.c
215     src/lib/zip_source_win32w.c
216   )
217 ELSE(WIN32)
218   SET(LIBZIP_OPSYS_FILES
219     src/lib/zip_source_file.c
220   )
221 ENDIF(WIN32)
223 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/src/lib/
224   ${CMAKE_CURRENT_BINARY_DIR}/src/..)
226 CHECK_FUNCTION_EXISTS(mkstemp HAVE_MKSTEMP)
227 IF(NOT HAVE_MKSTEMP)
228   SET(LIBZIP_EXTRA_FILES src/lib/mkstemp.c)
229 ENDIF(NOT HAVE_MKSTEMP)
231 ADD_LIBRARY(zip_static STATIC ${LIBZIP_SOURCES} ${LIBZIP_EXTRA_FILES} ${LIBZIP_OPSYS_FILES})
232 TARGET_LINK_LIBRARIES(zip_static ${ZLIB_LIBRARY})
233 TARGET_COMPILE_DEFINITIONS(zip_static PUBLIC "ZIP_EXTERN=")
234 # To pick up zipconf.h
235 TARGET_INCLUDE_DIRECTORIES(zip_static PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/src/lib)