From 28a4a5632502ae593055db4bfb4ff0f09fc9335e Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Thu, 25 Dec 2025 18:03:46 +0100 Subject: [PATCH 01/25] moved contrib options out of main file --- CMakeLists.txt | 5 +---- contrib/CMakeLists.txt | 5 +++++ 2 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 contrib/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index aa73591211..1e94f80eb7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,6 @@ set(CPACK_RESOURCE_FILE_README ${zlib_SOURCE_DIR}/README) 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_BUILD_MINIZIP "Enable building libminizip contrib library" OFF) option(ZLIB_INSTALL "Enable installation of zlib" ON) option(ZLIB_PREFIX "prefix for all types and library functions, see zconf.h.in" OFF) @@ -325,6 +324,4 @@ if(ZLIB_BUILD_TESTING) add_subdirectory(test) endif(ZLIB_BUILD_TESTING) -if(ZLIB_BUILD_MINIZIP) - add_subdirectory(contrib/minizip/) -endif(ZLIB_BUILD_MINIZIP) +add_subdirectory(contrib) diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt new file mode 100644 index 0000000000..ac6e935521 --- /dev/null +++ b/contrib/CMakeLists.txt @@ -0,0 +1,5 @@ +option(ZLIB_BUILD_MINIZIP "Enable building libminizip contrib library" OFF) + +if(ZLIB_BUILD_MINIZIP) + add_subdirectory(minizip/) +endif(ZLIB_BUILD_MINIZIP) From 26919d6f06225d41c40501c139bb2ca2bbc52696 Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Sun, 28 Dec 2025 13:18:46 +0100 Subject: [PATCH 02/25] set defaults for minizip from contrib --- contrib/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index ac6e935521..94e2875752 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -1,5 +1,8 @@ option(ZLIB_BUILD_MINIZIP "Enable building libminizip contrib library" OFF) if(ZLIB_BUILD_MINIZIP) + set(MINIZIP_BUILD_SHARED ${ZLIB_BUILD_SHARED}) + set(MINIZIP_BUILD_STATIC ${ZLIB_BUILD_STATIC}) + set(MINIZIP_BUILD_TESTING ${ZLIB_BUILD_TESTING}) add_subdirectory(minizip/) endif(ZLIB_BUILD_MINIZIP) From 6ac518e604e834e9599975cfc2b80745c812e983 Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Tue, 30 Dec 2025 14:29:38 +0100 Subject: [PATCH 03/25] added ada --- contrib/CMakeLists.txt | 8 + contrib/ada/CMakeLists.txt | 214 ++++++++++++++++++ .../cmake/Modules/CMakeADACompiler.cmake.in | 23 ++ .../cmake/Modules/CMakeADAInformation.cmake | 149 ++++++++++++ .../Modules/CMakeDetermineADACompiler.cmake | 33 +++ .../cmake/Modules/CMakeTestADACompiler.cmake | 46 ++++ contrib/ada/cmake/binder_helper.cmake | 41 ++++ contrib/ada/cmake/compile_helper.cmake | 32 +++ contrib/ada/cmake/exe_link_helper.cmake | 53 +++++ contrib/ada/cmake/shared_link_helper.cmake | 52 +++++ contrib/ada/cmake/static_link_helper.cmake | 25 ++ 11 files changed, 676 insertions(+) create mode 100644 contrib/ada/CMakeLists.txt create mode 100644 contrib/ada/cmake/Modules/CMakeADACompiler.cmake.in create mode 100644 contrib/ada/cmake/Modules/CMakeADAInformation.cmake create mode 100644 contrib/ada/cmake/Modules/CMakeDetermineADACompiler.cmake create mode 100644 contrib/ada/cmake/Modules/CMakeTestADACompiler.cmake create mode 100644 contrib/ada/cmake/binder_helper.cmake create mode 100644 contrib/ada/cmake/compile_helper.cmake create mode 100644 contrib/ada/cmake/exe_link_helper.cmake create mode 100644 contrib/ada/cmake/shared_link_helper.cmake create mode 100644 contrib/ada/cmake/static_link_helper.cmake diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index 94e2875752..cc4b331093 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -1,5 +1,13 @@ +option(ZLIB_BUILD_ADA "Enable building of Ada bindings" OFF) option(ZLIB_BUILD_MINIZIP "Enable building libminizip contrib library" OFF) +if(ZLIB_BUILD_ADA) + set(ZLIBADA_BUILD_SHARED ${ZLIB_BUILD_SHARED}) + set(ZLIBADA_BUILD_STATIC ${ZLIB_BUILD_STATIC}) + set(ZLIBADA_BUILD_TESTING ${ZLIB_BUILD_TESTING}) + add_subdirectory(ada/) +endif(ZLIB_BUILD_ADA) + if(ZLIB_BUILD_MINIZIP) set(MINIZIP_BUILD_SHARED ${ZLIB_BUILD_SHARED}) set(MINIZIP_BUILD_STATIC ${ZLIB_BUILD_STATIC}) diff --git a/contrib/ada/CMakeLists.txt b/contrib/ada/CMakeLists.txt new file mode 100644 index 0000000000..98f7b97812 --- /dev/null +++ b/contrib/ada/CMakeLists.txt @@ -0,0 +1,214 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules") + +project( + zlibAda + VERSION 1.0.0 + LANGUAGES ADA + DESCRIPTION "A library for creating zipfiles based in zlib" + HOMEPAGE_URL "https://www.zlib.net") + +option(ZLIBADA_BUILD_SHARED "Enable building ada bindings shared library" ON) +option(ZLIBADA_BUILD_STATIC "Enable building ada bindings static library" ON) +option(ZLIBADA_BUILD_TESTING "Enable building tests for ada bindings library" ON) + +if(WIN32 OR CYGWIN) + set(zlibAda_static_suffix "s") + set(CMAKE_DEBUG_POSTFIX "d") +endif(WIN32 OR CYGWIN) + +if(NOT DEFINED ZLIB_BUILD_ADA) + if(ZLIBADA_BUILD_SHARED) + list(APPEND REQUIRED_COMPONENTS "shared") + endif(ZLIBADA_BUILD_SHARED) + + if(ZLIBADA_BUILD_STATIC) + list(APPEND REQUIRED_COMPONENTS "static") + endif(ZLIB_BUILD_STATIC) + + find_package(ZLIB REQUIRED COMPONENTS ${REQUIRED_COMPONENTS} CONFIG) +endif(NOT DEFINED ZLIB_BUILD_ADA) + +function(ZLIBADA_findTestEnv testName) + set(testEnv "PATH=") + + if(MSVC OR MINGW) + set(separator "\\\;") + else() + set(separator ":") + endif() + + string(APPEND testEnv "$${separator}") + string(APPEND testEnv "$ENV{PATH}") + + set_tests_properties(${testName} PROPERTIES ENVIRONMENT "${testEnv}") +endfunction(ZLIBADA_findTestEnv testName) + +if(ZLIBADA_BUILD_SHARED) + ada_add_library(zlib-Ada SHARED + zlib-thin.adb + zlib.adb) + + target_link_libraries(zlib-Ada + INTERFACE ZLIB::ZLIB) + + ada_add_library(zlib-streams SHARED + zlib-streams.adb) + + target_link_libraries(zlib-streams + PUBLIC + zlib-Ada) + + ada_find_ali(zlib-streams) + + if(ZLIBADA_BUILD_TESTING) + enable_testing() + ada_add_executable(ada-test test.adb) + + target_link_libraries(ada-test + PRIVATE + zlib-Ada + zlib-streams) + + ada_find_ali(ada-test) + + add_test(NAME zlibAda_ada-test COMMAND ada-test) + set_tests_properties(zlibAda_ada-test PROPERTIES FIXTURES_REQUIRED ada_cleanup) + + if(MSVC + OR MSYS + OR MINGW + OR CYGWIN) + zlibada_findtestenv(zlibAda_ada-test) + endif( + MSVC + OR MSYS + OR MINGW + OR CYGWIN) + + ada_add_executable(buffer_demo buffer_demo.adb) + + target_link_libraries(buffer_demo + PRIVATE + zlib-Ada) + + ada_find_ali(buffer_demo) + + add_test(NAME zlibAda_buffer-demo COMMAND buffer_demo) + + if(MSVC + OR MSYS + OR MINGW + OR CYGWIN) + zlibada_findtestenv(zlibAda_buffer-demo) + endif( + MSVC + OR MSYS + OR MINGW + OR CYGWIN) + + ada_add_executable(mtest mtest.adb) + + target_link_libraries(mtest + PRIVATE + zlib-Ada) + + ada_find_ali(mtest) + + #Not adding test as this is an endless-loop + + ada_add_executable(read read.adb) + + target_link_libraries(read + PRIVATE + zlib-Ada) + + ada_find_ali(read) + + add_test(NAME zlibAda_read COMMAND read) + + if(MSVC + OR MSYS + OR MINGW + OR CYGWIN) + zlibada_findtestenv(zlibAda_read) + endif( + MSVC + OR MSYS + OR MINGW + OR CYGWIN) + endif(ZLIBADA_BUILD_TESTING) +endif(ZLIBADA_BUILD_SHARED) + +if(ZLIBADA_BUILD_STATIC) + ada_add_library(zlib-AdaStatic STATIC + zlib-thin.adb + zlib.adb) + + target_link_libraries(zlib-AdaStatic + INTERFACE ZLIB::ZLIBSTATIC) + + set_target_properties(zlib-AdaStatic + PROPERTIES OUTPUT_NAME zlib-Ada${zlibAda_static_suffix}) + + ada_add_library(zlib-streamsStatic STATIC + zlib-streams.adb) + + target_link_libraries(zlib-streamsStatic + PUBLIC + zlib-AdaStatic) + + ada_find_ali(zlib-streamsStatic) + + if(ZLIBADA_BUILD_TESTING) + enable_testing() + ada_add_executable(ada-testStatic test.adb) + + target_link_libraries(ada-testStatic + PRIVATE + zlib-AdaStatic + zlib-streamsStatic) + + ada_find_ali(ada-testStatic) + + add_test(NAME zlibAda_ada-testStatic COMMAND ada-testStatic) + set_tests_properties(zlibAda_ada-testStatic PROPERTIES FIXTURES_REQUIRED ada_cleanup) + + ada_add_executable(buffer_demoStatic buffer_demo.adb) + + target_link_libraries(buffer_demoStatic + PRIVATE + zlib-AdaStatic) + + ada_find_ali(buffer_demoStatic) + + add_test(NAME zlibAda-buffer-demoStatic COMMAND buffer_demoStatic) + + ada_add_executable(mtestStatic mtest.adb) + + target_link_libraries(mtestStatic + PRIVATE + zlib-AdaStatic) + + ada_find_ali(mtestStatic) + + # Not adding test as this is an endless-loop + + ada_add_executable(readStatic read.adb) + + target_link_libraries(readStatic + PRIVATE + zlib-AdaStatic) + + ada_find_ali(readStatic) + + add_test(NAME zlibAda_readStatic COMMAND readStatic) + endif(ZLIBADA_BUILD_TESTING) +endif(ZLIBADA_BUILD_STATIC) + +if(ZLIBADA_BUILD_TESTING) + add_test(NAME zlibAda_cleanup COMMAND ${CMAKE_COMMAND} -E rm ${CMAKE_CURRENT_BINARY_DIR}/testzlib.in + ${CMAKE_CURRENT_BINARY_DIR}/testzlib.out ${CMAKE_CURRENT_BINARY_DIR}/testzlib.zlb) + set_tests_properties(zlibAda_cleanup PROPERTIES FIXTURES_CLEANUP ada_cleanup) +endif(ZLIBADA_BUILD_TESTING) diff --git a/contrib/ada/cmake/Modules/CMakeADACompiler.cmake.in b/contrib/ada/cmake/Modules/CMakeADACompiler.cmake.in new file mode 100644 index 0000000000..a3a4086b57 --- /dev/null +++ b/contrib/ada/cmake/Modules/CMakeADACompiler.cmake.in @@ -0,0 +1,23 @@ +set(CMAKE_ADA_COMPILER "@CMAKE_ADA_COMPILER@") +set(CMAKE_ADA_COMPILER_ARG1 "@CMAKE_ADA_COMPILER_ARG1@") +set(CMAKE_ADA_COMPILER_ID "@CMAKE_ADA_COMPILER_ID@") +set(CMAKE_ADA_COMPILER_VERSION "@CMAKE_ADA_COMPILER_VERSION@") +set(CMAKE_ADA_PLATFORM_ID "@CMAKE_ADA_PLATFORM_ID@") +set(CMAKE_AR "@CMAKE_AR@") +#set(CMAKE_RANLIB "@CMAKE_RANLIB@") +#set(CMAKE_LINKER "@CMAKE_LINKER@") +set(CMAKE_ADA_COMPILER_LOADED TRUE) +set(CMAKE_ADA_COMPILER_WORKS @CMAKE_ADA_COMPILER_WORKS@) +#set(CMAKE_ADA_ABI_COMPILED @CMAKE_ADA_ABI_COMPILED@) + +set(CMAKE_ADA_COMPILER_ENV_VAR "ADA") + +set(CMAKE_ADA_COMPILER_ID_RUN TRUE) +set(CMAKE_ADA_SOURCE_FILE_EXTENSIONS adb;ADB) +set(CMAKE_ADA_IGNORE_EXTENSIONS ;o;O;obj;OBJ;ali) + +set(CMAKE_ADA_BINDER_HELPER "@CMAKE_ADA_BINDER_HELPER@") +set(CMAKE_ADA_COMPILER_HELPER "@CMAKE_ADA_COMPILER_HELPER@") +set(CMAKE_ADA_EXE_LINK_HELPER "@CMAKE_ADA_EXE_LINK_HELPER@") +set(CMAKE_ADA_SHARED_LINK_HELPER "@CMAKE_ADA_SHARED_LINK_HELPER@") +set(CMAKE_ADA_STATIC_LINK_HELPER "@CMAKE_ADA_STATIC_LINK_HELPER@") diff --git a/contrib/ada/cmake/Modules/CMakeADAInformation.cmake b/contrib/ada/cmake/Modules/CMakeADAInformation.cmake new file mode 100644 index 0000000000..70755fa022 --- /dev/null +++ b/contrib/ada/cmake/Modules/CMakeADAInformation.cmake @@ -0,0 +1,149 @@ +include(CMakeLanguageInformation) + +set(CMAKE_ADA_OUTPUT_EXTENSION .o) +set(CMAKE_ADA_OUTPUT_EXTENSION_REPLACE TRUE) + +if(CMAKE_USER_MAKE_RULES_OVERRIDE) + include(${CMAKE_USER_MAKE_RULES_OVERRIDE} RESULT_VARIABLE _override) + set(CMAKE_USER_MAKE_RULES_OVERRIDE "${_override}") +endif(CMAKE_USER_MAKE_RULES_OVERRIDE) + + +if(CMAKE_USER_MAKE_RULES_OVERRIDE_ADA) + include(${CMAKE_USER_MAKE_RULES_OVERRIDE_ADA} RESULT_VARIABLE _override) + set(CMAKE_USER_MAKE_RULES_OVERRIDE_ADA "${_override}") +endif(CMAKE_USER_MAKE_RULES_OVERRIDE_ADA) + +set(CMAKE_ADA_FLAGS_INIT "$ENV{ADAFLAGS} ${CMAKE_ADA_FLAGS_INIT}") + +string(APPEND CMAKE_ADA_FLAGS_INIT " ") +string(APPEND CMAKE_ADA_FLAGS_DEBUG_INIT " -g") +string(APPEND CMAKE_ADA_FLAGS_MINSIZEREL_INIT " -Os") +string(APPEND CMAKE_ADA_FLAGS_RELEASE_INIT " -O3") +string(APPEND CMAKE_ADA_FLAGS_RELWITHDEBINFO_INIT " -O2 -g") + +cmake_initialize_per_config_variable(CMAKE_ADA_FLAGS "Flags used by the Ada compiler") + +if(CMAKE_ADA_STANDARD_LIBRARIES_INIT) + set(CMAKE_ADA_STANDARD_LIBRARIES + "${CMAKE_ADA_STANDARD_LIBRARIES_INIT}" + CACHE + STRING "Libraries linked by default with all Ada applications.") + mark_as_advanced(CMAKE_ADA_STANDARD_LIBRARIES) +endif(CMAKE_ADA_STANDARD_LIBRARIES_INIT) + +if(NOT CMAKE_ADA_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_ADA_COMPILER_LAUNCHER}) + set(CMAKE_ADA_COMPILER_LAUNCHER + "$ENV{CMAKE_ADA_COMPILER_LAUNCHER}" + CACHE + STRING "Compiler launcher for Ada.") +endif(NOT CMAKE_ADA_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_ADA_COMPILER_LAUNCHER}) + +if(NOT CMAKE_ADA_LINKER_LAUNCHER AND DEFINED ENV{CMAKE_ADA_LINKER_LAUNCHER}) + set(CMAKE_ADA_LINKER_LAUNCHER + "$ENV{CMAKE_ADA_LINKER_LAUNCHER}" + CACHE + STRING "Linker launcher for Ada.") +endif(NOT CMAKE_ADA_LINKER_LAUNCHER AND DEFINED ENV{CMAKE_ADA_LINKER_LAUNCHER}) + +include(CMakeCommonLanguageInclude) +_cmake_common_language_platform_flags(ADA) + +if(NOT CMAKE_ADA_CREATE_SHARED_LIBRARY) + set(CMAKE_ADA_CREATE_SHARED_LIBRARY + "${CMAKE_ADA_BINDER_HELPER} FLAGS " + "${CMAKE_ADA_SHARED_LINK_HELPER} ") +endif(NOT CMAKE_ADA_CREATE_SHARED_LIBRARY) + +if(NOT CMAKE_ADA_CREATE_STATIC_LIBRARY) + set(CMAKE_ADA_CREATE_STATIC_LIBRARY + "${CMAKE_ADA_STATIC_LINK_HELPER} ${CMAKE_AR} ") +endif(NOT CMAKE_ADA_CREATE_STATIC_LIBRARY) +# create a C shared module just copy the shared library rule +#if(NOT CMAKE_C_CREATE_SHARED_MODULE) +# set(CMAKE_C_CREATE_SHARED_MODULE ${CMAKE_C_CREATE_SHARED_LIBRARY}) +#endif() + +# Create a static archive incrementally for large object file counts. +# If CMAKE_C_CREATE_STATIC_LIBRARY is set it will override these. +#if(NOT DEFINED CMAKE_C_ARCHIVE_CREATE) +# set(CMAKE_C_ARCHIVE_CREATE " qc ") +#endif() +#if(NOT DEFINED CMAKE_C_ARCHIVE_APPEND) +# set(CMAKE_C_ARCHIVE_APPEND " q ") +#endif() +#if(NOT DEFINED CMAKE_C_ARCHIVE_FINISH) +# set(CMAKE_C_ARCHIVE_FINISH " ") +#endif() + +if(NOT CMAKE_ADA_COMPILE_OBJECT) + set(CMAKE_ADA_COMPILE_OBJECT + "${CMAKE_ADA_COMPILER_HELPER} ") +endif(NOT CMAKE_ADA_COMPILE_OBJECT) + +if(NOT CMAKE_ADA_LINK_EXECUTABLE) + set(CMAKE_ADA_LINK_EXECUTABLE + "${CMAKE_ADA_BINDER_HELPER} FLAGS " + "${CMAKE_ADA_EXE_LINK_HELPER} OBJ LIBS ") +endif(NOT CMAKE_ADA_LINK_EXECUTABLE) + +function(ada_add_executable) + if(ARGC GREATER 1) + math(EXPR last_index "${ARGC} - 1") + foreach(source RANGE 1 ${last_index}) + list(APPEND SOURCES ${ARGV${source}}) + string(REPLACE ".adb" "" ali "${ARGV${source}}") + set(clean_file "CMakeFiles/${ARGV0}.dir/${ali}.ali") + list(APPEND CLEAN_FILES ${clean_file}) + list(APPEND CLEAN_FILES b~${ali}.adb) + list(APPEND CLEAN_FILES b~${ali}.ads) + list(APPEND CLEAN_FILES b~${ali}.ali) + list(APPEND CLEAN_FILES b~${ali}.o) + endforeach(source RANGE 1 ${ARGC}) + + add_executable(${ARGV0} ${ARGV1} ${SOURCES}) + + set_target_properties(${ARGV0} + PROPERTIES + ADDITIONAL_CLEAN_FILES "${CLEAN_FILES}") + endif(ARGC GREATER 1) +endfunction(ada_add_executable) + +function(ada_add_library) + if(ARGC GREATER 2) + math(EXPR last_index "${ARGC} - 1") + foreach(source RANGE 2 ${last_index}) + list(APPEND SOURCES ${ARGV${source}}) + string(REPLACE ".adb" "" ali "${ARGV${source}}") + set(clean_file "CMakeFiles/${ARGV0}.dir/${ali}.ali") + list(APPEND CLEAN_FILES ${clean_file}) + list(APPEND CLEAN_FILES b~${ali}.adb) + list(APPEND CLEAN_FILES b~${ali}.ads) + list(APPEND CLEAN_FILES b~${ali}.ali) + list(APPEND CLEAN_FILES b~${ali}.o) + endforeach(source RANGE 2 ${ARGC}) + + add_library(${ARGV0} ${ARGV1} ${SOURCES}) + + set_target_properties(${ARGV0} + PROPERTIES + ADDITIONAL_CLEAN_FILES "${CLEAN_FILES};dummylib.adb;dummylib.ali;dummylib.o" + ALI_FLAG "-aO${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${ARGV0}.dir/") + endif(ARGC GREATER 2) +endfunction(ada_add_library) + +function(ada_find_ali) + get_target_property(link_libs ${ARGV0} LINK_LIBRARIES) + + foreach(lib IN LISTS link_libs) + get_target_property(ali ${lib} ALI_FLAG) + string(APPEND FLAGS ${ali} " ") + unset(ali) + endforeach(lib IN LISTS link_libs) + + set_target_properties(${ARGV0} + PROPERTIES + LINK_FLAGS ${FLAGS}) +endfunction(ada_find_ali) + +set(CMAKE_ADA_INFORMATION_LOADED TRUE) diff --git a/contrib/ada/cmake/Modules/CMakeDetermineADACompiler.cmake b/contrib/ada/cmake/Modules/CMakeDetermineADACompiler.cmake new file mode 100644 index 0000000000..1562a6c9c4 --- /dev/null +++ b/contrib/ada/cmake/Modules/CMakeDetermineADACompiler.cmake @@ -0,0 +1,33 @@ +include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake) + +# Load system-specific compiler preferences for this language. +include(Platform/${CMAKE_SYSTEM_NAME}-Determine-Ada OPTIONAL) +include(Platform/${CMAKE_SYSTEM_NAME}-Ada OPTIONAL) + +if(NOT CMAKE_ADA_COMPILER_NAMES) + set(CMAKE_ADA_COMPILER_NAMES gnat) + + foreach(ver RANGE 11 99) + list(APPEND CMAKE_ADA_COMPILER_NAMES gnat-${ver}) + endforeach(ver RANGE 11 99) +endif(NOT CMAKE_ADA_COMPILER_NAMES) + +if(NOT CMAKE_ADA_COMPILER) + set(CMAKE_ADA_COMPILER_INIT NOTFOUND) + _cmake_find_compiler(ADA) +else(NOT CMAKE_REAL_ADA_COMPILER) + _cmake_find_compiler_path(ADA) +endif(NOT CMAKE_ADA_COMPILER) + +mark_as_advanced(CMAKE_ADA_COMPILER) +set(CMAKE_ADA_COMPILER_ID "GNU") +set(CMAKE_ADA_BINDER_HELPER "${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/binder_helper.cmake") +set(CMAKE_ADA_COMPILER_HELPER "${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compile_helper.cmake") +set(CMAKE_ADA_EXE_LINK_HELPER "${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/exe_link_helper.cmake") +set(CMAKE_ADA_SHARED_LINK_HELPER "${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/shared_link_helper.cmake") +set(CMAKE_ADA_STATIC_LINK_HELPER "${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/static_link_helper.cmake") + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/CMakeADACompiler.cmake.in + ${CMAKE_PLATFORM_INFO_DIR}/CMakeADACompiler.cmake + @ONLY) diff --git a/contrib/ada/cmake/Modules/CMakeTestADACompiler.cmake b/contrib/ada/cmake/Modules/CMakeTestADACompiler.cmake new file mode 100644 index 0000000000..889c93c061 --- /dev/null +++ b/contrib/ada/cmake/Modules/CMakeTestADACompiler.cmake @@ -0,0 +1,46 @@ +include(CMakeTestCompilerCommon) +unset(CMAKE_ADA_COMPILER_WORKS CACHE) + +if(NOT CMAKE_ADA_COMPILER_WORKS) + PrintTestCompilerStatus("ADA" "") + set(_ADA_TEST_FILE "${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/CMakeTmp/main.adb") + + file(WRITE ${_ADA_TEST_FILE} + "with Ada.Text_IO; use Ada.Text_IO;\n" + "\n" + "procedure main is\n" + "begin\n" + "Put_Line(\"Hello, World!\");\n" + "end Main;\n") + + try_compile(CMAKE_ADA_COMPILER_WORKS ${CMAKE_BINARY_DIR} + ${_ADA_TEST_FILE} + OUTPUT_VARIABLE __CMAKE_ADA_COMPILER_OUTPUT) + + set(CMAKE_ADA_COMPILER_WORKS ${CMAKE_ADA_COMPILER_WORKS}) + unset(CMAKE_ADA_COMPILER_WORKS CACHE) + set(ADA_TEST_WAS_RUN TRUE) +endif(NOT CMAKE_ADA_COMPILER_WORKS) + +if(NOT CMAKE_ADA_COMPILER_WORKS) + PrintTestCompilerStatus("ADA" " -- broken") + + file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log + "Determining if the Ada compiler works failed with " + "the following output:\n${__CMAKE_ADA_COMPILER_OUTPUT}\n\n") + + message(FATAL_ERROR "The Ada compiler \"${CMAKE_ADA_COMPILER}\" " + "is not able to compile a simple test program.\nIt fails " + "with the following output:\n ${__CMAKE_ADA_COMPILER_OUTPUT}\n\n" + "CMake will not be able to correctly generate this project.") +else(NOT CMAKE_ADA_COMPILER_WORKS) + if(ADA_TEST_WAS_RUN) + PrintTestCompilerStatus("ADA" " -- works") + + file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log + "Determining if the Ada compiler works passed with " + "the following output:\n${__CMAKE_ADA_COMPILER_OUTPUT}\n\n") + endif(ADA_TEST_WAS_RUN) +endif(NOT CMAKE_ADA_COMPILER_WORKS) + +unset(__CMAKE_ADA_COMPILER_OUTPUT) diff --git a/contrib/ada/cmake/binder_helper.cmake b/contrib/ada/cmake/binder_helper.cmake new file mode 100644 index 0000000000..cc70d7cece --- /dev/null +++ b/contrib/ada/cmake/binder_helper.cmake @@ -0,0 +1,41 @@ +#CMAKE_ARGV0 = /path/to/cmake +#CMAKE_ARGV1 = -P +#CMAKE_ARGV2 = path/to/this/file +#CMAKE_ARGV3 = binder +#CMAKE_ARGV4 = ali + +if(NOT CMAKE_ARGV3) + message(FATAL_ERROR "binder not set") +endif(NOT CMAKE_ARGV3) + +string(REPLACE ".o" ".ali" ALI ${CMAKE_ARGV4}) + +set (REACHED_FLAGS FALSE) +#iterate over additional objects, only the main one is needed +foreach(arg RANGE 5 ${CMAKE_ARGC}) + if(CMAKE_ARGV${arg} STREQUAL FLAGS) + set(REACHED_FLAGS TRUE) + continue() + endif(CMAKE_ARGV${arg} STREQUAL FLAGS) + + if(REACHED_FLAGS) + list(APPEND FLAGS ${CMAKE_ARGV${arg}}) + endif(REACHED_FLAGS) +endforeach(arg RANGE 5 CMAKE_ARGC) + +#first see if there is a main function +execute_process(COMMAND ${CMAKE_ARGV3} bind ${ALI} ${FLAGS} + RESULT_VARIABLE MAIN_RESULT + OUTPUT_VARIABLE dont_care + ERROR_VARIABLE ERROR) + +if(MAIN_RESULT) + execute_process(COMMAND ${CMAKE_ARGV3} bind -n ${ALI} ${FLAGS} + RESULT_VARIABLE RESULT + OUTPUT_VARIABLE dont_care + ERROR_VARIABLE ERROR) +endif(MAIN_RESULT) + +if(RESULT) + message(FATAL_ERROR ${RESULT} ${ERROR}) +endif(RESULT) diff --git a/contrib/ada/cmake/compile_helper.cmake b/contrib/ada/cmake/compile_helper.cmake new file mode 100644 index 0000000000..fe4821e310 --- /dev/null +++ b/contrib/ada/cmake/compile_helper.cmake @@ -0,0 +1,32 @@ +#CMAKE_ARGV0 = /path/to/cmake +#CMAKE_ARGV1 = -P +#CMAKE_ARGV2 = path/to/this/file +#CMAKE_ARGV3 = compiler +#CMAKE_ARGV4 = OBJECT-DIR +#CMAKE_ARGV5 = source-file + +if(NOT CMAKE_ARGV3) + message(FATAL_ERROR "compiler not set") +endif(NOT CMAKE_ARGV3) + +if(NOT CMAKE_ARGV4) + message(FATAL_ERROR "object dir not set") +endif(NOT CMAKE_ARGV4) + +if(NOT CMAKE_ARGV5) + message(FATAL_ERROR "source not set") +endif(NOT CMAKE_ARGV5) + +foreach(arg RANGE 6 ${CMAKE_ARGC}) + list(APPEND FLAGS "${CMAKE_ARGV${arg}}") +endforeach(arg RANGE 6 ${CMAKE_ARGC}) + +execute_process(COMMAND ${CMAKE_ARGV3} compile ${FLAGS} ${CMAKE_ARGV5} + WORKING_DIRECTORY ${CMAKE_ARGV4} + RESULT_VARIABLE RESULT + OUTPUT_VARIABLE dont_care + ERROR_VARIABLE ERROR) + +if(RESULT) + message(FATAL_ERROR ${RESULT} ${ERROR}) +endif(RESULT) diff --git a/contrib/ada/cmake/exe_link_helper.cmake b/contrib/ada/cmake/exe_link_helper.cmake new file mode 100644 index 0000000000..7937890960 --- /dev/null +++ b/contrib/ada/cmake/exe_link_helper.cmake @@ -0,0 +1,53 @@ +#CMAKE_ARGV0 = /path/to/cmake +#CMAKE_ARGV1 = -P +#CMAKE_ARGV2 = path/to/this/file +#CMAKE_ARGV3 = linker +#CMAKE_ARGV4 = output-name +#CMAKE_ARGV5...CMAKE_AGVN = OBJECTS +#CMAKE_ARGVN+1 = LIBS +#CMAKE_ARGVN+2...CMAKE_ARGVM libraries + +if(NOT CMAKE_ARGV3) + message(FATAL_ERROR "linker not set") +endif(NOT CMAKE_ARGV3) + +set(REACHED_LIBS FALSE) +set(REACHED_OBJ FALSE) +foreach(arg RANGE 5 ${CMAKE_ARGC}) + if(CMAKE_ARGV${arg} STREQUAL LIBS) + set(REACHED_LIBS TRUE) + set(REACHED_OBJ FALSE) + continue() + endif(CMAKE_ARGV${arg} STREQUAL LIBS) + + if(CMAKE_ARGV${arg} STREQUAL OBJ) + set(REACHED_LIBS FALSE) + set(REACHED_OBJ TRUE) + continue() + endif(CMAKE_ARGV${arg} STREQUAL OBJ) + + if(CMAKE_ARGC EQUAL arg) + continue() + endif(CMAKE_ARGC EQUAL arg) + + if(REACHED_LIBS) + list(APPEND LIBS "${CMAKE_ARGV${arg}}") + elseif(REACHED_OBJ AND NOT ALI) + string(REPLACE ".o" ".ali" ALI "${CMAKE_ARGV${arg}}") + else(REACHED_LIBS) + string(SUBSTRING "${CMAKE_ARGV${arg}}" 0 3 start) + + if(NOT start STREQUAL -aO) + list(APPEND FLAGS "${CMAKE_ARGV${arg}}") + endif(NOT start STREQUAL -aO) + endif(REACHED_LIBS) +endforeach(arg RANGE 5 ${CMAKE_ARGC}) + +execute_process(COMMAND ${CMAKE_ARGV3} link ${ALI} -o ${CMAKE_ARGV4} ${FLAGS} ${OTHER_OBJECTS} ${LIBS} + RESULT_VARIABLE RESULT + OUTPUT_VARIABLE dont_care + ERROR_VARIABLE ERROR) + +if(RESULT) + message(FATAL_ERROR ${RESULT} ${ERROR}) +endif(RESULT) diff --git a/contrib/ada/cmake/shared_link_helper.cmake b/contrib/ada/cmake/shared_link_helper.cmake new file mode 100644 index 0000000000..baea9a1ad6 --- /dev/null +++ b/contrib/ada/cmake/shared_link_helper.cmake @@ -0,0 +1,52 @@ +#CMAKE_ARGV0 = /path/to/cmake +#CMAKE_ARGV1 = -P +#CMAKE_ARGV2 = path/to/this/file +#CMAKE_ARGV3 = linker +#CMAKE_ARGV4 = output-name +#CMAKE_ARGV5...CMAKE_AGVN = OBJECTS +#CMAKE_ARGVN+1 = LIBS +#CMAKE_ARGVN+2...CMAKE_ARGVM libraries + +if(NOT CMAKE_ARGV3) + message(FATAL_ERROR "linker not set") +endif(NOT CMAKE_ARGV3) + +set(REACHED_FILES FALSE) +foreach(arg RANGE 5 ${CMAKE_ARGC}) + if(CMAKE_ARGV${arg} STREQUAL "LIBS") + set(REACHED_FILES TRUE) + continue() + endif(CMAKE_ARGV${arg} STREQUAL "LIBS") + + if(CMAKE_ARGC EQUAL arg) + continue() + endif(CMAKE_ARGC EQUAL arg) + + if(REACHED_LIBS) + list(APPEND LIBS "${CMAKE_ARGV${arg}} ") + else(REACHED_LIBS) + list(APPEND OBJECT_FILES "${CMAKE_ARGV${arg}}") + endif(REACHED_LIBS) +endforeach(arg RANGE 5 ${CMAKE_ARGC}) + +file(WRITE dummylib.adb + "procedure dummylib is\n" + "begin\n" + " null;\n" + "end;\n") + +execute_process(COMMAND ${CMAKE_ARGV3} compile -fPIC dummylib.adb + OUTPUT_VARIABLE dont_care + ERROR_VARIABLE ERROR) +execute_process(COMMAND ${CMAKE_ARGV3} bind -n dummylib.ali + OUTPUT_VARIABLE dont_care + ERROR_VARIABLE ERROR) + +execute_process(COMMAND ${CMAKE_ARGV3} link -shared dummylib.ali -o ${CMAKE_ARGV4} ${OBJECT_FILES} ${LIBS} + RESULT_VARIABLE RESULT + OUTPUT_VARIABLE dont_care + ERROR_VARIABLE ERROR) + +if(RESULT) + message(FATAL_ERROR ${RESULT} ${ERROR}) +endif(RESULT) diff --git a/contrib/ada/cmake/static_link_helper.cmake b/contrib/ada/cmake/static_link_helper.cmake new file mode 100644 index 0000000000..eb3ff2bbf3 --- /dev/null +++ b/contrib/ada/cmake/static_link_helper.cmake @@ -0,0 +1,25 @@ +#CMAKE_ARGV0 = /path/to/cmake +#CMAKE_ARGV1 = -P +#CMAKE_ARGV2 = path/to/this/file +#CMAKE_ARGV3 = path/to/ar +#CMAKE_ARGV4 = output-name +#CMAKE_ARGV5...CMAKE_AGVN = OBJECTS + +if(NOT CMAKE_ARGV3) + message(FATAL_ERROR "linker not set") +endif(NOT CMAKE_ARGV3) + +foreach(arg RANGE 5 ${CMAKE_ARGC}) + if(NOT CMAKE_ARGC EQUAL arg) + list(APPEND OBJECT_FILES "${CMAKE_ARGV${arg}}") + endif(NOT CMAKE_ARGC EQUAL arg) +endforeach(arg RANGE 6 ${CMAKE_ARGC}) + +execute_process(COMMAND ${CMAKE_ARGV3} rcs ${CMAKE_ARGV4} ${OBJECT_FILES} + RESULT_VARIABLE RESULT + OUTPUT_VARIABLE dont_care + ERROR_VARIABLE ERROR) + +if(RESULT) + message(FATAL_ERROR ${RESULT} ${ERROR}) +endif(RESULT) From ae5ca3cd90f3618c1174e0afdc5825ca2d98a17b Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Tue, 30 Dec 2025 17:42:52 +0100 Subject: [PATCH 04/25] added blast --- contrib/CMakeLists.txt | 8 ++++ contrib/blast/CMakeLists.txt | 81 ++++++++++++++++++++++++++++++++++++ contrib/blast/Makefile | 16 ++++--- contrib/blast/blast-test.c | 42 +++++++++++++++++++ contrib/blast/blast.c | 44 -------------------- contrib/blast/blast.h | 1 + contrib/blast/tester.cmake | 28 +++++++++++++ 7 files changed, 171 insertions(+), 49 deletions(-) create mode 100644 contrib/blast/CMakeLists.txt create mode 100644 contrib/blast/blast-test.c create mode 100644 contrib/blast/tester.cmake diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index cc4b331093..63a838dc17 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -1,4 +1,5 @@ option(ZLIB_BUILD_ADA "Enable building of Ada bindings" OFF) +option(ZLIB_BUILD_BLAST "Enable building of blast binary" OFF) option(ZLIB_BUILD_MINIZIP "Enable building libminizip contrib library" OFF) if(ZLIB_BUILD_ADA) @@ -8,6 +9,13 @@ if(ZLIB_BUILD_ADA) add_subdirectory(ada/) endif(ZLIB_BUILD_ADA) +if(ZLIB_BUILD_BLAST) + set(ZLIBBLAST_BUILD_SHARED ${ZLIB_BUILD_SHARED}) + set(ZLIBBLAST_BUILD_STATIC ${ZLIB_BUILD_STATIC}) + set(ZLIBBLAST_BUILD_TESTING ${ZLIB_BUILD_TESTING}) + add_subdirectory(blast/) +endif(ZLIB_BUILD_BLAST) + if(ZLIB_BUILD_MINIZIP) set(MINIZIP_BUILD_SHARED ${ZLIB_BUILD_SHARED}) set(MINIZIP_BUILD_STATIC ${ZLIB_BUILD_STATIC}) diff --git a/contrib/blast/CMakeLists.txt b/contrib/blast/CMakeLists.txt new file mode 100644 index 0000000000..6357fcbbe1 --- /dev/null +++ b/contrib/blast/CMakeLists.txt @@ -0,0 +1,81 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules") + +project( + blast + VERSION 1.3.0 + LANGUAGES C + DESCRIPTION "A library for creating zipfiles based in zlib" + HOMEPAGE_URL "https://www.zlib.net") + +if(WIN32 OR CYGWIN) + set(zlibAda_static_suffix "s") + set(CMAKE_DEBUG_POSTFIX "d") +endif(WIN32 OR CYGWIN) + +function(blast_findTestEnv testName) + set(testEnv "PATH=") + + if(MSVC OR MINGW) + set(separator "\\\;") + else() + set(separator ":") + endif() + + string(APPEND testEnv "$${separator}") + string(APPEND testEnv "$ENV{PATH}") + + set_tests_properties(${testName} PROPERTIES ENVIRONMENT "${testEnv}") +endfunction(blast_findTestEnv testName) + +if(ZLIBBLAST_BUILD_SHARED) + add_library(blast SHARED + blast.c + blast.h) + + if(ZLIBBLAST_BUILD_TESTING) + enable_testing() + add_executable(blast-test blast-test.c) + target_link_libraries(blast-test blast) + + add_test(NAME blast_blast-test + COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/tester.cmake + "$" + "${CMAKE_CURRENT_SOURCE_DIR}" + "${CMAKE_CURRENT_BINARY_DIR}") + + if(MSVC + OR MSYS + OR MINGW + OR CYGWIN) + blast_findtestenv(blast-test) + endif( + MSVC + OR MSYS + OR MINGW + OR CYGWIN) + endif(ZLIBBLAST_BUILD_TESTING) +endif(ZLIBBLAST_BUILD_SHARED) + +if(ZLIBBLAST_BUILD_STATIC) + add_library(blastStatic STATIC + blast.c + blast.h) + + set_target_properties(blastStatic + PROPERTIES + OUTPUT_NAME blast${minizip_static_suffix}) + + if(ZLIBBLAST_BUILD_TESTING) + enable_testing() + add_executable(blast-testStatic blast-test.c) + target_link_libraries(blast-testStatic blastStatic) + + add_test(NAME blast_testStatic + COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/tester.cmake + "$" + "${CMAKE_CURRENT_SOURCE_DIR}" + "${CMAKE_CURRENT_BINARY_DIR}") + endif(ZLIBBLAST_BUILD_TESTING) +endif(ZLIBBLAST_BUILD_STATIC) diff --git a/contrib/blast/Makefile b/contrib/blast/Makefile index 9be80bafe0..f64848b36d 100644 --- a/contrib/blast/Makefile +++ b/contrib/blast/Makefile @@ -1,8 +1,14 @@ -blast: blast.c blast.h - cc -DTEST -o blast blast.c +all: test -test: blast - blast < test.pk | cmp - test.txt +libblast.so: blast.c blast.h + cc -o libblast.so -shared blast.c + +blast-test: libblast.so + cc -o blast-test.o -c blast-test.c + cc -o blast-test blast-test.o libblast.so + +test: blast-test + LD_LIBRARY_PATH=./ ./blast-test < test.pk | cmp - test.txt clean: - rm -f blast blast.o + rm -f libblast.so blast-test blast-test.o diff --git a/contrib/blast/blast-test.c b/contrib/blast/blast-test.c new file mode 100644 index 0000000000..471dfd6d82 --- /dev/null +++ b/contrib/blast/blast-test.c @@ -0,0 +1,42 @@ +#include "blast.h" /* prototype for blast() */ + +/* Example of how to use blast() */ +#include +#include + +#define CHUNK 16384 + +local unsigned inf(void *how, unsigned char **buf) +{ + static unsigned char hold[CHUNK]; + + *buf = hold; + return fread(hold, 1, CHUNK, (FILE *)how); +} + +local int outf(void *how, unsigned char *buf, unsigned len) +{ + return fwrite(buf, 1, len, (FILE *)how) != len; +} + +/* Decompress a PKWare Compression Library stream from stdin to stdout */ +int main(void) +{ + int ret; + unsigned left; + + /* decompress to stdout */ + left = 0; + ret = blast(inf, stdin, outf, stdout, &left, NULL); + if (ret != 0) + fprintf(stderr, "blast error: %d\n", ret); + + /* count any leftover bytes */ + while (getchar() != EOF) + left++; + if (left) + fprintf(stderr, "blast warning: %u unused bytes of input\n", left); + + /* return blast() error code */ + return ret; +} diff --git a/contrib/blast/blast.c b/contrib/blast/blast.c index e6e659073c..3f6963f89e 100644 --- a/contrib/blast/blast.c +++ b/contrib/blast/blast.c @@ -33,7 +33,6 @@ #include /* for setjmp(), longjmp(), and jmp_buf */ #include "blast.h" /* prototype for blast() */ -#define local static /* for local function definitions */ #define MAXBITS 13 /* maximum code length */ #define MAXWIN 4096 /* maximum window size */ @@ -421,46 +420,3 @@ int blast(blast_in infun, void *inhow, blast_out outfun, void *outhow, err = 1; return err; } - -#ifdef TEST -/* Example of how to use blast() */ -#include -#include - -#define CHUNK 16384 - -local unsigned inf(void *how, unsigned char **buf) -{ - static unsigned char hold[CHUNK]; - - *buf = hold; - return fread(hold, 1, CHUNK, (FILE *)how); -} - -local int outf(void *how, unsigned char *buf, unsigned len) -{ - return fwrite(buf, 1, len, (FILE *)how) != len; -} - -/* Decompress a PKWare Compression Library stream from stdin to stdout */ -int main(void) -{ - int ret; - unsigned left; - - /* decompress to stdout */ - left = 0; - ret = blast(inf, stdin, outf, stdout, &left, NULL); - if (ret != 0) - fprintf(stderr, "blast error: %d\n", ret); - - /* count any leftover bytes */ - while (getchar() != EOF) - left++; - if (left) - fprintf(stderr, "blast warning: %u unused bytes of input\n", left); - - /* return blast() error code */ - return ret; -} -#endif diff --git a/contrib/blast/blast.h b/contrib/blast/blast.h index ef8544c53b..c5ef7ab5e6 100644 --- a/contrib/blast/blast.h +++ b/contrib/blast/blast.h @@ -21,6 +21,7 @@ Mark Adler madler@alumni.caltech.edu */ +#define local static /* for local function definitions */ /* * blast() decompresses the PKWare Data Compression Library (DCL) compressed diff --git a/contrib/blast/tester.cmake b/contrib/blast/tester.cmake new file mode 100644 index 0000000000..14e69fca50 --- /dev/null +++ b/contrib/blast/tester.cmake @@ -0,0 +1,28 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +#CMAKE_ARGV0 = ${CMAKE_COMMAND} +#CMAKE_ARGV1 = -P +#CMAKE_ARGV2 = ${CMAKE_CURRENT_SOURCE_DIR}/tester.cmake +#CMAKE_ARGV3 = "$" +#CMAKE_ARGV4 = "${CMAKE_CURRENT_SOURCE_DIR}" +#CMAKE_ARGV5 = "${CMAKE_CURRENT_BINARY_DIR}") + +execute_process(COMMAND ${CMAKE_ARGV3} + INPUT_FILE "${CMAKE_ARGV4}/test.pk" + OUTPUT_FILE "${CMAKE_ARGV5}/output.txt" + RESULT_VARIABLE RESULT) + +if(RESULT) + message(FATAL_ERROR "Command exitited with: ${RESULT}") +endif(RESULT) + +execute_process(COMMAND ${CMAKE_ARGV0} -E compare_files + "${CMAKE_ARGV4}/test.txt" + "${CMAKE_ARGV5}/output.txt" + RESULT_VARIABLE RESULT) + +file(REMOVE "${CMAKE_ARGV5}/output.txt") + +if(RESULT) + message(FATAL_ERROR "Files differ") +endif(RESULT) From f279b793bdd591c48a841724c54b4623c24f2953 Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Tue, 30 Dec 2025 18:16:37 +0100 Subject: [PATCH 05/25] clean out unneeded stuff --- .../ada/cmake/Modules/CMakeADAInformation.cmake | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/contrib/ada/cmake/Modules/CMakeADAInformation.cmake b/contrib/ada/cmake/Modules/CMakeADAInformation.cmake index 70755fa022..923788f4db 100644 --- a/contrib/ada/cmake/Modules/CMakeADAInformation.cmake +++ b/contrib/ada/cmake/Modules/CMakeADAInformation.cmake @@ -59,22 +59,6 @@ if(NOT CMAKE_ADA_CREATE_STATIC_LIBRARY) set(CMAKE_ADA_CREATE_STATIC_LIBRARY "${CMAKE_ADA_STATIC_LINK_HELPER} ${CMAKE_AR} ") endif(NOT CMAKE_ADA_CREATE_STATIC_LIBRARY) -# create a C shared module just copy the shared library rule -#if(NOT CMAKE_C_CREATE_SHARED_MODULE) -# set(CMAKE_C_CREATE_SHARED_MODULE ${CMAKE_C_CREATE_SHARED_LIBRARY}) -#endif() - -# Create a static archive incrementally for large object file counts. -# If CMAKE_C_CREATE_STATIC_LIBRARY is set it will override these. -#if(NOT DEFINED CMAKE_C_ARCHIVE_CREATE) -# set(CMAKE_C_ARCHIVE_CREATE " qc ") -#endif() -#if(NOT DEFINED CMAKE_C_ARCHIVE_APPEND) -# set(CMAKE_C_ARCHIVE_APPEND " q ") -#endif() -#if(NOT DEFINED CMAKE_C_ARCHIVE_FINISH) -# set(CMAKE_C_ARCHIVE_FINISH " ") -#endif() if(NOT CMAKE_ADA_COMPILE_OBJECT) set(CMAKE_ADA_COMPILE_OBJECT From 7ba08d385cb4ef773f9f3aed1841e8545d2d4114 Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Tue, 30 Dec 2025 18:48:41 +0100 Subject: [PATCH 06/25] filter out optimisation flags for the ada binder --- contrib/ada/cmake/binder_helper.cmake | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/contrib/ada/cmake/binder_helper.cmake b/contrib/ada/cmake/binder_helper.cmake index cc70d7cece..87b320266d 100644 --- a/contrib/ada/cmake/binder_helper.cmake +++ b/contrib/ada/cmake/binder_helper.cmake @@ -18,6 +18,12 @@ foreach(arg RANGE 5 ${CMAKE_ARGC}) continue() endif(CMAKE_ARGV${arg} STREQUAL FLAGS) + string(SUBSTRING "${CMAKE_ARGV${arg}}" 0 2 start) + + if(start STREQUAL "-O") + continue() + endif(start STREQUAL "-O") + if(REACHED_FLAGS) list(APPEND FLAGS ${CMAKE_ARGV${arg}}) endif(REACHED_FLAGS) From 5ef38c2c9cb28c3a5456f70389c8c9a58ed4404e Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Tue, 30 Dec 2025 18:49:01 +0100 Subject: [PATCH 07/25] added gcc_gvmat64 --- contrib/CMakeLists.txt | 7 +++++++ contrib/gcc_gvmat64/CMakeLists.txt | 14 ++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 contrib/gcc_gvmat64/CMakeLists.txt diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index 63a838dc17..f5916f3f07 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -1,6 +1,9 @@ option(ZLIB_BUILD_ADA "Enable building of Ada bindings" OFF) option(ZLIB_BUILD_BLAST "Enable building of blast binary" OFF) option(ZLIB_BUILD_MINIZIP "Enable building libminizip contrib library" OFF) +option(ZLIB_WITH_GVMAT64 + "Enable an optiomized longest_match for 32 bits x86_64" + OFF) if(ZLIB_BUILD_ADA) set(ZLIBADA_BUILD_SHARED ${ZLIB_BUILD_SHARED}) @@ -22,3 +25,7 @@ if(ZLIB_BUILD_MINIZIP) set(MINIZIP_BUILD_TESTING ${ZLIB_BUILD_TESTING}) add_subdirectory(minizip/) endif(ZLIB_BUILD_MINIZIP) + +if(ZLIB_WITH_GVMAT64) + add_subdirectory(gcc_gvmat64/) +endif(ZLIB_WITH_GVMAT64) diff --git a/contrib/gcc_gvmat64/CMakeLists.txt b/contrib/gcc_gvmat64/CMakeLists.txt new file mode 100644 index 0000000000..2f90d756be --- /dev/null +++ b/contrib/gcc_gvmat64/CMakeLists.txt @@ -0,0 +1,14 @@ +enable_language(ASM) + +# Need to push CMAKE_ASM_COMPILE_OBJECT to cache as otherwise it's not +# available in top-level + +set(CMAKE_ASM_COMPILE_OBJECT ${CMAKE_ASM_COMPILE_OBJECT} CACHE INTERNAL "" FORCE) + +if(ZLIB_BUILD_SHARED) + target_sources(zlib PRIVATE gvmat64.S) +endif(ZLIB_BUILD_SHARED) + +if(ZLIB_BUILD_STATIC) + target_sources(zlibstatic PRIVATE gvmat64.S) +endif(ZLIB_BUILD_STATIC) From 42a0f7faeb39fb9917de23766b9b21bf1b76b3a0 Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Wed, 31 Dec 2025 10:52:11 +0100 Subject: [PATCH 08/25] added infback9 --- contrib/CMakeLists.txt | 4 ++++ contrib/infback9/CMakeLists.txt | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 contrib/infback9/CMakeLists.txt diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index f5916f3f07..c3e302ae2b 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -4,6 +4,7 @@ option(ZLIB_BUILD_MINIZIP "Enable building libminizip contrib library" OFF) option(ZLIB_WITH_GVMAT64 "Enable an optiomized longest_match for 32 bits x86_64" OFF) +option(ZLIB_WITH_INFBACK9 "Build with support for method 9 deflate" OFF) if(ZLIB_BUILD_ADA) set(ZLIBADA_BUILD_SHARED ${ZLIB_BUILD_SHARED}) @@ -29,3 +30,6 @@ endif(ZLIB_BUILD_MINIZIP) if(ZLIB_WITH_GVMAT64) add_subdirectory(gcc_gvmat64/) endif(ZLIB_WITH_GVMAT64) +if(ZLIB_WITH_INFBACK9) + add_subdirectory(infback9/) +endif(ZLIB_WITH_INFBACK9) diff --git a/contrib/infback9/CMakeLists.txt b/contrib/infback9/CMakeLists.txt new file mode 100644 index 0000000000..e4bb49e766 --- /dev/null +++ b/contrib/infback9/CMakeLists.txt @@ -0,0 +1,19 @@ +if(ZLIB_BUILD_SHARED) + target_sources(zlib + PRIVATE + infback9.c + inftree9.c + infback9.h + inffix9.h + inftree9.h) +endif(ZLIB_BUILD_SHARED) + +if(ZLIB_BUILD_STATIC) + target_sources(zlibstatic + PRIVATE + infback9.c + inftree9.c + infback9.h + inffix9.h + inftree9.h) +endif(ZLIB_BUILD_STATIC) From 9c1bd73434a7fbd9fde6906db0ed7f393aa587c0 Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Wed, 31 Dec 2025 10:54:35 +0100 Subject: [PATCH 09/25] unified options --- contrib/CMakeLists.txt | 12 +++---- contrib/ada/CMakeLists.txt | 64 ++++++++++++++++++------------------ contrib/blast/CMakeLists.txt | 20 ++++++----- 3 files changed, 50 insertions(+), 46 deletions(-) diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index c3e302ae2b..cf5c1e0950 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -7,16 +7,16 @@ option(ZLIB_WITH_GVMAT64 option(ZLIB_WITH_INFBACK9 "Build with support for method 9 deflate" OFF) if(ZLIB_BUILD_ADA) - set(ZLIBADA_BUILD_SHARED ${ZLIB_BUILD_SHARED}) - set(ZLIBADA_BUILD_STATIC ${ZLIB_BUILD_STATIC}) - set(ZLIBADA_BUILD_TESTING ${ZLIB_BUILD_TESTING}) + set(ZLIB_ADA_BUILD_SHARED ${ZLIB_BUILD_SHARED}) + set(ZLIB_ADA_BUILD_STATIC ${ZLIB_BUILD_STATIC}) + set(ZLIB_ADA_BUILD_TESTING ${ZLIB_BUILD_TESTING}) add_subdirectory(ada/) endif(ZLIB_BUILD_ADA) if(ZLIB_BUILD_BLAST) - set(ZLIBBLAST_BUILD_SHARED ${ZLIB_BUILD_SHARED}) - set(ZLIBBLAST_BUILD_STATIC ${ZLIB_BUILD_STATIC}) - set(ZLIBBLAST_BUILD_TESTING ${ZLIB_BUILD_TESTING}) + set(ZLIB_BLAST_BUILD_SHARED ${ZLIB_BUILD_SHARED}) + set(ZLIB_BLAST_BUILD_STATIC ${ZLIB_BUILD_STATIC}) + set(ZLIB_BLAST_BUILD_TESTING ${ZLIB_BUILD_TESTING}) add_subdirectory(blast/) endif(ZLIB_BUILD_BLAST) diff --git a/contrib/ada/CMakeLists.txt b/contrib/ada/CMakeLists.txt index 98f7b97812..cb8b156836 100644 --- a/contrib/ada/CMakeLists.txt +++ b/contrib/ada/CMakeLists.txt @@ -9,9 +9,9 @@ project( DESCRIPTION "A library for creating zipfiles based in zlib" HOMEPAGE_URL "https://www.zlib.net") -option(ZLIBADA_BUILD_SHARED "Enable building ada bindings shared library" ON) -option(ZLIBADA_BUILD_STATIC "Enable building ada bindings static library" ON) -option(ZLIBADA_BUILD_TESTING "Enable building tests for ada bindings library" ON) +option(ZLIB_ADA_BUILD_SHARED "Enable building ada bindings shared library" ON) +option(ZLIB_ADA_BUILD_STATIC "Enable building ada bindings static library" ON) +option(ZLIB_ADA_BUILD_TESTING "Enable building tests for ada bindings library" ON) if(WIN32 OR CYGWIN) set(zlibAda_static_suffix "s") @@ -19,18 +19,18 @@ if(WIN32 OR CYGWIN) endif(WIN32 OR CYGWIN) if(NOT DEFINED ZLIB_BUILD_ADA) - if(ZLIBADA_BUILD_SHARED) + if(ZLIB_ADA_BUILD_SHARED) list(APPEND REQUIRED_COMPONENTS "shared") - endif(ZLIBADA_BUILD_SHARED) + endif(ZLIB_ADA_BUILD_SHARED) - if(ZLIBADA_BUILD_STATIC) + if(ZLIB_ADA_BUILD_STATIC) list(APPEND REQUIRED_COMPONENTS "static") - endif(ZLIB_BUILD_STATIC) + endif(ZLIB_ADA_BUILD_STATIC) find_package(ZLIB REQUIRED COMPONENTS ${REQUIRED_COMPONENTS} CONFIG) endif(NOT DEFINED ZLIB_BUILD_ADA) -function(ZLIBADA_findTestEnv testName) +function(ZLIB_ADA_findTestEnv testName) set(testEnv "PATH=") if(MSVC OR MINGW) @@ -43,9 +43,9 @@ function(ZLIBADA_findTestEnv testName) string(APPEND testEnv "$ENV{PATH}") set_tests_properties(${testName} PROPERTIES ENVIRONMENT "${testEnv}") -endfunction(ZLIBADA_findTestEnv testName) +endfunction(ZLIB_ADA_findTestEnv testName) -if(ZLIBADA_BUILD_SHARED) +if(ZLIB_ADA_BUILD_SHARED) ada_add_library(zlib-Ada SHARED zlib-thin.adb zlib.adb) @@ -62,7 +62,7 @@ if(ZLIBADA_BUILD_SHARED) ada_find_ali(zlib-streams) - if(ZLIBADA_BUILD_TESTING) + if(ZLIB_ADA_BUILD_TESTING) enable_testing() ada_add_executable(ada-test test.adb) @@ -73,14 +73,14 @@ if(ZLIBADA_BUILD_SHARED) ada_find_ali(ada-test) - add_test(NAME zlibAda_ada-test COMMAND ada-test) - set_tests_properties(zlibAda_ada-test PROPERTIES FIXTURES_REQUIRED ada_cleanup) + add_test(NAME zlib_Ada_ada-test COMMAND ada-test) + set_tests_properties(zlib_Ada_ada-test PROPERTIES FIXTURES_REQUIRED ada_cleanup) if(MSVC OR MSYS OR MINGW OR CYGWIN) - zlibada_findtestenv(zlibAda_ada-test) + zlib_ada_findtestenv(zlibAda_ada-test) endif( MSVC OR MSYS @@ -95,13 +95,13 @@ if(ZLIBADA_BUILD_SHARED) ada_find_ali(buffer_demo) - add_test(NAME zlibAda_buffer-demo COMMAND buffer_demo) + add_test(NAME zlib_Ada_buffer-demo COMMAND buffer_demo) if(MSVC OR MSYS OR MINGW OR CYGWIN) - zlibada_findtestenv(zlibAda_buffer-demo) + zlib_ada_findtestenv(zlibAda_buffer-demo) endif( MSVC OR MSYS @@ -126,22 +126,22 @@ if(ZLIBADA_BUILD_SHARED) ada_find_ali(read) - add_test(NAME zlibAda_read COMMAND read) + add_test(NAME zlib_Ada_read COMMAND read) if(MSVC OR MSYS OR MINGW OR CYGWIN) - zlibada_findtestenv(zlibAda_read) + zlib_ada_findtestenv(zlibAda_read) endif( MSVC OR MSYS OR MINGW OR CYGWIN) - endif(ZLIBADA_BUILD_TESTING) -endif(ZLIBADA_BUILD_SHARED) + endif(ZLIB_ADA_BUILD_TESTING) +endif(ZLIB_ADA_BUILD_SHARED) -if(ZLIBADA_BUILD_STATIC) +if(ZLIB_ADA_BUILD_STATIC) ada_add_library(zlib-AdaStatic STATIC zlib-thin.adb zlib.adb) @@ -161,7 +161,7 @@ if(ZLIBADA_BUILD_STATIC) ada_find_ali(zlib-streamsStatic) - if(ZLIBADA_BUILD_TESTING) + if(ZLIB_ADA_BUILD_TESTING) enable_testing() ada_add_executable(ada-testStatic test.adb) @@ -172,8 +172,8 @@ if(ZLIBADA_BUILD_STATIC) ada_find_ali(ada-testStatic) - add_test(NAME zlibAda_ada-testStatic COMMAND ada-testStatic) - set_tests_properties(zlibAda_ada-testStatic PROPERTIES FIXTURES_REQUIRED ada_cleanup) + add_test(NAME zlib_Ada_ada-testStatic COMMAND ada-testStatic) + set_tests_properties(zlib_Ada_ada-testStatic PROPERTIES FIXTURES_REQUIRED ada_cleanup) ada_add_executable(buffer_demoStatic buffer_demo.adb) @@ -183,7 +183,7 @@ if(ZLIBADA_BUILD_STATIC) ada_find_ali(buffer_demoStatic) - add_test(NAME zlibAda-buffer-demoStatic COMMAND buffer_demoStatic) + add_test(NAME zlib_Ada-buffer-demoStatic COMMAND buffer_demoStatic) ada_add_executable(mtestStatic mtest.adb) @@ -203,12 +203,12 @@ if(ZLIBADA_BUILD_STATIC) ada_find_ali(readStatic) - add_test(NAME zlibAda_readStatic COMMAND readStatic) - endif(ZLIBADA_BUILD_TESTING) -endif(ZLIBADA_BUILD_STATIC) + add_test(NAME zlib_Ada_readStatic COMMAND readStatic) + endif(ZLIB_ADA_BUILD_TESTING) +endif(ZLIB_ADA_BUILD_STATIC) -if(ZLIBADA_BUILD_TESTING) - add_test(NAME zlibAda_cleanup COMMAND ${CMAKE_COMMAND} -E rm ${CMAKE_CURRENT_BINARY_DIR}/testzlib.in +if(ZLIB_ADA_BUILD_TESTING) + add_test(NAME zlib_Ada_cleanup COMMAND ${CMAKE_COMMAND} -E rm ${CMAKE_CURRENT_BINARY_DIR}/testzlib.in ${CMAKE_CURRENT_BINARY_DIR}/testzlib.out ${CMAKE_CURRENT_BINARY_DIR}/testzlib.zlb) - set_tests_properties(zlibAda_cleanup PROPERTIES FIXTURES_CLEANUP ada_cleanup) -endif(ZLIBADA_BUILD_TESTING) + set_tests_properties(zlib_Ada_cleanup PROPERTIES FIXTURES_CLEANUP ada_cleanup) +endif(ZLIB_ADA_BUILD_TESTING) diff --git a/contrib/blast/CMakeLists.txt b/contrib/blast/CMakeLists.txt index 6357fcbbe1..12c08a6ff5 100644 --- a/contrib/blast/CMakeLists.txt +++ b/contrib/blast/CMakeLists.txt @@ -9,6 +9,10 @@ project( DESCRIPTION "A library for creating zipfiles based in zlib" HOMEPAGE_URL "https://www.zlib.net") +option(ZLIB_BLAST_BUILD_SHARED "Enable building blast shared library" ON) +option(ZLIB_BLAST_BUILD_STATIC "Enable building blast static library" ON) +option(ZLIB_BLAST_BUILD_TESTING "Enable building tests for blast" ON) + if(WIN32 OR CYGWIN) set(zlibAda_static_suffix "s") set(CMAKE_DEBUG_POSTFIX "d") @@ -29,12 +33,12 @@ function(blast_findTestEnv testName) set_tests_properties(${testName} PROPERTIES ENVIRONMENT "${testEnv}") endfunction(blast_findTestEnv testName) -if(ZLIBBLAST_BUILD_SHARED) +if(ZLIB_BLAST_BUILD_SHARED) add_library(blast SHARED blast.c blast.h) - if(ZLIBBLAST_BUILD_TESTING) + if(ZLIB_BLAST_BUILD_TESTING) enable_testing() add_executable(blast-test blast-test.c) target_link_libraries(blast-test blast) @@ -55,10 +59,10 @@ if(ZLIBBLAST_BUILD_SHARED) OR MSYS OR MINGW OR CYGWIN) - endif(ZLIBBLAST_BUILD_TESTING) -endif(ZLIBBLAST_BUILD_SHARED) + endif(ZLIB_BLAST_BUILD_TESTING) +endif(ZLIB_BLAST_BUILD_SHARED) -if(ZLIBBLAST_BUILD_STATIC) +if(ZLIB_BLAST_BUILD_STATIC) add_library(blastStatic STATIC blast.c blast.h) @@ -67,7 +71,7 @@ if(ZLIBBLAST_BUILD_STATIC) PROPERTIES OUTPUT_NAME blast${minizip_static_suffix}) - if(ZLIBBLAST_BUILD_TESTING) + if(ZLIB_BLAST_BUILD_TESTING) enable_testing() add_executable(blast-testStatic blast-test.c) target_link_libraries(blast-testStatic blastStatic) @@ -77,5 +81,5 @@ if(ZLIBBLAST_BUILD_STATIC) "$" "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}") - endif(ZLIBBLAST_BUILD_TESTING) -endif(ZLIBBLAST_BUILD_STATIC) + endif(ZLIB_BLAST_BUILD_TESTING) +endif(ZLIB_BLAST_BUILD_STATIC) From 8bf7cb42581c10e58846ba700ea5d87bd8de5c5b Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Wed, 31 Dec 2025 11:11:28 +0100 Subject: [PATCH 10/25] added iostream3 --- contrib/CMakeLists.txt | 9 ++++ contrib/ada/CMakeLists.txt | 4 +- contrib/iostream3/CMakeLists.txt | 92 ++++++++++++++++++++++++++++++++ 3 files changed, 103 insertions(+), 2 deletions(-) create mode 100644 contrib/iostream3/CMakeLists.txt diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index cf5c1e0950..13fe2d4c05 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -1,5 +1,6 @@ option(ZLIB_BUILD_ADA "Enable building of Ada bindings" OFF) option(ZLIB_BUILD_BLAST "Enable building of blast binary" OFF) +option(ZLIB_BUILD_IOSTREAM3 "Build with IOStream C++ bindings V3" OFF) option(ZLIB_BUILD_MINIZIP "Enable building libminizip contrib library" OFF) option(ZLIB_WITH_GVMAT64 "Enable an optiomized longest_match for 32 bits x86_64" @@ -30,6 +31,14 @@ endif(ZLIB_BUILD_MINIZIP) if(ZLIB_WITH_GVMAT64) add_subdirectory(gcc_gvmat64/) endif(ZLIB_WITH_GVMAT64) + if(ZLIB_WITH_INFBACK9) add_subdirectory(infback9/) endif(ZLIB_WITH_INFBACK9) + +if(ZLIB_BUILD_IOSTREAM3) + set(ZLIB_IOSTREAM3_BUILD_SHARED ${ZLIB_BUILD_SHARED}) + set(ZLIB_IOSTREAM3_BUILD_STATIC ${ZLIB_BUILD_STATIC}) + set(ZLIB_IOSTREAM3_TESTING ${ZLIB_BUILD_TESTING}) + add_subdirectory(iostream3/) +endif(ZLIB_BUILD_IOSTREAM3) diff --git a/contrib/ada/CMakeLists.txt b/contrib/ada/CMakeLists.txt index cb8b156836..3ede5f9da5 100644 --- a/contrib/ada/CMakeLists.txt +++ b/contrib/ada/CMakeLists.txt @@ -14,7 +14,7 @@ option(ZLIB_ADA_BUILD_STATIC "Enable building ada bindings static library" ON) option(ZLIB_ADA_BUILD_TESTING "Enable building tests for ada bindings library" ON) if(WIN32 OR CYGWIN) - set(zlibAda_static_suffix "s") + set(zlib_Ada_static_suffix "s") set(CMAKE_DEBUG_POSTFIX "d") endif(WIN32 OR CYGWIN) @@ -150,7 +150,7 @@ if(ZLIB_ADA_BUILD_STATIC) INTERFACE ZLIB::ZLIBSTATIC) set_target_properties(zlib-AdaStatic - PROPERTIES OUTPUT_NAME zlib-Ada${zlibAda_static_suffix}) + PROPERTIES OUTPUT_NAME zlib-Ada${zlib_Ada_static_suffix}) ada_add_library(zlib-streamsStatic STATIC zlib-streams.adb) diff --git a/contrib/iostream3/CMakeLists.txt b/contrib/iostream3/CMakeLists.txt new file mode 100644 index 0000000000..0f3bcd8e3b --- /dev/null +++ b/contrib/iostream3/CMakeLists.txt @@ -0,0 +1,92 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules") + +project( + iostreamsV3 + VERSION 1.0.0 + LANGUAGES CXX + DESCRIPTION "A library for using C++ IOStreams with zlib V3" + HOMEPAGE_URL "https://www.zlib.net") + +option(ZLIB_IOSTREAM3_BUILD_SHARED "Enable building blast shared library" ON) +option(ZLIB_IOSTREAM3_BUILD_STATIC "Enable building blast static library" ON) +option(ZLIB_IOSTREAM3_BUILD_TESTING "Enable building tests for blast" ON) + +if(NOT DEFINED ZLIB_BUILD_IOSTREAM3) + if(ZLIB_IOSTREAM3_BUILD_SHARED) + list(APPEND REQUIRED_COMPONENTS "shared") + endif(ZLIB_IOSTREAM3_BUILD_SHARED) + + if(ZLIB_IOSTREAM3_BUILD_STATIC) + list(APPEND REQUIRED_COMPONENTS "static") + endif(ZLIB_IOSTREAM3_BUILD_STATIC) + + find_package(ZLIB REQUIRED COMPONENTS ${REQUIRED_COMPONENTS} CONFIG) +endif(NOT DEFINED ZLIB_BUILD_IOSTREAM3) + +if(WIN32 OR CYGWIN) + set(zlibIOStream3_static_suffix "s") + set(CMAKE_DEBUG_POSTFIX "d") +endif(WIN32 OR CYGWIN) + +if(ZLIB_IOSTREAM3_BUILD_SHARED) + add_library(zlib-iostream3 SHARED + zfstream.cc + zfstream.h) + + target_link_libraries(zlib-iostream3 + PUBLIC ZLIB::ZLIB) + + if(ZLIB_IOSTREAM3_BUILD_TESTING) + enable_testing() + + add_executable(iostream-test test.cc) + + target_link_libraries(iostream-test + PRIVATE zlib-iostream3) + + add_test(NAME zlib_iostream3_test COMMAND iostream-test) + + set_tests_properties(zlib_iostream3_test + PROPERTIES + FIXTURES_REQUIRED iostream3_cleanup) + endif(ZLIB_IOSTREAM3_BUILD_TESTING) +endif(ZLIB_IOSTREAM3_BUILD_SHARED) + +if(ZLIB_IOSTREAM3_BUILD_STATIC) + add_library(zlib-iostream3Static STATIC + zfstream.cc + zfstream.h) + + target_link_libraries(zlib-iostream3Static + INTERFACE ZLIB::ZLIBSTATIC) + + set_target_properties(zlib-iostream3Static + PROPERTIES + OUTPUT_NAME zlib-iostream3${zlib_IOStream3_static_suffix}) + + if(ZLIB_IOSTREAM3_BUILD_TESTING) + enable_testing() + + add_executable(iostream-testStatic test.cc) + + target_link_libraries(iostream-testStatic + PRIVATE zlib-iostream3Static) + add_test(NAME zlib_iostream3_testStatic COMMAND iostream-testStatic) + + set_tests_properties(zlib_iostream3_testStatic + PROPERTIES + FIXTURES_REQUIRED iostream3_cleanup) + endif(ZLIB_IOSTREAM3_BUILD_TESTING) +endif(ZLIB_IOSTREAM3_BUILD_STATIC) + +if(ZLIB_IOSTREAM3_BUILD_TESTING) + add_test(NAME zlib_iostream3_cleanup COMMAND ${CMAKE_COMMAND} -E rm + ${CMAKE_CURRENT_BINARY_DIR}/test1.txt.gz + ${CMAKE_CURRENT_BINARY_DIR}/test2.txt.gz) + + set_tests_properties(zlib_iostream3_cleanup + PROPERTIES + FIXTURES_CLEANUP zlib_iostream3_cleanup) +endif(ZLIB_IOSTREAM3_BUILD_TESTING) From 8fbb4bf465cdbf452fc55bf5d4784f10fe0c1c31 Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Wed, 31 Dec 2025 13:56:08 +0100 Subject: [PATCH 11/25] moved everything to functions for consistency in the future --- contrib/CMakeLists.txt | 83 ++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 44 deletions(-) diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index 13fe2d4c05..18f86c4a13 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -1,44 +1,39 @@ -option(ZLIB_BUILD_ADA "Enable building of Ada bindings" OFF) -option(ZLIB_BUILD_BLAST "Enable building of blast binary" OFF) -option(ZLIB_BUILD_IOSTREAM3 "Build with IOStream C++ bindings V3" OFF) -option(ZLIB_BUILD_MINIZIP "Enable building libminizip contrib library" OFF) -option(ZLIB_WITH_GVMAT64 - "Enable an optiomized longest_match for 32 bits x86_64" - OFF) -option(ZLIB_WITH_INFBACK9 "Build with support for method 9 deflate" OFF) - -if(ZLIB_BUILD_ADA) - set(ZLIB_ADA_BUILD_SHARED ${ZLIB_BUILD_SHARED}) - set(ZLIB_ADA_BUILD_STATIC ${ZLIB_BUILD_STATIC}) - set(ZLIB_ADA_BUILD_TESTING ${ZLIB_BUILD_TESTING}) - add_subdirectory(ada/) -endif(ZLIB_BUILD_ADA) - -if(ZLIB_BUILD_BLAST) - set(ZLIB_BLAST_BUILD_SHARED ${ZLIB_BUILD_SHARED}) - set(ZLIB_BLAST_BUILD_STATIC ${ZLIB_BUILD_STATIC}) - set(ZLIB_BLAST_BUILD_TESTING ${ZLIB_BUILD_TESTING}) - add_subdirectory(blast/) -endif(ZLIB_BUILD_BLAST) - -if(ZLIB_BUILD_MINIZIP) - set(MINIZIP_BUILD_SHARED ${ZLIB_BUILD_SHARED}) - set(MINIZIP_BUILD_STATIC ${ZLIB_BUILD_STATIC}) - set(MINIZIP_BUILD_TESTING ${ZLIB_BUILD_TESTING}) - add_subdirectory(minizip/) -endif(ZLIB_BUILD_MINIZIP) - -if(ZLIB_WITH_GVMAT64) - add_subdirectory(gcc_gvmat64/) -endif(ZLIB_WITH_GVMAT64) - -if(ZLIB_WITH_INFBACK9) - add_subdirectory(infback9/) -endif(ZLIB_WITH_INFBACK9) - -if(ZLIB_BUILD_IOSTREAM3) - set(ZLIB_IOSTREAM3_BUILD_SHARED ${ZLIB_BUILD_SHARED}) - set(ZLIB_IOSTREAM3_BUILD_STATIC ${ZLIB_BUILD_STATIC}) - set(ZLIB_IOSTREAM3_TESTING ${ZLIB_BUILD_TESTING}) - add_subdirectory(iostream3/) -endif(ZLIB_BUILD_IOSTREAM3) +function(zlib_add_contrib_lib name description dir) + option(ZLIB_BUILD_${name} "Enable building of ${description}" OFF) + + if(ZLIB_BUILD_${name}) + if(NOT DEFINED ZLIB_${name}_BUILD_SHARED) + set(ZLIB_${name}_BUILD_SHARED ${ZLIB_BUILD_SHARED}) + endif(NOT DEFINED ZLIB_${name}_BUILD_SHARED) + + if(NOT DEFINED ZLIB_${name}_BUILD_STATIC) + set(ZLIB_${name}_BUILD_STATIC ${ZLIB_BUILD_STATIC}) + endif(NOT DEFINED ZLIB_${name}_BUILD_STATIC) + + if(NOT DEFINED ZLIB_${name}_BUILD_TESTING) + set(ZLIB_${name}_BUILD_TESTING ${ZLIB_BUILD_TESTING}) + endif(NOT DEFINED ZLIB_${name}_BUILD_TESTING) + + add_subdirectory(${dir}/) + endif(ZLIB_BUILD_${name}) +endfunction(zlib_add_contrib_lib name description dir) + +function(zlib_add_contrib_feature name description dir) + option(ZLIB_WITH_${name} + "Enable build ${description}" + OFF) + + if(ZLIB_WITH_${name}) + add_subdirectory(${dir}/) + endif(ZLIB_WITH_${name}) +endfunction(zlib_add_contrib_feature name description dir) + +zlib_add_contrib_feature("GVMAT64" + "of an optimized longest_match for 32 bits x86_64" + gcc_gvmat64) + +zlib_add_contrib_feature(INFBACK9 "with support for method 9 deflate" infback9) +zlib_add_contrib_lib(ADA "Ada bindings" ada) +zlib_add_contrib_lib(BLAST "blast binary" blast) +zlib_add_contrib_lib(IOSTREAM3 "IOStream C++ bindings V3" iostream3) +zlib_add_contrib_lib(MINIZIP "minizip library" minizip) From 01ac9551116418a68a7f2e248a7fa50c3c90d8a0 Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Wed, 31 Dec 2025 14:44:32 +0100 Subject: [PATCH 12/25] removed bogus module-path --- contrib/iostream3/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/contrib/iostream3/CMakeLists.txt b/contrib/iostream3/CMakeLists.txt index 0f3bcd8e3b..3426a58ef0 100644 --- a/contrib/iostream3/CMakeLists.txt +++ b/contrib/iostream3/CMakeLists.txt @@ -1,7 +1,5 @@ cmake_minimum_required(VERSION 3.12...3.31) -set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules") - project( iostreamsV3 VERSION 1.0.0 From f37802b6c79e687627607e5fca03cdbb2644715f Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Thu, 1 Jan 2026 13:20:21 +0100 Subject: [PATCH 13/25] added puff --- contrib/CMakeLists.txt | 1 + contrib/puff/CMakeLists.txt | 137 ++++++++++++++++++++++++++++++++++ contrib/puff/bin-writer.c | 26 +++++++ contrib/puff/tester-cov.cmake | 56 ++++++++++++++ contrib/puff/tester.cmake | 15 ++++ 5 files changed, 235 insertions(+) create mode 100644 contrib/puff/CMakeLists.txt create mode 100644 contrib/puff/bin-writer.c create mode 100644 contrib/puff/tester-cov.cmake create mode 100644 contrib/puff/tester.cmake diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index 18f86c4a13..fab97acd1d 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -37,3 +37,4 @@ zlib_add_contrib_lib(ADA "Ada bindings" ada) zlib_add_contrib_lib(BLAST "blast binary" blast) zlib_add_contrib_lib(IOSTREAM3 "IOStream C++ bindings V3" iostream3) zlib_add_contrib_lib(MINIZIP "minizip library" minizip) +zlib_add_contrib_lib(PUFF "puff decompress library" puff) diff --git a/contrib/puff/CMakeLists.txt b/contrib/puff/CMakeLists.txt new file mode 100644 index 0000000000..f7418fd78f --- /dev/null +++ b/contrib/puff/CMakeLists.txt @@ -0,0 +1,137 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + iostreamsV3 + VERSION 1.0.0 + LANGUAGES C + DESCRIPTION "A library for decompressing deflate with very little footprint" + HOMEPAGE_URL "https://www.zlib.net") + +option(ZLIB_PUFF_BUILD_SHARED "Enable building blast shared library" ON) +option(ZLIB_PUFF_BUILD_STATIC "Enable building blast static library" ON) +option(ZLIB_PUFF_BUILD_TESTING "Enable building tests for blast" ON) + +if(NOT DEFINED ZLIB_BUILD_PUFF) + if(ZLIB_PUFF_BUILD_SHARED) + list(APPEND REQUIRED_COMPONENTS "shared") + endif(ZLIB_PUFF_BUILD_SHARED) + + if(ZLIB_PUFF_BUILD_STATIC) + list(APPEND REQUIRED_COMPONENTS "static") + endif(ZLIB_PUFF_BUILD_STATIC) + + find_package(ZLIB REQUIRED COMPONENTS ${REQUIRED_COMPONENTS} CONFIG) +endif(NOT DEFINED ZLIB_BUILD_PUFF) + +if(WIN32 OR CYGWIN) + set(zlibpuff_static_suffix "s") + set(CMAKE_DEBUG_POSTFIX "d") +endif(WIN32 OR CYGWIN) + +if(ZLIB_PUFF_BUILD_TESTING) + add_executable(bin-writer bin-writer.c) + + if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR + ${CMAKE_C_COMPILER_ID} STREQUAL "Clang") + set(CFLAGS_OLD ${CMAKE_C_FLAGS}) + set(CMAKE_C_FLAGS + "" + CACHE STRING "" FORCE) + + if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU") + find_program(GCOV_EXECUTABLE gcov) + endif(${CMAKE_C_COMPILER_ID} STREQUAL "GNU") + + if(${CMAKE_C_COMPILER_ID} STREQUAL "Clang") + set(llvm_names llvm_cov) + list(APPEND llvm_names llvm-cov) + + foreach(ver RANGE 11 99) + list(APPEND llvm_names llvm-cov-${ver}) + endforeach(ver RANGE 11 99) + + find_program(GCOV_EXECUTABLE NAMES ${llvm_names}) + set(llvm_option "gcov") + endif(${CMAKE_C_COMPILER_ID} STREQUAL "Clang") + endif(${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR + ${CMAKE_C_COMPILER_ID} STREQUAL "Clang") +endif(ZLIB_PUFF_BUILD_TESTING) + +if(ZLIB_PUFF_BUILD_SHARED) + add_library(zlib-puff SHARED + puff.c + puff.h) + + if(ZLIB_PUFF_BUILD_TESTING) + enable_testing() + + add_executable(puff-test pufftest.c) + + target_link_libraries(puff-test + PRIVATE zlib-puff) + + add_test(NAME zlib_puff_test + COMMAND ${CMAKE_COMMAND} -P + ${CMAKE_CURRENT_SOURCE_DIR}/tester.cmake + "$" + "${CMAKE_CURRENT_SOURCE_DIR}") + + if(GCOV_EXECUTABLE) + add_executable(puff-test-coverage pufftest.c puff.c) + + target_compile_options(puff-test-coverage PRIVATE -coverage) + + target_link_options(puff-test-coverage PRIVATE -coverage) + + add_test(NAME zlib_puff_test_coverage + COMMAND ${CMAKE_COMMAND} -P + ${CMAKE_CURRENT_SOURCE_DIR}/tester-cov.cmake + "$" + "${CMAKE_CURRENT_SOURCE_DIR}" + "${CMAKE_CURRENT_BINARY_DIR}" + ${GCOV_EXECUTABLE} + ${llvm_option}) + endif(GCOV_EXECUTABLE) + endif(ZLIB_PUFF_BUILD_TESTING) +endif(ZLIB_PUFF_BUILD_SHARED) + +if(ZLIB_PUFF_BUILD_STATIC) + add_library(zlib-puffStatic STATIC + puff.c + puff.h) + + set_target_properties(zlib-puffStatic + PROPERTIES + OUTPUT_NAME zlib-puff${zlib_puff_static_suffix}) + + if(ZLIB_PUFF_BUILD_TESTING) + enable_testing() + + add_executable(puff-testStatic pufftest.c) + + target_link_libraries(puff-testStatic + PRIVATE zlib-puffStatic) + add_test(NAME zlib_puff_testStatic + COMMAND ${CMAKE_COMMAND} -P + ${CMAKE_CURRENT_SOURCE_DIR}/tester.cmake + "$" + "${CMAKE_CURRENT_SOURCE_DIR}") + + if(GCOV_EXECUTABLE) + add_executable(puff-testStatic-coverage pufftest.c puff.c) + + target_compile_options(puff-testStatic-coverage PRIVATE -coverage) + + target_link_options(puff-testStatic-coverage PRIVATE -coverage) + + add_test(NAME zlib_puff_testStatic_coverage + COMMAND ${CMAKE_COMMAND} -P + ${CMAKE_CURRENT_SOURCE_DIR}/tester-cov.cmake + "$" + "${CMAKE_CURRENT_SOURCE_DIR}" + "${CMAKE_CURRENT_BINARY_DIR}" + ${GCOV_EXECUTABLE} + ${llvm_option}) + endif(GCOV_EXECUTABLE) + endif(ZLIB_PUFF_BUILD_TESTING) +endif(ZLIB_PUFF_BUILD_STATIC) diff --git a/contrib/puff/bin-writer.c b/contrib/puff/bin-writer.c new file mode 100644 index 0000000000..cfd8306aef --- /dev/null +++ b/contrib/puff/bin-writer.c @@ -0,0 +1,26 @@ +#include "stdio.h" +#include "stdlib.h" + +/** + * Reads hexadecimal values from stdin and writes binary bytes to stdout. + * Accepts hex values separated by spaces, newlines, commas, etc. + * Handles both uppercase and lowercase hex digits. + */ +int main(void) { + char hexStr[3]; // Two hex digits + null terminator + int ch; + + // Read characters until EOF + while((ch = getchar()) != EOF) { + hexStr[0] = (char)ch; + hexStr[1] = (char)getchar(); + hexStr[2] = '\0'; // Null-terminate string + char *endptr; + unsigned char byte = (unsigned char)strtol(hexStr, &endptr, 16); + fwrite(&byte, 1, 1, stdout); + if((ch = getchar()) == EOF) // Read seaparating space + break; + } + + return 0; +} diff --git a/contrib/puff/tester-cov.cmake b/contrib/puff/tester-cov.cmake new file mode 100644 index 0000000000..5dc9662e08 --- /dev/null +++ b/contrib/puff/tester-cov.cmake @@ -0,0 +1,56 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +#CMAKE_ARGV0 = ${CMAKE_COMMAND} +#CMAKE_ARGV1 = -P +#CMAKE_ARGV2 = ${CMAKE_CURRENT_SOURCE_DIR}/tester-cov.cmake +#CMAKE_ARGV3 = "$" +#CMAKE_ARGV4 = "${CMAKE_CURRENT_SOURCE_DIR}" +#CMAKE_ARGV5 = "${CMAKE_CURRENT_BINARY_DIR}" +#CMAKE_ARGV6 = GCOV_EXECUTABLE +#CMAKE_ARGV7 = GCOV_EXECUTABLE + +function(puff_cov_test test_string expected_result) + execute_process(COMMAND ${CMAKE_ARGV0} -E echo_append ${test_string} + COMMAND ${CMAKE_ARGV5}/bin-writer + COMMAND ${CMAKE_ARGV3} + RESULT_VARIABLE RESULT) + + if(NOT RESULT EQUAL expected_result) + message(FATAL_ERROR "${RESULT} not matching ${expected_result}") + endif(NOT RESULT EQUAL expected_result) +endfunction(puff_cov_test test_string expected_result) + +execute_process(COMMAND ${CMAKE_ARGV3} -w ${CMAKE_ARGV4}/zeros.raw) + +puff_cov_test("04" "2") +puff_cov_test("00" "2") +puff_cov_test("00 00 00 00 00" "254") +puff_cov_test("00 01 00 fe ff" "2") + +execute_process(COMMAND ${CMAKE_ARGV0} -E echo_append "01 01 00 fe ff 0a" + COMMAND ${CMAKE_ARGV5}/bin-writer + COMMAND ${CMAKE_ARGV3}) + +puff_cov_test("02 7e ff ff" "246") +puff_cov_test("02" "2") +puff_cov_test("04 80 49 92 24 49 92 24 0f b4 ff ff c3 04" "2") +puff_cov_test("04 80 49 92 24 49 92 24 71 ff ff 93 11 00" "249") +puff_cov_test("04 c0 81 08 00 00 00 00 20 7f eb 0b 00 00" "246") + +execute_process(COMMAND ${CMAKE_ARGV0} -E echo_append "0b 00 00" + COMMAND ${CMAKE_ARGV5}/bin-writer + COMMAND ${CMAKE_ARGV3}) + +puff_cov_test("1a 07" "246") +puff_cov_test("0c c0 81 00 00 00 00 00 90 ff 6b 04" "245") + +execute_process(COMMAND ${CMAKE_ARGV3} -f ${CMAKE_ARGV4}/zeros.raw) + +puff_cov_test("fc 00 00" "253") +puff_cov_test("04 00 fe ff" "252") +puff_cov_test("04 00 24 49" "251") +puff_cov_test("04 80 49 92 24 49 92 24 0f b4 ff ff c3 84" "248") +puff_cov_test("04 00 24 e9 ff ff" "250") +puff_cov_test("04 00 24 e9 ff 6d" "247") + +execute_process(COMMAND ${CMAKE_ARGV6} ${CMAKE_ARGV7} -n puff.c.gcno) diff --git a/contrib/puff/tester.cmake b/contrib/puff/tester.cmake new file mode 100644 index 0000000000..d29dc5c3ac --- /dev/null +++ b/contrib/puff/tester.cmake @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +#CMAKE_ARGV0 = ${CMAKE_COMMAND} +#CMAKE_ARGV1 = -P +#CMAKE_ARGV2 = ${CMAKE_CURRENT_SOURCE_DIR}/tester.cmake +#CMAKE_ARGV3 = "$" +#CMAKE_ARGV4 = "${CMAKE_CURRENT_SOURCE_DIR}" + +execute_process(COMMAND ${CMAKE_ARGV3} + INPUT_FILE "${CMAKE_ARGV4}/zeros.raw" + RESULT_VARIABLE RESULT) + +if(RESULT) + message(FATAL_ERROR "Command exitited with: ${RESULT}") +endif(RESULT) From 2f082d9ddb85598d0b685c940d8920a911046e8f Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Thu, 1 Jan 2026 14:21:26 +0100 Subject: [PATCH 14/25] added untgz --- contrib/CMakeLists.txt | 1 + contrib/untgz/CMakeLists.txt | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 contrib/untgz/CMakeLists.txt diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index fab97acd1d..1dc01af034 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -38,3 +38,4 @@ zlib_add_contrib_lib(BLAST "blast binary" blast) zlib_add_contrib_lib(IOSTREAM3 "IOStream C++ bindings V3" iostream3) zlib_add_contrib_lib(MINIZIP "minizip library" minizip) zlib_add_contrib_lib(PUFF "puff decompress library" puff) +zlib_add_contrib_lib(UNTGZ "tool for listing and uncompressing tgz files" untgz) diff --git a/contrib/untgz/CMakeLists.txt b/contrib/untgz/CMakeLists.txt new file mode 100644 index 0000000000..a0a451657f --- /dev/null +++ b/contrib/untgz/CMakeLists.txt @@ -0,0 +1,21 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + untgz + VERSION 1.0.0 + LANGUAGES C + DESCRIPTION "A tool for listing and uncompresssing tgz files" + HOMEPAGE_URL "https://www.zlib.net") + +option(ZLIB_UNTGZ_BUILD_SHARED "Enable building untgz" ON) +option(ZLIB_UNTGZ_BUILD_STATIC "Enable building static linked untgz" ON) + +if(ZLIB_UNTGZ_BUILD_SHARED) + add_executable(untgz untgz.c) + target_link_libraries(untgz PRIVATE ZLIB::ZLIB) +endif(ZLIB_UNTGZ_BUILD_SHARED) + +if(ZLIB_UNTGZ_BUILD_STATIC) + add_executable(untgzStatic untgz.c) + target_link_libraries(untgzStatic PRIVATE ZLIB::ZLIBSTATIC) +endif(ZLIB_UNTGZ_BUILD_STATIC) From 618b0d86320f83169c303fccacab8ea9521b34a2 Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Thu, 1 Jan 2026 14:39:27 +0100 Subject: [PATCH 15/25] added testzlib --- contrib/CMakeLists.txt | 4 ++++ contrib/testzlib/CMakeLists.txt | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 contrib/testzlib/CMakeLists.txt diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index 1dc01af034..4c31c1b2ef 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -39,3 +39,7 @@ zlib_add_contrib_lib(IOSTREAM3 "IOStream C++ bindings V3" iostream3) zlib_add_contrib_lib(MINIZIP "minizip library" minizip) zlib_add_contrib_lib(PUFF "puff decompress library" puff) zlib_add_contrib_lib(UNTGZ "tool for listing and uncompressing tgz files" untgz) + +if(WIN32) + zlib_add_contrib_lib(TESTZLIB "testzlib binary" testzlib) +endif(WIN32) diff --git a/contrib/testzlib/CMakeLists.txt b/contrib/testzlib/CMakeLists.txt new file mode 100644 index 0000000000..d68b533d72 --- /dev/null +++ b/contrib/testzlib/CMakeLists.txt @@ -0,0 +1,22 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + testzlib + VERSION 1.0.0 + LANGUAGES C + DESCRIPTION "A little program to test zlib" + HOMEPAGE_URL "https://www.zlib.net") + +option(ZLIB_TESTZLIB_BUILD_SHARED "Enable building testzlib" ON) +option(ZLIB_TESTZLIB_BUILD_STATIC "Enable building static linked testzlib" ON) +option(ZLIB_TESTZLIB_BUILD_TESTING "Enable building tests for testzlib" ON) + +if(ZLIB_TESTZLIB_BUILD_SHARED) + add_executable(testzlib testzlib.c) + target_link_libraries(testzlib PRIVATE ZLIB::ZLIB) +endif(ZLIB_TESTZLIB_BUILD_SHARED) + +if(ZLIB_TESTZLIB_BUILD_STATIC) + add_executable(testzlibStatic testzlib.c) + target_link_libraries(testzlibStatic PRIVATE ZLIB::ZLIBSTATIC) +endif(ZLIB_TESTZLIB_BUILD_STATIC) From 5648aa554ecaaff7a12be60587ff400fae5d4071 Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Sat, 3 Jan 2026 10:48:38 +0100 Subject: [PATCH 16/25] make the options available in cmake-gui --- contrib/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index 4c31c1b2ef..141e5844a3 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -3,15 +3,15 @@ function(zlib_add_contrib_lib name description dir) if(ZLIB_BUILD_${name}) if(NOT DEFINED ZLIB_${name}_BUILD_SHARED) - set(ZLIB_${name}_BUILD_SHARED ${ZLIB_BUILD_SHARED}) + set(ZLIB_${name}_BUILD_SHARED ${ZLIB_BUILD_SHARED} CACHE BOOL "") endif(NOT DEFINED ZLIB_${name}_BUILD_SHARED) if(NOT DEFINED ZLIB_${name}_BUILD_STATIC) - set(ZLIB_${name}_BUILD_STATIC ${ZLIB_BUILD_STATIC}) + set(ZLIB_${name}_BUILD_STATIC ${ZLIB_BUILD_STATIC} CACHE BOOL "") endif(NOT DEFINED ZLIB_${name}_BUILD_STATIC) if(NOT DEFINED ZLIB_${name}_BUILD_TESTING) - set(ZLIB_${name}_BUILD_TESTING ${ZLIB_BUILD_TESTING}) + set(ZLIB_${name}_BUILD_TESTING ${ZLIB_BUILD_TESTING} CACHE BOOL "") endif(NOT DEFINED ZLIB_${name}_BUILD_TESTING) add_subdirectory(${dir}/) From e70b56574f7e4573d3132b5966c4a30cc08f9fad Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Sat, 3 Jan 2026 10:53:14 +0100 Subject: [PATCH 17/25] add install and exports --- CMakeLists.txt | 2 +- contrib/CMakeLists.txt | 5 +++ contrib/blast/CMakeLists.txt | 63 ++++++++++++++++++++++++++++++-- contrib/iostream3/CMakeLists.txt | 61 ++++++++++++++++++++++++++++++- contrib/puff/CMakeLists.txt | 61 ++++++++++++++++++++++++++++++- contrib/untgz/CMakeLists.txt | 18 +++++++++ 6 files changed, 204 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1e94f80eb7..66dd728189 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -241,7 +241,7 @@ if(ZLIB_INSTALL) if(ZLIB_INSTALL_COMPAT_DLL) install( FILES $ - COMPONENT Runtime + COMPONENT Development RENAME zlib1.dll DESTINATION "${CMAKE_INSTALL_BINDIR}") endif(ZLIB_INSTALL_COMPAT_DLL) diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index 141e5844a3..b01dcbb413 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -14,6 +14,11 @@ function(zlib_add_contrib_lib name description dir) set(ZLIB_${name}_BUILD_TESTING ${ZLIB_BUILD_TESTING} CACHE BOOL "") endif(NOT DEFINED ZLIB_${name}_BUILD_TESTING) + + if(NOT DEFINED ZLIB_${name}_INSTALL) + set(ZLIB_${name}_INSTALL ${ZLIB_INSTALL} CACHE BOOL "") + endif(NOT DEFINED ZLIB_${name}_INSTALL) + add_subdirectory(${dir}/) endif(ZLIB_BUILD_${name}) endfunction(zlib_add_contrib_lib name description dir) diff --git a/contrib/blast/CMakeLists.txt b/contrib/blast/CMakeLists.txt index 12c08a6ff5..b1a9065ebf 100644 --- a/contrib/blast/CMakeLists.txt +++ b/contrib/blast/CMakeLists.txt @@ -1,7 +1,5 @@ cmake_minimum_required(VERSION 3.12...3.31) -set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules") - project( blast VERSION 1.3.0 @@ -12,9 +10,13 @@ project( option(ZLIB_BLAST_BUILD_SHARED "Enable building blast shared library" ON) option(ZLIB_BLAST_BUILD_STATIC "Enable building blast static library" ON) option(ZLIB_BLAST_BUILD_TESTING "Enable building tests for blast" ON) +option(ZLIB_BLAST_INSTALL "Enable installation of blast" ON) + +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) if(WIN32 OR CYGWIN) - set(zlibAda_static_suffix "s") + set(zlibblast_static_suffix "s") set(CMAKE_DEBUG_POSTFIX "d") endif(WIN32 OR CYGWIN) @@ -83,3 +85,58 @@ if(ZLIB_BLAST_BUILD_STATIC) "${CMAKE_CURRENT_BINARY_DIR}") endif(ZLIB_BLAST_BUILD_TESTING) endif(ZLIB_BLAST_BUILD_STATIC) + +if(ZLIB_BLAST_INSTALL) + if(ZLIB_BLAST_BUILD_SHARED) + install( + TARGETS zlib_blast_blast + COMPONENT Runtime + EXPORT zlibBlastSharedExport + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") + install( + EXPORT zlibBlastSharedExport + FILE blast-shared.cmake + NAMESPACE BLAST:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/blast) + + if(MSVC) + install( + FILES $ + COMPONENT Development + DESTINATION ${CMAKE_INSTALL_BINDIR} + CONFIGURATIONS Debug OR RelWithDebInfo + OPTIONAL) + endif(MSVC) + endif(ZLIB_BLAST_BUILD_SHARED) + + if(ZLIB_BLAST_BUILD_STATIC) + install( + TARGETS zlib_blast_blastStatic + COMPONENT Development + EXPORT zlibBlastStaticExport + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") + install( + EXPORT zlibBlastStaticExport + FILE blast-static.cmake + NAMESPACE BLAST:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/blast) + endif(ZLIB_BLAST_BUILD_STATIC) + + configure_package_config_file( + ${blast_SOURCE_DIR}/blastConfig.cmake.in + ${blast_BINARY_DIR}/blastConfig.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/blast) + + write_basic_package_version_file( + "${blast_BINARY_DIR}/blastConfigVersion.cmake" + VERSION "${blast_VERSION}" + COMPATIBILITY AnyNewerVersion) + + install(FILES ${blast_BINARY_DIR}/blastConfig.cmake + ${blast_BINARY_DIR}/blastConfigVersion.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/blast) + install( + FILES blast.h + COMPONENT Development + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") +endif(ZLIB_BLAST_INSTALL) diff --git a/contrib/iostream3/CMakeLists.txt b/contrib/iostream3/CMakeLists.txt index 3426a58ef0..01bc279f7c 100644 --- a/contrib/iostream3/CMakeLists.txt +++ b/contrib/iostream3/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.12...3.31) project( - iostreamsV3 + iostreamV3 VERSION 1.0.0 LANGUAGES CXX DESCRIPTION "A library for using C++ IOStreams with zlib V3" @@ -10,6 +10,10 @@ project( option(ZLIB_IOSTREAM3_BUILD_SHARED "Enable building blast shared library" ON) option(ZLIB_IOSTREAM3_BUILD_STATIC "Enable building blast static library" ON) option(ZLIB_IOSTREAM3_BUILD_TESTING "Enable building tests for blast" ON) +option(ZLIB_IOSTREAM3_INSTALL "Enable installation of iostream" ON) + +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) if(NOT DEFINED ZLIB_BUILD_IOSTREAM3) if(ZLIB_IOSTREAM3_BUILD_SHARED) @@ -88,3 +92,58 @@ if(ZLIB_IOSTREAM3_BUILD_TESTING) PROPERTIES FIXTURES_CLEANUP zlib_iostream3_cleanup) endif(ZLIB_IOSTREAM3_BUILD_TESTING) + +if(ZLIB_IOSTREAM3_INSTALL) + if(ZLIB_IOSTREAM3_BUILD_SHARED) + install( + TARGETS zlib_iostream3_iostreamv3 + COMPONENT Runtime + EXPORT zlibiostream3SharedExport + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") + install( + EXPORT zlibiostream3SharedExport + FILE iostreamv3-shared.cmake + NAMESPACE IOSTREAMV3:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/iostreamv3) + + if(MSVC) + install( + FILES $ + COMPONENT Development + DESTINATION ${CMAKE_INSTALL_BINDIR} + CONFIGURATIONS Debug OR RelWithDebInfo + OPTIONAL) + endif(MSVC) + endif(ZLIB_IOSTREAM3_BUILD_SHARED) + + if(ZLIB_IOSTREAM3_BUILD_STATIC) + install( + TARGETS zlib_iostream3_iostreamv3Static + COMPONENT Development + EXPORT iostream3StaticExport + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") + install( + EXPORT iostream3StaticExport + FILE iostreamv3-static.cmake + NAMESPACE IOSTREAMV3:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/iostreamv3) + endif(ZLIB_IOSTREAM3_BUILD_STATIC) + + configure_package_config_file( + ${iostreamV3_SOURCE_DIR}/iostream3Config.cmake.in + ${iostreamV3_BINARY_DIR}/iostreamv3Config.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/iostreamv3) + + write_basic_package_version_file( + "${iostreamV3_BINARY_DIR}/iostreamv3ConfigVersion.cmake" + VERSION "${iostream3_VERSION}" + COMPATIBILITY AnyNewerVersion) + + install(FILES ${iostreamV3_BINARY_DIR}/iostreamv3Config.cmake + ${iostreamV3_BINARY_DIR}/iostreamv3ConfigVersion.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/iostreamv3) + install( + FILES zfstream.h + COMPONENT Development + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") +endif(ZLIB_IOSTREAM3_INSTALL) diff --git a/contrib/puff/CMakeLists.txt b/contrib/puff/CMakeLists.txt index f7418fd78f..1696c76a02 100644 --- a/contrib/puff/CMakeLists.txt +++ b/contrib/puff/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.12...3.31) project( - iostreamsV3 + puff VERSION 1.0.0 LANGUAGES C DESCRIPTION "A library for decompressing deflate with very little footprint" @@ -10,6 +10,10 @@ project( option(ZLIB_PUFF_BUILD_SHARED "Enable building blast shared library" ON) option(ZLIB_PUFF_BUILD_STATIC "Enable building blast static library" ON) option(ZLIB_PUFF_BUILD_TESTING "Enable building tests for blast" ON) +option(ZLIB_PUFF_INSTALL "Enable installation of puff" ON) + +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) if(NOT DEFINED ZLIB_BUILD_PUFF) if(ZLIB_PUFF_BUILD_SHARED) @@ -135,3 +139,58 @@ if(ZLIB_PUFF_BUILD_STATIC) endif(GCOV_EXECUTABLE) endif(ZLIB_PUFF_BUILD_TESTING) endif(ZLIB_PUFF_BUILD_STATIC) + +if(ZLIB_PUFF_INSTALL) + if(ZLIB_PUFF_BUILD_SHARED) + install( + TARGETS zlib_puff_puff + COMPONENT Runtime + EXPORT puffSharedExport + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") + install( + EXPORT puffSharedExport + FILE puff-shared.cmake + NAMESPACE PUFF:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/puff) + + if(MSVC) + install( + FILES $ + COMPONENT Development + DESTINATION ${CMAKE_INSTALL_BINDIR} + CONFIGURATIONS Debug OR RelWithDebInfo + OPTIONAL) + endif(MSVC) + endif(ZLIB_PUFF_BUILD_SHARED) + + if(ZLIB_PUFF_BUILD_STATIC) + install( + TARGETS zlib_puff_puffStatic + COMPONENT Development + EXPORT puffStaticExport + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") + install( + EXPORT puffStaticExport + FILE puff-static.cmake + NAMESPACE PUFF:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/puff) + endif(ZLIB_PUFF_BUILD_STATIC) + + configure_package_config_file( + ${puff_SOURCE_DIR}/puffConfig.cmake.in + ${puff_BINARY_DIR}/puffConfig.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/puff) + + write_basic_package_version_file( + "${puff_BINARY_DIR}/puffConfigVersion.cmake" + VERSION "${puff_VERSION}" + COMPATIBILITY AnyNewerVersion) + + install(FILES ${puff_BINARY_DIR}/puffConfig.cmake + ${puff_BINARY_DIR}/puffConfigVersion.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/puff) + install( + FILES puff.h + COMPONENT Development + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") +endif(ZLIB_PUFF_INSTALL) diff --git a/contrib/untgz/CMakeLists.txt b/contrib/untgz/CMakeLists.txt index a0a451657f..e1d62be355 100644 --- a/contrib/untgz/CMakeLists.txt +++ b/contrib/untgz/CMakeLists.txt @@ -9,13 +9,31 @@ project( option(ZLIB_UNTGZ_BUILD_SHARED "Enable building untgz" ON) option(ZLIB_UNTGZ_BUILD_STATIC "Enable building static linked untgz" ON) +option(ZLIB_UNTGZ_INSTALL "Enable installation of untgz" ON) + +include(GNUInstallDirs) + if(ZLIB_UNTGZ_BUILD_SHARED) add_executable(untgz untgz.c) target_link_libraries(untgz PRIVATE ZLIB::ZLIB) + + if(ZLIB_UNTGZ_INSTALL) + install( + TARGETS zlib-untgz + COMPONENT Runtime + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") + endif(ZLIB_UNTGZ_INSTALL) endif(ZLIB_UNTGZ_BUILD_SHARED) if(ZLIB_UNTGZ_BUILD_STATIC) add_executable(untgzStatic untgz.c) target_link_libraries(untgzStatic PRIVATE ZLIB::ZLIBSTATIC) + + if(ZLIB_UNTGZ_INSTALL) + install( + TARGETS zlib-untgzStatic + COMPONENT Runtime + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") + endif(ZLIB_UNTGZ_INSTALL) endif(ZLIB_UNTGZ_BUILD_STATIC) From 77b059e65fb4f6544bdb985a91d775a0ef12e6d8 Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Sat, 3 Jan 2026 10:57:00 +0100 Subject: [PATCH 18/25] made working with add_subdirectory --- contrib/blast/CMakeLists.txt | 21 +++++++++++++++++++-- contrib/iostream3/CMakeLists.txt | 22 ++++++++++++++++++++-- contrib/puff/CMakeLists.txt | 17 ++++++++++++++++- contrib/untgz/CMakeLists.txt | 11 +++++++++++ 4 files changed, 66 insertions(+), 5 deletions(-) diff --git a/contrib/blast/CMakeLists.txt b/contrib/blast/CMakeLists.txt index b1a9065ebf..a917eb8d90 100644 --- a/contrib/blast/CMakeLists.txt +++ b/contrib/blast/CMakeLists.txt @@ -40,6 +40,20 @@ if(ZLIB_BLAST_BUILD_SHARED) blast.c blast.h) + add_library(BLAST::BLAST ALIAS zlib_blast_blast) + + if(NOT CYGWIN) + set_target_properties(zlib_blast_blast + PROPERTIES + SOVERSION ${blast_VERSION_MAJOR} + VERSION ${blast_VERSION}) + endif(NOT CYGWIN) + + set_target_properties(zlib_blast_blast + PROPERTIES + EXPORT_NAME BLAST + OUTPUT_NAME blast) + if(ZLIB_BLAST_BUILD_TESTING) enable_testing() add_executable(blast-test blast-test.c) @@ -69,9 +83,12 @@ if(ZLIB_BLAST_BUILD_STATIC) blast.c blast.h) - set_target_properties(blastStatic + add_library(BLAST::BLASTSTATIC ALIAS zlib_blast_blastStatic) + + set_target_properties(zlib_blast_blastStatic PROPERTIES - OUTPUT_NAME blast${minizip_static_suffix}) + EXPORT_NAME BLASTSTATIC + OUTPUT_NAME blast${zlibblast_static_suffix}) if(ZLIB_BLAST_BUILD_TESTING) enable_testing() diff --git a/contrib/iostream3/CMakeLists.txt b/contrib/iostream3/CMakeLists.txt index 01bc279f7c..65f19e5418 100644 --- a/contrib/iostream3/CMakeLists.txt +++ b/contrib/iostream3/CMakeLists.txt @@ -37,7 +37,22 @@ if(ZLIB_IOSTREAM3_BUILD_SHARED) zfstream.cc zfstream.h) - target_link_libraries(zlib-iostream3 + add_library(IOSTREAMV3::IOSTREAMV3 ALIAS zlib_iostream3_iostreamv3) + + if(NOT CYGWIN) + set_target_properties(zlib_iostream3_iostreamv3 + PROPERTIES + SOVERSION ${iostreamV3_VERSION_MAJOR} + VERSION ${iostreamV3_VERSION}) + endif(NOT CYGWIN) + + set_target_properties( + zlib_iostream3_iostreamv3 + PROPERTIES + EXPORT_NAME IOSTREAMV3 + OUTPUT_NAME iostream3) + + target_link_libraries(zlib_iostream3_iostreamv3 PUBLIC ZLIB::ZLIB) if(ZLIB_IOSTREAM3_BUILD_TESTING) @@ -61,7 +76,10 @@ if(ZLIB_IOSTREAM3_BUILD_STATIC) zfstream.cc zfstream.h) - target_link_libraries(zlib-iostream3Static + add_library(IOSTREAMV3::IOSTREAMV3STATIC + ALIAS zlib_iostream3_iostreamv3Static) + + target_link_libraries(zlib_iostream3_iostreamv3Static INTERFACE ZLIB::ZLIBSTATIC) set_target_properties(zlib-iostream3Static diff --git a/contrib/puff/CMakeLists.txt b/contrib/puff/CMakeLists.txt index 1696c76a02..0733d43355 100644 --- a/contrib/puff/CMakeLists.txt +++ b/contrib/puff/CMakeLists.txt @@ -66,6 +66,21 @@ if(ZLIB_PUFF_BUILD_SHARED) puff.c puff.h) + add_library(PUFF::PUFF ALIAS zlib_puff_puff) + + if(NOT CYGWIN) + set_target_properties(zlib_puff_puff + PROPERTIES + SOVERSION ${puff_VERSION_MAJOR} + VERSION ${puff_VERSION}) + endif(NOT CYGWIN) + + set_target_properties( + zlib_puff_puff + PROPERTIES + EXPORT_NAME PUFF + OUTPUT_NAME puff) + if(ZLIB_PUFF_BUILD_TESTING) enable_testing() @@ -104,7 +119,7 @@ if(ZLIB_PUFF_BUILD_STATIC) puff.c puff.h) - set_target_properties(zlib-puffStatic + add_library(PUFF::PUFFSTATIC ALIAS zlib_puff_puffStatic) PROPERTIES OUTPUT_NAME zlib-puff${zlib_puff_static_suffix}) diff --git a/contrib/untgz/CMakeLists.txt b/contrib/untgz/CMakeLists.txt index e1d62be355..195499b558 100644 --- a/contrib/untgz/CMakeLists.txt +++ b/contrib/untgz/CMakeLists.txt @@ -13,6 +13,17 @@ option(ZLIB_UNTGZ_INSTALL "Enable installation of untgz" ON) include(GNUInstallDirs) +if(NOT DEFINED ZLIB_BUILD_UNTGZ) + if(ZLIB_PUFF_BUILD_SHARED) + list(APPEND REQUIRED_COMPONENTS "shared") + endif(ZLIB_PUFF_BUILD_SHARED) + + if(ZLIB_PUFF_BUILD_STATIC) + list(APPEND REQUIRED_COMPONENTS "static") + endif(ZLIB_PUFF_BUILD_STATIC) + + find_package(ZLIB REQUIRED COMPONENTS ${REQUIRED_COMPONENTS} CONFIG) +endif(NOT DEFINED ZLIB_BUILD_UNTGZ) if(ZLIB_UNTGZ_BUILD_SHARED) add_executable(untgz untgz.c) From b71e510977e44b0a4d6f16b379fb4ea646b49c99 Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Sat, 3 Jan 2026 10:59:56 +0100 Subject: [PATCH 19/25] consistent naming of targets --- contrib/ada/CMakeLists.txt | 31 +++++++++++++++++-------------- contrib/blast/CMakeLists.txt | 14 +++++++------- contrib/iostream3/CMakeLists.txt | 4 ++-- contrib/puff/CMakeLists.txt | 11 +++++++---- contrib/untgz/CMakeLists.txt | 8 ++++---- 5 files changed, 37 insertions(+), 31 deletions(-) diff --git a/contrib/ada/CMakeLists.txt b/contrib/ada/CMakeLists.txt index 3ede5f9da5..a0dcf0c1c4 100644 --- a/contrib/ada/CMakeLists.txt +++ b/contrib/ada/CMakeLists.txt @@ -46,21 +46,24 @@ function(ZLIB_ADA_findTestEnv testName) endfunction(ZLIB_ADA_findTestEnv testName) if(ZLIB_ADA_BUILD_SHARED) - ada_add_library(zlib-Ada SHARED + ada_add_library(zlib_ada_Ada SHARED zlib-thin.adb zlib.adb) - target_link_libraries(zlib-Ada + set_target_properties(zlib_ada_Ada + PROPERTIES OUTPUT_NAME zlib-ada) + + target_link_libraries(zlib_ada_Ada INTERFACE ZLIB::ZLIB) - ada_add_library(zlib-streams SHARED + ada_add_library(zlib_ada_streams SHARED zlib-streams.adb) - target_link_libraries(zlib-streams + target_link_libraries(zlib_ada_streams PUBLIC - zlib-Ada) + zlib_ada_Ada) - ada_find_ali(zlib-streams) + ada_find_ali(zlib_ada_streams) if(ZLIB_ADA_BUILD_TESTING) enable_testing() @@ -142,24 +145,24 @@ if(ZLIB_ADA_BUILD_SHARED) endif(ZLIB_ADA_BUILD_SHARED) if(ZLIB_ADA_BUILD_STATIC) - ada_add_library(zlib-AdaStatic STATIC + ada_add_library(zlib_ada_AdaStatic STATIC zlib-thin.adb zlib.adb) - target_link_libraries(zlib-AdaStatic + target_link_libraries(zlib_ada_AdaStatic INTERFACE ZLIB::ZLIBSTATIC) - set_target_properties(zlib-AdaStatic - PROPERTIES OUTPUT_NAME zlib-Ada${zlib_Ada_static_suffix}) + set_target_properties(zlib_ada_AdaStatic + PROPERTIES OUTPUT_NAME zlib-ada${zlib_Ada_static_suffix}) - ada_add_library(zlib-streamsStatic STATIC + ada_add_library(zlib_ada_streamsStatic STATIC zlib-streams.adb) - target_link_libraries(zlib-streamsStatic + target_link_libraries(zlib_ada_streamsStatic PUBLIC - zlib-AdaStatic) + zlib_ada_AdaStatic) - ada_find_ali(zlib-streamsStatic) + ada_find_ali(zlib_ada_streamsStatic) if(ZLIB_ADA_BUILD_TESTING) enable_testing() diff --git a/contrib/blast/CMakeLists.txt b/contrib/blast/CMakeLists.txt index a917eb8d90..092c5e2049 100644 --- a/contrib/blast/CMakeLists.txt +++ b/contrib/blast/CMakeLists.txt @@ -36,7 +36,7 @@ function(blast_findTestEnv testName) endfunction(blast_findTestEnv testName) if(ZLIB_BLAST_BUILD_SHARED) - add_library(blast SHARED + add_library(zlib_blast_blast SHARED blast.c blast.h) @@ -56,12 +56,12 @@ if(ZLIB_BLAST_BUILD_SHARED) if(ZLIB_BLAST_BUILD_TESTING) enable_testing() - add_executable(blast-test blast-test.c) - target_link_libraries(blast-test blast) + add_executable(zlib_blast_blast-test blast-test.c) + target_link_libraries(zlib_blast_blast-test PRIVATE zlib_blast_blast) - add_test(NAME blast_blast-test + add_test(NAME zlib_blast_blast-test COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/tester.cmake - "$" + "$" "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}") @@ -69,7 +69,7 @@ if(ZLIB_BLAST_BUILD_SHARED) OR MSYS OR MINGW OR CYGWIN) - blast_findtestenv(blast-test) + blast_findtestenv(zlib_blast_blast-test) endif( MSVC OR MSYS @@ -79,7 +79,7 @@ if(ZLIB_BLAST_BUILD_SHARED) endif(ZLIB_BLAST_BUILD_SHARED) if(ZLIB_BLAST_BUILD_STATIC) - add_library(blastStatic STATIC + add_library(zlib_blast_blastStatic STATIC blast.c blast.h) diff --git a/contrib/iostream3/CMakeLists.txt b/contrib/iostream3/CMakeLists.txt index 65f19e5418..c0dbdcac5d 100644 --- a/contrib/iostream3/CMakeLists.txt +++ b/contrib/iostream3/CMakeLists.txt @@ -33,7 +33,7 @@ if(WIN32 OR CYGWIN) endif(WIN32 OR CYGWIN) if(ZLIB_IOSTREAM3_BUILD_SHARED) - add_library(zlib-iostream3 SHARED + add_library(zlib_iostream3_iostreamv3 SHARED zfstream.cc zfstream.h) @@ -72,7 +72,7 @@ if(ZLIB_IOSTREAM3_BUILD_SHARED) endif(ZLIB_IOSTREAM3_BUILD_SHARED) if(ZLIB_IOSTREAM3_BUILD_STATIC) - add_library(zlib-iostream3Static STATIC + add_library(zlib_iostream3_iostreamv3Static STATIC zfstream.cc zfstream.h) diff --git a/contrib/puff/CMakeLists.txt b/contrib/puff/CMakeLists.txt index 0733d43355..866d3f7de6 100644 --- a/contrib/puff/CMakeLists.txt +++ b/contrib/puff/CMakeLists.txt @@ -33,7 +33,7 @@ if(WIN32 OR CYGWIN) endif(WIN32 OR CYGWIN) if(ZLIB_PUFF_BUILD_TESTING) - add_executable(bin-writer bin-writer.c) + add_executable(zlib_puff_bin-writer bin-writer.c) if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "Clang") @@ -62,7 +62,7 @@ if(ZLIB_PUFF_BUILD_TESTING) endif(ZLIB_PUFF_BUILD_TESTING) if(ZLIB_PUFF_BUILD_SHARED) - add_library(zlib-puff SHARED + add_library(zlib_puff_puff SHARED puff.c puff.h) @@ -115,13 +115,16 @@ if(ZLIB_PUFF_BUILD_SHARED) endif(ZLIB_PUFF_BUILD_SHARED) if(ZLIB_PUFF_BUILD_STATIC) - add_library(zlib-puffStatic STATIC + add_library(zlib_puff_puffStatic STATIC puff.c puff.h) add_library(PUFF::PUFFSTATIC ALIAS zlib_puff_puffStatic) + + set_target_properties(zlib_puff_puffStatic PROPERTIES - OUTPUT_NAME zlib-puff${zlib_puff_static_suffix}) + EXPORT_NAME PUFFSTATIC + OUTPUT_NAME puff${zlib_puff_static_suffix}) if(ZLIB_PUFF_BUILD_TESTING) enable_testing() diff --git a/contrib/untgz/CMakeLists.txt b/contrib/untgz/CMakeLists.txt index 195499b558..0242d814d2 100644 --- a/contrib/untgz/CMakeLists.txt +++ b/contrib/untgz/CMakeLists.txt @@ -26,8 +26,8 @@ if(NOT DEFINED ZLIB_BUILD_UNTGZ) endif(NOT DEFINED ZLIB_BUILD_UNTGZ) if(ZLIB_UNTGZ_BUILD_SHARED) - add_executable(untgz untgz.c) - target_link_libraries(untgz PRIVATE ZLIB::ZLIB) + add_executable(zlib-untgz untgz.c) + target_link_libraries(zlib-untgz PRIVATE ZLIB::ZLIB) if(ZLIB_UNTGZ_INSTALL) install( @@ -38,8 +38,8 @@ if(ZLIB_UNTGZ_BUILD_SHARED) endif(ZLIB_UNTGZ_BUILD_SHARED) if(ZLIB_UNTGZ_BUILD_STATIC) - add_executable(untgzStatic untgz.c) - target_link_libraries(untgzStatic PRIVATE ZLIB::ZLIBSTATIC) + add_executable(zlib-untgzStatic untgz.c) + target_link_libraries(zlib-untgzStatic PRIVATE ZLIB::ZLIBSTATIC) if(ZLIB_UNTGZ_INSTALL) install( From 6912dcef0aab4a5af3e3455a2870557bc68390ce Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Sat, 3 Jan 2026 11:01:40 +0100 Subject: [PATCH 20/25] consistent naming of tests --- contrib/ada/CMakeLists.txt | 90 ++++++++++++++++---------------- contrib/blast/CMakeLists.txt | 9 ++-- contrib/iostream3/CMakeLists.txt | 26 ++++----- contrib/puff/CMakeLists.txt | 38 +++++++------- test/CMakeLists.txt | 6 +-- 5 files changed, 87 insertions(+), 82 deletions(-) diff --git a/contrib/ada/CMakeLists.txt b/contrib/ada/CMakeLists.txt index a0dcf0c1c4..85b944452b 100644 --- a/contrib/ada/CMakeLists.txt +++ b/contrib/ada/CMakeLists.txt @@ -67,75 +67,75 @@ if(ZLIB_ADA_BUILD_SHARED) if(ZLIB_ADA_BUILD_TESTING) enable_testing() - ada_add_executable(ada-test test.adb) + ada_add_executable(zlib_ada_test test.adb) - target_link_libraries(ada-test + target_link_libraries(zlib_ada_test PRIVATE - zlib-Ada - zlib-streams) + zlib_ada_Ada + zlib_ada_streams) - ada_find_ali(ada-test) + ada_find_ali(zlib_ada_test) - add_test(NAME zlib_Ada_ada-test COMMAND ada-test) - set_tests_properties(zlib_Ada_ada-test PROPERTIES FIXTURES_REQUIRED ada_cleanup) + add_test(NAME zlib_ada_ada-test COMMAND zlib_ada_test) + set_tests_properties(zlib_ada_ada-test PROPERTIES FIXTURES_REQUIRED zlib_ada_cleanup) if(MSVC OR MSYS OR MINGW OR CYGWIN) - zlib_ada_findtestenv(zlibAda_ada-test) + zlib_ada_findtestenv(zlib_ada_ada-test) endif( MSVC OR MSYS OR MINGW OR CYGWIN) - ada_add_executable(buffer_demo buffer_demo.adb) + ada_add_executable(zlib_ada_buffer_demo buffer_demo.adb) - target_link_libraries(buffer_demo + target_link_libraries(zlib_ada_buffer_demo PRIVATE - zlib-Ada) + zlib_ada_Ada) - ada_find_ali(buffer_demo) + ada_find_ali(zlib_ada_buffer_demo) - add_test(NAME zlib_Ada_buffer-demo COMMAND buffer_demo) + add_test(NAME zlib_ada_buffer-demo COMMAND zlib_ada_buffer_demo) if(MSVC OR MSYS OR MINGW OR CYGWIN) - zlib_ada_findtestenv(zlibAda_buffer-demo) + zlib_ada_findtestenv(zlib_ada_buffer-demo) endif( MSVC OR MSYS OR MINGW OR CYGWIN) - ada_add_executable(mtest mtest.adb) + ada_add_executable(zlib_ada_mtest mtest.adb) - target_link_libraries(mtest + target_link_libraries(zlib_ada_mtest PRIVATE - zlib-Ada) + zlib_ada_Ada) - ada_find_ali(mtest) + ada_find_ali(zlib_ada_mtest) #Not adding test as this is an endless-loop - ada_add_executable(read read.adb) + ada_add_executable(zlib_ada_read read.adb) - target_link_libraries(read + target_link_libraries(zlib_ada_read PRIVATE - zlib-Ada) + zlib_ada_Ada) - ada_find_ali(read) + ada_find_ali(zlib_ada_read) - add_test(NAME zlib_Ada_read COMMAND read) + add_test(NAME zlib_ada_read COMMAND zlib_ada_read) if(MSVC OR MSYS OR MINGW OR CYGWIN) - zlib_ada_findtestenv(zlibAda_read) + zlib_ada_findtestenv(zlib_ada_read) endif( MSVC OR MSYS @@ -166,47 +166,47 @@ if(ZLIB_ADA_BUILD_STATIC) if(ZLIB_ADA_BUILD_TESTING) enable_testing() - ada_add_executable(ada-testStatic test.adb) + ada_add_executable(zlib_ada_testStatic test.adb) - target_link_libraries(ada-testStatic + target_link_libraries(zlib_ada_testStatic PRIVATE - zlib-AdaStatic - zlib-streamsStatic) + zlib_ada_AdaStatic + zlib_ada_streamsStatic) - ada_find_ali(ada-testStatic) + ada_find_ali(zlib_ada_testStatic) - add_test(NAME zlib_Ada_ada-testStatic COMMAND ada-testStatic) - set_tests_properties(zlib_Ada_ada-testStatic PROPERTIES FIXTURES_REQUIRED ada_cleanup) + add_test(NAME zlib_ada_testStatic COMMAND zlib_ada_testStatic) + set_tests_properties(zlib_ada_testStatic PROPERTIES FIXTURES_REQUIRED zlib_ada_cleanup) - ada_add_executable(buffer_demoStatic buffer_demo.adb) + ada_add_executable(zlib_ada_buffer-demoStatic buffer_demo.adb) - target_link_libraries(buffer_demoStatic + target_link_libraries(zlib_ada_buffer-demoStatic PRIVATE - zlib-AdaStatic) + zlib_ada_AdaStatic) - ada_find_ali(buffer_demoStatic) + ada_find_ali(zlib_ada_buffer-demoStatic) - add_test(NAME zlib_Ada-buffer-demoStatic COMMAND buffer_demoStatic) + add_test(NAME zlib_ada_buffer-demoStatic COMMAND zlib_ada_buffer-demoStatic) - ada_add_executable(mtestStatic mtest.adb) + ada_add_executable(zlib_ada_mtestStatic mtest.adb) - target_link_libraries(mtestStatic + target_link_libraries(zlib_ada_mtestStatic PRIVATE - zlib-AdaStatic) + zlib_ada_AdaStatic) - ada_find_ali(mtestStatic) + ada_find_ali(zlib_ada_mtestStatic) # Not adding test as this is an endless-loop - ada_add_executable(readStatic read.adb) + ada_add_executable(zlib_ada_readStatic read.adb) - target_link_libraries(readStatic + target_link_libraries(zlib_ada_readStatic PRIVATE - zlib-AdaStatic) + zlib_ada_AdaStatic) - ada_find_ali(readStatic) + ada_find_ali(zlib_ada_readStatic) - add_test(NAME zlib_Ada_readStatic COMMAND readStatic) + add_test(NAME zlib_ada_readStatic COMMAND zlib_ada_readStatic) endif(ZLIB_ADA_BUILD_TESTING) endif(ZLIB_ADA_BUILD_STATIC) diff --git a/contrib/blast/CMakeLists.txt b/contrib/blast/CMakeLists.txt index 092c5e2049..a94b3628b2 100644 --- a/contrib/blast/CMakeLists.txt +++ b/contrib/blast/CMakeLists.txt @@ -92,12 +92,13 @@ if(ZLIB_BLAST_BUILD_STATIC) if(ZLIB_BLAST_BUILD_TESTING) enable_testing() - add_executable(blast-testStatic blast-test.c) - target_link_libraries(blast-testStatic blastStatic) + add_executable(zlib_blast_testStatic blast-test.c) + target_link_libraries(zlib_blast_testStatic + PRIVATE zlib_blast_blastStatic) - add_test(NAME blast_testStatic + add_test(NAME zlib_blast_testStatic COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/tester.cmake - "$" + "$" "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}") endif(ZLIB_BLAST_BUILD_TESTING) diff --git a/contrib/iostream3/CMakeLists.txt b/contrib/iostream3/CMakeLists.txt index c0dbdcac5d..9c47c1c142 100644 --- a/contrib/iostream3/CMakeLists.txt +++ b/contrib/iostream3/CMakeLists.txt @@ -58,16 +58,16 @@ if(ZLIB_IOSTREAM3_BUILD_SHARED) if(ZLIB_IOSTREAM3_BUILD_TESTING) enable_testing() - add_executable(iostream-test test.cc) + add_executable(zlib_iostream3_test test.cc zfstream.h) - target_link_libraries(iostream-test - PRIVATE zlib-iostream3) + target_link_libraries(zlib_iostream3_test + PRIVATE zlib_iostream3_iostream3) - add_test(NAME zlib_iostream3_test COMMAND iostream-test) + add_test(NAME zlib_iostream3_test COMMAND zlib_iostream3_test) set_tests_properties(zlib_iostream3_test PROPERTIES - FIXTURES_REQUIRED iostream3_cleanup) + FIXTURES_REQUIRED zlib_iostream3_cleanup) endif(ZLIB_IOSTREAM3_BUILD_TESTING) endif(ZLIB_IOSTREAM3_BUILD_SHARED) @@ -82,22 +82,24 @@ if(ZLIB_IOSTREAM3_BUILD_STATIC) target_link_libraries(zlib_iostream3_iostreamv3Static INTERFACE ZLIB::ZLIBSTATIC) - set_target_properties(zlib-iostream3Static + set_target_properties(zlib_iostream3_iostreamv3Static PROPERTIES - OUTPUT_NAME zlib-iostream3${zlib_IOStream3_static_suffix}) + EXPORT_NAME IOSTREAMV3STATIC + OUTPUT_NAME iostream3${zlib_IOStream3_static_suffix}) if(ZLIB_IOSTREAM3_BUILD_TESTING) enable_testing() - add_executable(iostream-testStatic test.cc) + add_executable(zlib_iostream3_testStatic test.cc zfstream.h) - target_link_libraries(iostream-testStatic - PRIVATE zlib-iostream3Static) - add_test(NAME zlib_iostream3_testStatic COMMAND iostream-testStatic) + target_link_libraries(zlib_iostream3_testStatic + PRIVATE zlib_iostream3_iostream3Static) + add_test(NAME zlib_iostream3_testStatic + COMMAND zlib_iostream3_testStatic) set_tests_properties(zlib_iostream3_testStatic PROPERTIES - FIXTURES_REQUIRED iostream3_cleanup) + FIXTURES_REQUIRED zlib_iostream3_cleanup) endif(ZLIB_IOSTREAM3_BUILD_TESTING) endif(ZLIB_IOSTREAM3_BUILD_STATIC) diff --git a/contrib/puff/CMakeLists.txt b/contrib/puff/CMakeLists.txt index 866d3f7de6..ca95830fc6 100644 --- a/contrib/puff/CMakeLists.txt +++ b/contrib/puff/CMakeLists.txt @@ -84,28 +84,28 @@ if(ZLIB_PUFF_BUILD_SHARED) if(ZLIB_PUFF_BUILD_TESTING) enable_testing() - add_executable(puff-test pufftest.c) + add_executable(zlib_puff_test pufftest.c puff.h) - target_link_libraries(puff-test - PRIVATE zlib-puff) + target_link_libraries(zlib_puff_test + PRIVATE zlib_puff_puff) add_test(NAME zlib_puff_test COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/tester.cmake - "$" + "$" "${CMAKE_CURRENT_SOURCE_DIR}") if(GCOV_EXECUTABLE) - add_executable(puff-test-coverage pufftest.c puff.c) + add_executable(zlib_puff_test-coverage pufftest.c puff.c puff.h) - target_compile_options(puff-test-coverage PRIVATE -coverage) + target_compile_options(zlib_puff_test-coverage PRIVATE -coverage) - target_link_options(puff-test-coverage PRIVATE -coverage) + target_link_options(zlib_puff_test-coverage PRIVATE -coverage) - add_test(NAME zlib_puff_test_coverage + add_test(NAME zlib_puff_test-coverage COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/tester-cov.cmake - "$" + "$" "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}" ${GCOV_EXECUTABLE} @@ -129,27 +129,29 @@ if(ZLIB_PUFF_BUILD_STATIC) if(ZLIB_PUFF_BUILD_TESTING) enable_testing() - add_executable(puff-testStatic pufftest.c) + add_executable(zlib_puff_testStatic pufftest.c puff.h) - target_link_libraries(puff-testStatic - PRIVATE zlib-puffStatic) + target_link_libraries(zlib_puff_testStatic + PRIVATE zlib_puff_puffStatic) add_test(NAME zlib_puff_testStatic COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/tester.cmake - "$" + "$" "${CMAKE_CURRENT_SOURCE_DIR}") if(GCOV_EXECUTABLE) - add_executable(puff-testStatic-coverage pufftest.c puff.c) + add_executable(zlib_puff_testStatic-coverage pufftest.c puff.c puff.h) - target_compile_options(puff-testStatic-coverage PRIVATE -coverage) + target_compile_options(zlib_puff_testStatic-coverage + PRIVATE -coverage) - target_link_options(puff-testStatic-coverage PRIVATE -coverage) + target_link_options(zlib_puff_testStatic-coverage + PRIVATE -coverage) - add_test(NAME zlib_puff_testStatic_coverage + add_test(NAME zlib_puff_testStatic-coverage COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/tester-cov.cmake - "$" + "$" "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}" ${GCOV_EXECUTABLE} diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index fab91e4ebe..098472ebfa 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -98,15 +98,15 @@ if(ZLIB_BUILD_STATIC) target_link_options(infcover PRIVATE -coverage) target_compile_definitions( infcover PRIVATE $<$:HAVE_HIDDEN>) - add_test(NAME zlib-coverage COMMAND infcover) + add_test(NAME zlib_coverage COMMAND infcover) set(INFCOVER_DIR ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/infcover.dir) add_test( - NAME zlib-coverage-summary + NAME zlib_coverage-summary COMMAND ${GCOV_EXECUTABLE} ${llvm_option} ${CMAKE_CURRENT_SOURCE_DIR}/infcover.c -o ${INFCOVER_DIR}/infcover.c.gcda) - set_tests_properties(zlib-coverage-summary PROPERTIES DEPENDS + set_tests_properties(zlib_coverage-summary PROPERTIES DEPENDS zlib-coverage) set(CMAKE_C_FLAGS ${CFLAGS_OLD} From 056caaa0c127ea2c211258e10da9a9f50ff777b8 Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Sat, 3 Jan 2026 11:02:10 +0100 Subject: [PATCH 21/25] fix for msvc build --- contrib/gcc_gvmat64/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/contrib/gcc_gvmat64/CMakeLists.txt b/contrib/gcc_gvmat64/CMakeLists.txt index 2f90d756be..67a6a83336 100644 --- a/contrib/gcc_gvmat64/CMakeLists.txt +++ b/contrib/gcc_gvmat64/CMakeLists.txt @@ -5,6 +5,11 @@ enable_language(ASM) set(CMAKE_ASM_COMPILE_OBJECT ${CMAKE_ASM_COMPILE_OBJECT} CACHE INTERNAL "" FORCE) +if(WIN32) + #cmake 4.1 doesn't consider cl an asm compiler + cmake_policy(SET CMP0194 NEW) +endif(WIN32) + if(ZLIB_BUILD_SHARED) target_sources(zlib PRIVATE gvmat64.S) endif(ZLIB_BUILD_SHARED) From 5c48328d93d5d43c8efe2260c5c9b88b1f543aa4 Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Sat, 3 Jan 2026 11:02:41 +0100 Subject: [PATCH 22/25] add integration tests --- contrib/ada/CMakeLists.txt | 4 +- contrib/blast/CMakeLists.txt | 4 + contrib/blast/blastConfig.cmake.in | 18 ++ contrib/blast/test/CMakeLists.txt | 193 ++++++++++++++++++ .../add_subdirectory_exclude_test.cmake.in | 27 +++ .../blast/test/add_subdirectory_test.cmake.in | 25 +++ .../find_package_no_components_test.cmake.in | 24 +++ contrib/blast/test/find_package_test.cmake.in | 24 +++ ...ind_package_wrong_components_test.cmake.in | 24 +++ contrib/iostream3/CMakeLists.txt | 2 + contrib/iostream3/iostream3Config.cmake.in | 23 +++ contrib/iostream3/test/CMakeLists.txt | 191 +++++++++++++++++ .../add_subdirectory_exclude_test.cmake.in | 27 +++ .../test/add_subdirectory_test.cmake.in | 25 +++ .../find_package_no_components_test.cmake.in | 24 +++ .../iostream3/test/find_package_test.cmake.in | 24 +++ ...ind_package_wrong_components_test.cmake.in | 24 +++ contrib/puff/CMakeLists.txt | 2 + contrib/puff/puffConfig.cmake.in | 18 ++ contrib/puff/test/CMakeLists.txt | 191 +++++++++++++++++ .../add_subdirectory_exclude_test.cmake.in | 26 +++ .../puff/test/add_subdirectory_test.cmake.in | 25 +++ .../find_package_no_components_test.cmake.in | 24 +++ contrib/puff/test/find_package_test.cmake.in | 24 +++ ...ind_package_wrong_components_test.cmake.in | 24 +++ 25 files changed, 1015 insertions(+), 2 deletions(-) create mode 100644 contrib/blast/blastConfig.cmake.in create mode 100644 contrib/blast/test/CMakeLists.txt create mode 100644 contrib/blast/test/add_subdirectory_exclude_test.cmake.in create mode 100644 contrib/blast/test/add_subdirectory_test.cmake.in create mode 100644 contrib/blast/test/find_package_no_components_test.cmake.in create mode 100644 contrib/blast/test/find_package_test.cmake.in create mode 100644 contrib/blast/test/find_package_wrong_components_test.cmake.in create mode 100644 contrib/iostream3/iostream3Config.cmake.in create mode 100644 contrib/iostream3/test/CMakeLists.txt create mode 100644 contrib/iostream3/test/add_subdirectory_exclude_test.cmake.in create mode 100644 contrib/iostream3/test/add_subdirectory_test.cmake.in create mode 100644 contrib/iostream3/test/find_package_no_components_test.cmake.in create mode 100644 contrib/iostream3/test/find_package_test.cmake.in create mode 100644 contrib/iostream3/test/find_package_wrong_components_test.cmake.in create mode 100644 contrib/puff/puffConfig.cmake.in create mode 100644 contrib/puff/test/CMakeLists.txt create mode 100644 contrib/puff/test/add_subdirectory_exclude_test.cmake.in create mode 100644 contrib/puff/test/add_subdirectory_test.cmake.in create mode 100644 contrib/puff/test/find_package_no_components_test.cmake.in create mode 100644 contrib/puff/test/find_package_test.cmake.in create mode 100644 contrib/puff/test/find_package_wrong_components_test.cmake.in diff --git a/contrib/ada/CMakeLists.txt b/contrib/ada/CMakeLists.txt index 85b944452b..8922200cd6 100644 --- a/contrib/ada/CMakeLists.txt +++ b/contrib/ada/CMakeLists.txt @@ -211,7 +211,7 @@ if(ZLIB_ADA_BUILD_STATIC) endif(ZLIB_ADA_BUILD_STATIC) if(ZLIB_ADA_BUILD_TESTING) - add_test(NAME zlib_Ada_cleanup COMMAND ${CMAKE_COMMAND} -E rm ${CMAKE_CURRENT_BINARY_DIR}/testzlib.in + add_test(NAME zlib_ada_cleanup COMMAND ${CMAKE_COMMAND} -E rm ${CMAKE_CURRENT_BINARY_DIR}/testzlib.in ${CMAKE_CURRENT_BINARY_DIR}/testzlib.out ${CMAKE_CURRENT_BINARY_DIR}/testzlib.zlb) - set_tests_properties(zlib_Ada_cleanup PROPERTIES FIXTURES_CLEANUP ada_cleanup) + set_tests_properties(zlib_ada_cleanup PROPERTIES FIXTURES_CLEANUP zlib_ada_cleanup) endif(ZLIB_ADA_BUILD_TESTING) diff --git a/contrib/blast/CMakeLists.txt b/contrib/blast/CMakeLists.txt index a94b3628b2..6f3ba38334 100644 --- a/contrib/blast/CMakeLists.txt +++ b/contrib/blast/CMakeLists.txt @@ -104,6 +104,10 @@ if(ZLIB_BLAST_BUILD_STATIC) endif(ZLIB_BLAST_BUILD_TESTING) endif(ZLIB_BLAST_BUILD_STATIC) +if(ZLIB_BLAST_BUILD_TESTING) + add_subdirectory(test) +endif(ZLIB_BLAST_BUILD_TESTING) + if(ZLIB_BLAST_INSTALL) if(ZLIB_BLAST_BUILD_SHARED) install( diff --git a/contrib/blast/blastConfig.cmake.in b/contrib/blast/blastConfig.cmake.in new file mode 100644 index 0000000000..5909ac4f58 --- /dev/null +++ b/contrib/blast/blastConfig.cmake.in @@ -0,0 +1,18 @@ +@PACKAGE_INIT@ + +set(_blast_supported_components "shared" "static") + +if(blast_FIND_COMPONENTS) + foreach(_comp ${blast_FIND_COMPONENTS}) + if(NOT _comp IN_LIST _blast_supported_components) + set(blast_FOUND False) + set(blast_NOT_FOUND_MESSAGE "Unsupported component: ${_comp}") + endif(NOT _comp IN_LIST _blast_supported_components) + + include("${CMAKE_CURRENT_LIST_DIR}/blast-${_comp}.cmake") + endforeach(_comp ${blast_FIND_COMPONENTS}) +else(blast_FIND_COMPONENTS) + foreach(_component_config IN LISTS _blast_supported_components) + include("${CMAKE_CURRENT_LIST_DIR}/blast-${_component_config}.cmake") + endforeach(_component_config IN LISTS _blast_supported_components) +endif(blast_FIND_COMPONENTS) diff --git a/contrib/blast/test/CMakeLists.txt b/contrib/blast/test/CMakeLists.txt new file mode 100644 index 0000000000..d319b824f1 --- /dev/null +++ b/contrib/blast/test/CMakeLists.txt @@ -0,0 +1,193 @@ +# if we are built from with zlib, use this path's) +if(DEFINED ZLIB_BUILD_SHARED) + set(WORK_DIR ${zlib_BINARY_DIR}) + set(inst_setup zlib_blast_install) +else(DEFINED ZLIB_BUILD_SHARED) + set(WORK_DIR ${blast_BINARY_DIR}) + set(inst_setup zlib_blast_install) + set(ZLIB_ARG "-DZLIB_DIR=${ZLIB_DIR}") + + add_test( + NAME zlib_blast_install + COMMAND ${CMAKE_COMMAND} --install ${blast_BINARY_DIR} --prefix + ${CMAKE_CURRENT_BINARY_DIR}/test_install --config $ + WORKING_DIRECTORY ${blast_BINARY_DIR}) + + set_tests_properties(zlib_blast_install + PROPERTIES + FIXTURES_SETUP zlib_blast_install) +endif(DEFINED ZLIB_BUILD_SHARED) + +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test) +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test) +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/find_package_test.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test/CMakeLists.txt @ONLY) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/add_subdirectory_test.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test/CMakeLists.txt @ONLY) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/add_subdirectory_exclude_test.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test/CMakeLists.txt + @ONLY) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/find_package_no_components_test.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/findpackage_no_components_test/CMakeLists.txt + @ONLY) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/find_package_wrong_components_test.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/findpackage_wrong_components_test/CMakeLists.txt + @ONLY) + +# CMAKE_GENERATOR_PLATFORM doesn't work in the if +set(GENERATOR ${CMAKE_GENERATOR_PLATFORM}) + +if(GENERATOR) + set(PLATFORM "-A ${GENERATOR}") +endif(GENERATOR) + +# +# findpackage_test +# +add_test( + NAME zlib_blast_find_package_configure + COMMAND + ${CMAKE_COMMAND} ${PLATFORM} + -B${CMAKE_CURRENT_BINARY_DIR}/findpackage_test_build + -DCMAKE_BUILD_TYPE=$ + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install ${ZLIB_ARG} + --fresh + -G "${CMAKE_GENERATOR}" + -S${CMAKE_CURRENT_BINARY_DIR}/findpackage_test) + +add_test( + NAME zlib_blast_find_package_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test_build) + +set_tests_properties( + zlib_blast_find_package_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + FIXTURES_SETUP blast_fp_config) + +set_tests_properties(zlib_blast_find_package_build + PROPERTIES + FIXTURES_REQUIRED blast_fp_config) + +# +# add_subdirectory_test +# +add_test( + NAME zlib_blast_add_subdirectory_configure + COMMAND + ${CMAKE_COMMAND} ${PLATFORM} + -B${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test_build + -DCMAKE_BUILD_TYPE=$ + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install ${ZLIB_ARG} + --fresh + -G "${CMAKE_GENERATOR}" + -S${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test) + +add_test( + NAME zlib_blast_add_subdirectory_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test_build) + +set_tests_properties( + zlib_blast_add_subdirectory_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + FIXTURES_SETUP blast_as_config) + +set_tests_properties(zlib_blast_add_subdirectory_build + PROPERTIES + FIXTURES_REQUIRED blast_as_config) + +# +# add_subdirectory_exclude_test +# +add_test( + NAME zlib_blast_add_subdirectory_exclude_configure + COMMAND + ${CMAKE_COMMAND} ${PLATFORM} + -B${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test_build + -DCMAKE_BUILD_TYPE=$ + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install ${ZLIB_ARG} + --fresh + -G "${CMAKE_GENERATOR}" + -S${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test) + +add_test( + NAME zlib_blast_add_subdirectory_exclude_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY + ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test_build) + +set_tests_properties(zlib_blast_add_subdirectory_exclude_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + FIXTURES_SETUP blast_asx_config) + +set_tests_properties(zlib_blast_add_subdirectory_exclude_build + PROPERTIES + FIXTURES_REQUIRED blast_asx_config) + +# +# findpackage_no_components_test +# +add_test( + NAME zlib_blast_find_package_no_components_configure + COMMAND + ${CMAKE_COMMAND} ${PLATFORM} + -B${CMAKE_CURRENT_BINARY_DIR}/findpackage_no_components_test_build + -DCMAKE_BUILD_TYPE=$ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install ${ZLIB_ARG} + --fresh + -G "${CMAKE_GENERATOR}" + -S${CMAKE_CURRENT_BINARY_DIR}/findpackage_no_components_test) + +set_tests_properties( + zlib_blast_find_package_no_components_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup}) + +if(NOT ZLIB_BLAST_BUILD_SHARED OR NOT ZLIB_BLAST_BUILD_STATIC) + set_tests_properties(zlib_blast_find_package_no_components_configure + PROPERTIES + WILL_FAIL TRUE) +endif(NOT ZLIB_BLAST_BUILD_SHARED OR NOT ZLIB_BLAST_BUILD_STATIC) + +# +# findpackage_no_components_test +# +add_test( + NAME zlib_blast_find_package_wrong_components_configure + COMMAND + ${CMAKE_COMMAND} ${PLATFORM} + -B${CMAKE_CURRENT_BINARY_DIR}/findpackage_wrong_components_test_build + -DCMAKE_BUILD_TYPE=$ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install ${ZLIB_ARG} + --fresh + -G "${CMAKE_GENERATOR}" + -S${CMAKE_CURRENT_BINARY_DIR}/findpackage_wrong_components_test) + +set_tests_properties(zlib_blast_find_package_wrong_components_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + WILL_FAIL TRUE) + diff --git a/contrib/blast/test/add_subdirectory_exclude_test.cmake.in b/contrib/blast/test/add_subdirectory_exclude_test.cmake.in new file mode 100644 index 0000000000..fd6b487282 --- /dev/null +++ b/contrib/blast/test/add_subdirectory_exclude_test.cmake.in @@ -0,0 +1,27 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + blast_find_package + LANGUAGES C + VERSION @blast_VERSION@) + +option(ZLIB_BLAST_BUILD_SHARED "" @ZLIB_PUFF_BUILD_SHARED@) +option(ZLIB_BLAST_BUILD_STATIC "" @ZLIB_PUFF_BUILD_STATIC@) +option(ZLIB_BLAST_BUILD_TESTING "" @ZLIB_BLAST_BUILD_TESTING@) + +add_subdirectory(@blast_SOURCE_DIR@ + ${CMAKE_CURRENT_BINARY_DIR}/blast + EXCLUDE_FROM_ALL) + +set(BLAST_SRCS + @blast_SOURCE_DIR@/blast-test.c) + +if(ZLIB_BLAST_BUILD_SHARED) + add_executable(test_example ${BLAST_SRCS}) + target_link_libraries(test_example BLAST::BLAST) +endif(ZLIB_BLAST_BUILD_SHARED) + +if(ZLIB_BLAST_BUILD_STATIC) + add_executable(test_example_static ${BLAST_SRCS}) + target_link_libraries(test_example_static BLAST::BLASTSTATIC) +endif(ZLIB_BLAST_BUILD_STATIC) diff --git a/contrib/blast/test/add_subdirectory_test.cmake.in b/contrib/blast/test/add_subdirectory_test.cmake.in new file mode 100644 index 0000000000..8b9370f017 --- /dev/null +++ b/contrib/blast/test/add_subdirectory_test.cmake.in @@ -0,0 +1,25 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + blast_find_package + LANGUAGES C + VERSION @blast_VERSION@) + +option(ZLIB_BLAST_BUILD_SHARED "" @ZLIB_PUFF_BUILD_SHARED@) +option(ZLIB_BLAST_BUILD_STATIC "" @ZLIB_PUFF_BUILD_STATIC@) +option(ZLIB_BLAST_BUILD_TESTING "" @ZLIB_BLAST_BUILD_TESTING@) + +add_subdirectory(@blast_SOURCE_DIR@ ${CMAKE_CURRENT_BINARY_DIR}/blast) + +set(BLAST_SRCS + @blast_SOURCE_DIR@/blast-test.c) + +if(ZLIB_BLAST_BUILD_SHARED) + add_executable(test_example ${BLAST_SRCS}) + target_link_libraries(test_example BLAST::BLAST) +endif(ZLIB_BLAST_BUILD_SHARED) + +if(ZLIB_BLAST_BUILD_STATIC) + add_executable(test_example_static ${BLAST_SRCS}) + target_link_libraries(test_example_static BLAST::BLASTSTATIC) +endif(ZLIB_BLAST_BUILD_STATIC) diff --git a/contrib/blast/test/find_package_no_components_test.cmake.in b/contrib/blast/test/find_package_no_components_test.cmake.in new file mode 100644 index 0000000000..f7054ff9c3 --- /dev/null +++ b/contrib/blast/test/find_package_no_components_test.cmake.in @@ -0,0 +1,24 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + blast_find_package + LANGUAGES C + VERSION @blast_VERSION@) + +option(ZLIB_BLAST_BUILD_SHARED "" @ZLIB_PUFF_BUILD_SHARED@) +option(ZLIB_BLAST_BUILD_STATIC "" @ZLIB_PUFF_BUILD_STATIC@) + +find_package(blast REQUIRED CONFIG) + +set(BLAST_SRCS + @blast_SOURCE_DIR@/blast-test.c) + +if(ZLIB_BLAST_BUILD_SHARED) + add_executable(test_example ${BLAST_SRCS}) + target_link_libraries(test_example BLAST::BLAST) +endif(ZLIB_BLAST_BUILD_SHARED) + +if(ZLIB_BLAST_BUILD_STATIC) + add_executable(test_example_static ${BLAST_SRCS}) + target_link_libraries(test_example_static BLAST::BLASTSTATIC) +endif(ZLIB_BLAST_BUILD_STATIC) diff --git a/contrib/blast/test/find_package_test.cmake.in b/contrib/blast/test/find_package_test.cmake.in new file mode 100644 index 0000000000..c80e50b066 --- /dev/null +++ b/contrib/blast/test/find_package_test.cmake.in @@ -0,0 +1,24 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + blast_find_package + LANGUAGES C + VERSION @blast_VERSION@) + +option(ZLIB_BLAST_BUILD_SHARED "" @ZLIB_PUFF_BUILD_SHARED@) +option(ZLIB_BLAST_BUILD_STATIC "" @ZLIB_PUFF_BUILD_STATIC@) + +set(BLAST_SRCS + @blast_SOURCE_DIR@/blast-test.c) + +if(ZLIB_BLAST_BUILD_SHARED) + find_package(blast REQUIRED COMPONENTS shared CONFIG) + add_executable(test_example ${BLAST_SRCS}) + target_link_libraries(test_example BLAST::BLAST) +endif(ZLIB_BLAST_BUILD_SHARED) + +if(ZLIB_BLAST_BUILD_STATIC) + find_package(blast REQUIRED COMPONENTS static CONFIG) + add_executable(test_example_static ${BLAST_SRCS}) + target_link_libraries(test_example_static BLAST::BLASTSTATIC) +endif(ZLIB_BLAST_BUILD_STATIC) diff --git a/contrib/blast/test/find_package_wrong_components_test.cmake.in b/contrib/blast/test/find_package_wrong_components_test.cmake.in new file mode 100644 index 0000000000..608f4085ce --- /dev/null +++ b/contrib/blast/test/find_package_wrong_components_test.cmake.in @@ -0,0 +1,24 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + blast_find_package + LANGUAGES C + VERSION @blast_VERSION@) + +option(ZLIB_BLAST_BUILD_SHARED "" @ZLIB_PUFF_BUILD_SHARED@) +option(ZLIB_BLAST_BUILD_STATIC "" @ZLIB_PUFF_BUILD_STATIC@) + +find_package(blast REQUIRED COMPONENTS wrong CONFIG) + +set(BLAST_SRCS + @blast_SOURCE_DIR@/blast-test.c) + +if(ZLIB_BLAST_BUILD_SHARED) + add_executable(test_example ${BLAST_SRCS}) + target_link_libraries(test_example BLAST::BLAST) +endif(ZLIB_BLAST_BUILD_SHARED) + +if(ZLIB_BLAST_BUILD_STATIC) + add_executable(test_example_static ${BLAST_SRCS}) + target_link_libraries(test_example_static BLAST::BLASTSTATIC) +endif(ZLIB_BLAST_BUILD_STATIC) diff --git a/contrib/iostream3/CMakeLists.txt b/contrib/iostream3/CMakeLists.txt index 9c47c1c142..33e5b71b83 100644 --- a/contrib/iostream3/CMakeLists.txt +++ b/contrib/iostream3/CMakeLists.txt @@ -111,6 +111,8 @@ if(ZLIB_IOSTREAM3_BUILD_TESTING) set_tests_properties(zlib_iostream3_cleanup PROPERTIES FIXTURES_CLEANUP zlib_iostream3_cleanup) + + add_subdirectory(test) endif(ZLIB_IOSTREAM3_BUILD_TESTING) if(ZLIB_IOSTREAM3_INSTALL) diff --git a/contrib/iostream3/iostream3Config.cmake.in b/contrib/iostream3/iostream3Config.cmake.in new file mode 100644 index 0000000000..a3db5e8a9c --- /dev/null +++ b/contrib/iostream3/iostream3Config.cmake.in @@ -0,0 +1,23 @@ +@PACKAGE_INIT@ + +set(_iostreamv3_supported_components "shared" "static") +include(CMakeFindDependencyMacro) + +if(iostreamv3_FIND_COMPONENTS) + find_dependency(ZLIB CONFIG COMPONENTS ${iostreamv3_FIND_COMPONENTS}) + + foreach(_comp ${iostreamv3_FIND_COMPONENTS}) + if(NOT _comp IN_LIST _iostreamv3_supported_components) + set(iostreamv3_FOUND False) + set(iostreamv3_NOT_FOUND_MESSAGE "Unsupported component: ${_comp}") + endif(NOT _comp IN_LIST _iostreamv3_supported_components) + + include("${CMAKE_CURRENT_LIST_DIR}/iostreamv3-${_comp}.cmake") + endforeach(_comp ${iostreamv3_FIND_COMPONENTS}) +else(iostream3_FIND_COMPONENTS) + find_dependency(ZLIB CONFIG) + + foreach(_component_config IN LISTS _iostreamv3_supported_components) + include("${CMAKE_CURRENT_LIST_DIR}/iostreamv3-${_component_config}.cmake") + endforeach(_component_config IN LISTS _iostreamv3_supported_components) +endif(iostreamv3_FIND_COMPONENTS) diff --git a/contrib/iostream3/test/CMakeLists.txt b/contrib/iostream3/test/CMakeLists.txt new file mode 100644 index 0000000000..f8b2b51582 --- /dev/null +++ b/contrib/iostream3/test/CMakeLists.txt @@ -0,0 +1,191 @@ +# if we are built from with zlib, use this path's) +if(DEFINED ZLIB_BUILD_SHARED) + set(WORK_DIR ${zlib_BINARY_DIR}) + set(inst_setup zlib_iostream3_install) +else(DEFINED ZLIB_BUILD_SHARED) + set(WORK_DIR ${iostreamV3_BINARY_DIR}) + set(inst_setup zlib_iostream3_install) + set(ZLIB_ARG "-DZLIB_DIR=${ZLIB_DIR}") + + add_test( + NAME zlib_iostream3_install + COMMAND ${CMAKE_COMMAND} --install ${minizip_BINARY_DIR} --prefix + ${CMAKE_CURRENT_BINARY_DIR}/test_install --config $ + WORKING_DIRECTORY ${iostreamV3_BINARY_DIR}) + + set_tests_properties(zlib_iostream3_install + PROPERTIES + FIXTURES_SETUP zlib_iostream3_install) +endif(DEFINED ZLIB_BUILD_SHARED) + +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test) +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test) +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/find_package_test.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test/CMakeLists.txt @ONLY) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/add_subdirectory_test.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test/CMakeLists.txt @ONLY) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/add_subdirectory_exclude_test.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test/CMakeLists.txt + @ONLY) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/find_package_no_components_test.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/findpackage_no_components_test/CMakeLists.txt + @ONLY) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/find_package_wrong_components_test.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/findpackage_wrong_components_test/CMakeLists.txt + @ONLY) + +# CMAKE_GENERATOR_PLATFORM doesn't work in the if +set(GENERATOR ${CMAKE_GENERATOR_PLATFORM}) + +if(GENERATOR) + set(PLATFORM "-A ${GENERATOR}") +endif(GENERATOR) + +# +# findpackage_test +# +add_test( + NAME zlib_iostream3_find_package_configure + COMMAND + ${CMAKE_COMMAND} + ${PLATFORM} + -B${CMAKE_CURRENT_BINARY_DIR}/findpackage_test_build + -DCMAKE_BUILD_TYPE=$ + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install ${ZLIB_ARG} + --fresh + -G "${CMAKE_GENERATOR}" + -S${CMAKE_CURRENT_BINARY_DIR}/findpackage_test) + +add_test( + NAME zlib_iostream3_find_package_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test_build) + +set_tests_properties(zlib_iostream3_find_package_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + FIXTURES_SETUP iostream3_fp_config) + +set_tests_properties(zlib_iostream3_find_package_build + PROPERTIES + FIXTURES_REQUIRED iostream3_fp_config) + +# +# add_subdirectory_test +# +add_test( + NAME zlib_iostream3_add_subdirectory_configure + COMMAND + ${CMAKE_COMMAND} + ${PLATFORM} + -B${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test_build + -DCMAKE_BUILD_TYPE=$ + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install + ${ZLIB_ARG} + --fresh + -G "${CMAKE_GENERATOR}" + -S${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test) + +add_test( + NAME zlib_iostream3_add_subdirectory_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test_build) + +set_tests_properties(zlib_iostream3_add_subdirectory_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + FIXTURES_SETUP iostream3as_config) + +set_tests_properties(zlib_iostream3_add_subdirectory_build + PROPERTIES + FIXTURES_REQUIRED iostream3_as_config) + +# +# add_subdirectory_exclude_test +# +add_test( + NAME zlib_iostream3_add_subdirectory_exclude_configure + COMMAND + ${CMAKE_COMMAND} ${PLATFORM} + -B${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test_build + -DCMAKE_BUILD_TYPE=$ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install ${ZLIB_ARG} + --fresh + -G "${CMAKE_GENERATOR}" + -S${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test) + +add_test( + NAME zlib_iostream3_add_subdirectory_exclude_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY + ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test_build) + +set_tests_properties(zlib_iostream3_add_subdirectory_exclude_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + FIXTURES_SETUP iostream3_asx_config) + +set_tests_properties(zlib_iostream3_add_subdirectory_exclude_build + PROPERTIES + FIXTURES_REQUIRED iostream3_asx_config) + +# +# findpackage_no_components_test +# +add_test( + NAME zlib_iostream3_find_package_no_components_configure + COMMAND + ${CMAKE_COMMAND} ${PLATFORM} + -B${CMAKE_CURRENT_BINARY_DIR}/findpackage_no_components_test_build + -DCMAKE_BUILD_TYPE=$ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install ${ZLIB_ARG} + --fresh + -G "${CMAKE_GENERATOR}" + -S${CMAKE_CURRENT_BINARY_DIR}/findpackage_no_components_test) + +set_tests_properties(zlib_iostream3_find_package_no_components_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup}) + +if(NOT ZLIB_IOSTREAM3_BUILD_SHARED OR NOT ZLIB_IOSTREAM3_BUILD_STATIC) + set_tests_properties(zlib_iostream3_find_package_no_components_configure + PROPERTIES + WILL_FAIL TRUE) +endif(NOT ZLIB_IOSTREAM3_BUILD_SHARED OR NOT ZLIB_IOSTREAM3_BUILD_STATIC) + +# +# findpackage_no_components_test +# +add_test( + NAME zlib_iostream3_find_package_wrong_components_configure + COMMAND + ${CMAKE_COMMAND} ${PLATFORM} + -B${CMAKE_CURRENT_BINARY_DIR}/findpackage_wrong_components_test_build + -DCMAKE_BUILD_TYPE=$ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install ${ZLIB_ARG} + --fresh + -G "${CMAKE_GENERATOR}" + -S${CMAKE_CURRENT_BINARY_DIR}/findpackage_wrong_components_test) + +set_tests_properties(zlib_iostream3_find_package_wrong_components_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + WILL_FAIL TRUE) diff --git a/contrib/iostream3/test/add_subdirectory_exclude_test.cmake.in b/contrib/iostream3/test/add_subdirectory_exclude_test.cmake.in new file mode 100644 index 0000000000..efc9cd8b86 --- /dev/null +++ b/contrib/iostream3/test/add_subdirectory_exclude_test.cmake.in @@ -0,0 +1,27 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + iostream_add_subdirectory_exclude + LANGUAGES CXX + VERSION @iostreamV3_VERSION@) + +option(ZLIB_IOSTREAM3_BUILD_SHARED "" @ZLIB_IOSTREAM3_BUILD_SHARED@) +option(ZLIB_IOSTREAM3_BUILD_STATIC "" @ZLIB_IOSTREAM3_BUILD_STATIC@) +option(ZLIB_IOSTREAM3_BUILD_TESTING "" OFF) + +add_subdirectory(@iostreamV3_SOURCE_DIR@ + ${CMAKE_CURRENT_BINARY_DIR}/iostream3 + EXCLUDE_FROM_ALL) + +set(IOSTREAM_SRCS + @iostreamV3_SOURCE_DIR@/test.cc) + +if(ZLIB_IOSTREAM3_BUILD_SHARED) + add_executable(test_example ${IOSTREAM_SRCS}) + target_link_libraries(test_example IOSTREAMV3::IOSTREAMV3) +endif(ZLIB_IOSTREAM3_BUILD_SHARED) + +if(ZLIB_IOSTREAM3_BUILD_STATIC) + add_executable(test_example_static ${IOSTREAM_SRCS}) + target_link_libraries(test_example_static IOSTREAMV3::IOSTREAMV3STATIC) +endif(ZLIB_IOSTREAM3_BUILD_STATIC) diff --git a/contrib/iostream3/test/add_subdirectory_test.cmake.in b/contrib/iostream3/test/add_subdirectory_test.cmake.in new file mode 100644 index 0000000000..5eed2cc421 --- /dev/null +++ b/contrib/iostream3/test/add_subdirectory_test.cmake.in @@ -0,0 +1,25 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + iostream_add_subdirectory + LANGUAGES CXX + VERSION @iostreamV3_VERSION@) + +option(ZLIB_IOSTREAM3_BUILD_SHARED "" @ZLIB_PUFF_BUILD_SHARED@) +option(ZLIB_IOSTREAM3_BUILD_STATIC "" @ZLIB_PUFF_BUILD_STATIC@) +option(ZLIB_IOSTREAM3_BUILD_TESTING "" OFF) + +add_subdirectory(@iostreamV3_SOURCE_DIR@ ${CMAKE_CURRENT_BINARY_DIR}/iostream3) + +set(IOSTREAM_SRCS + @iostreamV3_SOURCE_DIR@/test.cc) + +if(ZLIB_IOSTREAM3_BUILD_SHARED) + add_executable(test_example ${IOSTREAM_SRCS}) + target_link_libraries(test_example IOSTREAMV3::IOSTREAMV3) +endif(ZLIB_IOSTREAM3_BUILD_SHARED) + +if(ZLIB_IOSTREAM3_BUILD_STATIC) + add_executable(test_example_static ${IOSTREAM_SRCS}) + target_link_libraries(test_example_static IOSTREAMV3::IOSTREAMV3STATIC) +endif(ZLIB_IOSTREAM3_BUILD_STATIC) diff --git a/contrib/iostream3/test/find_package_no_components_test.cmake.in b/contrib/iostream3/test/find_package_no_components_test.cmake.in new file mode 100644 index 0000000000..4daf76e239 --- /dev/null +++ b/contrib/iostream3/test/find_package_no_components_test.cmake.in @@ -0,0 +1,24 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + iostream_find_package_no_components + LANGUAGES CXX + VERSION @iostreamV3_VERSION@) + +option(ZLIB_IOSTREAM3_BUILD_SHARED "" @ZLIB_PUFF_BUILD_SHARED@) +option(ZLIB_IOSTREAM3_BUILD_STATIC "" @ZLIB_PUFF_BUILD_STATIC@) + +find_package(iostreamv3 REQUIRED CONFIG) + +set(IOSTREAM_SRCS + @iostreamV3_SOURCE_DIR@/test.cc) + +if(ZLIB_IOSTREAM3_BUILD_SHARED) + add_executable(test_example ${IOSTREAM_SRCS}) + target_link_libraries(test_example IOSTREAMV3::IOSTREAMV3) +endif(ZLIB_IOSTREAM3_BUILD_SHARED) + +if(ZLIB_IOSTREAM3_BUILD_STATIC) + add_executable(test_example_static ${IOSTREAM_SRCS}) + target_link_libraries(test_example_static IOSTREAMV3::IOSTREAMV3STATIC) +endif(ZLIB_IOSTREAM3_BUILD_STATIC) diff --git a/contrib/iostream3/test/find_package_test.cmake.in b/contrib/iostream3/test/find_package_test.cmake.in new file mode 100644 index 0000000000..08abe5611e --- /dev/null +++ b/contrib/iostream3/test/find_package_test.cmake.in @@ -0,0 +1,24 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + iostream_find_package + LANGUAGES CXX + VERSION @iostreamV3_VERSION@) + +option(ZLIB_IOSTREAM_BUILD_SHARED "" @ZLIB_PUFF_BUILD_SHARED@) +option(ZLIB_IOSTREAM_BUILD_STATIC "" @ZLIB_PUFF_BUILD_STATIC@) + +set(IOSTREAM_SRCS + @iostreamV3_SOURCE_DIR@/test.cc) + +if(ZLIB_IOSTREAM_BUILD_SHARED) + find_package(iostreamv3 REQUIRED COMPONENTS shared CONFIG) + add_executable(test_example ${IOSTREAM_SRCS}) + target_link_libraries(test_example IOSTREAMV3::IOSTREAMV3) +endif(ZLIB_IOSTREAM_BUILD_SHARED) + +if(ZLIB_IOSTREAM_BUILD_STATIC) + find_package(iostreamv3 REQUIRED COMPONENTS static CONFIG) + add_executable(test_example_static ${IOSTREAM_SRCS}) + target_link_libraries(test_example_static IOSTREAMV3::IOSTREAMV3STATIC) +endif(ZLIB_IOSTREAM_BUILD_STATIC) diff --git a/contrib/iostream3/test/find_package_wrong_components_test.cmake.in b/contrib/iostream3/test/find_package_wrong_components_test.cmake.in new file mode 100644 index 0000000000..83435a854a --- /dev/null +++ b/contrib/iostream3/test/find_package_wrong_components_test.cmake.in @@ -0,0 +1,24 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + iostream_find_package + LANGUAGES CXX + VERSION @iostreamV3_VERSION@) + +option(ZLIB_IOSTREAM_BUILD_SHARED "" @ZLIB_PUFF_BUILD_SHARED@) +option(ZLIB_IOSTREAM_BUILD_STATIC "" @ZLIB_PUFF_BUILD_STATIC@) + +find_package(iostreamv3 REQUIRED COMPONENTS wrongCONFIG) + +set(IOSTREAM_SRCS + @iostreamV3_SOURCE_DIR@/test.cc) + +if(ZLIB_IOSTREAM_BUILD_SHARED) + add_executable(test_example ${IOSTREAM_SRCS}) + target_link_libraries(test_example IOSTREAMV3::IOSTREAMV3) +endif(ZLIB_IOSTREAM_BUILD_SHARED) + +if(ZLIB_IOSTREAM_BUILD_STATIC) + add_executable(test_example_static ${PUFF_SRCS}) + target_link_libraries(test_example_static IOSTREAMV3::IOSTREAMV3STATIC) +endif(ZLIB_IOSTREAM_BUILD_STATIC) diff --git a/contrib/puff/CMakeLists.txt b/contrib/puff/CMakeLists.txt index ca95830fc6..72a4c6ddbf 100644 --- a/contrib/puff/CMakeLists.txt +++ b/contrib/puff/CMakeLists.txt @@ -59,6 +59,8 @@ if(ZLIB_PUFF_BUILD_TESTING) endif(${CMAKE_C_COMPILER_ID} STREQUAL "Clang") endif(${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "Clang") + + add_subdirectory(test) endif(ZLIB_PUFF_BUILD_TESTING) if(ZLIB_PUFF_BUILD_SHARED) diff --git a/contrib/puff/puffConfig.cmake.in b/contrib/puff/puffConfig.cmake.in new file mode 100644 index 0000000000..227f9888d2 --- /dev/null +++ b/contrib/puff/puffConfig.cmake.in @@ -0,0 +1,18 @@ +@PACKAGE_INIT@ + +set(_puff_supported_components "shared" "static") + +if(puff_FIND_COMPONENTS) + foreach(_comp ${puff_FIND_COMPONENTS}) + if(NOT _comp IN_LIST _puff_supported_components) + set(puff_FOUND False) + set(puff_NOT_FOUND_MESSAGE "Unsupported component: ${_comp}") + endif(NOT _comp IN_LIST _puff_supported_components) + + include("${CMAKE_CURRENT_LIST_DIR}/puff-${_comp}.cmake") + endforeach(_comp ${puff_FIND_COMPONENTS}) +else(puff_FIND_COMPONENTS) + foreach(_component_config IN LISTS _puff_supported_components) + include("${CMAKE_CURRENT_LIST_DIR}/puff-${_component_config}.cmake") + endforeach(_component_config IN LISTS _puff_supported_components) +endif(puff_FIND_COMPONENTS) diff --git a/contrib/puff/test/CMakeLists.txt b/contrib/puff/test/CMakeLists.txt new file mode 100644 index 0000000000..1ed39de080 --- /dev/null +++ b/contrib/puff/test/CMakeLists.txt @@ -0,0 +1,191 @@ +# if we are built from with zlib, use this path's) +if(DEFINED ZLIB_BUILD_SHARED) + set(WORK_DIR ${zlib_BINARY_DIR}) + set(inst_setup zlib_puff_install) +else(DEFINED ZLIB_BUILD_SHARED) + set(WORK_DIR ${puff_BINARY_DIR}) + set(inst_setup zlib_puff_install) + set(ZLIB_ARG "-DZLIB_DIR=${ZLIB_DIR}") + + add_test( + NAME zlib_puff_install + COMMAND ${CMAKE_COMMAND} --install ${puff_BINARY_DIR} --prefix + ${CMAKE_CURRENT_BINARY_DIR}/test_install --config $ + WORKING_DIRECTORY ${puff_BINARY_DIR}) + + set_tests_properties(zlib_puff_install + PROPERTIES + FIXTURES_SETUP zlib_puff_install) +endif(DEFINED ZLIB_BUILD_SHARED) + +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test) +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test) +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/find_package_test.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test/CMakeLists.txt @ONLY) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/add_subdirectory_test.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test/CMakeLists.txt @ONLY) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/add_subdirectory_exclude_test.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test/CMakeLists.txt + @ONLY) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/find_package_no_components_test.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/findpackage_no_components_test/CMakeLists.txt + @ONLY) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/find_package_wrong_components_test.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/findpackage_wrong_components_test/CMakeLists.txt + @ONLY) + +# CMAKE_GENERATOR_PLATFORM doesn't work in the if +set(GENERATOR ${CMAKE_GENERATOR_PLATFORM}) + +if(GENERATOR) + set(PLATFORM "-A ${GENERATOR}") +endif(GENERATOR) + +# +# findpackage_test +# +add_test( + NAME zlib_puff_find_package_configure + COMMAND + ${CMAKE_COMMAND} + ${PLATFORM} + -B${CMAKE_CURRENT_BINARY_DIR}/findpackage_test_build + -DCMAKE_BUILD_TYPE=$ + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install + ${ZLIB_ARG} + --fresh + -G "${CMAKE_GENERATOR}" + -S${CMAKE_CURRENT_BINARY_DIR}/findpackage_test) + +add_test( + NAME zlib_puff_find_package_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test_build) + +set_tests_properties(zlib_puff_find_package_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + FIXTURES_SETUP puff_fp_config) + +set_tests_properties(zlib_puff_find_package_build + PROPERTIES + FIXTURES_REQUIRED puff_fp_config) + +# +# add_subdirectory_test +# +add_test( + NAME zlib_puff_add_subdirectory_configure + COMMAND + ${CMAKE_COMMAND} ${PLATFORM} + -B${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test_build + -DCMAKE_BUILD_TYPE=$ + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install ${ZLIB_ARG} + --fresh + -G "${CMAKE_GENERATOR}" + -S${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test) + +add_test( + NAME zlib_puff_add_subdirectory_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test_build) + +set_tests_properties(zlib_puff_add_subdirectory_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + FIXTURES_SETUP puiff_as_config) + +set_tests_properties(zlib_puff_add_subdirectory_build + PROPERTIES + FIXTURES_REQUIRED puff_as_config) + +# +# add_subdirectory_exclude_test +# +add_test( + NAME zlib_puff_add_subdirectory_exclude_configure + COMMAND + ${CMAKE_COMMAND} ${PLATFORM} + -B${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test_build + -DCMAKE_BUILD_TYPE=$ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install ${ZLIB_ARG} + --fresh + -G "${CMAKE_GENERATOR}" + -S${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test) + +add_test( + NAME zlib_puff_add_subdirectory_exclude_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY + ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test_build) + +set_tests_properties(zlib_puff_add_subdirectory_exclude_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + FIXTURES_SETUP puff_asx_config) + +set_tests_properties(zlib_puff_add_subdirectory_exclude_build + PROPERTIES + FIXTURES_REQUIRED puff_asx_config) + +# +# findpackage_no_components_test +# +add_test( + NAME zlib_puff_find_package_no_components_configure + COMMAND + ${CMAKE_COMMAND} ${PLATFORM} + -B${CMAKE_CURRENT_BINARY_DIR}/findpackage_no_components_test_build + -DCMAKE_BUILD_TYPE=$ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install ${ZLIB_ARG} + --fresh + -G "${CMAKE_GENERATOR}" + -S${CMAKE_CURRENT_BINARY_DIR}/findpackage_no_components_test) + +set_tests_properties( + zlib_puff_find_package_no_components_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup}) + +if(NOT ZLIB_PUFF_BUILD_SHARED OR NOT ZLIB_PUFF_BUILD_STATIC) + set_tests_properties(zlib_puff_find_package_no_components_configure + PROPERTIES + WILL_FAIL TRUE) +endif(NOT ZLIB_PUFF_BUILD_SHARED OR NOT ZLIB_PUFF_BUILD_STATIC) + +# +# findpackage_no_components_test +# +add_test( + NAME zlib_puff_find_package_wrong_components_configure + COMMAND + ${CMAKE_COMMAND} ${PLATFORM} + -B${CMAKE_CURRENT_BINARY_DIR}/findpackage_wrong_components_test_build + -DCMAKE_BUILD_TYPE=$ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install ${ZLIB_ARG} + --fresh + -G "${CMAKE_GENERATOR}" + -S${CMAKE_CURRENT_BINARY_DIR}/findpackage_wrong_components_test) + +set_tests_properties(zlib_puff_find_package_wrong_components_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + WILL_FAIL TRUE) diff --git a/contrib/puff/test/add_subdirectory_exclude_test.cmake.in b/contrib/puff/test/add_subdirectory_exclude_test.cmake.in new file mode 100644 index 0000000000..0e24c01613 --- /dev/null +++ b/contrib/puff/test/add_subdirectory_exclude_test.cmake.in @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + zlib_puff_add_subdirectory_exclude_from_all + LANGUAGES C + VERSION @puff_VERSION@) + +option(ZLIB_PUFF_BUILD_TESTING "" OFF) +option(ZLIB_PUFF_BUILD_SHARED "" @ZLIB_PUFF_BUILD_SHARED@) +option(ZLIB_PUFF_BUILD_STATIC "" @ZLIB_PUFF_BUILD_STATIC@) + +add_subdirectory(@puff_SOURCE_DIR@ ${CMAKE_CURRENT_BINARY_DIR}/puff + EXCLUDE_FROM_ALL) + +set(PUFF_SRCS + @puff_SOURCE_DIR@/pufftest.c) + +if(ZLIB_PUFF_BUILD_SHARED) + add_executable(test_example ${PUFF_SRCS}) + target_link_libraries(test_example PUFF::PUFF) +endif(ZLIB_PUFF_BUILD_SHARED) + +if(ZLIB_PUFF_BUILD_STATIC) + add_executable(test_example_static ${PUFF_SRCS}) + target_link_libraries(test_example_static PUFF::PUFFSTATIC) +endif(ZLIB_PUFF_BUILD_STATIC) diff --git a/contrib/puff/test/add_subdirectory_test.cmake.in b/contrib/puff/test/add_subdirectory_test.cmake.in new file mode 100644 index 0000000000..8e7e47b4d9 --- /dev/null +++ b/contrib/puff/test/add_subdirectory_test.cmake.in @@ -0,0 +1,25 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + zlib_puff_add_subdirectory + LANGUAGES C + VERSION @puff_VERSION@) + +option(ZLIB_PUFF_BUILD_TESTING "" OFF) +option(ZLIB_PUFF_BUILD_SHARED "" @ZLIB_PUFF_BUILD_SHARED@) +option(ZLIB_PUFF_BUILD_STATIC "" @ZLIB_PUFF_BUILD_STATIC@) + +add_subdirectory(@puff_SOURCE_DIR@ ${CMAKE_CURRENT_BINARY_DIR}/puff) + +set(PUFF_SRCS + @puff_SOURCE_DIR@/pufftest.c) + +if(ZLIB_PUFF_BUILD_SHARED) + add_executable(test_example ${PUFF_SRCS}) + target_link_libraries(test_example PUFF::PUFF) +endif(ZLIB_PUFF_BUILD_SHARED) + +if(ZLIB_PUFF_BUILD_STATIC) + add_executable(test_example_static ${PUFF_SRCS}) + target_link_libraries(test_example_static PUFF::PUFFSTATIC) +endif(ZLIB_PUFF_BUILD_STATIC) diff --git a/contrib/puff/test/find_package_no_components_test.cmake.in b/contrib/puff/test/find_package_no_components_test.cmake.in new file mode 100644 index 0000000000..2040bfd183 --- /dev/null +++ b/contrib/puff/test/find_package_no_components_test.cmake.in @@ -0,0 +1,24 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + puff_find_package + LANGUAGES C + VERSION @puff_VERSION@) + +option(ZLIB_PUFF_BUILD_SHARED "" @ZLIB_PUFF_BUILD_SHARED@) +option(ZLIB_PUFF_BUILD_STATIC "" @ZLIB_PUFF_BUILD_STATIC@) + +find_package(puff REQUIRED CONFIG) + +set(PUFF_SRCS + @puff_SOURCE_DIR@/pufftest.c) + +if(ZLIB_PUFF_BUILD_SHARED) + add_executable(test_example ${PUFF_SRCS}) + target_link_libraries(test_example PUFF::PUFF) +endif(ZLIB_PUFF_BUILD_SHARED) + +if(ZLIB_PUFF_BUILD_STATIC) + add_executable(test_example_static ${PUFF_SRCS}) + target_link_libraries(test_example_static PUFF::PUFFSTATIC) +endif(ZLIB_PUFF_BUILD_STATIC) diff --git a/contrib/puff/test/find_package_test.cmake.in b/contrib/puff/test/find_package_test.cmake.in new file mode 100644 index 0000000000..e8a0ceffb2 --- /dev/null +++ b/contrib/puff/test/find_package_test.cmake.in @@ -0,0 +1,24 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + puff_find_package + LANGUAGES C + VERSION @puff_VERSION@) + +option(ZLIB_PUFF_BUILD_SHARED "" @ZLIB_PUFF_BUILD_SHARED@) +option(ZLIB_PUFF_BUILD_STATIC "" @ZLIB_PUFF_BUILD_STATIC@) + +set(PUFF_SRCS + @puff_SOURCE_DIR@/pufftest.c) + +if(ZLIB_PUFF_BUILD_SHARED) + find_package(puff REQUIRED COMPONENTS shared CONFIG) + add_executable(test_example ${PUFF_SRCS}) + target_link_libraries(test_example PUFF::PUFF) +endif(ZLIB_PUFF_BUILD_SHARED) + +if(ZLIB_PUFF_BUILD_STATIC) + find_package(puff REQUIRED COMPONENTS static CONFIG) + add_executable(test_example_static ${PUFF_SRCS}) + target_link_libraries(test_example_static PUFF::PUFFSTATIC) +endif(ZLIB_PUFF_BUILD_STATIC) diff --git a/contrib/puff/test/find_package_wrong_components_test.cmake.in b/contrib/puff/test/find_package_wrong_components_test.cmake.in new file mode 100644 index 0000000000..a5cd4979cd --- /dev/null +++ b/contrib/puff/test/find_package_wrong_components_test.cmake.in @@ -0,0 +1,24 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + puff_find_package + LANGUAGES C + VERSION @puff_VERSION@) + +option(ZLIB_PUFF_BUILD_SHARED "" @ZLIB_PUFF_BUILD_SHARED@) +option(ZLIB_PUFF_BUILD_STATIC "" @ZLIB_PUFF_BUILD_STATIC@) + +find_package(puff REQUIRED COMPONENTS wrong CONFIG) + +set(PUFF_SRCS + @puff_SOURCE_DIR@/pufftest.c) + +if(ZLIB_PUFF_BUILD_SHARED) + add_executable(test_example ${PUFF_SRCS}) + target_link_libraries(test_example PUFF::PUFF) +endif(ZLIB_PUFF_BUILD_SHARED) + +if(ZLIB_PUFF_BUILD_STATIC) + add_executable(test_example_static ${PUFF_SRCS}) + target_link_libraries(test_example_static PUFF::PUFFSTATIC) +endif(ZLIB_PUFF_BUILD_STATIC) From a04e37f7d7daca23689f5d667c05cd4d606924fc Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Sun, 4 Jan 2026 11:37:00 +0100 Subject: [PATCH 23/25] final fixes for win --- contrib/blast/CMakeLists.txt | 6 ++-- contrib/blast/test/CMakeLists.txt | 8 ++--- contrib/gcc_gvmat64/CMakeLists.txt | 4 +-- contrib/iostream3/CMakeLists.txt | 49 +++++++++++++++++++++------ contrib/iostream3/test/CMakeLists.txt | 8 ++--- contrib/minizip/test/CMakeLists.txt | 15 ++++---- contrib/puff/CMakeLists.txt | 13 +++---- contrib/puff/test/CMakeLists.txt | 8 ++--- contrib/puff/tester.cmake | 3 +- 9 files changed, 74 insertions(+), 40 deletions(-) diff --git a/contrib/blast/CMakeLists.txt b/contrib/blast/CMakeLists.txt index 6f3ba38334..9b20fdada8 100644 --- a/contrib/blast/CMakeLists.txt +++ b/contrib/blast/CMakeLists.txt @@ -18,6 +18,7 @@ include(CMakePackageConfigHelpers) if(WIN32 OR CYGWIN) set(zlibblast_static_suffix "s") set(CMAKE_DEBUG_POSTFIX "d") + set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) endif(WIN32 OR CYGWIN) function(blast_findTestEnv testName) @@ -29,7 +30,7 @@ function(blast_findTestEnv testName) set(separator ":") endif() - string(APPEND testEnv "$${separator}") + string(APPEND testEnv "$${separator}") string(APPEND testEnv "$ENV{PATH}") set_tests_properties(${testName} PROPERTIES ENVIRONMENT "${testEnv}") @@ -114,7 +115,8 @@ if(ZLIB_BLAST_INSTALL) TARGETS zlib_blast_blast COMPONENT Runtime EXPORT zlibBlastSharedExport - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") install( EXPORT zlibBlastSharedExport FILE blast-shared.cmake diff --git a/contrib/blast/test/CMakeLists.txt b/contrib/blast/test/CMakeLists.txt index d319b824f1..3940c1cc64 100644 --- a/contrib/blast/test/CMakeLists.txt +++ b/contrib/blast/test/CMakeLists.txt @@ -1,8 +1,8 @@ # if we are built from with zlib, use this path's) -if(DEFINED ZLIB_BUILD_SHARED) +if(DEFINED ZLIB_BUILD_BLAST) set(WORK_DIR ${zlib_BINARY_DIR}) - set(inst_setup zlib_blast_install) -else(DEFINED ZLIB_BUILD_SHARED) + set(inst_setup zlib_install) +else(DEFINED ZLIB_BUILD_BLAST) set(WORK_DIR ${blast_BINARY_DIR}) set(inst_setup zlib_blast_install) set(ZLIB_ARG "-DZLIB_DIR=${ZLIB_DIR}") @@ -16,7 +16,7 @@ else(DEFINED ZLIB_BUILD_SHARED) set_tests_properties(zlib_blast_install PROPERTIES FIXTURES_SETUP zlib_blast_install) -endif(DEFINED ZLIB_BUILD_SHARED) +endif(DEFINED ZLIB_BUILD_BLAST) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test) diff --git a/contrib/gcc_gvmat64/CMakeLists.txt b/contrib/gcc_gvmat64/CMakeLists.txt index 67a6a83336..53dd5a1907 100644 --- a/contrib/gcc_gvmat64/CMakeLists.txt +++ b/contrib/gcc_gvmat64/CMakeLists.txt @@ -5,10 +5,10 @@ enable_language(ASM) set(CMAKE_ASM_COMPILE_OBJECT ${CMAKE_ASM_COMPILE_OBJECT} CACHE INTERNAL "" FORCE) -if(WIN32) +if(MSVC) #cmake 4.1 doesn't consider cl an asm compiler cmake_policy(SET CMP0194 NEW) -endif(WIN32) +endif(MSVC) if(ZLIB_BUILD_SHARED) target_sources(zlib PRIVATE gvmat64.S) diff --git a/contrib/iostream3/CMakeLists.txt b/contrib/iostream3/CMakeLists.txt index 33e5b71b83..e2ac480b74 100644 --- a/contrib/iostream3/CMakeLists.txt +++ b/contrib/iostream3/CMakeLists.txt @@ -32,6 +32,23 @@ if(WIN32 OR CYGWIN) set(CMAKE_DEBUG_POSTFIX "d") endif(WIN32 OR CYGWIN) + +function(iostreamv3_findTestEnv testName) + set(testEnv "PATH=") + + if(MSVC OR MINGW) + set(separator "\\\;") + else() + set(separator ":") + endif() + + string(APPEND testEnv "$${separator}") + string(APPEND testEnv "$${separator}") + string(APPEND testEnv "$ENV{PATH}") + + set_tests_properties(${testName} PROPERTIES ENVIRONMENT "${testEnv}") +endfunction(iostreamv3_findTestEnv testName) + if(ZLIB_IOSTREAM3_BUILD_SHARED) add_library(zlib_iostream3_iostreamv3 SHARED zfstream.cc @@ -46,11 +63,10 @@ if(ZLIB_IOSTREAM3_BUILD_SHARED) VERSION ${iostreamV3_VERSION}) endif(NOT CYGWIN) - set_target_properties( - zlib_iostream3_iostreamv3 - PROPERTIES - EXPORT_NAME IOSTREAMV3 - OUTPUT_NAME iostream3) + set_target_properties(zlib_iostream3_iostreamv3 + PROPERTIES + EXPORT_NAME IOSTREAMV3 + OUTPUT_NAME iostream3) target_link_libraries(zlib_iostream3_iostreamv3 PUBLIC ZLIB::ZLIB) @@ -61,13 +77,24 @@ if(ZLIB_IOSTREAM3_BUILD_SHARED) add_executable(zlib_iostream3_test test.cc zfstream.h) target_link_libraries(zlib_iostream3_test - PRIVATE zlib_iostream3_iostream3) + PRIVATE zlib_iostream3_iostreamv3) add_test(NAME zlib_iostream3_test COMMAND zlib_iostream3_test) set_tests_properties(zlib_iostream3_test PROPERTIES FIXTURES_REQUIRED zlib_iostream3_cleanup) + + if(MSVC + OR MSYS + OR MINGW + OR CYGWIN) + iostreamv3_findtestenv(zlib_iostream3_test) + endif( + MSVC + OR MSYS + OR MINGW + OR CYGWIN) endif(ZLIB_IOSTREAM3_BUILD_TESTING) endif(ZLIB_IOSTREAM3_BUILD_SHARED) @@ -80,7 +107,7 @@ if(ZLIB_IOSTREAM3_BUILD_STATIC) ALIAS zlib_iostream3_iostreamv3Static) target_link_libraries(zlib_iostream3_iostreamv3Static - INTERFACE ZLIB::ZLIBSTATIC) + PUBLIC ZLIB::ZLIBSTATIC) set_target_properties(zlib_iostream3_iostreamv3Static PROPERTIES @@ -93,7 +120,8 @@ if(ZLIB_IOSTREAM3_BUILD_STATIC) add_executable(zlib_iostream3_testStatic test.cc zfstream.h) target_link_libraries(zlib_iostream3_testStatic - PRIVATE zlib_iostream3_iostream3Static) + PRIVATE zlib_iostream3_iostreamv3Static) + add_test(NAME zlib_iostream3_testStatic COMMAND zlib_iostream3_testStatic) @@ -121,7 +149,8 @@ if(ZLIB_IOSTREAM3_INSTALL) TARGETS zlib_iostream3_iostreamv3 COMPONENT Runtime EXPORT zlibiostream3SharedExport - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") install( EXPORT zlibiostream3SharedExport FILE iostreamv3-shared.cmake @@ -130,7 +159,7 @@ if(ZLIB_IOSTREAM3_INSTALL) if(MSVC) install( - FILES $ + FILES $ COMPONENT Development DESTINATION ${CMAKE_INSTALL_BINDIR} CONFIGURATIONS Debug OR RelWithDebInfo diff --git a/contrib/iostream3/test/CMakeLists.txt b/contrib/iostream3/test/CMakeLists.txt index f8b2b51582..44e7d60179 100644 --- a/contrib/iostream3/test/CMakeLists.txt +++ b/contrib/iostream3/test/CMakeLists.txt @@ -1,8 +1,8 @@ # if we are built from with zlib, use this path's) -if(DEFINED ZLIB_BUILD_SHARED) +if(DEFINED ZLIB_BUILD_IOSTREAM3) set(WORK_DIR ${zlib_BINARY_DIR}) - set(inst_setup zlib_iostream3_install) -else(DEFINED ZLIB_BUILD_SHARED) + set(inst_setup zlib_install) +else(DEFINED ZLIB_BUILD_IOSTREAM3) set(WORK_DIR ${iostreamV3_BINARY_DIR}) set(inst_setup zlib_iostream3_install) set(ZLIB_ARG "-DZLIB_DIR=${ZLIB_DIR}") @@ -16,7 +16,7 @@ else(DEFINED ZLIB_BUILD_SHARED) set_tests_properties(zlib_iostream3_install PROPERTIES FIXTURES_SETUP zlib_iostream3_install) -endif(DEFINED ZLIB_BUILD_SHARED) +endif(DEFINED ZLIB_BUILD_IOSTREAM3) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test) diff --git a/contrib/minizip/test/CMakeLists.txt b/contrib/minizip/test/CMakeLists.txt index 2f86ee34b5..fc64b9e7ad 100644 --- a/contrib/minizip/test/CMakeLists.txt +++ b/contrib/minizip/test/CMakeLists.txt @@ -1,10 +1,10 @@ # if we are built from with zlib, use this path's) -if(DEFINED ZLIB_BUILD_SHARED) +if(DEFINED ZLIB_BUILD_MINIZIP) set(WORK_DIR ${zlib_BINARY_DIR}) - set(inst_setup minizip_minizip_install) -else(DEFINED ZLIB_BUILD_SHARED) + set(inst_setup zlib_install) +else(DEFINED ZLIB_BUILD_MINIZIP) set(WORK_DIR ${minizip_BINARY_DIR}) - set(inst_setup minizip_minizip_install) + set(inst_setup minizip_install) set(ZLIB_ARG "-DZLIB_DIR=${ZLIB_DIR}") add_test( @@ -13,9 +13,10 @@ else(DEFINED ZLIB_BUILD_SHARED) ${CMAKE_CURRENT_BINARY_DIR}/test_install --config $ WORKING_DIRECTORY ${minizip_BINARY_DIR}) - set_tests_properties(minizip_install PROPERTIES FIXTURES_SETUP - minizip_install) -endif(DEFINED ZLIB_BUILD_SHARED) + set_tests_properties(minizip_install + PROPERTIES + FIXTURES_SETUP minizip_install) +endif(DEFINED ZLIB_BUILD_MINIZIP) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test) diff --git a/contrib/puff/CMakeLists.txt b/contrib/puff/CMakeLists.txt index 72a4c6ddbf..2f902c0dfb 100644 --- a/contrib/puff/CMakeLists.txt +++ b/contrib/puff/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.12...3.31) project( puff - VERSION 1.0.0 + VERSION 2.3.0 LANGUAGES C DESCRIPTION "A library for decompressing deflate with very little footprint" HOMEPAGE_URL "https://www.zlib.net") @@ -83,7 +83,7 @@ if(ZLIB_PUFF_BUILD_SHARED) EXPORT_NAME PUFF OUTPUT_NAME puff) - if(ZLIB_PUFF_BUILD_TESTING) + if(ZLIB_PUFF_BUILD_TESTING AND NOT WIN32) enable_testing() add_executable(zlib_puff_test pufftest.c puff.h) @@ -113,7 +113,7 @@ if(ZLIB_PUFF_BUILD_SHARED) ${GCOV_EXECUTABLE} ${llvm_option}) endif(GCOV_EXECUTABLE) - endif(ZLIB_PUFF_BUILD_TESTING) + endif(ZLIB_PUFF_BUILD_TESTING AND NOT WIN32) endif(ZLIB_PUFF_BUILD_SHARED) if(ZLIB_PUFF_BUILD_STATIC) @@ -128,7 +128,7 @@ if(ZLIB_PUFF_BUILD_STATIC) EXPORT_NAME PUFFSTATIC OUTPUT_NAME puff${zlib_puff_static_suffix}) - if(ZLIB_PUFF_BUILD_TESTING) + if(ZLIB_PUFF_BUILD_TESTING AND NOT WIN32) enable_testing() add_executable(zlib_puff_testStatic pufftest.c puff.h) @@ -159,7 +159,7 @@ if(ZLIB_PUFF_BUILD_STATIC) ${GCOV_EXECUTABLE} ${llvm_option}) endif(GCOV_EXECUTABLE) - endif(ZLIB_PUFF_BUILD_TESTING) + endif(ZLIB_PUFF_BUILD_TESTING AND NOT WIN32) endif(ZLIB_PUFF_BUILD_STATIC) if(ZLIB_PUFF_INSTALL) @@ -168,7 +168,8 @@ if(ZLIB_PUFF_INSTALL) TARGETS zlib_puff_puff COMPONENT Runtime EXPORT puffSharedExport - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") install( EXPORT puffSharedExport FILE puff-shared.cmake diff --git a/contrib/puff/test/CMakeLists.txt b/contrib/puff/test/CMakeLists.txt index 1ed39de080..2548d57158 100644 --- a/contrib/puff/test/CMakeLists.txt +++ b/contrib/puff/test/CMakeLists.txt @@ -1,8 +1,8 @@ # if we are built from with zlib, use this path's) -if(DEFINED ZLIB_BUILD_SHARED) +if(DEFINED ZLIB_BUILD_PUFF) set(WORK_DIR ${zlib_BINARY_DIR}) - set(inst_setup zlib_puff_install) -else(DEFINED ZLIB_BUILD_SHARED) + set(inst_setup zlib_install) +else(DEFINED ZLIB_BUILD_PUFF) set(WORK_DIR ${puff_BINARY_DIR}) set(inst_setup zlib_puff_install) set(ZLIB_ARG "-DZLIB_DIR=${ZLIB_DIR}") @@ -16,7 +16,7 @@ else(DEFINED ZLIB_BUILD_SHARED) set_tests_properties(zlib_puff_install PROPERTIES FIXTURES_SETUP zlib_puff_install) -endif(DEFINED ZLIB_BUILD_SHARED) +endif(DEFINED ZLIB_BUILD_PUFF) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test) diff --git a/contrib/puff/tester.cmake b/contrib/puff/tester.cmake index d29dc5c3ac..be3b81fd9b 100644 --- a/contrib/puff/tester.cmake +++ b/contrib/puff/tester.cmake @@ -8,7 +8,8 @@ cmake_minimum_required(VERSION 3.12...3.31) execute_process(COMMAND ${CMAKE_ARGV3} INPUT_FILE "${CMAKE_ARGV4}/zeros.raw" - RESULT_VARIABLE RESULT) + RESULT_VARIABLE RESULT + COMMAND_ECHO STDERR) if(RESULT) message(FATAL_ERROR "Command exitited with: ${RESULT}") From f276e0f5469b6a4c961525f7317401d87fe0a244 Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Sun, 4 Jan 2026 14:26:33 +0100 Subject: [PATCH 24/25] add install-target for testzlib --- contrib/testzlib/CMakeLists.txt | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/contrib/testzlib/CMakeLists.txt b/contrib/testzlib/CMakeLists.txt index d68b533d72..b710c76b7a 100644 --- a/contrib/testzlib/CMakeLists.txt +++ b/contrib/testzlib/CMakeLists.txt @@ -9,14 +9,36 @@ project( option(ZLIB_TESTZLIB_BUILD_SHARED "Enable building testzlib" ON) option(ZLIB_TESTZLIB_BUILD_STATIC "Enable building static linked testzlib" ON) -option(ZLIB_TESTZLIB_BUILD_TESTING "Enable building tests for testzlib" ON) +option(ZLIB_TESTZLIB_INSTALL "Enable installation of testzlib" ON) if(ZLIB_TESTZLIB_BUILD_SHARED) - add_executable(testzlib testzlib.c) - target_link_libraries(testzlib PRIVATE ZLIB::ZLIB) + add_executable(zlib_testzlib testzlib.c) + target_link_libraries(zlib_testzlib PRIVATE ZLIB::ZLIB) + + set_target_properties(zlib_testzlib + PROPERTIES + OUTPUT_NAME testzlib) + + if(ZLIB_TESTZLIB_INSTALL) + install( + TARGETS zlib_testzlib + COMPONENT Runtime + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") + endif(ZLIB_TESTZLIB_INSTALL) endif(ZLIB_TESTZLIB_BUILD_SHARED) if(ZLIB_TESTZLIB_BUILD_STATIC) - add_executable(testzlibStatic testzlib.c) - target_link_libraries(testzlibStatic PRIVATE ZLIB::ZLIBSTATIC) + add_executable(zlib_testzlibStatic testzlib.c) + target_link_libraries(zlib_testzlibStatic PRIVATE ZLIB::ZLIBSTATIC) + + set_target_properties(zlib_testzlibStatic + PROPERTIES + OUTPUT_NAME testzlibStatic) + + if(ZLIB_TESTZLIB_INSTALL) + install( + TARGETS zlib_testzlibStatic + COMPONENT Runtime + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") + endif(ZLIB_TESTZLIB_INSTALL) endif(ZLIB_TESTZLIB_BUILD_STATIC) From e7fd19f41ccb81f941c2bb8eaa014fa0cc3a1979 Mon Sep 17 00:00:00 2001 From: Vollstrecker Date: Mon, 12 Jan 2026 17:42:44 +0100 Subject: [PATCH 25/25] Removed untgz Closes #1142 --- contrib/CMakeLists.txt | 1 - contrib/untgz/CMakeLists.txt | 50 --- contrib/untgz/Makefile | 14 - contrib/untgz/Makefile.msc | 17 - contrib/untgz/untgz.c | 667 ----------------------------------- 5 files changed, 749 deletions(-) delete mode 100644 contrib/untgz/CMakeLists.txt delete mode 100644 contrib/untgz/Makefile delete mode 100644 contrib/untgz/Makefile.msc delete mode 100644 contrib/untgz/untgz.c diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index b01dcbb413..8ec3bbd94b 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -43,7 +43,6 @@ zlib_add_contrib_lib(BLAST "blast binary" blast) zlib_add_contrib_lib(IOSTREAM3 "IOStream C++ bindings V3" iostream3) zlib_add_contrib_lib(MINIZIP "minizip library" minizip) zlib_add_contrib_lib(PUFF "puff decompress library" puff) -zlib_add_contrib_lib(UNTGZ "tool for listing and uncompressing tgz files" untgz) if(WIN32) zlib_add_contrib_lib(TESTZLIB "testzlib binary" testzlib) diff --git a/contrib/untgz/CMakeLists.txt b/contrib/untgz/CMakeLists.txt deleted file mode 100644 index 0242d814d2..0000000000 --- a/contrib/untgz/CMakeLists.txt +++ /dev/null @@ -1,50 +0,0 @@ -cmake_minimum_required(VERSION 3.12...3.31) - -project( - untgz - VERSION 1.0.0 - LANGUAGES C - DESCRIPTION "A tool for listing and uncompresssing tgz files" - HOMEPAGE_URL "https://www.zlib.net") - -option(ZLIB_UNTGZ_BUILD_SHARED "Enable building untgz" ON) -option(ZLIB_UNTGZ_BUILD_STATIC "Enable building static linked untgz" ON) -option(ZLIB_UNTGZ_INSTALL "Enable installation of untgz" ON) - -include(GNUInstallDirs) - -if(NOT DEFINED ZLIB_BUILD_UNTGZ) - if(ZLIB_PUFF_BUILD_SHARED) - list(APPEND REQUIRED_COMPONENTS "shared") - endif(ZLIB_PUFF_BUILD_SHARED) - - if(ZLIB_PUFF_BUILD_STATIC) - list(APPEND REQUIRED_COMPONENTS "static") - endif(ZLIB_PUFF_BUILD_STATIC) - - find_package(ZLIB REQUIRED COMPONENTS ${REQUIRED_COMPONENTS} CONFIG) -endif(NOT DEFINED ZLIB_BUILD_UNTGZ) - -if(ZLIB_UNTGZ_BUILD_SHARED) - add_executable(zlib-untgz untgz.c) - target_link_libraries(zlib-untgz PRIVATE ZLIB::ZLIB) - - if(ZLIB_UNTGZ_INSTALL) - install( - TARGETS zlib-untgz - COMPONENT Runtime - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") - endif(ZLIB_UNTGZ_INSTALL) -endif(ZLIB_UNTGZ_BUILD_SHARED) - -if(ZLIB_UNTGZ_BUILD_STATIC) - add_executable(zlib-untgzStatic untgz.c) - target_link_libraries(zlib-untgzStatic PRIVATE ZLIB::ZLIBSTATIC) - - if(ZLIB_UNTGZ_INSTALL) - install( - TARGETS zlib-untgzStatic - COMPONENT Runtime - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") - endif(ZLIB_UNTGZ_INSTALL) -endif(ZLIB_UNTGZ_BUILD_STATIC) diff --git a/contrib/untgz/Makefile b/contrib/untgz/Makefile deleted file mode 100644 index b54266fba2..0000000000 --- a/contrib/untgz/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -CC=cc -CFLAGS=-g - -untgz: untgz.o ../../libz.a - $(CC) $(CFLAGS) -o untgz untgz.o -L../.. -lz - -untgz.o: untgz.c ../../zlib.h - $(CC) $(CFLAGS) -c -I../.. untgz.c - -../../libz.a: - cd ../..; ./configure; make - -clean: - rm -f untgz untgz.o *~ diff --git a/contrib/untgz/Makefile.msc b/contrib/untgz/Makefile.msc deleted file mode 100644 index 77b8602213..0000000000 --- a/contrib/untgz/Makefile.msc +++ /dev/null @@ -1,17 +0,0 @@ -CC=cl -CFLAGS=-MD - -untgz.exe: untgz.obj ..\..\zlib.lib - $(CC) $(CFLAGS) untgz.obj ..\..\zlib.lib - -untgz.obj: untgz.c ..\..\zlib.h - $(CC) $(CFLAGS) -c -I..\.. untgz.c - -..\..\zlib.lib: - cd ..\.. - $(MAKE) -f win32\makefile.msc - cd contrib\untgz - -clean: - -del untgz.obj - -del untgz.exe diff --git a/contrib/untgz/untgz.c b/contrib/untgz/untgz.c deleted file mode 100644 index 78579211fe..0000000000 --- a/contrib/untgz/untgz.c +++ /dev/null @@ -1,667 +0,0 @@ -/* - * untgz.c -- Display contents and extract files from a gzip'd TAR file - * - * written by Pedro A. Aranda Gutierrez - * adaptation to Unix by Jean-loup Gailly - * various fixes by Cosmin Truta - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * 3. This notice may not be removed or altered from any source distribution. - */ - -#include -#include -#include -#include -#include - -#include "zlib.h" - -#ifdef _WIN32 -# include -# include -# include -# ifndef F_OK -# define F_OK 0 -# endif -# define mkdir(dirname,mode) _mkdir(dirname) -# ifdef _MSC_VER -# define access(path,mode) _access(path,mode) -# define chmod(path,mode) _chmod(path,mode) -# define strdup(str) _strdup(str) -# endif -#else -# include -# include -# include -#endif - - -/* values used in typeflag field */ - -#define REGTYPE '0' /* regular file */ -#define AREGTYPE '\0' /* regular file */ -#define LNKTYPE '1' /* link */ -#define SYMTYPE '2' /* reserved */ -#define CHRTYPE '3' /* character special */ -#define BLKTYPE '4' /* block special */ -#define DIRTYPE '5' /* directory */ -#define FIFOTYPE '6' /* FIFO special */ -#define CONTTYPE '7' /* reserved */ - -/* GNU tar extensions */ - -#define GNUTYPE_DUMPDIR 'D' /* file names from dumped directory */ -#define GNUTYPE_LONGLINK 'K' /* long link name */ -#define GNUTYPE_LONGNAME 'L' /* long file name */ -#define GNUTYPE_MULTIVOL 'M' /* continuation of file from another volume */ -#define GNUTYPE_NAMES 'N' /* file name that does not fit into main hdr */ -#define GNUTYPE_SPARSE 'S' /* sparse file */ -#define GNUTYPE_VOLHDR 'V' /* tape/volume header */ - - -/* tar header */ - -#define BLOCKSIZE 512 -#define SHORTNAMESIZE 100 - -struct tar_header -{ /* byte offset */ - char name[100]; /* 0 */ - char mode[8]; /* 100 */ - char uid[8]; /* 108 */ - char gid[8]; /* 116 */ - char size[12]; /* 124 */ - char mtime[12]; /* 136 */ - char chksum[8]; /* 148 */ - char typeflag; /* 156 */ - char linkname[100]; /* 157 */ - char magic[6]; /* 257 */ - char version[2]; /* 263 */ - char uname[32]; /* 265 */ - char gname[32]; /* 297 */ - char devmajor[8]; /* 329 */ - char devminor[8]; /* 337 */ - char prefix[155]; /* 345 */ - /* 500 */ -}; - -union tar_buffer -{ - char buffer[BLOCKSIZE]; - struct tar_header header; -}; - -struct attr_item -{ - struct attr_item *next; - char *fname; - int mode; - time_t time; -}; - -enum { TGZ_EXTRACT, TGZ_LIST, TGZ_INVALID }; - -char *prog; - -void error(const char *msg) -{ - fprintf(stderr, "%s: %s\n", prog, msg); - exit(1); -} - -const char *TGZsuffix[] = { "\0", ".tar", ".tar.gz", ".taz", ".tgz", NULL }; - -/* return the file name of the TGZ archive */ -/* or NULL if it does not exist */ - -char *TGZfname (const char *arcname) -{ - static char buffer[1024]; - int origlen,i; - - strcpy(buffer,arcname); - origlen = strlen(buffer); - - for (i=0; TGZsuffix[i]; i++) - { - strcpy(buffer+origlen,TGZsuffix[i]); - if (access(buffer,F_OK) == 0) - return buffer; - } - return NULL; -} - - -/* error message for the filename */ - -void TGZnotfound (const char *arcname) -{ - int i; - - fprintf(stderr,"%s: Couldn't find ",prog); - for (i=0;TGZsuffix[i];i++) - fprintf(stderr,(TGZsuffix[i+1]) ? "%s%s, " : "or %s%s\n", - arcname, - TGZsuffix[i]); - exit(1); -} - - -/* convert octal digits to int */ -/* on error return -1 */ - -int getoct (char *p,int width) -{ - int result = 0; - char c; - - while (width--) - { - c = *p++; - if (c == 0) - break; - if (c == ' ') - continue; - if (c < '0' || c > '7') - return -1; - result = result * 8 + (c - '0'); - } - return result; -} - - -/* convert time_t to string */ -/* use the "YYYY/MM/DD hh:mm:ss" format */ - -char *strtime (time_t *t) -{ - struct tm *local; - static char result[32]; - - local = localtime(t); - sprintf(result,"%4d/%02d/%02d %02d:%02d:%02d", - local->tm_year+1900, local->tm_mon+1, local->tm_mday, - local->tm_hour, local->tm_min, local->tm_sec); - return result; -} - - -/* set file time */ - -int setfiletime (char *fname,time_t ftime) -{ -#ifdef _WIN32 - static int isWinNT = -1; - SYSTEMTIME st; - FILETIME locft, modft; - struct tm *loctm; - HANDLE hFile; - int result; - - loctm = localtime(&ftime); - if (loctm == NULL) - return -1; - - st.wYear = (WORD)loctm->tm_year + 1900; - st.wMonth = (WORD)loctm->tm_mon + 1; - st.wDayOfWeek = (WORD)loctm->tm_wday; - st.wDay = (WORD)loctm->tm_mday; - st.wHour = (WORD)loctm->tm_hour; - st.wMinute = (WORD)loctm->tm_min; - st.wSecond = (WORD)loctm->tm_sec; - st.wMilliseconds = 0; - if (!SystemTimeToFileTime(&st, &locft) || - !LocalFileTimeToFileTime(&locft, &modft)) - return -1; - - if (isWinNT < 0) - isWinNT = (GetVersion() < 0x80000000) ? 1 : 0; - hFile = CreateFile(fname, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, - (isWinNT ? FILE_FLAG_BACKUP_SEMANTICS : 0), - NULL); - if (hFile == INVALID_HANDLE_VALUE) - return -1; - result = SetFileTime(hFile, NULL, NULL, &modft) ? 0 : -1; - CloseHandle(hFile); - return result; -#else - struct utimbuf settime; - - settime.actime = settime.modtime = ftime; - return utime(fname,&settime); -#endif -} - - -/* push file attributes */ - -void push_attr(struct attr_item **list,char *fname,int mode,time_t time) -{ - struct attr_item *item; - - item = (struct attr_item *)malloc(sizeof(struct attr_item)); - if (item == NULL) - error("Out of memory"); - item->fname = strdup(fname); - item->mode = mode; - item->time = time; - item->next = *list; - *list = item; -} - - -/* restore file attributes */ - -void restore_attr(struct attr_item **list) -{ - struct attr_item *item, *prev; - - for (item = *list; item != NULL; ) - { - setfiletime(item->fname,item->time); - chmod(item->fname,item->mode); - prev = item; - item = item->next; - free(prev); - } - *list = NULL; -} - - -/* match regular expression */ - -#define ISSPECIAL(c) (((c) == '*') || ((c) == '/')) - -int ExprMatch (char *string,char *expr) -{ - while (1) - { - if (ISSPECIAL(*expr)) - { - if (*expr == '/') - { - if (*string != '\\' && *string != '/') - return 0; - string ++; expr++; - } - else if (*expr == '*') - { - if (*expr ++ == 0) - return 1; - while (*++string != *expr) - if (*string == 0) - return 0; - } - } - else - { - if (*string != *expr) - return 0; - if (*expr++ == 0) - return 1; - string++; - } - } -} - - -/* recursive mkdir */ -/* abort on ENOENT; ignore other errors like "directory already exists" */ -/* return 1 if OK */ -/* 0 on error */ - -int makedir (char *newdir) -{ - char *buffer = strdup(newdir); - char *p; - int len = strlen(buffer); - - if (len <= 0) { - free(buffer); - return 0; - } - if (buffer[len-1] == '/') { - buffer[len-1] = '\0'; - } - if (mkdir(buffer, 0755) == 0) - { - free(buffer); - return 1; - } - - p = buffer+1; - while (1) - { - char hold; - - while(*p && *p != '\\' && *p != '/') - p++; - hold = *p; - *p = 0; - if ((mkdir(buffer, 0755) == -1) && (errno == ENOENT)) - { - fprintf(stderr,"%s: Couldn't create directory %s\n",prog,buffer); - free(buffer); - return 0; - } - if (hold == 0) - break; - *p++ = hold; - } - free(buffer); - return 1; -} - - -int matchname (int arg,int argc,char **argv,char *fname) -{ - if (arg == argc) /* no arguments given (untgz tgzarchive) */ - return 1; - - while (arg < argc) - if (ExprMatch(fname,argv[arg++])) - return 1; - - return 0; /* ignore this for the moment being */ -} - - -/* tar file list or extract */ - -int tar (gzFile in,int action,int arg,int argc,char **argv) -{ - union tar_buffer buffer; - int len; - int err; - int getheader = 1; - int remaining = 0; - FILE *outfile = NULL; - char fname[BLOCKSIZE]; - int tarmode; - time_t tartime; - struct attr_item *attributes = NULL; - - if (action == TGZ_LIST) - printf(" date time size file\n" - " ---------- -------- --------- -------------------------------------\n"); - while (1) - { - len = gzread(in, &buffer, BLOCKSIZE); - if (len < 0) - error(gzerror(in, &err)); - /* - * Always expect complete blocks to process - * the tar information. - */ - if (len != BLOCKSIZE) - { - action = TGZ_INVALID; /* force error exit */ - remaining = 0; /* force I/O cleanup */ - } - - /* - * If we have to get a tar header - */ - if (getheader >= 1) - { - /* - * if we met the end of the tar - * or the end-of-tar block, - * we are done - */ - if (len == 0 || buffer.header.name[0] == 0) - break; - - tarmode = getoct(buffer.header.mode,8); - tartime = (time_t)getoct(buffer.header.mtime,12); - if (tarmode == -1 || tartime == (time_t)-1) - { - buffer.header.name[0] = 0; - action = TGZ_INVALID; - } - - if (getheader == 1) - { - strncpy(fname,buffer.header.name,SHORTNAMESIZE); - if (fname[SHORTNAMESIZE-1] != 0) - fname[SHORTNAMESIZE] = 0; - } - else - { - /* - * The file name is longer than SHORTNAMESIZE - */ - if (strncmp(fname,buffer.header.name,SHORTNAMESIZE-1) != 0) - error("bad long name"); - getheader = 1; - } - - /* - * Act according to the type flag - */ - switch (buffer.header.typeflag) - { - case DIRTYPE: - if (action == TGZ_LIST) - printf(" %s %s\n",strtime(&tartime),fname); - if (action == TGZ_EXTRACT) - { - makedir(fname); - push_attr(&attributes,fname,tarmode,tartime); - } - break; - case REGTYPE: - case AREGTYPE: - remaining = getoct(buffer.header.size,12); - if (remaining == -1) - { - action = TGZ_INVALID; - break; - } - if (action == TGZ_LIST) - printf(" %s %9d %s\n",strtime(&tartime),remaining,fname); - else if (action == TGZ_EXTRACT) - { - if (matchname(arg,argc,argv,fname)) - { - outfile = fopen(fname,"wb"); - if (outfile == NULL) { - /* try creating directory */ - char *p = strrchr(fname, '/'); - if (p != NULL) { - *p = '\0'; - makedir(fname); - *p = '/'; - outfile = fopen(fname,"wb"); - } - } - if (outfile != NULL) - printf("Extracting %s\n",fname); - else - fprintf(stderr, "%s: Couldn't create %s",prog,fname); - } - else - outfile = NULL; - } - getheader = 0; - break; - case GNUTYPE_LONGLINK: - case GNUTYPE_LONGNAME: - remaining = getoct(buffer.header.size,12); - if (remaining < 0 || remaining >= BLOCKSIZE) - { - action = TGZ_INVALID; - break; - } - len = gzread(in, fname, BLOCKSIZE); - if (len < 0) - error(gzerror(in, &err)); - if (fname[BLOCKSIZE-1] != 0 || (int)strlen(fname) > remaining) - { - action = TGZ_INVALID; - break; - } - getheader = 2; - break; - default: - if (action == TGZ_LIST) - printf(" %s <---> %s\n",strtime(&tartime),fname); - break; - } - } - else - { - unsigned int bytes = (remaining > BLOCKSIZE) ? BLOCKSIZE : remaining; - - if (outfile != NULL) - { - if (fwrite(&buffer,sizeof(char),bytes,outfile) != bytes) - { - fprintf(stderr, - "%s: Error writing %s -- skipping\n",prog,fname); - fclose(outfile); - outfile = NULL; - remove(fname); - } - } - remaining -= bytes; - } - - if (remaining == 0) - { - getheader = 1; - if (outfile != NULL) - { - fclose(outfile); - outfile = NULL; - if (action != TGZ_INVALID) - push_attr(&attributes,fname,tarmode,tartime); - } - } - - /* - * Abandon if errors are found - */ - if (action == TGZ_INVALID) - { - error("broken archive"); - break; - } - } - - /* - * Restore file modes and time stamps - */ - restore_attr(&attributes); - - if (gzclose(in) != Z_OK) - error("failed gzclose"); - - return 0; -} - - -/* ============================================================ */ - -void help(int exitval) -{ - printf("untgz version 0.2.1\n" - " using zlib version %s\n\n", - zlibVersion()); - printf("Usage: untgz file.tgz extract all files\n" - " untgz file.tgz fname ... extract selected files\n" - " untgz -l file.tgz list archive contents\n" - " untgz -h display this help\n"); - exit(exitval); -} - - -/* ============================================================ */ - -#if defined(WIN32) && defined(__GNUC__) -int _CRT_glob = 0; /* disable argument globbing in MinGW */ -#endif - -int main(int argc,char **argv) -{ - int action = TGZ_EXTRACT; - int arg = 1; - char *TGZfile; - gzFile f; - - prog = strrchr(argv[0],'\\'); - if (prog == NULL) - { - prog = strrchr(argv[0],'/'); - if (prog == NULL) - { - prog = strrchr(argv[0],':'); - if (prog == NULL) - prog = argv[0]; - else - prog++; - } - else - prog++; - } - else - prog++; - - if (argc == 1) - help(0); - - if (strcmp(argv[arg],"-l") == 0) - { - action = TGZ_LIST; - if (argc == ++arg) - help(0); - } - else if (strcmp(argv[arg],"-h") == 0) - { - help(0); - } - - if ((TGZfile = TGZfname(argv[arg])) == NULL) - TGZnotfound(argv[arg]); - - ++arg; - if ((action == TGZ_LIST) && (arg != argc)) - help(1); - -/* - * Process the TGZ file - */ - switch(action) - { - case TGZ_LIST: - case TGZ_EXTRACT: - f = gzopen(TGZfile,"rb"); - if (f == NULL) - { - fprintf(stderr,"%s: Couldn't gzopen %s\n",prog,TGZfile); - return 1; - } - exit(tar(f, action, arg, argc, argv)); - break; - - default: - error("Unknown option"); - exit(1); - } - - return 0; -}