blob: c115bb0aea07e31398b5877cd78e4d728004049e [file] [log] [blame]
Thomas Klausner3efb9ee2007-03-04 10:43:58 +00001# XXX: TODO
2# 1. pkgconfig file not yet built.
3# 2. installation not tested.
4# 3. Problems generating html pages.
5# 4. distribution tarball not checked for unwanted/missing content.
6# 5. create usable libtool .la file
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +00007
Thomas Klausner7380d682008-11-09 15:17:41 +01008CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
9
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000010PROJECT(libzip C)
11
12INCLUDE(CheckFunctionExists)
13INCLUDE(CheckIncludeFiles)
14INCLUDE(CheckSymbolExists)
Thomas Klausnere0b16f62008-11-09 19:35:47 +010015INCLUDE(CheckTypeSize)
Thomas Klausner48c15402010-02-03 10:17:41 +010016INCLUDE(CheckCSourceRuns)
17INCLUDE(CheckCSourceCompiles)
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000018
19SET(PACKAGE "libzip")
20SET(PACKAGE_NAME ${PACKAGE})
21SET(PACKAGE_VERSION_MAJOR "0")
Thomas Klausner76b73222011-02-14 12:30:41 +010022SET(PACKAGE_VERSION_MINOR "10")
23SET(PACKAGE_VERSION_PATCH "rc1")
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000024SET(VERSION "${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}.${PACKAGE_VERSION_PATCH}")
25SET(PACKAGE_VERSION ${VERSION})
26SET(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
27
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000028# Checks
29
Thomas Klausnerfd44eda2010-02-03 16:34:36 +010030CHECK_FUNCTION_EXISTS(_open HAVE__OPEN)
31CHECK_FUNCTION_EXISTS(_snprintf HAVE__SNPRINTF)
32CHECK_FUNCTION_EXISTS(_strcmpi HAVE__STRCMPI)
33CHECK_FUNCTION_EXISTS(_strdup HAVE__STRDUP)
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000034CHECK_FUNCTION_EXISTS(fseeko HAVE_FSEEKO)
Thomas Klausnerfd44eda2010-02-03 16:34:36 +010035CHECK_FUNCTION_EXISTS(ftello HAVE_FTELLO)
36CHECK_FUNCTION_EXISTS(open HAVE_OPEN)
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000037CHECK_FUNCTION_EXISTS(mkstemp HAVE_MKSTEMP)
Thomas Klausnerfd44eda2010-02-03 16:34:36 +010038CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF)
39CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP)
40CHECK_FUNCTION_EXISTS(strdup HAVE_STRDUP)
Thomas Klausner6be56ae2010-02-05 18:10:18 +010041CHECK_SYMBOL_EXISTS(MoveFileExA windows.h HAVE_MOVEFILEEXA)
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000042CHECK_INCLUDE_FILES(unistd.h HAVE_UNISTD_H)
43
Thomas Klausner17589302008-11-09 20:55:52 +010044CHECK_INCLUDE_FILES(sys/types.h HAVE_SYS_TYPES_H_LIBZIP)
45CHECK_INCLUDE_FILES(inttypes.h HAVE_INTTYPES_H_LIBZIP)
Dieter Baron3f1f0982011-02-20 13:47:26 +010046CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H_LIBZIP)
Thomas Klausner17589302008-11-09 20:55:52 +010047CHECK_TYPE_SIZE(int8_t INT8_T_LIBZIP)
48CHECK_TYPE_SIZE(uint8_t UINT8_T_LIBZIP)
49CHECK_TYPE_SIZE(int16_t INT16_T_LIBZIP)
50CHECK_TYPE_SIZE(uint16_t UINT16_T_LIBZIP)
51CHECK_TYPE_SIZE(int32_t INT32_T_LIBZIP)
52CHECK_TYPE_SIZE(uint32_t UINT32_T_LIBZIP)
53CHECK_TYPE_SIZE(int64_t INT64_T_LIBZIP)
54CHECK_TYPE_SIZE(uint64_t UINT64_T_LIBZIP)
Thomas Klausner6be56ae2010-02-05 18:10:18 +010055CHECK_TYPE_SIZE("short" SHORT_LIBZIP)
56CHECK_TYPE_SIZE("int" INT_LIBZIP)
57CHECK_TYPE_SIZE("long" LONG_LIBZIP)
Thomas Klausner4136f232008-11-10 15:07:06 +010058CHECK_TYPE_SIZE("long long" LONGLONG_LIBZIP)
Thomas Klausnere0b16f62008-11-09 19:35:47 +010059
Thomas Klausner2d01a6b2008-11-09 15:48:51 +010060FIND_PACKAGE(ZLIB REQUIRED)
61INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
Thomas Klausner6be56ae2010-02-05 18:10:18 +010062set(CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIR})
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000063CHECK_SYMBOL_EXISTS(ZEXPORT zlib.h HAVE_ZEXPORT)
64IF(NOT HAVE_ZEXPORT)
65 MESSAGE(FATAL_ERROR "-- ZLIB version too old, please install at least v1.1.2")
66ENDIF(NOT HAVE_ZEXPORT)
67
68# Targets
Thomas Klausner6be56ae2010-02-05 18:10:18 +010069ADD_SUBDIRECTORY(lib)
70ADD_SUBDIRECTORY(man)
71ADD_SUBDIRECTORY(src)
72ADD_SUBDIRECTORY(regress)
73
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000074
75# XXX: pkgconfig file
76
77# installation
78
79# XXX: pkgconfig file
80
81# packaging
82
83SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "library for manipulating zip archives")
84SET(CPACK_PACKAGE_VENDOR "Dieter Baron <dillo@giga.or.at> and Thomas Klausner <tk@giga.or.at>")
85SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
Thomas Klausner2d01a6b2008-11-09 15:48:51 +010086SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000087SET(CPACK_PACKAGE_VERSION_MAJOR ${PACKAGE_VERSION_MAJOR})
88SET(CPACK_PACKAGE_VERSION_MINOR ${PACKAGE_VERSION_MINOR})
89SET(CPACK_PACKAGE_VERSION_PATCH ${PACKAGE_VERSION_PATCH})
90SET(CPACK_SOURCE_PACKAGE_FILE_NAME ${PACKAGE_NAME}-${PACKAGE_VERSION})
91SET(CPACK_GENERATOR "TGZ")
92SET(CPACK_SOURCE_GENERATOR "TGZ")
93SET(CPACK_SOURCE_IGNORE_FILES
94 ".a$"
95 ".cmake$"
96 ".o$"
97 ".so$"
98 "/.deps/"
99 "/.libs/"
100 "/CMakeFiles/"
101 "/CVS/"
102 "/autom4te.cache/"
103 "/build"
104 "/broken"
105 "/docs/"
106 "AdditionalInfo.txt$"
107 "CMakeCache.txt$"
108 "Makefile$"
109 "\\\\.sh$"
110 "_CPack_"
111 "config.h$"
112 "config.log$"
113 "config.status$"
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +0000114 "html$"
115 "install_manifest.txt$"
116 "stamp-h1$"
117 "tar.bz2"
118 "tar.gz"
119 "~$"
120)
121SET(CPACK_SOURCE_STRIP_FILES "")
122INCLUDE(CPack)
123
124# write out config file
125CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake-config.h.in
126 ${CMAKE_CURRENT_BINARY_DIR}/config.h)
Thomas Klausnere0b16f62008-11-09 19:35:47 +0100127CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake-zipconf.h.in
128 ${CMAKE_CURRENT_BINARY_DIR}/zipconf.h)
Thomas Klausner17589302008-11-09 20:55:52 +0100129
130INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/zipconf.h DESTINATION lib/libzip/include)