summaryrefslogtreecommitdiff
path: root/compat/zlib/CMakeLists.txt
diff options
context:
space:
mode:
authorcashmere <cashmere@autistici.org>2026-09-04 09:05:24 +0200
committercashmere <cashmere@autistici.org>2026-09-04 09:05:24 +0200
commit4f49b16079b27d7ce633619e4cddfdf2bffbc952 (patch)
treec296c1e7f3c3e2f6859c6d3a1b1b208779b89679 /compat/zlib/CMakeLists.txt
downloadrelic-4f49b16079b27d7ce633619e4cddfdf2bffbc952.tar.gz
initial commitHEADmaster
Diffstat (limited to 'compat/zlib/CMakeLists.txt')
-rw-r--r--compat/zlib/CMakeLists.txt310
1 files changed, 310 insertions, 0 deletions
diff --git a/compat/zlib/CMakeLists.txt b/compat/zlib/CMakeLists.txt
new file mode 100644
index 0000000..e103c40
--- /dev/null
+++ b/compat/zlib/CMakeLists.txt
@@ -0,0 +1,310 @@
+cmake_minimum_required(VERSION 3.12...3.31)
+
+project(
+ zlib
+ LANGUAGES C
+ VERSION 1.3.2
+ HOMEPAGE_URL "https://zlib.net/"
+ DESCRIPTION "a general-purpose lossless data-compression library")
+
+# ============================================================================
+# CPack
+# ============================================================================
+set(CPACK_PACKAGE_VENDOR "zlib-Project")
+set(CPACK_PACKAGE_DESCRIPTION_FILE ${zlib_SOURCE_DIR}/README)
+set(CPACK_RESOURCE_FILE_LICENSE ${zlib_SOURCE_DIR}/LICENSE)
+set(CPACK_RESOURCE_FILE_README ${zlib_SOURCE_DIR}/README)
+
+# ============================================================================
+# configuration
+# ============================================================================
+
+option(ZLIB_BUILD_TESTING "Enable Zlib Examples as tests" ON)
+option(ZLIB_BUILD_SHARED "Enable building zlib shared library" ON)
+option(ZLIB_BUILD_STATIC "Enable building zlib static library" ON)
+option(ZLIB_INSTALL "Enable installation of zlib" ON)
+option(ZLIB_PREFIX "prefix for all types and library functions, see zconf.h.in"
+ OFF)
+mark_as_advanced(ZLIB_PREFIX)
+
+get_property(IS_MULTI GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+
+if(NOT DEFINED CMAKE_BUILD_TYPE AND NOT IS_MULTI)
+ message(STATUS "No CMAKE_BUILD_TYPE set -- using Release")
+ set(CMAKE_BUILD_TYPE Release)
+endif(NOT DEFINED CMAKE_BUILD_TYPE AND NOT IS_MULTI)
+
+include(CheckCSourceCompiles)
+include(CheckFunctionExists)
+include(CheckIncludeFile)
+include(CMakePackageConfigHelpers)
+include(CheckTypeSize)
+include(CPack)
+include(GNUInstallDirs)
+
+set(CPACK_INCLUDED TRUE)
+
+if(NOT ZLIB_CONF_WRITTEN)
+ set(Z_PREFIX ${ZLIB_PREFIX})
+ set(CONF_OUT_FILE ${zlib_BINARY_DIR}/zconf.h.cmakein)
+ file(READ ${zlib_SOURCE_DIR}/zconf.h ZCONF_CONTENT LIMIT 245)
+ file(WRITE ${CONF_OUT_FILE} ${ZCONF_CONTENT})
+ file(APPEND ${CONF_OUT_FILE} "#cmakedefine Z_PREFIX 1\n")
+ file(APPEND ${CONF_OUT_FILE} "#cmakedefine HAVE_STDARG_H 1\n")
+ file(APPEND ${CONF_OUT_FILE} "#cmakedefine HAVE_UNISTD_H 1\n")
+ file(READ ${zlib_SOURCE_DIR}/zconf.h ZCONF_CONTENT OFFSET 244)
+ set(FIRST_ITEM TRUE)
+
+ foreach(item IN LISTS ZCONF_CONTENT)
+ if(FIRST_ITEM)
+ string(APPEND OUT_CONTENT ${item})
+ set(FIRST_ITEM FALSE)
+ else(FIRST_ITEM)
+ string(APPEND OUT_CONTENT "\;" ${item})
+ endif(FIRST_ITEM)
+ endforeach(item IN LISTS ${ZCONF_CONTENT})
+
+ file(APPEND ${CONF_OUT_FILE} ${OUT_CONTENT})
+ set(ZLIB_CONF_WRITTEN
+ TRUE
+ CACHE BOOL "zconf.h.cmakein was created")
+ mark_as_advanced(ZLIB_CONF_WRITTEN)
+endif(NOT ZLIB_CONF_WRITTEN)
+
+#
+# Check to see if we have large file support
+#
+set(CMAKE_REQUIRED_DEFINITIONS -D_LARGEFILE64_SOURCE=1)
+check_type_size(off64_t OFF64_T)
+unset(CMAKE_REQUIRED_DEFINITIONS) # clear variable
+
+#
+# Check for fseeko
+#
+check_function_exists(fseeko HAVE_FSEEKO)
+
+#
+# Check for stdarg.h
+#
+check_include_file(stdarg.h HAVE_STDARG_H)
+
+#
+# Check for unistd.h
+#
+check_include_file(unistd.h HAVE_UNISTD_H)
+
+#
+# Check visibility attribute is supported
+#
+if(MSVC)
+ set(CMAKE_REQUIRED_FLAGS "-WX")
+else(MSVC)
+ set(CMAKE_REQUIRED_FLAGS "-Werror")
+endif(MSVC)
+
+check_c_source_compiles(
+ "
+ #include <stdlib.h>
+ static void f(void) __attribute__ ((visibility(\"hidden\")));
+ int main(void) {return 0;}
+ "
+ HAVE___ATTR__VIS_HIDDEN)
+
+unset(CMAKE_COMPILE_FLAGS)
+set(ZLIB_PC ${zlib_BINARY_DIR}/zlib.pc)
+configure_file(${zlib_SOURCE_DIR}/zlib.pc.cmakein ${ZLIB_PC} @ONLY)
+configure_file(${zlib_BINARY_DIR}/zconf.h.cmakein ${zlib_BINARY_DIR}/zconf.h)
+
+# ============================================================================
+# zlib
+# ============================================================================
+
+set(ZLIB_PUBLIC_HDRS ${zlib_BINARY_DIR}/zconf.h zlib.h)
+
+set(ZLIB_PRIVATE_HDRS
+ crc32.h
+ deflate.h
+ gzguts.h
+ inffast.h
+ inffixed.h
+ inflate.h
+ inftrees.h
+ trees.h
+ zutil.h)
+
+set(ZLIB_SRCS
+ adler32.c
+ compress.c
+ crc32.c
+ deflate.c
+ gzclose.c
+ gzlib.c
+ gzread.c
+ gzwrite.c
+ inflate.c
+ infback.c
+ inftrees.c
+ inffast.c
+ trees.c
+ uncompr.c
+ zutil.c)
+
+if(WIN32)
+ set(zlib_static_suffix "s")
+ set(CMAKE_DEBUG_POSTFIX "d")
+endif(WIN32)
+
+if(ZLIB_BUILD_SHARED)
+ add_library(
+ zlib SHARED ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}
+ $<$<OR:$<BOOL:${WIN32}>,$<BOOL:${CYGWIN}>>:win32/zlib1.rc>)
+ add_library(ZLIB::ZLIB ALIAS zlib)
+ target_include_directories(
+ zlib
+ PUBLIC $<BUILD_INTERFACE:${zlib_BINARY_DIR}>
+ $<BUILD_INTERFACE:${zlib_SOURCE_DIR}>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
+ target_compile_definitions(
+ zlib
+ PRIVATE ZLIB_BUILD
+ $<$<BOOL:NOT:${HAVE_FSEEKO}>:NO_FSEEKO>
+ $<$<BOOL:${HAVE___ATTR__VIS_HIDDEN}>:HAVE_HIDDEN>
+ $<$<BOOL:${MSVC}>:_CRT_SECURE_NO_DEPRECATE>
+ $<$<BOOL:${MSVC}>:_CRT_NONSTDC_NO_DEPRECATE>
+ PUBLIC $<$<BOOL:${HAVE_OFF64_T}>:_LARGEFILE64_SOURCE=1>)
+ set(INSTALL_VERSION ${zlib_VERSION})
+
+ if(NOT CYGWIN)
+ set_target_properties(zlib PROPERTIES SOVERSION ${zlib_VERSION_MAJOR}
+ VERSION ${INSTALL_VERSION})
+ endif(NOT CYGWIN)
+
+ set_target_properties(
+ zlib
+ PROPERTIES DEFINE_SYMBOL ZLIB_DLL
+ EXPORT_NAME ZLIB
+ OUTPUT_NAME z)
+ if(UNIX
+ AND NOT APPLE
+ AND NOT (CMAKE_SYSTEM_NAME STREQUAL AIX)
+ AND NOT (CMAKE_SYSTEM_NAME STREQUAL SunOS))
+ # On unix-like platforms the library is almost always called libz
+ set_target_properties(
+ zlib
+ PROPERTIES LINK_FLAGS
+ "-Wl,--version-script,\"${zlib_SOURCE_DIR}/zlib.map\"")
+ endif(
+ UNIX
+ AND NOT APPLE
+ AND NOT (CMAKE_SYSTEM_NAME STREQUAL AIX)
+ AND NOT (CMAKE_SYSTEM_NAME STREQUAL SunOS))
+endif(ZLIB_BUILD_SHARED)
+
+if(ZLIB_BUILD_STATIC)
+ add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS}
+ ${ZLIB_PRIVATE_HDRS})
+ add_library(ZLIB::ZLIBSTATIC ALIAS zlibstatic)
+ target_include_directories(
+ zlibstatic
+ PUBLIC $<BUILD_INTERFACE:${zlib_BINARY_DIR}>
+ $<BUILD_INTERFACE:${zlib_SOURCE_DIR}>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
+ target_compile_definitions(
+ zlibstatic
+ PRIVATE ZLIB_BUILD
+ $<$<BOOL:NOT:${HAVE_FSEEKO}>:NO_FSEEKO>
+ $<$<BOOL:${HAVE___ATTR__VIS_HIDDEN}>:HAVE_HIDDEN>
+ $<$<BOOL:${MSVC}>:_CRT_SECURE_NO_DEPRECATE>
+ $<$<BOOL:${MSVC}>:_CRT_NONSTDC_NO_DEPRECATE>
+ PUBLIC $<$<BOOL:${HAVE_OFF64_T}>:_LARGEFILE64_SOURCE=1>)
+ set_target_properties(
+ zlibstatic PROPERTIES EXPORT_NAME ZLIBSTATIC OUTPUT_NAME
+ z${zlib_static_suffix})
+endif(ZLIB_BUILD_STATIC)
+
+if(ZLIB_INSTALL)
+ if(ZLIB_BUILD_SHARED)
+ install(
+ TARGETS zlib
+ COMPONENT Runtime
+ EXPORT zlibSharedExport
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+ install(
+ EXPORT zlibSharedExport
+ FILE ZLIB-shared.cmake
+ NAMESPACE ZLIB::
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/zlib)
+
+ if(MSVC)
+ install(
+ FILES $<TARGET_PDB_FILE:zlib>
+ COMPONENT Runtime
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
+ CONFIGURATIONS Debug OR RelWithDebInfo
+ OPTIONAL)
+ endif(MSVC)
+ endif(ZLIB_BUILD_SHARED)
+
+ if(ZLIB_BUILD_STATIC)
+ install(
+ TARGETS zlibstatic
+ COMPONENT Development
+ EXPORT zlibStaticExport
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+ install(
+ EXPORT zlibStaticExport
+ FILE ZLIB-static.cmake
+ NAMESPACE ZLIB::
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/zlib)
+ endif(ZLIB_BUILD_STATIC)
+
+ configure_package_config_file(
+ ${zlib_SOURCE_DIR}/zlibConfig.cmake.in
+ ${zlib_BINARY_DIR}/ZLIBConfig.cmake
+ INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/zlib)
+
+ write_basic_package_version_file(
+ "${zlib_BINARY_DIR}/ZLIBConfigVersion.cmake"
+ VERSION "${zlib_VERSION}"
+ COMPATIBILITY AnyNewerVersion)
+
+ install(FILES ${zlib_BINARY_DIR}/ZLIBConfig.cmake
+ ${zlib_BINARY_DIR}/ZLIBConfigVersion.cmake
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/zlib)
+ install(
+ FILES ${ZLIB_PUBLIC_HDRS}
+ COMPONENT Development
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
+ install(
+ FILES zlib.3
+ COMPONENT Docs
+ DESTINATION "${CMAKE_INSTALL_MANDIR}/man3")
+ install(
+ FILES LICENSE
+ doc/algorithm.txt
+ doc/crc-doc.1.0.pdf
+ doc/rfc1950.txt
+ doc/rfc1951.txt
+ doc/rfc1952.txt
+ doc/txtvsbin.txt
+ COMPONENT Docs
+ DESTINATION "${CMAKE_INSTALL_DOCDIR}/zlib")
+ install(
+ FILES ${ZLIB_PC}
+ COMPONENT Development
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+endif(ZLIB_INSTALL)
+
+# ============================================================================
+# Tests
+# ============================================================================
+if(ZLIB_BUILD_TESTING)
+ enable_testing()
+ add_subdirectory(test)
+endif(ZLIB_BUILD_TESTING)
+
+add_subdirectory(contrib)