| 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() |