From: Cameron Cawley Date: Tue, 28 Oct 2025 22:34:56 +0000 (+0000) Subject: Rename CMake targets to avoid clashes when used as a subproject (#1970) X-Git-Tag: 2.3.0-rc1~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a6b98e11dfd7ca9febed87818525edb6059d2428;p=thirdparty%2Fzlib-ng.git Rename CMake targets to avoid clashes when used as a subproject (#1970) --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 31e8c6915..9e995cc31 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -89,6 +89,7 @@ endif() # option(WITH_GZFILEOP "Compile with support for gzFile related functions" ON) option(ZLIB_COMPAT "Compile with zlib compatible API" OFF) +option(ZLIB_ALIASES "Provide zlib compatible targets" ON) option(WITH_OPTIM "Build with optimisation" ON) option(WITH_ALL_FALLBACKS "Build all generic fallback functions (Useful for Gbench)" OFF) option(WITH_REDUCED_MEM "Reduced memory usage for special cases (reduces performance)" OFF) @@ -1357,30 +1358,47 @@ if(NOT DEFINED BUILD_SHARED_LIBS OR BUILD_SHARED_LIBS) endif() if(NOT DEFINED BUILD_SHARED_LIBS) - add_library(zlib SHARED ${ZLIB_ALL_SRCS} ${ZLIB_DLL_SRCS}) - add_library(zlibstatic STATIC ${ZLIB_ALL_SRCS}) + add_library(zlib-ng SHARED ${ZLIB_ALL_SRCS} ${ZLIB_DLL_SRCS}) + add_library(zlib-ng-static STATIC ${ZLIB_ALL_SRCS}) + add_library(zlib-ng::zlib ALIAS zlib-ng) + add_library(zlib-ng::zlibstatic ALIAS zlib-ng-static) - set(ZLIB_INSTALL_LIBRARIES zlib zlibstatic) + set(ZLIB_INSTALL_LIBRARIES zlib-ng zlib-ng-static) else() - add_library(zlib ${ZLIB_ALL_SRCS}) + add_library(zlib-ng ${ZLIB_ALL_SRCS}) + add_library(zlib-ng::zlib ALIAS zlib-ng) if(BUILD_SHARED_LIBS) - target_sources(zlib PRIVATE ${ZLIB_DLL_SRCS}) + target_sources(zlib-ng PRIVATE ${ZLIB_DLL_SRCS}) else() - add_library(zlibstatic ALIAS zlib) + add_library(zlib-ng-static ALIAS zlib-ng) + add_library(zlib-ng::zlibstatic ALIAS zlib-ng) endif() - set(ZLIB_INSTALL_LIBRARIES zlib) + set(ZLIB_INSTALL_LIBRARIES zlib-ng) endif() # INFO: Mimics official zlib CMake target # Generates ZLIB.cmake in case ZLIB_COMPAT=ON and always exports the CMake target ZLIB::ZLIB # In case ZLIB_COMPAT=OFF, the CMake target and file follows zlib-ng naming convention if (ZLIB_COMPAT) - if (TARGET zlib) - set_target_properties(zlib PROPERTIES EXPORT_NAME ZLIB) - else() - set_target_properties(zlibstatic PROPERTIES EXPORT_NAME ZLIB) + set_target_properties(zlib-ng PROPERTIES EXPORT_NAME ZLIB) + if (NOT DEFINED BUILD_SHARED_LIBS) + set_target_properties(zlib-ng-static PROPERTIES EXPORT_NAME ZLIBSTATIC) + endif() +else() + set_target_properties(zlib-ng PROPERTIES EXPORT_NAME zlib) + if (NOT DEFINED BUILD_SHARED_LIBS) + set_target_properties(zlib-ng-static PROPERTIES EXPORT_NAME zlibstatic) + endif() +endif() + +if (ZLIB_ALIASES) + add_library(zlib ALIAS zlib-ng) + if (NOT DEFINED BUILD_SHARED_LIBS) + add_library(zlibstatic ALIAS zlib-ng-static) + elseif (NOT BUILD_SHARED_LIBS) + add_library(zlibstatic ALIAS zlib-ng) endif() endif() @@ -1396,20 +1414,20 @@ endforeach() if(WIN32) # Shared library if(NOT DEFINED BUILD_SHARED_LIBS OR BUILD_SHARED_LIBS) - set_target_properties(zlib PROPERTIES OUTPUT_NAME zlib${SUFFIX}) + set_target_properties(zlib-ng PROPERTIES OUTPUT_NAME zlib${SUFFIX}) endif() # Static library if(NOT DEFINED BUILD_SHARED_LIBS) if(MSVC) - set_target_properties(zlibstatic PROPERTIES OUTPUT_NAME zlibstatic${SUFFIX}) + set_target_properties(zlib-ng-static PROPERTIES OUTPUT_NAME zlibstatic${SUFFIX}) else() - set_target_properties(zlibstatic PROPERTIES OUTPUT_NAME z${SUFFIX}) + set_target_properties(zlib-ng-static PROPERTIES OUTPUT_NAME z${SUFFIX}) endif() elseif(NOT BUILD_SHARED_LIBS) if(MSVC) - set_target_properties(zlib PROPERTIES OUTPUT_NAME zlibstatic${SUFFIX}) + set_target_properties(zlib-ng PROPERTIES OUTPUT_NAME zlibstatic${SUFFIX}) else() - set_target_properties(zlib PROPERTIES OUTPUT_NAME z${SUFFIX}) + set_target_properties(zlib-ng PROPERTIES OUTPUT_NAME z${SUFFIX}) endif() endif() else() @@ -1418,12 +1436,12 @@ else() endif() if(NOT DEFINED BUILD_SHARED_LIBS OR BUILD_SHARED_LIBS) - set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL) + set_target_properties(zlib-ng PROPERTIES DEFINE_SYMBOL ZLIB_DLL) if(ZLIB_COMPAT) - set_target_properties(zlib PROPERTIES SOVERSION 1) + set_target_properties(zlib-ng PROPERTIES SOVERSION 1) else() - set_target_properties(zlib PROPERTIES SOVERSION 2) + set_target_properties(zlib-ng PROPERTIES SOVERSION 2) endif() if(NOT CYGWIN) @@ -1434,18 +1452,18 @@ if(NOT DEFINED BUILD_SHARED_LIBS OR BUILD_SHARED_LIBS) # # 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-ng PROPERTIES VERSION ${ZLIB_FULL_VERSION}) endif() if(UNIX) if(HAVE_NO_INTERPOSITION) - set_target_properties(zlib PROPERTIES COMPILE_FLAGS "-fno-semantic-interposition") + set_target_properties(zlib-ng PROPERTIES COMPILE_FLAGS "-fno-semantic-interposition") endif() if(NOT APPLE AND NOT CMAKE_SYSTEM_NAME STREQUAL AIX) if(NOT ZLIB_COMPAT) add_definitions(-DHAVE_SYMVER) endif() - set_target_properties(zlib PROPERTIES LINK_FLAGS + set_target_properties(zlib-ng PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib${SUFFIX}.map\"") endif() endif() @@ -1455,9 +1473,9 @@ if(NOT DEFINED BUILD_SHARED_LIBS OR BUILD_SHARED_LIBS) elseif(WIN32) # Creates zlib1.dll when building shared library version if(ZLIB_COMPAT) - set_target_properties(zlib PROPERTIES SUFFIX "1.dll") + set_target_properties(zlib-ng PROPERTIES SUFFIX "1.dll") else() - set_target_properties(zlib PROPERTIES SUFFIX "2.dll") + set_target_properties(zlib-ng PROPERTIES SUFFIX "2.dll") endif() endif() endif() diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index ababb3c48..a9eb9f609 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -13,15 +13,15 @@ endif() add_executable(example example.c) configure_test_executable(example) -target_link_libraries(example zlib) +target_link_libraries(example zlib-ng) add_test(NAME example COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) add_executable(minigzip minigzip.c) configure_test_executable(minigzip) if(NOT DEFINED BUILD_SHARED_LIBS) - target_link_libraries(minigzip zlibstatic) + target_link_libraries(minigzip zlib-ng-static) else() - target_link_libraries(minigzip zlib) + target_link_libraries(minigzip zlib-ng) endif() if(BASEARCH_S360_FOUND) if(WITH_DFLTCC_DEFLATE OR WITH_DFLTCC_INFLATE) @@ -32,7 +32,7 @@ set(MINIGZIP_COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) add_executable(minideflate minideflate.c) configure_test_executable(minideflate) -target_link_libraries(minideflate zlib) +target_link_libraries(minideflate zlib-ng) set(MINIDEFLATE_COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) if(INSTALL_UTILS) @@ -44,12 +44,12 @@ endif() add_executable(switchlevels switchlevels.c) configure_test_executable(switchlevels) -target_link_libraries(switchlevels zlib) +target_link_libraries(switchlevels zlib-ng) set(SWITCHLEVELS_COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) add_executable(infcover infcover.c) configure_test_executable(infcover) -target_link_libraries(infcover zlib) +target_link_libraries(infcover zlib-ng) if(NOT DEFINED BUILD_SHARED_LIBS OR BUILD_SHARED_LIBS) target_sources(infcover PRIVATE ${PROJECT_SOURCE_DIR}/inftrees.c) endif() @@ -231,9 +231,9 @@ if(WITH_GTEST) if(NOT DEFINED BUILD_SHARED_LIBS) # Link statically in order to test internal zlib-ng functions. - target_link_libraries(gtest_zlib zlibstatic) + target_link_libraries(gtest_zlib zlib-ng-static) else() - target_link_libraries(gtest_zlib zlib) + target_link_libraries(gtest_zlib zlib-ng) endif() if(BUILD_SHARED_LIBS) diff --git a/test/add-subdirectory-project/CMakeLists.txt b/test/add-subdirectory-project/CMakeLists.txt index a18626feb..2c35218ac 100644 --- a/test/add-subdirectory-project/CMakeLists.txt +++ b/test/add-subdirectory-project/CMakeLists.txt @@ -10,4 +10,4 @@ set(ZLIB_ENABLE_TESTS ON CACHE BOOL "Build test binaries" FORCE) add_subdirectory(../.. zlib-ng) add_executable(app main.c) -target_link_libraries(app zlibstatic) +target_link_libraries(app zlib-ng-static) diff --git a/test/benchmarks/CMakeLists.txt b/test/benchmarks/CMakeLists.txt index 3e229f821..d7549c3aa 100644 --- a/test/benchmarks/CMakeLists.txt +++ b/test/benchmarks/CMakeLists.txt @@ -56,7 +56,7 @@ target_include_directories(benchmark_zlib PRIVATE ${PROJECT_BINARY_DIR} ${benchmark_SOURCE_DIR}/benchmark/include) -target_link_libraries(benchmark_zlib zlibstatic benchmark::benchmark) +target_link_libraries(benchmark_zlib zlib-ng-static benchmark::benchmark) if(WIN32) target_link_libraries(benchmark_zlib shlwapi) endif() @@ -111,5 +111,5 @@ if(WITH_BENCHMARK_APPS) # We need the static png library if we're statically linking to zlib, # otherwise it will resolve these things in the system provided dynamic # libraries (likely linked to stock zlib) - target_link_libraries(benchmark_zlib_apps libpng.a zlibstatic benchmark::benchmark) + target_link_libraries(benchmark_zlib_apps libpng.a zlib-ng-static benchmark::benchmark) endif() diff --git a/test/fuzz/CMakeLists.txt b/test/fuzz/CMakeLists.txt index db54a7e42..e5a7455dd 100644 --- a/test/fuzz/CMakeLists.txt +++ b/test/fuzz/CMakeLists.txt @@ -30,9 +30,9 @@ foreach(FUZZER ${FUZZERS}) endif() if(NOT DEFINED BUILD_SHARED_LIBS) - target_link_libraries(${FUZZER} zlibstatic) + target_link_libraries(${FUZZER} zlib-ng-static) else() - target_link_libraries(${FUZZER} zlib) + target_link_libraries(${FUZZER} zlib-ng) endif() if(FUZZING_ENGINE_FOUND) diff --git a/test/pigz/CMakeLists.txt b/test/pigz/CMakeLists.txt index bc6830ae2..e920f51f9 100644 --- a/test/pigz/CMakeLists.txt +++ b/test/pigz/CMakeLists.txt @@ -120,6 +120,7 @@ if(NOT DEFINED ZLIB_ROOT) find_package(Zlib REQUIRED) endif() +set(ZLIB_ALIASES ON) set(ZLIB_COMPAT ON) set(ZLIB_ENABLE_TESTS OFF)