blob: a1fc0068cb336de8e2699728fb9fe74c6d7621a9 [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")
22SET(PACKAGE_VERSION_MINOR "0beta1")
23#SET(PACKAGE_VERSION_PATCH "0beta1")
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 Klausner31bfa1e2013-03-14 11:13:19 +010030CHECK_FUNCTION_EXISTS(_close HAVE__CLOSE)
31CHECK_FUNCTION_EXISTS(_dup HAVE__DUP)
32CHECK_FUNCTION_EXISTS(_fdopen HAVE__FDOPEN)
Thomas Klausner092b3bc2013-03-20 00:13:44 +010033CHECK_FUNCTION_EXISTS(_fileno HAVE__FILENO)
Thomas Klausnerfd44eda2010-02-03 16:34:36 +010034CHECK_FUNCTION_EXISTS(_open HAVE__OPEN)
35CHECK_FUNCTION_EXISTS(_snprintf HAVE__SNPRINTF)
Thomas Klausnerfd44eda2010-02-03 16:34:36 +010036CHECK_FUNCTION_EXISTS(_strdup HAVE__STRDUP)
Thomas Klausner12e4b662011-03-04 14:29:02 +010037CHECK_FUNCTION_EXISTS(_stricmp HAVE__STRICMP)
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000038CHECK_FUNCTION_EXISTS(fseeko HAVE_FSEEKO)
Thomas Klausnerfd44eda2010-02-03 16:34:36 +010039CHECK_FUNCTION_EXISTS(ftello HAVE_FTELLO)
40CHECK_FUNCTION_EXISTS(open HAVE_OPEN)
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000041CHECK_FUNCTION_EXISTS(mkstemp HAVE_MKSTEMP)
Thomas Klausnerfd44eda2010-02-03 16:34:36 +010042CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF)
43CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP)
44CHECK_FUNCTION_EXISTS(strdup HAVE_STRDUP)
Thomas Klausnerb174cc62013-11-28 12:49:50 +010045
46CHECK_STRUCT_HAS_MEMBER("struct tm" tm_zone time.h HAVE_STRUCT_TM_TM_ZONE)
47
Thomas Klausner6be56ae2010-02-05 18:10:18 +010048CHECK_SYMBOL_EXISTS(MoveFileExA windows.h HAVE_MOVEFILEEXA)
Thomas Klausnerb174cc62013-11-28 12:49:50 +010049
Thomas Klausnerde610c32014-05-08 12:19:28 +020050CHECK_INCLUDE_FILES(fts.h HAVE_FTS_H)
Thomas Klausner9fe80b22014-10-08 15:59:00 +020051CHECK_INCLUDE_FILES(stdbool.h HAVE_STDBOOL_H)
Thomas Klausnerb174cc62013-11-28 12:49:50 +010052CHECK_INCLUDE_FILES(strings.h HAVE_STRINGS_H)
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000053CHECK_INCLUDE_FILES(unistd.h HAVE_UNISTD_H)
54
Thomas Klausner17589302008-11-09 20:55:52 +010055CHECK_INCLUDE_FILES(inttypes.h HAVE_INTTYPES_H_LIBZIP)
Dieter Baron3f1f0982011-02-20 13:47:26 +010056CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H_LIBZIP)
Thomas Klausnerb174cc62013-11-28 12:49:50 +010057CHECK_INCLUDE_FILES(sys/types.h HAVE_SYS_TYPES_H_LIBZIP)
58
Thomas Klausner8beda5d2011-03-21 17:15:32 +010059CHECK_TYPE_SIZE(__int8 __INT8_LIBZIP)
Thomas Klausner17589302008-11-09 20:55:52 +010060CHECK_TYPE_SIZE(int8_t INT8_T_LIBZIP)
61CHECK_TYPE_SIZE(uint8_t UINT8_T_LIBZIP)
Thomas Klausner8beda5d2011-03-21 17:15:32 +010062CHECK_TYPE_SIZE(__int16 __INT16_LIBZIP)
Thomas Klausner17589302008-11-09 20:55:52 +010063CHECK_TYPE_SIZE(int16_t INT16_T_LIBZIP)
64CHECK_TYPE_SIZE(uint16_t UINT16_T_LIBZIP)
Thomas Klausner8beda5d2011-03-21 17:15:32 +010065CHECK_TYPE_SIZE(__int32 __INT32_LIBZIP)
Thomas Klausner17589302008-11-09 20:55:52 +010066CHECK_TYPE_SIZE(int32_t INT32_T_LIBZIP)
67CHECK_TYPE_SIZE(uint32_t UINT32_T_LIBZIP)
Thomas Klausner8beda5d2011-03-21 17:15:32 +010068CHECK_TYPE_SIZE(__int64 __INT64_LIBZIP)
Thomas Klausner17589302008-11-09 20:55:52 +010069CHECK_TYPE_SIZE(int64_t INT64_T_LIBZIP)
70CHECK_TYPE_SIZE(uint64_t UINT64_T_LIBZIP)
Thomas Klausner6be56ae2010-02-05 18:10:18 +010071CHECK_TYPE_SIZE("short" SHORT_LIBZIP)
72CHECK_TYPE_SIZE("int" INT_LIBZIP)
73CHECK_TYPE_SIZE("long" LONG_LIBZIP)
Thomas Klausner6186ce92013-03-14 10:25:22 +010074CHECK_TYPE_SIZE("long long" LONG_LONG_LIBZIP)
Thomas Klausner24ee74f2012-10-12 22:41:42 +020075CHECK_TYPE_SIZE("off_t" SIZEOF_OFF_T)
Dieter Baronf6c057d2012-08-30 16:44:24 +020076CHECK_TYPE_SIZE("size_t" SIZE_T_LIBZIP)
77CHECK_TYPE_SIZE("ssize_t" SSIZE_T_LIBZIP)
Thomas Klausnere0b16f62008-11-09 19:35:47 +010078
Thomas Klausner2d01a6b2008-11-09 15:48:51 +010079FIND_PACKAGE(ZLIB REQUIRED)
80INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
Thomas Klausner6be56ae2010-02-05 18:10:18 +010081set(CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIR})
Thomas Klausner12b5c4d2013-03-14 10:42:18 +010082IF(ZLIB_VERSION_STRING VERSION_LESS "1.1.2")
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000083 MESSAGE(FATAL_ERROR "-- ZLIB version too old, please install at least v1.1.2")
Thomas Klausner12b5c4d2013-03-14 10:42:18 +010084ENDIF(ZLIB_VERSION_STRING VERSION_LESS "1.1.2")
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000085
Thomas Klausner4bd9f7a2011-04-16 12:38:59 +020086IF(MSVC)
Thomas Klausnera13ebb92013-03-17 22:04:28 +010087ADD_DEFINITIONS("-D_CRT_SECURE_NO_WARNINGS")
Thomas Klausner4bd9f7a2011-04-16 12:38:59 +020088ENDIF(MSVC)
89
Thomas Klausner4c5f1522015-01-19 14:02:16 +010090ADD_DEFINITIONS("-DHAVE_CONFIG_H")
91
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +000092# Targets
Thomas Klausner6be56ae2010-02-05 18:10:18 +010093ADD_SUBDIRECTORY(lib)
94ADD_SUBDIRECTORY(man)
95ADD_SUBDIRECTORY(src)
96ADD_SUBDIRECTORY(regress)
Thomas Klausnerd261a722014-09-28 23:55:37 +020097ADD_SUBDIRECTORY(examples)
Thomas Klausner6be56ae2010-02-05 18:10:18 +010098
Thomas Klausnerb52bda02013-11-28 18:01:40 +010099# TODO: pkgconfig file
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +0000100
Thomas Klausnerb58cf6f2007-03-04 10:35:18 +0000101# write out config file
102CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake-config.h.in
103 ${CMAKE_CURRENT_BINARY_DIR}/config.h)
Thomas Klausnere0b16f62008-11-09 19:35:47 +0100104CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake-zipconf.h.in
105 ${CMAKE_CURRENT_BINARY_DIR}/zipconf.h)
Thomas Klausner17589302008-11-09 20:55:52 +0100106
Thomas Klausnerea8ba492014-09-23 16:54:47 +0200107# installation
108
Thomas Klausner17589302008-11-09 20:55:52 +0100109INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/zipconf.h DESTINATION lib/libzip/include)