Imported Upstream version 1.1.3
[platform/upstream/libzip.git] / CMakeLists.txt
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
6
7 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
8
9 PROJECT(libzip C)
10
11 INCLUDE(CheckFunctionExists)
12 INCLUDE(CheckIncludeFiles)
13 INCLUDE(CheckSymbolExists)
14 INCLUDE(CheckTypeSize)
15 INCLUDE(CheckCSourceRuns)
16 INCLUDE(CheckCSourceCompiles)
17 INCLUDE(CheckStructHasMember)
18
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}")
28
29 # Checks
30
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)
51
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)
56
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)
60
61 # TODO: fix test
62 # this test does not find __progname even when it exists
63 #CHECK_SYMBOL_EXISTS(__progname stdlib.h HAVE___PROGNAME)
64
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)
84
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")
91
92 IF(MSVC)
93 ADD_DEFINITIONS("-D_CRT_SECURE_NO_WARNINGS")
94 ENDIF(MSVC)
95
96 ADD_DEFINITIONS("-DHAVE_CONFIG_H")
97
98 # Targets
99 ADD_SUBDIRECTORY(lib)
100 ADD_SUBDIRECTORY(man)
101 ADD_SUBDIRECTORY(src)
102 ADD_SUBDIRECTORY(regress)
103 ADD_SUBDIRECTORY(examples)
104
105 # TODO: pkgconfig file
106
107 # write out config file
108 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake-config.h.in
109   ${CMAKE_CURRENT_BINARY_DIR}/config.h)
110 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake-zipconf.h.in
111   ${CMAKE_CURRENT_BINARY_DIR}/zipconf.h)
112
113 # installation
114
115 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/zipconf.h DESTINATION lib/libzip/include)