| diff --git a/CMakeLists.txt b/CMakeLists.txt |
| index 15ceebe..03825a2 100644 |
| --- a/CMakeLists.txt |
| +++ b/CMakeLists.txt |
| @@ -1,23 +1,21 @@ |
| -cmake_minimum_required(VERSION 2.4.4...3.15.0) |
| -set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON) |
| +cmake_minimum_required(VERSION 3.15) |
| |
| -project(zlib C) |
| - |
| -set(VERSION "1.3.1") |
| +project(zlib VERSION 1.3.1 LANGUAGES C) |
| |
| option(ZLIB_BUILD_EXAMPLES "Enable Zlib Examples" ON) |
| |
| -set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables") |
| -set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries") |
| -set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers") |
| -set(INSTALL_MAN_DIR "${CMAKE_INSTALL_PREFIX}/share/man" CACHE PATH "Installation directory for manual pages") |
| -set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/share/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files") |
| +include(GNUInstallDirs) |
| +set(INSTALL_BIN_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH "Installation directory for executables") |
| +set(INSTALL_LIB_DIR "${CMAKE_INSTALL_LIBDIR}" CACHE PATH "Installation directory for libraries") |
| +set(INSTALL_INC_DIR "${CMAKE_INSTALL_INCLUDEDIR}" CACHE PATH "Installation directory for headers") |
| +set(INSTALL_MAN_DIR "${CMAKE_INSTALL_MANDIR}" CACHE PATH "Installation directory for manual pages") |
| +set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_DATADIR}/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files") |
| |
| include(CheckTypeSize) |
| include(CheckFunctionExists) |
| include(CheckIncludeFile) |
| include(CheckCSourceCompiles) |
| -enable_testing() |
| +include(CTest) |
| |
| check_include_file(sys/types.h HAVE_SYS_TYPES_H) |
| check_include_file(stdint.h HAVE_STDINT_H) |
| @@ -149,12 +147,21 @@ if(MINGW) |
| set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj) |
| endif(MINGW) |
| |
| -add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) |
| -target_include_directories(zlib PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) |
| -add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) |
| -target_include_directories(zlibstatic PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) |
| -set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL) |
| -set_target_properties(zlib PROPERTIES SOVERSION 1) |
| +if(BUILD_SHARED_LIBS) |
| + add_library(ZLIB SHARED ${ZLIB_SRCS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) |
| + set_target_properties(ZLIB PROPERTIES DEFINE_SYMBOL ZLIB_DLL) |
| + set_target_properties(ZLIB PROPERTIES SOVERSION 1) |
| +else() |
| + add_library(ZLIB STATIC ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) |
| +endif() |
| + |
| +target_include_directories(ZLIB PUBLIC |
| + $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}> |
| + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> |
| + $<INSTALL_INTERFACE:include>) |
| + |
| +add_library(ZLIB::ZLIB ALIAS ZLIB) |
| + |
| |
| if(NOT CYGWIN) |
| # This property causes shared libraries on Linux to have the full version |
| @@ -164,26 +171,49 @@ if(NOT CYGWIN) |
| # |
| # This has no effect with MSVC, on that platform the version info for |
| # the DLL comes from the resource file win32/zlib1.rc |
| - set_target_properties(zlib PROPERTIES VERSION ${ZLIB_FULL_VERSION}) |
| + set_target_properties(ZLIB PROPERTIES VERSION ${ZLIB_FULL_VERSION}) |
| endif() |
| |
| if(UNIX) |
| # On unix-like platforms the library is almost always called libz |
| - set_target_properties(zlib zlibstatic PROPERTIES OUTPUT_NAME z) |
| - if(NOT APPLE AND NOT(CMAKE_SYSTEM_NAME STREQUAL AIX)) |
| - set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"") |
| + set_target_properties(ZLIB PROPERTIES OUTPUT_NAME z) |
| + if(NOT APPLE AND NOT(CMAKE_SYSTEM_NAME STREQUAL AIX) AND BUILD_SHARED_LIBS) |
| + set_target_properties(ZLIB PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"") |
| endif() |
| elseif(BUILD_SHARED_LIBS AND WIN32) |
| # Creates zlib1.dll when building shared library version |
| - set_target_properties(zlib PROPERTIES SUFFIX "1.dll") |
| + set_target_properties(ZLIB PROPERTIES SUFFIX "1.dll") |
| +endif() |
| + |
| +if(NOT UNIX) |
| + if(BUILD_SHARED_LIBS) |
| + set_target_properties(ZLIB PROPERTIES OUTPUT_NAME zlib) |
| + else() |
| + set_target_properties(ZLIB PROPERTIES OUTPUT_NAME zlibstatic) |
| + endif() |
| endif() |
| |
| -if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL ) |
| - install(TARGETS zlib zlibstatic |
| - RUNTIME DESTINATION "${INSTALL_BIN_DIR}" |
| - ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" |
| - LIBRARY DESTINATION "${INSTALL_LIB_DIR}" ) |
| +if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) |
| + install(TARGETS ZLIB |
| + EXPORT ZLIBTargets |
| + RUNTIME DESTINATION "${INSTALL_BIN_DIR}" |
| + ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" |
| + LIBRARY DESTINATION "${INSTALL_LIB_DIR}") |
| + install(EXPORT ZLIBTargets |
| + NAMESPACE ZLIB:: |
| + DESTINATION lib/cmake/ZLIB) |
| + include(CMakePackageConfigHelpers) |
| + write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/ZLIBConfigVersion.cmake" |
| + VERSION ${PROJECT_VERSION} |
| + COMPATIBILITY SameMajorVersion) |
| + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/ZLIBConfig.cmake" |
| + "include(\"\${CMAKE_CURRENT_LIST_DIR}/ZLIBTargets.cmake\")" |
| + ) |
| + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ZLIBConfig.cmake" |
| + "${CMAKE_CURRENT_BINARY_DIR}/ZLIBConfigVersion.cmake" |
| + DESTINATION lib/cmake/ZLIB) |
| endif() |
| + |
| if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL ) |
| install(FILES ${ZLIB_PUBLIC_HDRS} DESTINATION "${INSTALL_INC_DIR}") |
| endif() |
| @@ -199,20 +229,20 @@ endif() |
| #============================================================================ |
| if(ZLIB_BUILD_EXAMPLES) |
| add_executable(example test/example.c) |
| - target_link_libraries(example zlib) |
| + target_link_libraries(example ZLIB) |
| add_test(example example) |
| |
| add_executable(minigzip test/minigzip.c) |
| - target_link_libraries(minigzip zlib) |
| + target_link_libraries(minigzip ZLIB) |
| |
| if(HAVE_OFF64_T) |
| add_executable(example64 test/example.c) |
| - target_link_libraries(example64 zlib) |
| + target_link_libraries(example64 ZLIB) |
| set_target_properties(example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64") |
| add_test(example64 example64) |
| |
| add_executable(minigzip64 test/minigzip.c) |
| - target_link_libraries(minigzip64 zlib) |
| + target_link_libraries(minigzip64 ZLIB) |
| set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64") |
| endif() |
| endif() |