blob: 6eb86abd9c6bad5d2f81c1ca055591bcf7c642d1 [file] [log] [blame]
Thomas Klausnerb52bda02013-11-28 18:01:40 +01001# TODO:
Thomas Klausner3efb9ee2007-03-04 10:43:58 +00002# 1. pkgconfig file not yet built.
3# 2. installation not tested.
4# 3. Problems generating html pages.
Thomas Klausnerea8ba492014-09-23 16:54:47 +02005# 4. create usable libtool .la file
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +00006
Thomas Klausner7380d682008-11-09 15:17:41 +01007CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
8
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +00009PROJECT(libzip C)
10
11INCLUDE(CheckFunctionExists)
12INCLUDE(CheckIncludeFiles)
13INCLUDE(CheckSymbolExists)
Thomas Klausnere0b16f62008-11-09 19:35:47 +010014INCLUDE(CheckTypeSize)
Thomas Klausner48c15402010-02-03 10:17:41 +010015INCLUDE(CheckCSourceRuns)
16INCLUDE(CheckCSourceCompiles)
Thomas Klausnerb174cc62013-11-28 12:49:50 +010017INCLUDE(CheckStructHasMember)
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000018
19SET(PACKAGE "libzip")
20SET(PACKAGE_NAME ${PACKAGE})
Thomas Klausnerc10f2282014-12-02 16:17:45 +010021SET(PACKAGE_VERSION_MAJOR "1")
Thomas Klausner558988d2016-01-28 09:54:45 +010022SET(PACKAGE_VERSION_MINOR "1a")
Thomas Klausner481a4842016-01-26 15:50:03 +010023#SET(PACKAGE_VERSION_PATCH "1a")
24SET(VERSION "${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}")
25#SET(VERSION "${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}.${PACKAGE_VERSION_PATCH}")
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000026SET(PACKAGE_VERSION ${VERSION})
27SET(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
28
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000029# Checks
30
Thomas Klausner31bfa1e2013-03-14 11:13:19 +010031CHECK_FUNCTION_EXISTS(_close HAVE__CLOSE)
32CHECK_FUNCTION_EXISTS(_dup HAVE__DUP)
33CHECK_FUNCTION_EXISTS(_fdopen HAVE__FDOPEN)
Thomas Klausner092b3bc2013-03-20 00:13:44 +010034CHECK_FUNCTION_EXISTS(_fileno HAVE__FILENO)
Thomas Klausnerfd44eda2010-02-03 16:34:36 +010035CHECK_FUNCTION_EXISTS(_open HAVE__OPEN)
Thomas Klausnerc2e45eb2016-01-06 15:44:08 +010036CHECK_FUNCTION_EXISTS(_setmode HAVE__SETMODE)
Thomas Klausnerfd44eda2010-02-03 16:34:36 +010037CHECK_FUNCTION_EXISTS(_snprintf HAVE__SNPRINTF)
Thomas Klausnerfd44eda2010-02-03 16:34:36 +010038CHECK_FUNCTION_EXISTS(_strdup HAVE__STRDUP)
Thomas Klausner12e4b662011-03-04 14:29:02 +010039CHECK_FUNCTION_EXISTS(_stricmp HAVE__STRICMP)
Thomas Klausner7f4df762015-08-20 22:03:57 +020040CHECK_FUNCTION_EXISTS(fileno HAVE_FILENO)
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000041CHECK_FUNCTION_EXISTS(fseeko HAVE_FSEEKO)
Thomas Klausnerfd44eda2010-02-03 16:34:36 +010042CHECK_FUNCTION_EXISTS(ftello HAVE_FTELLO)
43CHECK_FUNCTION_EXISTS(open HAVE_OPEN)
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000044CHECK_FUNCTION_EXISTS(mkstemp HAVE_MKSTEMP)
Thomas Klausner9f8e3ed2016-01-05 14:21:53 +010045CHECK_FUNCTION_EXISTS(setmode HAVE_SETMODE)
Thomas Klausnerfd44eda2010-02-03 16:34:36 +010046CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF)
47CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP)
48CHECK_FUNCTION_EXISTS(strdup HAVE_STRDUP)
Thomas Klausner16f80c72016-01-05 14:13:46 +010049CHECK_FUNCTION_EXISTS(stricmp HAVE_STRICMP)
Thomas Klausnerb174cc62013-11-28 12:49:50 +010050
Thomas Klausnerde610c32014-05-08 12:19:28 +020051CHECK_INCLUDE_FILES(fts.h HAVE_FTS_H)
Thomas Klausner9fe80b22014-10-08 15:59:00 +020052CHECK_INCLUDE_FILES(stdbool.h HAVE_STDBOOL_H)
Thomas Klausnerb174cc62013-11-28 12:49:50 +010053CHECK_INCLUDE_FILES(strings.h HAVE_STRINGS_H)
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000054CHECK_INCLUDE_FILES(unistd.h HAVE_UNISTD_H)
55
Thomas Klausner17589302008-11-09 20:55:52 +010056CHECK_INCLUDE_FILES(inttypes.h HAVE_INTTYPES_H_LIBZIP)
Dieter Baron3f1f0982011-02-20 13:47:26 +010057CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H_LIBZIP)
Thomas Klausnerb174cc62013-11-28 12:49:50 +010058CHECK_INCLUDE_FILES(sys/types.h HAVE_SYS_TYPES_H_LIBZIP)
59
Thomas Klausner8beda5d2011-03-21 17:15:32 +010060CHECK_TYPE_SIZE(__int8 __INT8_LIBZIP)
Thomas Klausner17589302008-11-09 20:55:52 +010061CHECK_TYPE_SIZE(int8_t INT8_T_LIBZIP)
62CHECK_TYPE_SIZE(uint8_t UINT8_T_LIBZIP)
Thomas Klausner8beda5d2011-03-21 17:15:32 +010063CHECK_TYPE_SIZE(__int16 __INT16_LIBZIP)
Thomas Klausner17589302008-11-09 20:55:52 +010064CHECK_TYPE_SIZE(int16_t INT16_T_LIBZIP)
65CHECK_TYPE_SIZE(uint16_t UINT16_T_LIBZIP)
Thomas Klausner8beda5d2011-03-21 17:15:32 +010066CHECK_TYPE_SIZE(__int32 __INT32_LIBZIP)
Thomas Klausner17589302008-11-09 20:55:52 +010067CHECK_TYPE_SIZE(int32_t INT32_T_LIBZIP)
68CHECK_TYPE_SIZE(uint32_t UINT32_T_LIBZIP)
Thomas Klausner8beda5d2011-03-21 17:15:32 +010069CHECK_TYPE_SIZE(__int64 __INT64_LIBZIP)
Thomas Klausner17589302008-11-09 20:55:52 +010070CHECK_TYPE_SIZE(int64_t INT64_T_LIBZIP)
71CHECK_TYPE_SIZE(uint64_t UINT64_T_LIBZIP)
Thomas Klausner6be56ae2010-02-05 18:10:18 +010072CHECK_TYPE_SIZE("short" SHORT_LIBZIP)
73CHECK_TYPE_SIZE("int" INT_LIBZIP)
74CHECK_TYPE_SIZE("long" LONG_LIBZIP)
Thomas Klausner6186ce92013-03-14 10:25:22 +010075CHECK_TYPE_SIZE("long long" LONG_LONG_LIBZIP)
Thomas Klausner24ee74f2012-10-12 22:41:42 +020076CHECK_TYPE_SIZE("off_t" SIZEOF_OFF_T)
Dieter Baronf6c057d2012-08-30 16:44:24 +020077CHECK_TYPE_SIZE("size_t" SIZE_T_LIBZIP)
78CHECK_TYPE_SIZE("ssize_t" SSIZE_T_LIBZIP)
Thomas Klausnere0b16f62008-11-09 19:35:47 +010079
Thomas Klausner2d01a6b2008-11-09 15:48:51 +010080FIND_PACKAGE(ZLIB REQUIRED)
81INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
Thomas Klausner6be56ae2010-02-05 18:10:18 +010082set(CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIR})
Thomas Klausner12b5c4d2013-03-14 10:42:18 +010083IF(ZLIB_VERSION_STRING VERSION_LESS "1.1.2")
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000084 MESSAGE(FATAL_ERROR "-- ZLIB version too old, please install at least v1.1.2")
Thomas Klausner12b5c4d2013-03-14 10:42:18 +010085ENDIF(ZLIB_VERSION_STRING VERSION_LESS "1.1.2")
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000086
Thomas Klausner4bd9f7a2011-04-16 12:38:59 +020087IF(MSVC)
Thomas Klausnera13ebb92013-03-17 22:04:28 +010088ADD_DEFINITIONS("-D_CRT_SECURE_NO_WARNINGS")
Thomas Klausner4bd9f7a2011-04-16 12:38:59 +020089ENDIF(MSVC)
90
Thomas Klausner4c5f1522015-01-19 14:02:16 +010091ADD_DEFINITIONS("-DHAVE_CONFIG_H")
92
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000093# Targets
Thomas Klausner6be56ae2010-02-05 18:10:18 +010094ADD_SUBDIRECTORY(lib)
95ADD_SUBDIRECTORY(man)
96ADD_SUBDIRECTORY(src)
97ADD_SUBDIRECTORY(regress)
Thomas Klausnerd261a722014-09-28 23:55:37 +020098ADD_SUBDIRECTORY(examples)
Thomas Klausner6be56ae2010-02-05 18:10:18 +010099
Thomas Klausnerb52bda02013-11-28 18:01:40 +0100100# TODO: pkgconfig file
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +0000101
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +0000102# write out config file
103CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake-config.h.in
104 ${CMAKE_CURRENT_BINARY_DIR}/config.h)
Thomas Klausnere0b16f62008-11-09 19:35:47 +0100105CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake-zipconf.h.in
106 ${CMAKE_CURRENT_BINARY_DIR}/zipconf.h)
Thomas Klausner17589302008-11-09 20:55:52 +0100107
Thomas Klausnerea8ba492014-09-23 16:54:47 +0200108# installation
109
Thomas Klausner17589302008-11-09 20:55:52 +0100110INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/zipconf.h DESTINATION lib/libzip/include)