diff --git a/.github/workflows/c-std.yml b/.github/workflows/c-std.yml index 91b262b5c2..1aafa23335 100644 --- a/.github/workflows/c-std.yml +++ b/.github/workflows/c-std.yml @@ -8,6 +8,9 @@ on: push: pull_request: +permissions: + contents: read + jobs: main: @@ -46,7 +49,6 @@ jobs: compiler-opt: -m32 cmake-opt: -A Win32 - builder: - configure - cmake @@ -152,31 +154,18 @@ jobs: - name: Generate project files (cmake) if: matrix.builder == 'cmake' run: | - cmake -S . -B ./build1 -D CMAKE_BUILD_TYPE=Release ${{ matrix.os.cmake-opt }} -DZLIB_BUILD_TESTING=OFF + cmake -S . -B ./build -D CMAKE_BUILD_TYPE=Release ${{ matrix.os.cmake-opt }} -DZLIB_BUILD_TESTING=OFF -DZLIB_BUILD_MINIZIP=OFF env: CC: ${{ matrix.compiler }} CFLAGS: -std=${{ matrix.std.value }} ${{ matrix.std.compiler-opt }} ${{ matrix.arch.compiler-opt }} -Werror -Wall -Wextra - - name: Generate project files with tests (cmake) - if: matrix.builder == 'cmake' - run: | - cmake -S . -B ./build2 -D CMAKE_BUILD_TYPE=Release ${{ matrix.os.cmake-opt }} -DZLIB_BUILD_MINIZIP=ON -DMINIZIP_ENABLE_BZIP2=OFF - env: - CC: ${{ matrix.compiler }} - CFLAGS: -std=${{ matrix.std.value }} ${{ matrix.std.compiler-opt }} ${{ matrix.arch.compiler-opt }} -Wall -Wextra - - name: Compile source code (cmake) if: matrix.builder == 'cmake' - run: cmake --build ./build1 --config Release - - - name: Compile source code with tests (cmake) - if: matrix.builder == 'cmake' - run: cmake --build ./build2 --config Release + run: cmake --build ./build --config Release - name: Run test cases (cmake) if: matrix.builder == 'cmake' - run: ctest ./build2 -C Release --output-on-failure --max-width 120 - + run: ctest ./build -C Release --output-on-failure --max-width 120 msvc: name: ${{ matrix.os.name }} ${{ matrix.compiler }} ${{ matrix.arch.name }} ${{ matrix.std.name }} ${{ matrix.builder }} diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 5409195c9f..e13a9f411d 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -1,5 +1,9 @@ name: CMake on: [push, pull_request] + +permissions: + contents: read + jobs: ci-cmake: name: ${{ matrix.name }} diff --git a/.github/workflows/configure.yml b/.github/workflows/configure.yml index b9162b2dab..9cab9b97ae 100644 --- a/.github/workflows/configure.yml +++ b/.github/workflows/configure.yml @@ -1,5 +1,9 @@ name: Configure on: [push, pull_request] + +permissions: + contents: read + jobs: ci-configure: name: ${{ matrix.name }} diff --git a/.github/workflows/contribs.yml b/.github/workflows/contribs.yml index c26a9ef593..eac67c91c4 100644 --- a/.github/workflows/contribs.yml +++ b/.github/workflows/contribs.yml @@ -1,5 +1,9 @@ name: contribs on: [push, pull_request] + +permissions: + contents: read + jobs: ci-cmake: name: ${{ matrix.name }} @@ -12,37 +16,79 @@ jobs: os: ubuntu-latest cmake-args: -DZLIB_BUILD_ADA=ON -DZLIB_BUILD_BLAST=ON -DZLIB_BUILD_IOSTREAM3=ON -DZLIB_BUILD_MINIZIP=ON -DZLIB_BUILD_PUFF=ON -DZLIB_WITH_INFBACK9=ON -DZLIB_WITH_CRC32VX=ON -DZLIB_WITH_GVMAT64=ON src_dir: . + sudo: sudo + + - name: Windows all contribs + os: windows-latest + cmake-args: -DZLIB_BUILD_BLAST=ON -DZLIB_BUILD_IOSTREAM3=ON -DZLIB_BUILD_MINIZIP=ON -DZLIB_BUILD_PUFF=ON -DZLIB_BUILD_TESTZLIB=ON -DZLIB_BUILD_ZLIB1_DLL=ON -DZLIB_WITH_INFBACK9=ON -DZLIB_WITH_CRC32VX=ON -DZLIB_WITH_GVMAT64=ON + src_dir: . - name: Ubuntu ADA os: ubuntu-latest src_dir: contrib/ada install_zlib: yes + sudo: sudo - name: Ubuntu BLAST os: ubuntu-latest src_dir: contrib/blast install_zlib: yes + sudo: sudo + + - name: Windows BLAST + os: Windows-latest + src_dir: contrib/blast + install_zlib: yes - name: Ubuntu IOSTREAM os: ubuntu-latest src_dir: contrib/iostream3 install_zlib: yes + sudo: sudo + + - name: Windows IOSTREAM + os: Windows-latest + src_dir: contrib/iostream3 + install_zlib: yes - name: Ubuntu MINIZIP os: ubuntu-latest src_dir: contrib/minizip install_zlib: yes + sudo: sudo + + - name: Windows MINIZIP + os: Windows-latest + src_dir: contrib/minizip + install_zlib: yes - name: Ubuntu PUFF os: ubuntu-latest src_dir: contrib/puff install_zlib: yes + sudo: sudo + + - name: Windows PUFF + os: Windows-latest + src_dir: contrib/puff + install_zlib: yes + + - name: Windows testzlib + os: windows-latest + src_dir: contrib/testzlib + install_zlib: yes + + - name: Windows zlib1-dll + os: windows-latest + src_dir: contrib/zlib1-dll + install_zlib: yes steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install packages + if: runner.os == 'Linux' run: | sudo apt install gnat libbz2-dev @@ -51,7 +97,7 @@ jobs: run: | cmake -S . -B ../build-zlib -DCMAKE_BUILD_TYPE=Release cmake --build ../build-zlib --config Release - sudo cmake --install ../build-zlib + ${{ matrix.sudo }} cmake --install ../build-zlib - name: Generate project files run: cmake -S ${{ matrix.src_dir }} -B ../build ${{ matrix.cmake-args }} -DCMAKE_BUILD_TYPE=Release diff --git a/.github/workflows/fuzz.yml b/.github/workflows/fuzz.yml index b065d09fdc..4ae0a32e1e 100644 --- a/.github/workflows/fuzz.yml +++ b/.github/workflows/fuzz.yml @@ -1,5 +1,9 @@ name: OSS-Fuzz on: [pull_request] + +permissions: + contents: read + jobs: Fuzzing: runs-on: ubuntu-latest diff --git a/.github/workflows/msys-cygwin.yml b/.github/workflows/msys-cygwin.yml index d58e4887fd..79134d039e 100644 --- a/.github/workflows/msys-cygwin.yml +++ b/.github/workflows/msys-cygwin.yml @@ -2,6 +2,9 @@ name: mingw/cygwin on: [push, pull_request] +permissions: + contents: read + jobs: MSys: runs-on: ${{ matrix.os || 'windows-latest' }} diff --git a/.github/workflows/others.yml b/.github/workflows/others.yml index d7b40ec00e..d46015967b 100644 --- a/.github/workflows/others.yml +++ b/.github/workflows/others.yml @@ -2,6 +2,9 @@ name: anyVM-OSes on: [push, pull_request] +permissions: + contents: read + jobs: dragonflybsd: @@ -13,6 +16,7 @@ jobs: uses: vmactions/dragonflybsd-vm@v1 with: copyback: false + sync: scp prepare: | pkg install -y cmake gcc14 bzip2 @@ -37,6 +41,7 @@ jobs: with: arch: ${{ matrix.name }} copyback: false + sync: scp release: "15.0" prepare: | pkg install -y cmake gcc14 bzip2 @@ -61,6 +66,7 @@ jobs: uses: vmactions/netbsd-vm@v1 with: copyback: false + sync: scp prepare: | export PATH="/usr/pkg/sbin:/usr/pkg/bin:$PATH" export PKG_PATH="https://cdn.NetBSD.org/pub/pkgsrc/packages" @@ -82,6 +88,7 @@ jobs: uses: vmactions/omnios-vm@v1 with: copyback: false + sync: scp prepare: | pkg install cmake gcc14 make bzip2 @@ -107,6 +114,7 @@ jobs: with: arch: ${{ matrix.name }} copyback: false + sync: scp prepare: | pkg_add cmake bzip2 @@ -125,6 +133,7 @@ jobs: # uses: vmactions/openindiana-vm@v0 # with: # copyback: false +# sync: scp # prepare: | # pkg install cmake gcc-14 make bzip2 @@ -142,6 +151,7 @@ jobs: uses: vmactions/solaris-vm@v1 with: copyback: false + sync: scp release: "11.4-gcc" prepare: | pkgutil -U diff --git a/CMakeLists.txt b/CMakeLists.txt index e103c409a6..0e092a6e59 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.12...3.31) project( zlib LANGUAGES C - VERSION 1.3.2 + VERSION 1.3.2.1 HOMEPAGE_URL "https://zlib.net/" DESCRIPTION "a general-purpose lossless data-compression library") @@ -112,6 +112,16 @@ check_c_source_compiles( unset(CMAKE_COMPILE_FLAGS) set(ZLIB_PC ${zlib_BINARY_DIR}/zlib.pc) +if(IS_ABSOLUTE "${CMAKE_INSTALL_INCLUDEDIR}") + set(pc_includedir "${CMAKE_INSTALL_INCLUDEDIR}") +else() + set(pc_includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}") +endif() +if(IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}") + set(pc_libdir "${CMAKE_INSTALL_LIBDIR}") +else() + set(pc_libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}") +endif() configure_file(${zlib_SOURCE_DIR}/zlib.pc.cmakein ${ZLIB_PC} @ONLY) configure_file(${zlib_BINARY_DIR}/zconf.h.cmakein ${zlib_BINARY_DIR}/zconf.h) @@ -157,8 +167,9 @@ endif(WIN32) if(ZLIB_BUILD_SHARED) add_library( zlib SHARED ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS} - $<$,$>:win32/zlib1.rc>) + $<$,$>:win32/zlib-cmake.rc>) add_library(ZLIB::ZLIB ALIAS zlib) + target_include_directories( zlib PUBLIC $ @@ -174,16 +185,24 @@ if(ZLIB_BUILD_SHARED) PUBLIC $<$:_LARGEFILE64_SOURCE=1>) set(INSTALL_VERSION ${zlib_VERSION}) - if(NOT CYGWIN) + if(CYGWIN) + set_target_properties(zlib PROPERTIES PREFIX "lib") + else(CYGWIN) set_target_properties(zlib PROPERTIES SOVERSION ${zlib_VERSION_MAJOR} VERSION ${INSTALL_VERSION}) - endif(NOT CYGWIN) + endif(CYGWIN) set_target_properties( zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL - EXPORT_NAME ZLIB - OUTPUT_NAME z) + EXPORT_NAME ZLIB) + + if(MSVC) + set_target_properties(zlib PROPERTIES OUTPUT_NAME libz) + else(MSVC) + set_target_properties(zlib PROPERTIES OUTPUT_NAME z) + endif(MSVC) + if(UNIX AND NOT APPLE AND NOT (CMAKE_SYSTEM_NAME STREQUAL AIX) @@ -217,9 +236,23 @@ if(ZLIB_BUILD_STATIC) $<$:_CRT_SECURE_NO_DEPRECATE> $<$:_CRT_NONSTDC_NO_DEPRECATE> PUBLIC $<$:_LARGEFILE64_SOURCE=1>) + + if(CYGWIN) + set_target_properties(zlibstatic PROPERTIES PREFIX "lib") + endif(CYGWIN) + + if(MSVC) + set_target_properties(zlibstatic + PROPERTIES + ARCHIVE_OUTPUT_NAME libz${zlib_static_suffix}) + else(MSVC) + set_target_properties(zlibstatic + PROPERTIES + ARCHIVE_OUTPUT_NAME z${zlib_static_suffix}) + endif(MSVC) + set_target_properties( - zlibstatic PROPERTIES EXPORT_NAME ZLIBSTATIC OUTPUT_NAME - z${zlib_static_suffix}) + zlibstatic PROPERTIES EXPORT_NAME ZLIBSTATIC) endif(ZLIB_BUILD_STATIC) if(ZLIB_INSTALL) diff --git a/ChangeLog b/ChangeLog index 312753edad..4e86c26883 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,9 @@ ChangeLog file for zlib +Changes in 1.3.2.1 (xx Feb 2026) +- + Changes in 1.3.2 (17 Feb 2026) - Continued rewrite of CMake build [Vollstrecker] - Various portability improvements diff --git a/Makefile.in b/Makefile.in index bee83edf37..ccb3c4f099 100644 --- a/Makefile.in +++ b/Makefile.in @@ -31,7 +31,7 @@ VGFMAFLAG= STATICLIB=libz.a SHAREDLIB=libz.so -SHAREDLIBV=libz.so.1.3.2 +SHAREDLIBV=libz.so.1.3.2.1 SHAREDLIBM=libz.so.1 LIBS=$(STATICLIB) $(SHAREDLIBV) diff --git a/README b/README index 2b1e6f36fe..e28388bfef 100644 --- a/README +++ b/README @@ -1,6 +1,6 @@ ZLIB DATA COMPRESSION LIBRARY -zlib 1.3.2 is a general purpose data compression library. All the code is +zlib 1.3.2.1 is a general purpose data compression library. All the code is thread safe (though see the FAQ for caveats). The data format used by the zlib library is described by RFCs (Request for Comments) 1950 to 1952 at https://datatracker.ietf.org/doc/html/rfc1950 (zlib format), rfc1951 (deflate @@ -31,7 +31,7 @@ Mark Nelson wrote an article about zlib for the Jan. 1997 issue of Dr. Dobb's Journal; a copy of the article is available at https://zlib.net/nelson/ . -The changes made in version 1.3.2 are documented in the file ChangeLog. +The changes made in version 1.3.2.1 are documented in the file ChangeLog. Unsupported third party contributions are provided in directory contrib/ . diff --git a/README-cmake.md b/README-cmake.md index 5f2764158e..6b914e0ce9 100644 --- a/README-cmake.md +++ b/README-cmake.md @@ -66,11 +66,13 @@ or As it's possible to only build the shared or the static lib, you can make sure that everything you need is found. If no COMPONENTS are requested, everything needs to be found to satisfy your request. If the -libraries are optional in you project, you can omit the REQUIRED and check yourself if the targets you -want to link against are created. +libraries are optional in your project, you can omit the REQUIRED and check yourself which components were +found, either by checking for existence of the target, or by checking the ZLIB_shared_FOUND variable, for example. When you search for minizip, it will search zlib for you, so only one of both is needed. +When you don't give any COMPONENTS, and not all components are found, the package itself is considered not found. + ## Imported targets ## When found the following targets are created for you: diff --git a/configure b/configure index bc723443e1..4e6c8d85b8 100755 --- a/configure +++ b/configure @@ -1024,6 +1024,7 @@ sed < ${SRCDIR}Makefile.in " /^LDFLAGS *=/s#=.*#=$LDFLAGS# /^LDSHARED *=/s#=.*#=$LDSHARED# /^CPP *=/s#=.*#=$CPP# +/^VGFMAFLAG *=/s#=.*#=$VGFMAFLAG# /^STATICLIB *=/s#=.*#=$STATICLIB# /^SHAREDLIB *=/s#=.*#=$SHAREDLIB# /^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV# @@ -1054,6 +1055,7 @@ sed < ${SRCDIR}zlib.pc.in " /^CC *=/s#=.*#=$CC# /^CFLAGS *=/s#=.*#=$CFLAGS# /^CPP *=/s#=.*#=$CPP# +/^VGFMAFLAG *=/s#=.*#=$VGFMAFLAG# /^LDSHARED *=/s#=.*#=$LDSHARED# /^STATICLIB *=/s#=.*#=$STATICLIB# /^SHAREDLIB *=/s#=.*#=$SHAREDLIB# diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index 2d358bf49d..19e3a567e4 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -38,6 +38,10 @@ function(zlib_add_contrib_feature name description dir) endif(ZLIB_WITH_${name}) endfunction(zlib_add_contrib_feature name description dir) +set(WORK_DIR ${zlib_BINARY_DIR}/test) +set(ZLIB_CONTRIB_PREFIX "zlib_") +set(inst_setup zlib_install) + zlib_add_contrib_feature("GVMAT64" "of an optimized longest_match for 32 bits x86_64" gcc_gvmat64) diff --git a/contrib/ada/CMakeLists.txt b/contrib/ada/CMakeLists.txt index b7a2e4dcba..4781064a89 100644 --- a/contrib/ada/CMakeLists.txt +++ b/contrib/ada/CMakeLists.txt @@ -9,6 +9,13 @@ project( DESCRIPTION "A library for creating zipfiles based in zlib" HOMEPAGE_URL "https://www.zlib.net") +if(ZLIB_BUILD_ADA) + set(ZLIB_ADA_BUILD_SHARED ${ZLIB_BUILD_SHARED} CACHE BOOL "") + set(ZLIB_ADA_BUILD_STATIC ${ZLIB_BUILD_STATIC} CACHE BOOL "") + set(ZLIB_ADA_BUILD_TESTING ${ZLIB_BUILD_TESTING} CACHE BOOL "") + set(ZLIB_ADA_INSTALL ${ZLIB_INSTALL} CACHE BOOL "") +endif(ZLIB_BUILD_ADA) + 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) @@ -30,21 +37,6 @@ if(NOT DEFINED ZLIB_BUILD_ADA) find_package(ZLIB REQUIRED COMPONENTS ${REQUIRED_COMPONENTS} CONFIG) endif(NOT DEFINED ZLIB_BUILD_ADA) -function(ZLIB_ADA_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(ZLIB_ADA_findTestEnv testName) - if(ZLIB_ADA_BUILD_SHARED) ada_add_library(zlib_ada_Ada SHARED zlib-thin.adb @@ -64,84 +56,6 @@ if(ZLIB_ADA_BUILD_SHARED) zlib_ada_Ada) ada_find_ali(zlib_ada_streams) - - if(ZLIB_ADA_BUILD_TESTING) - enable_testing() - ada_add_executable(zlib_ada_test test.adb) - - target_link_libraries(zlib_ada_test - PRIVATE - zlib_ada_Ada - zlib_ada_streams) - - ada_find_ali(zlib_ada_test) - - 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(zlib_ada_ada-test) - endif( - MSVC - OR MSYS - OR MINGW - OR CYGWIN) - - ada_add_executable(zlib_ada_buffer_demo buffer_demo.adb) - - target_link_libraries(zlib_ada_buffer_demo - PRIVATE - zlib_ada_Ada) - - ada_find_ali(zlib_ada_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(zlib_ada_buffer-demo) - endif( - MSVC - OR MSYS - OR MINGW - OR CYGWIN) - - ada_add_executable(zlib_ada_mtest mtest.adb) - - target_link_libraries(zlib_ada_mtest - PRIVATE - zlib_ada_Ada) - - ada_find_ali(zlib_ada_mtest) - - #Not adding test as this is an endless-loop - - ada_add_executable(zlib_ada_read read.adb) - - target_link_libraries(zlib_ada_read - PRIVATE - zlib_ada_Ada) - - ada_find_ali(zlib_ada_read) - - add_test(NAME zlib_ada_read COMMAND zlib_ada_read) - - if(MSVC - OR MSYS - OR MINGW - OR CYGWIN) - zlib_ada_findtestenv(zlib_ada_read) - endif( - MSVC - OR MSYS - OR MINGW - OR CYGWIN) - endif(ZLIB_ADA_BUILD_TESTING) endif(ZLIB_ADA_BUILD_SHARED) if(ZLIB_ADA_BUILD_STATIC) @@ -163,55 +77,9 @@ if(ZLIB_ADA_BUILD_STATIC) zlib_ada_AdaStatic) ada_find_ali(zlib_ada_streamsStatic) - - if(ZLIB_ADA_BUILD_TESTING) - enable_testing() - ada_add_executable(zlib_ada_testStatic test.adb) - - target_link_libraries(zlib_ada_testStatic - PRIVATE - zlib_ada_AdaStatic - zlib_ada_streamsStatic) - - ada_find_ali(zlib_ada_testStatic) - - 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(zlib_ada_buffer-demoStatic buffer_demo.adb) - - target_link_libraries(zlib_ada_buffer-demoStatic - PRIVATE - zlib_ada_AdaStatic) - - ada_find_ali(zlib_ada_buffer-demoStatic) - - add_test(NAME zlib_ada_buffer-demoStatic COMMAND zlib_ada_buffer-demoStatic) - - ada_add_executable(zlib_ada_mtestStatic mtest.adb) - - target_link_libraries(zlib_ada_mtestStatic - PRIVATE - zlib_ada_AdaStatic) - - ada_find_ali(zlib_ada_mtestStatic) - - # Not adding test as this is an endless-loop - - ada_add_executable(zlib_ada_readStatic read.adb) - - target_link_libraries(zlib_ada_readStatic - PRIVATE - zlib_ada_AdaStatic) - - ada_find_ali(zlib_ada_readStatic) - - add_test(NAME zlib_ada_readStatic COMMAND zlib_ada_readStatic) - endif(ZLIB_ADA_BUILD_TESTING) 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 - ${CMAKE_CURRENT_BINARY_DIR}/testzlib.out ${CMAKE_CURRENT_BINARY_DIR}/testzlib.zlb) - set_tests_properties(zlib_ada_cleanup PROPERTIES FIXTURES_CLEANUP zlib_ada_cleanup) + enable_testing() + add_subdirectory(test) endif(ZLIB_ADA_BUILD_TESTING) diff --git a/contrib/ada/cmake/Modules/CMakeADAInformation.cmake b/contrib/ada/cmake/Modules/CMakeADAInformation.cmake index 923788f4db..d0bcf4f294 100644 --- a/contrib/ada/cmake/Modules/CMakeADAInformation.cmake +++ b/contrib/ada/cmake/Modules/CMakeADAInformation.cmake @@ -90,6 +90,7 @@ function(ada_add_executable) set_target_properties(${ARGV0} PROPERTIES ADDITIONAL_CLEAN_FILES "${CLEAN_FILES}") + target_link_options(${ARGV0} PRIVATE "-aOCMakeFiles/${ARGV0}.dir/") endif(ARGC GREATER 1) endfunction(ada_add_executable) @@ -113,6 +114,7 @@ function(ada_add_library) PROPERTIES ADDITIONAL_CLEAN_FILES "${CLEAN_FILES};dummylib.adb;dummylib.ali;dummylib.o" ALI_FLAG "-aO${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${ARGV0}.dir/") + target_link_options(${ARGV0} PRIVATE "-aOCMakeFiles/${ARGV0}.dir/") endif(ARGC GREATER 2) endfunction(ada_add_library) diff --git a/contrib/ada/cmake/binder_helper.cmake b/contrib/ada/cmake/binder_helper.cmake index 87b320266d..b38d3b1deb 100644 --- a/contrib/ada/cmake/binder_helper.cmake +++ b/contrib/ada/cmake/binder_helper.cmake @@ -8,7 +8,9 @@ if(NOT CMAKE_ARGV3) message(FATAL_ERROR "binder not set") endif(NOT CMAKE_ARGV3) -string(REPLACE ".o" ".ali" ALI ${CMAKE_ARGV4}) +string(REPLACE ".o" ".ali" ALIPATH ${CMAKE_ARGV4}) +cmake_path(GET ALIPATH FILENAME ALI) +cmake_path(REMOVE_FILENAME ALIPATH OUTPUT_VARIABLE ALI_SEARCH_PATH) set (REACHED_FLAGS FALSE) #iterate over additional objects, only the main one is needed @@ -29,6 +31,8 @@ foreach(arg RANGE 5 ${CMAKE_ARGC}) endif(REACHED_FLAGS) endforeach(arg RANGE 5 CMAKE_ARGC) +list(APPEND FLAGS "-aO${ALI_SEARCH_PATH}") + #first see if there is a main function execute_process(COMMAND ${CMAKE_ARGV3} bind ${ALI} ${FLAGS} RESULT_VARIABLE MAIN_RESULT @@ -45,3 +49,5 @@ endif(MAIN_RESULT) if(RESULT) message(FATAL_ERROR ${RESULT} ${ERROR}) endif(RESULT) + +execute_process(COMMAND ${CMAKE_ARGV0} -E touch "${CMAKE_ARGV4}") diff --git a/contrib/ada/cmake/exe_link_helper.cmake b/contrib/ada/cmake/exe_link_helper.cmake index 7937890960..d556cc4608 100644 --- a/contrib/ada/cmake/exe_link_helper.cmake +++ b/contrib/ada/cmake/exe_link_helper.cmake @@ -33,7 +33,8 @@ foreach(arg RANGE 5 ${CMAKE_ARGC}) if(REACHED_LIBS) list(APPEND LIBS "${CMAKE_ARGV${arg}}") elseif(REACHED_OBJ AND NOT ALI) - string(REPLACE ".o" ".ali" ALI "${CMAKE_ARGV${arg}}") + string(REPLACE ".o" ".ali" ALIPATH "${CMAKE_ARGV${arg}}") + string(REPLACE "__/" "" ALI "${ALIPATH}") else(REACHED_LIBS) string(SUBSTRING "${CMAKE_ARGV${arg}}" 0 3 start) diff --git a/contrib/ada/test/CMakeLists.txt b/contrib/ada/test/CMakeLists.txt new file mode 100644 index 0000000000..937192143b --- /dev/null +++ b/contrib/ada/test/CMakeLists.txt @@ -0,0 +1,153 @@ +function(ZLIB_ADA_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(ZLIB_ADA_findTestEnv testName) + +if(ZLIB_ADA_BUILD_SHARED) + ada_add_executable(zlib_ada_test ${zlibAda_SOURCE_DIR}/test.adb) + + target_link_libraries(zlib_ada_test + PRIVATE + zlib_ada_Ada + zlib_ada_streams) + + ada_find_ali(zlib_ada_test) + + add_test(NAME zlib_ada_test COMMAND zlib_ada_test) + set_tests_properties(zlib_ada_test + PROPERTIES + FIXTURES_REQUIRED zlib_ada_cleanup + RESOURCE_LOCK ada_test_files) + + if(MSVC + OR MSYS + OR MINGW + OR CYGWIN) + zlib_ada_findtestenv(zlib_ada_ada-test) + endif( + MSVC + OR MSYS + OR MINGW + OR CYGWIN) + + ada_add_executable(zlib_ada_buffer_demo + ${zlibAda_SOURCE_DIR}/buffer_demo.adb) + + target_link_libraries(zlib_ada_buffer_demo + PRIVATE + zlib_ada_Ada) + + ada_find_ali(zlib_ada_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(zlib_ada_buffer-demo) + endif( + MSVC + OR MSYS + OR MINGW + OR CYGWIN) + + ada_add_executable(zlib_ada_mtest ${zlibAda_SOURCE_DIR}/mtest.adb) + + target_link_libraries(zlib_ada_mtest + PRIVATE + zlib_ada_Ada) + + ada_find_ali(zlib_ada_mtest) + + #Not adding test as this is an endless-loop + + ada_add_executable(zlib_ada_read ${zlibAda_SOURCE_DIR}/read.adb) + + target_link_libraries(zlib_ada_read + PRIVATE + zlib_ada_Ada) + + ada_find_ali(zlib_ada_read) + + add_test(NAME zlib_ada_read COMMAND zlib_ada_read) + + if(MSVC + OR MSYS + OR MINGW + OR CYGWIN) + zlib_ada_findtestenv(zlib_ada_read) + endif( + MSVC + OR MSYS + OR MINGW + OR CYGWIN) +endif(ZLIB_ADA_BUILD_SHARED) + +if(ZLIB_ADA_BUILD_STATIC) + ada_add_executable(zlib_ada_testStatic ${zlibAda_SOURCE_DIR}/test.adb) + + target_link_libraries(zlib_ada_testStatic + PRIVATE + zlib_ada_AdaStatic + zlib_ada_streamsStatic) + + ada_find_ali(zlib_ada_testStatic) + + add_test(NAME zlib_ada_testStatic COMMAND zlib_ada_testStatic) + set_tests_properties(zlib_ada_testStatic + PROPERTIES + FIXTURES_REQUIRED zlib_ada_cleanup + RESOURCE_LOCK ada_test_files) + + ada_add_executable(zlib_ada_buffer-demoStatic + ${zlibAda_SOURCE_DIR}/buffer_demo.adb) + + target_link_libraries(zlib_ada_buffer-demoStatic + PRIVATE + zlib_ada_AdaStatic) + + ada_find_ali(zlib_ada_buffer-demoStatic) + + add_test(NAME zlib_ada_buffer-demoStatic + COMMAND zlib_ada_buffer-demoStatic) + + ada_add_executable(zlib_ada_mtestStatic ${zlibAda_SOURCE_DIR}/mtest.adb) + + target_link_libraries(zlib_ada_mtestStatic + PRIVATE + zlib_ada_AdaStatic) + + ada_find_ali(zlib_ada_mtestStatic) + + # Not adding test as this is an endless-loop + + ada_add_executable(zlib_ada_readStatic ${zlibAda_SOURCE_DIR}/read.adb) + + target_link_libraries(zlib_ada_readStatic + PRIVATE + zlib_ada_AdaStatic) + + ada_find_ali(zlib_ada_readStatic) + + add_test(NAME zlib_ada_readStatic COMMAND zlib_ada_readStatic) +endif(ZLIB_ADA_BUILD_STATIC) + +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 zlib_ada_cleanup) diff --git a/contrib/blast/CMakeLists.txt b/contrib/blast/CMakeLists.txt index 9b20fdada8..cbfc412486 100644 --- a/contrib/blast/CMakeLists.txt +++ b/contrib/blast/CMakeLists.txt @@ -7,6 +7,13 @@ project( DESCRIPTION "A library for creating zipfiles based in zlib" HOMEPAGE_URL "https://www.zlib.net") +if(ZLIB_BUILD_BLAST) + set(ZLIB_BLAST_BUILD_SHARED ${ZLIB_BUILD_SHARED} CACHE BOOL "") + set(ZLIB_BLAST_BUILD_STATIC ${ZLIB_BUILD_STATIC} CACHE BOOL "") + set(ZLIB_BLAST_BUILD_TESTING ${ZLIB_BUILD_TESTING} CACHE BOOL "") + set(ZLIB_BLAST_INSTALL ${ZLIB_INSTALL} CACHE BOOL "") +endif(ZLIB_BUILD_BLAST) + 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) @@ -16,116 +23,66 @@ include(GNUInstallDirs) include(CMakePackageConfigHelpers) if(WIN32 OR CYGWIN) - set(zlibblast_static_suffix "s") + set(${ZLIB_CONTRIB_PREFIX}blast_static_suffix "s") set(CMAKE_DEBUG_POSTFIX "d") set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) 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(ZLIB_BLAST_BUILD_SHARED) - add_library(zlib_blast_blast SHARED + add_library(${ZLIB_CONTRIB_PREFIX}blast_blast SHARED blast.c blast.h) - add_library(BLAST::BLAST ALIAS zlib_blast_blast) + add_library(BLAST::BLAST ALIAS ${ZLIB_CONTRIB_PREFIX}blast_blast) if(NOT CYGWIN) - set_target_properties(zlib_blast_blast + set_target_properties(${ZLIB_CONTRIB_PREFIX}blast_blast PROPERTIES SOVERSION ${blast_VERSION_MAJOR} VERSION ${blast_VERSION}) endif(NOT CYGWIN) - set_target_properties(zlib_blast_blast + set_target_properties(${ZLIB_CONTRIB_PREFIX}blast_blast PROPERTIES EXPORT_NAME BLAST OUTPUT_NAME blast) - - if(ZLIB_BLAST_BUILD_TESTING) - enable_testing() - add_executable(zlib_blast_blast-test blast-test.c) - target_link_libraries(zlib_blast_blast-test PRIVATE zlib_blast_blast) - - 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}") - - if(MSVC - OR MSYS - OR MINGW - OR CYGWIN) - blast_findtestenv(zlib_blast_blast-test) - endif( - MSVC - OR MSYS - OR MINGW - OR CYGWIN) - endif(ZLIB_BLAST_BUILD_TESTING) endif(ZLIB_BLAST_BUILD_SHARED) if(ZLIB_BLAST_BUILD_STATIC) - add_library(zlib_blast_blastStatic STATIC + add_library(${ZLIB_CONTRIB_PREFIX}blast_blastStatic STATIC blast.c blast.h) - add_library(BLAST::BLASTSTATIC ALIAS zlib_blast_blastStatic) + add_library(BLAST::BLASTSTATIC ALIAS ${ZLIB_CONTRIB_PREFIX}blast_blastStatic) - set_target_properties(zlib_blast_blastStatic + set_target_properties(${ZLIB_CONTRIB_PREFIX}blast_blastStatic PROPERTIES EXPORT_NAME BLASTSTATIC - OUTPUT_NAME blast${zlibblast_static_suffix}) - - if(ZLIB_BLAST_BUILD_TESTING) - enable_testing() - add_executable(zlib_blast_testStatic blast-test.c) - target_link_libraries(zlib_blast_testStatic - PRIVATE zlib_blast_blastStatic) - - 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) + OUTPUT_NAME blast${${ZLIB_CONTRIB_PREFIX}blast_static_suffix}) endif(ZLIB_BLAST_BUILD_STATIC) if(ZLIB_BLAST_BUILD_TESTING) + enable_testing() add_subdirectory(test) endif(ZLIB_BLAST_BUILD_TESTING) if(ZLIB_BLAST_INSTALL) if(ZLIB_BLAST_BUILD_SHARED) install( - TARGETS zlib_blast_blast + TARGETS ${ZLIB_CONTRIB_PREFIX}blast_blast COMPONENT Runtime - EXPORT zlibBlastSharedExport + EXPORT blastSharedExport RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") install( - EXPORT zlibBlastSharedExport + EXPORT blastSharedExport FILE blast-shared.cmake NAMESPACE BLAST:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/blast) if(MSVC) install( - FILES $ + FILES $ COMPONENT Development DESTINATION ${CMAKE_INSTALL_BINDIR} CONFIGURATIONS Debug OR RelWithDebInfo @@ -135,12 +92,12 @@ if(ZLIB_BLAST_INSTALL) if(ZLIB_BLAST_BUILD_STATIC) install( - TARGETS zlib_blast_blastStatic + TARGETS ${ZLIB_CONTRIB_PREFIX}blast_blastStatic COMPONENT Development - EXPORT zlibBlastStaticExport + EXPORT blastStaticExport ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") install( - EXPORT zlibBlastStaticExport + EXPORT blastStaticExport FILE blast-static.cmake NAMESPACE BLAST:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/blast) diff --git a/contrib/blast/blastConfig.cmake.in b/contrib/blast/blastConfig.cmake.in index 5909ac4f58..f73b23d5c0 100644 --- a/contrib/blast/blastConfig.cmake.in +++ b/contrib/blast/blastConfig.cmake.in @@ -1,5 +1,3 @@ -@PACKAGE_INIT@ - set(_blast_supported_components "shared" "static") if(blast_FIND_COMPONENTS) @@ -9,10 +7,34 @@ if(blast_FIND_COMPONENTS) set(blast_NOT_FOUND_MESSAGE "Unsupported component: ${_comp}") endif(NOT _comp IN_LIST _blast_supported_components) - include("${CMAKE_CURRENT_LIST_DIR}/blast-${_comp}.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/blast-${_comp}.cmake" + OPTIONAL + RESULT_VARIABLE _comp_loaded) + + if(NOT _comp_loaded) + set(blast_FOUND False) + set(blast_NOT_FOUND_MESSAGE "Component ${_comp} not found.") + else(NOT _comp_loaded) + set(blast_${_comp}_FOUND TRUE) + endif(NOT _comp_loaded) 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") + include("${CMAKE_CURRENT_LIST_DIR}/blast-${_component_config}.cmake" + OPTIONAL) endforeach(_component_config IN LISTS _blast_supported_components) + + if(NOT TARGET BLAST::BLAST) + set(blast_FOUND False) + set(blast_NOT_FOUND_MESSAGE "Target ZLIB::ZLIB not created\n") + string(APPEND blast_NOT_FOUND_MESSAGE "build blast with support for shared libs or\n") + string(APPEND blast_NOT_FOUND_MESSAGE "specify COMPONENTS static in your find_package call") + endif(NOT TARGET BLAST::BLAST) + + if(NOT TARGET BLAST::BLASTSTATIC) + set(blast_FOUND False) + set(blast_NOT_FOUND_MESSAGE "Target ZLIB::ZLIBSTATIC not created\n") + string(APPEND blast_NOT_FOUND_MESSAGE "build blast with support for static libs or\n") + string(APPEND blast_NOT_FOUND_MESSAGE "specify COMPONENTS shared in your find_package call") + endif(NOT TARGET BLAST::BLASTSTATIC) endif(blast_FIND_COMPONENTS) diff --git a/contrib/blast/test/CMakeLists.txt b/contrib/blast/test/CMakeLists.txt index eb58681647..35542ba177 100644 --- a/contrib/blast/test/CMakeLists.txt +++ b/contrib/blast/test/CMakeLists.txt @@ -1,193 +1,261 @@ # if we are built from with zlib, use this path's) -if(DEFINED ZLIB_BUILD_BLAST) - set(WORK_DIR ${zlib_BINARY_DIR}) - 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}") +if (ZLIB_BLAST_INSTALL) + if(NOT DEFINED ZLIB_BUILD_BLAST) + set(WORK_DIR ${CMAKE_CURRENT_BINARY_DIR}) + set(inst_setup blast_install) + set(ZLIB_ARG "-DZLIB_DIR=${ZLIB_DIR}") + add_test( + NAME blast_install + COMMAND ${CMAKE_COMMAND} + --install ${blast_BINARY_DIR} + --prefix ${WORK_DIR}/test_install + --config $ + WORKING_DIRECTORY ${WORK_DIR}) + + set_tests_properties(blast_install + PROPERTIES + FIXTURES_SETUP blast_install) + endif(NOT DEFINED ZLIB_BUILD_BLAST) + + 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) + + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/find_package_test.cmake.in + ${WORK_DIR}/blast_find_package_test/CMakeLists.txt @ONLY) + + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/add_subdirectory_test.cmake.in + ${WORK_DIR}/blast_add_subdirectory_test/CMakeLists.txt @ONLY) + + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/add_subdirectory_exclude_test.cmake.in + ${WORK_DIR}/blast_add_subdirectory_exclude_test/CMakeLists.txt + @ONLY) + + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/find_package_no_components_test.cmake.in + ${WORK_DIR}/blast_find_package_no_components_test/CMakeLists.txt + @ONLY) + + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/find_package_wrong_components_test.cmake.in + ${WORK_DIR}/blast_find_package_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) + + # + # find_package_test + # 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}) + NAME ${ZLIB_CONTRIB_PREFIX}blast_find_package_configure + COMMAND + ${CMAKE_COMMAND} + ${PLATFORM} + -B${WORK_DIR}/blast_find_package_test_build + -DCMAKE_BUILD_TYPE=$ + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test_install + ${ZLIB_ARG} + $<$:--fresh> + -G "${CMAKE_GENERATOR}" + -S${WORK_DIR}/blast_find_package_test) - set_tests_properties(zlib_blast_install - PROPERTIES - FIXTURES_SETUP zlib_blast_install) -endif(DEFINED ZLIB_BUILD_BLAST) - -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 + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}blast_find_package_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY ${WORK_DIR}/blast_find_package_test_build) + + set_tests_properties(${ZLIB_CONTRIB_PREFIX}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 + set_tests_properties(${ZLIB_CONTRIB_PREFIX}blast_find_package_build PROPERTIES - FIXTURES_REQUIRED ${inst_setup}) + FIXTURES_REQUIRED blast_fp_config) -if(NOT ZLIB_BLAST_BUILD_SHARED OR NOT ZLIB_BLAST_BUILD_STATIC) - set_tests_properties(zlib_blast_find_package_no_components_configure + # + # add_subdirectory_test + # + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}blast_add_subdirectory_configure + COMMAND + ${CMAKE_COMMAND} + ${PLATFORM} + -B${WORK_DIR}/blast_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_install + ${ZLIB_ARG} + $<$:--fresh> + -G "${CMAKE_GENERATOR}" + -S${WORK_DIR}/blast_add_subdirectory_test) + + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}blast_add_subdirectory_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY ${WORK_DIR}/blast_add_subdirectory_test_build) + + set_tests_properties(${ZLIB_CONTRIB_PREFIX}blast_add_subdirectory_configure PROPERTIES - WILL_FAIL TRUE) -endif(NOT ZLIB_BLAST_BUILD_SHARED OR NOT ZLIB_BLAST_BUILD_STATIC) - -# -# findpackage_wrong_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) + FIXTURES_REQUIRED ${inst_setup} + FIXTURES_SETUP blast_as_config) + set_tests_properties(${ZLIB_CONTRIB_PREFIX}blast_add_subdirectory_build + PROPERTIES + FIXTURES_REQUIRED blast_as_config) + + # + # add_subdirectory_exclude_test + # + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}blast_add_subdirectory_exclude_configure + COMMAND + ${CMAKE_COMMAND} + ${PLATFORM} + -B${WORK_DIR}/blast_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_install + ${ZLIB_ARG} + $<$:--fresh> + -G "${CMAKE_GENERATOR}" + -S${WORK_DIR}/blast_add_subdirectory_exclude_test) + + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}blast_add_subdirectory_exclude_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY + ${WORK_DIR}/blast_add_subdirectory_exclude_test_build) + + set_tests_properties( + ${ZLIB_CONTRIB_PREFIX}blast_add_subdirectory_exclude_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + FIXTURES_SETUP blast_asx_config) + + set_tests_properties(${ZLIB_CONTRIB_PREFIX}blast_add_subdirectory_exclude_build + PROPERTIES + FIXTURES_REQUIRED blast_asx_config) + + # + # findpackage_no_components_test + # + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}blast_find_package_no_components_configure + COMMAND + ${CMAKE_COMMAND} + ${PLATFORM} + -B${WORK_DIR}/blast_find_package_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_install + ${ZLIB_ARG} + $<$:--fresh> + -G "${CMAKE_GENERATOR}" + -S${WORK_DIR}/blast_find_package_no_components_test) + + set_tests_properties( + ${ZLIB_CONTRIB_PREFIX}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_CONTRIB_PREFIX}blast_find_package_no_components_configure + PROPERTIES + WILL_FAIL TRUE) + endif(NOT ZLIB_BLAST_BUILD_SHARED OR NOT ZLIB_BLAST_BUILD_STATIC) + + # + # find_package_wrong_components_test + # + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}blast_find_package_wrong_components_configure + COMMAND + ${CMAKE_COMMAND} + ${PLATFORM} + -B${WORK_DIR}/blast_find_package_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_install + ${ZLIB_ARG} + $<$:--fresh> + -G "${CMAKE_GENERATOR}" + -S${WORK_DIR}/blast_find_package_wrong_components_test) + + set_tests_properties( + ${ZLIB_CONTRIB_PREFIX}blast_find_package_wrong_components_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + WILL_FAIL TRUE) +endif (ZLIB_BLAST_INSTALL) + +if(ZLIB_BLAST_BUILD_SHARED) + add_executable(${ZLIB_CONTRIB_PREFIX}blast_test + ${blast_SOURCE_DIR}/blast-test.c) + target_link_libraries(${ZLIB_CONTRIB_PREFIX}blast_test + PRIVATE + ${ZLIB_CONTRIB_PREFIX}blast_blast) + + add_test(NAME ${ZLIB_CONTRIB_PREFIX}blast_test + COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/tester.cmake + "$" + "${CMAKE_CURRENT_SOURCE_DIR}" + "${CMAKE_CURRENT_BINARY_DIR}") + set_tests_properties(${ZLIB_CONTRIB_PREFIX}blast_test + PROPERTIES + RESOURCE_LOCK blast_test_files) + + if(MSVC + OR MSYS + OR MINGW + OR CYGWIN) + blast_findtestenv(${ZLIB_CONTRIB_PREFIX}blast_test) + endif( + MSVC + OR MSYS + OR MINGW + OR CYGWIN) +endif(ZLIB_BLAST_BUILD_SHARED) + +if(ZLIB_BLAST_BUILD_STATIC) + add_executable(${ZLIB_CONTRIB_PREFIX}blast_testStatic + ${blast_SOURCE_DIR}/blast-test.c) + target_link_libraries(${ZLIB_CONTRIB_PREFIX}blast_testStatic + PRIVATE ${ZLIB_CONTRIB_PREFIX}blast_blastStatic) + + add_test(NAME ${ZLIB_CONTRIB_PREFIX}blast_testStatic + COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/tester.cmake + "$" + "${CMAKE_CURRENT_SOURCE_DIR}" + "${CMAKE_CURRENT_BINARY_DIR}") + set_tests_properties(${ZLIB_CONTRIB_PREFIX}blast_testStatic + PROPERTIES + RESOURCE_LOCK blast_test_files) +endif(ZLIB_BLAST_BUILD_STATIC) diff --git a/contrib/blast/test.pk b/contrib/blast/test/test.pk similarity index 100% rename from contrib/blast/test.pk rename to contrib/blast/test/test.pk diff --git a/contrib/blast/test.txt b/contrib/blast/test/test.txt similarity index 100% rename from contrib/blast/test.txt rename to contrib/blast/test/test.txt diff --git a/contrib/blast/tester.cmake b/contrib/blast/test/tester.cmake similarity index 100% rename from contrib/blast/tester.cmake rename to contrib/blast/test/tester.cmake diff --git a/contrib/delphi/ZLib.pas b/contrib/delphi/ZLib.pas index cda3b09e92..ef9047eb1f 100644 --- a/contrib/delphi/ZLib.pas +++ b/contrib/delphi/ZLib.pas @@ -152,7 +152,7 @@ procedure DecompressToUserBuf(const InBuf: Pointer; InBytes: Integer; const OutBuf: Pointer; BufSize: Integer); const - zlib_version = '1.3.2'; + zlib_version = '1.3.2.1'; type EZlibError = class(Exception); diff --git a/contrib/dotzlib/DotZLib/UnitTests.cs b/contrib/dotzlib/DotZLib/UnitTests.cs index 2714a4b474..2de5cbebaf 100644 --- a/contrib/dotzlib/DotZLib/UnitTests.cs +++ b/contrib/dotzlib/DotZLib/UnitTests.cs @@ -156,7 +156,7 @@ public class InfoTests public void Info_Version() { Info info = new Info(); - Assert.AreEqual("1.3.2", Info.Version); + Assert.AreEqual("1.3.2.1", Info.Version); Assert.AreEqual(32, info.SizeOfUInt); Assert.AreEqual(32, info.SizeOfULong); Assert.AreEqual(32, info.SizeOfPointer); diff --git a/contrib/gcc_gvmat64/CMakeLists.txt b/contrib/gcc_gvmat64/CMakeLists.txt index 53dd5a1907..e9f43c6ba0 100644 --- a/contrib/gcc_gvmat64/CMakeLists.txt +++ b/contrib/gcc_gvmat64/CMakeLists.txt @@ -1,19 +1,20 @@ -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(MSVC) - #cmake 4.1 doesn't consider cl an asm compiler - cmake_policy(SET CMP0194 NEW) + if(CMAKE_VERSION VERSION_GREATER_EQUAL 4.1) + cmake_policy(SET CMP0194 NEW) + endif(CMAKE_VERSION VERSION_GREATER_EQUAL 4.1) + + enable_language(ASM_MASM) +else(MSVC) + enable_language(ASM) endif(MSVC) +add_library(zlib_gvmat64 OBJECT gvmat64.S) +set_target_properties(zlib_gvmat64 PROPERTIES LINKER_LANGUAGE C) + if(ZLIB_BUILD_SHARED) - target_sources(zlib PRIVATE gvmat64.S) + target_sources(zlib PRIVATE $) endif(ZLIB_BUILD_SHARED) if(ZLIB_BUILD_STATIC) - target_sources(zlibstatic PRIVATE gvmat64.S) + target_sources(zlibstatic PRIVATE $) endif(ZLIB_BUILD_STATIC) diff --git a/contrib/infback9/inftree9.c b/contrib/infback9/inftree9.c index cb96cf8744..bfe71889e0 100644 --- a/contrib/infback9/inftree9.c +++ b/contrib/infback9/inftree9.c @@ -9,7 +9,7 @@ #define MAXBITS 15 const char inflate9_copyright[] = - " inflate9 1.3.2 Copyright 1995-2026 Mark Adler "; + " inflate9 1.3.2.1 Copyright 1995-2026 Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot @@ -59,7 +59,7 @@ int inflate_table9(codetype type, unsigned short FAR *lens, unsigned codes, static const unsigned short lext[31] = { /* Length codes 257..285 extra */ 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, 130, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 132, - 133, 133, 133, 133, 144, 199, 75}; + 133, 133, 133, 133, 144, 68, 193}; static const unsigned short dbase[32] = { /* Distance codes 0..31 base */ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, diff --git a/contrib/iostream3/CMakeLists.txt b/contrib/iostream3/CMakeLists.txt index e2ac480b74..8035bd6460 100644 --- a/contrib/iostream3/CMakeLists.txt +++ b/contrib/iostream3/CMakeLists.txt @@ -7,6 +7,13 @@ project( DESCRIPTION "A library for using C++ IOStreams with zlib V3" HOMEPAGE_URL "https://www.zlib.net") +if(ZLIB_BUILD_IOSTREAM3) + set(ZLIB_IOSTREAM3_BUILD_SHARED ${ZLIB_BUILD_SHARED} CACHE BOOL "") + set(ZLIB_IOSTREAM3_BUILD_STATIC ${ZLIB_BUILD_STATIC} CACHE BOOL "") + set(ZLIB_IOSTREAM3_BUILD_TESTING ${ZLIB_BUILD_TESTING} CACHE BOOL "") + set(ZLIB_IOSTREAM3_INSTALL ${ZLIB_INSTALL} CACHE BOOL "") +endif(ZLIB_BUILD_IOSTREAM3) + 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) @@ -28,138 +35,70 @@ if(NOT DEFINED ZLIB_BUILD_IOSTREAM3) endif(NOT DEFINED ZLIB_BUILD_IOSTREAM3) if(WIN32 OR CYGWIN) - set(zlibIOStream3_static_suffix "s") + set(${ZLIB_CONTRIB_PREFIX}IOStream3_static_suffix "s") set(CMAKE_DEBUG_POSTFIX "d") + set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) 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 + add_library(${ZLIB_CONTRIB_PREFIX}iostream3_iostreamv3 SHARED zfstream.cc zfstream.h) - add_library(IOSTREAMV3::IOSTREAMV3 ALIAS zlib_iostream3_iostreamv3) + add_library(IOSTREAMV3::IOSTREAMV3 ALIAS + ${ZLIB_CONTRIB_PREFIX}iostream3_iostreamv3) if(NOT CYGWIN) - set_target_properties(zlib_iostream3_iostreamv3 + set_target_properties(${ZLIB_CONTRIB_PREFIX}iostream3_iostreamv3 PROPERTIES SOVERSION ${iostreamV3_VERSION_MAJOR} VERSION ${iostreamV3_VERSION}) endif(NOT CYGWIN) - set_target_properties(zlib_iostream3_iostreamv3 + set_target_properties(${ZLIB_CONTRIB_PREFIX}iostream3_iostreamv3 PROPERTIES EXPORT_NAME IOSTREAMV3 OUTPUT_NAME iostream3) - target_link_libraries(zlib_iostream3_iostreamv3 + target_link_libraries(${ZLIB_CONTRIB_PREFIX}iostream3_iostreamv3 PUBLIC ZLIB::ZLIB) - - if(ZLIB_IOSTREAM3_BUILD_TESTING) - enable_testing() - - add_executable(zlib_iostream3_test test.cc zfstream.h) - - target_link_libraries(zlib_iostream3_test - 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) if(ZLIB_IOSTREAM3_BUILD_STATIC) - add_library(zlib_iostream3_iostreamv3Static STATIC + add_library(${ZLIB_CONTRIB_PREFIX}iostream3_iostreamv3Static STATIC zfstream.cc zfstream.h) add_library(IOSTREAMV3::IOSTREAMV3STATIC - ALIAS zlib_iostream3_iostreamv3Static) + ALIAS ${ZLIB_CONTRIB_PREFIX}iostream3_iostreamv3Static) - target_link_libraries(zlib_iostream3_iostreamv3Static + target_link_libraries(${ZLIB_CONTRIB_PREFIX}iostream3_iostreamv3Static PUBLIC ZLIB::ZLIBSTATIC) - set_target_properties(zlib_iostream3_iostreamv3Static + set_target_properties(${ZLIB_CONTRIB_PREFIX}iostream3_iostreamv3Static PROPERTIES EXPORT_NAME IOSTREAMV3STATIC - OUTPUT_NAME iostream3${zlib_IOStream3_static_suffix}) - - if(ZLIB_IOSTREAM3_BUILD_TESTING) - enable_testing() - - add_executable(zlib_iostream3_testStatic test.cc zfstream.h) - - target_link_libraries(zlib_iostream3_testStatic - PRIVATE zlib_iostream3_iostreamv3Static) - - add_test(NAME zlib_iostream3_testStatic - COMMAND zlib_iostream3_testStatic) - - set_tests_properties(zlib_iostream3_testStatic - PROPERTIES - FIXTURES_REQUIRED zlib_iostream3_cleanup) - endif(ZLIB_IOSTREAM3_BUILD_TESTING) + OUTPUT_NAME + iostream3${${ZLIB_CONTRIB_PREFIX}IOStream3_static_suffix}) 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) - - add_subdirectory(test) -endif(ZLIB_IOSTREAM3_BUILD_TESTING) - if(ZLIB_IOSTREAM3_INSTALL) if(ZLIB_IOSTREAM3_BUILD_SHARED) install( - TARGETS zlib_iostream3_iostreamv3 + TARGETS ${ZLIB_CONTRIB_PREFIX}iostream3_iostreamv3 COMPONENT Runtime - EXPORT zlibiostream3SharedExport + EXPORT iostream3SharedExport RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") install( - EXPORT zlibiostream3SharedExport + EXPORT iostream3SharedExport FILE iostreamv3-shared.cmake NAMESPACE IOSTREAMV3:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/iostreamv3) if(MSVC) install( - FILES $ + FILES + $ COMPONENT Development DESTINATION ${CMAKE_INSTALL_BINDIR} CONFIGURATIONS Debug OR RelWithDebInfo @@ -169,7 +108,7 @@ if(ZLIB_IOSTREAM3_INSTALL) if(ZLIB_IOSTREAM3_BUILD_STATIC) install( - TARGETS zlib_iostream3_iostreamv3Static + TARGETS ${ZLIB_CONTRIB_PREFIX}iostream3_iostreamv3Static COMPONENT Development EXPORT iostream3StaticExport ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") @@ -198,3 +137,8 @@ if(ZLIB_IOSTREAM3_INSTALL) COMPONENT Development DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") endif(ZLIB_IOSTREAM3_INSTALL) + +if(ZLIB_IOSTREAM3_BUILD_TESTING) + enable_testing() + add_subdirectory(test/) +endif(ZLIB_IOSTREAM3_BUILD_TESTING) diff --git a/contrib/iostream3/iostream3Config.cmake.in b/contrib/iostream3/iostream3Config.cmake.in index a3db5e8a9c..904c3a5bf9 100644 --- a/contrib/iostream3/iostream3Config.cmake.in +++ b/contrib/iostream3/iostream3Config.cmake.in @@ -1,5 +1,3 @@ -@PACKAGE_INIT@ - set(_iostreamv3_supported_components "shared" "static") include(CMakeFindDependencyMacro) @@ -12,12 +10,36 @@ if(iostreamv3_FIND_COMPONENTS) set(iostreamv3_NOT_FOUND_MESSAGE "Unsupported component: ${_comp}") endif(NOT _comp IN_LIST _iostreamv3_supported_components) - include("${CMAKE_CURRENT_LIST_DIR}/iostreamv3-${_comp}.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/iostreamv3-${_comp}.cmake" + OPTIONAL + RESULT_VARIABLE _comp_loaded) + + if(NOT _comp_loaded) + set(iostreamv3_FOUND False) + set(iostreamv3_NOT_FOUND_MESSAGE "Component ${_comp} not found.") + else(NOT _comp_loaded) + set(iostreamv3_${_comp}_FOUND TRUE) + endif(NOT _comp_loaded) 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") + include("${CMAKE_CURRENT_LIST_DIR}/iostreamv3-${_component_config}.cmake" + OPTIONAL) endforeach(_component_config IN LISTS _iostreamv3_supported_components) + + if(NOT TARGET IOSTREAMV3::IOSTREAMV3) + set(iostreamv3_FOUND False) + set(iostreamv3_NOT_FOUND_MESSAGE "Target ZLIB::ZLIB not created\n") + string(APPEND iostreamv3_NOT_FOUND_MESSAGE "build iostreamv3 with support for shared libs or\n") + string(APPEND iostreamv3_NOT_FOUND_MESSAGE "specify COMPONENTS static in your find_package call") + endif(NOT TARGET IOSTREAMV3::IOSTREAMV3) + + if(NOT TARGET IOSTREAMV3::IOSTREAMV3STATIC) + set(iostreamv3_FOUND False) + set(iostreamv3_NOT_FOUND_MESSAGE "Target ZLIB::ZLIBSTATIC not created\n") + string(APPEND iostreamv3_NOT_FOUND_MESSAGE "build iostreamv3 with support for static libs or\n") + string(APPEND iostreamv3_NOT_FOUND_MESSAGE "specify COMPONENTS shared in your find_package call") + endif(NOT TARGET IOSTREAMV3::IOSTREAMV3STATIC) endif(iostreamv3_FIND_COMPONENTS) diff --git a/contrib/iostream3/test/CMakeLists.txt b/contrib/iostream3/test/CMakeLists.txt index a36333de8a..88ba19dd62 100644 --- a/contrib/iostream3/test/CMakeLists.txt +++ b/contrib/iostream3/test/CMakeLists.txt @@ -1,191 +1,275 @@ # if we are built from with zlib, use this path's) -if(DEFINED ZLIB_BUILD_IOSTREAM3) - set(WORK_DIR ${zlib_BINARY_DIR}) - 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}") +if(ZLIB_IOSTREAM3_INSTALL) + if(NOT DEFINED ZLIB_BUILD_IOSTREAM3) + set(WORK_DIR ${CMAKE_CURRENT_BINARY_DIR}) + set(inst_setup ${ZLIB_CONTRIB_PREFIX}iostream3_install) + set(ZLIB_ARG "-DZLIB_DIR=${ZLIB_DIR}") + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}iostream3_install + COMMAND ${CMAKE_COMMAND} + --install ${iostreamV3_BINARY_DIR} + --prefix ${WORK_DIR}/test_install + --config $ + WORKING_DIRECTORY ${WORK_DIR}) + + set_tests_properties(${ZLIB_CONTRIB_PREFIX}iostream3_install + PROPERTIES + FIXTURES_SETUP ${ZLIB_CONTRIB_PREFIX}iostream3_install) + endif(NOT DEFINED ZLIB_BUILD_IOSTREAM3) + + 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) + + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/find_package_test.cmake.in + ${WORK_DIR}/iostream3_find_package_test/CMakeLists.txt @ONLY) + + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/add_subdirectory_test.cmake.in + ${WORK_DIR}/iostream3_add_subdirectory_test/CMakeLists.txt @ONLY) + + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/add_subdirectory_exclude_test.cmake.in + ${WORK_DIR}/iostream3_add_subdirectory_exclude_test/CMakeLists.txt + @ONLY) + + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/find_package_no_components_test.cmake.in + ${WORK_DIR}/iostream3_find_package_no_components_test/CMakeLists.txt + @ONLY) + + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/find_package_wrong_components_test.cmake.in + ${WORK_DIR}/iostream3_find_package_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_install - COMMAND ${CMAKE_COMMAND} --install ${iostreamV3_BINARY_DIR} --prefix - ${CMAKE_CURRENT_BINARY_DIR}/test_install --config $ - WORKING_DIRECTORY ${iostreamV3_BINARY_DIR}) + NAME ${ZLIB_CONTRIB_PREFIX}iostream3_find_package_configure + COMMAND + ${CMAKE_COMMAND} + ${PLATFORM} + -B${WORK_DIR}/iostream3_find_package_test_build + -DCMAKE_BUILD_TYPE=$ + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test_install + ${ZLIB_ARG} + $<$:--fresh> + -G "${CMAKE_GENERATOR}" + -S${WORK_DIR}/iostream3_find_package_test) - set_tests_properties(zlib_iostream3_install + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}iostream3_find_package_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY ${WORK_DIR}/iostream3_find_package_test_build) + + set_tests_properties(${ZLIB_CONTRIB_PREFIX}iostream3_find_package_configure PROPERTIES - FIXTURES_SETUP zlib_iostream3_install) -endif(DEFINED ZLIB_BUILD_IOSTREAM3) - -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) + 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_CONTRIB_PREFIX}iostream3_find_package_build + PROPERTIES + FIXTURES_REQUIRED iostream3_fp_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) + # + # add_subdirectory_test + # + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}iostream3_add_subdirectory_configure + COMMAND + ${CMAKE_COMMAND} + ${PLATFORM} + -B${WORK_DIR}/iostream3_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_install + ${ZLIB_ARG} + $<$:--fresh> + -G "${CMAKE_GENERATOR}" + -S${WORK_DIR}/iostream3_add_subdirectory_test) -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}) + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}iostream3_add_subdirectory_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY ${WORK_DIR}/iostream3_add_subdirectory_test_build) + + set_tests_properties(${ZLIB_CONTRIB_PREFIX}iostream3_add_subdirectory_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + FIXTURES_SETUP iostream3_as_config) -if(NOT ZLIB_IOSTREAM3_BUILD_SHARED OR NOT ZLIB_IOSTREAM3_BUILD_STATIC) - set_tests_properties(zlib_iostream3_find_package_no_components_configure + set_tests_properties(${ZLIB_CONTRIB_PREFIX}iostream3_add_subdirectory_build 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 + FIXTURES_REQUIRED iostream3_as_config) + + # + # add_subdirectory_exclude_test + # + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}iostream3_add_subdirectory_exclude_configure + COMMAND + ${CMAKE_COMMAND} + ${PLATFORM} + -B${WORK_DIR}/iostream3_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_install + ${ZLIB_ARG} + $<$:--fresh> + -G "${CMAKE_GENERATOR}" + -S${WORK_DIR}/iostream3_add_subdirectory_exclude_test) + + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}iostream3_add_subdirectory_exclude_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY + ${WORK_DIR}/iostream3_add_subdirectory_exclude_test_build) + + set_tests_properties( + ${ZLIB_CONTRIB_PREFIX}iostream3_add_subdirectory_exclude_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + FIXTURES_SETUP iostream3_asx_config) + + set_tests_properties( + ${ZLIB_CONTRIB_PREFIX}iostream3_add_subdirectory_exclude_build + PROPERTIES + FIXTURES_REQUIRED iostream3_asx_config) + + # + # find_package_no_components_test + # + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}iostream3_find_package_no_components_configure + COMMAND + ${CMAKE_COMMAND} + ${PLATFORM} + -B${WORK_DIR}/iostream3_find_package_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_install + ${ZLIB_ARG} + $<$:--fresh> + -G "${CMAKE_GENERATOR}" + -S${WORK_DIR}/iostream3_find_package_no_components_test) + + set_tests_properties( + ${ZLIB_CONTRIB_PREFIX}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_CONTRIB_PREFIX}iostream3_find_package_no_components_configure + PROPERTIES + WILL_FAIL TRUE) + endif(NOT ZLIB_IOSTREAM3_BUILD_SHARED OR NOT ZLIB_IOSTREAM3_BUILD_STATIC) + + # + # find_package_no_components_test + # + add_test( + NAME + ${ZLIB_CONTRIB_PREFIX}iostream3_find_package_wrong_components_configure + COMMAND + ${CMAKE_COMMAND} + ${PLATFORM} + -B${WORK_DIR}/iostream3_find_package_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_install + ${ZLIB_ARG} + $<$:--fresh> + -G "${CMAKE_GENERATOR}" + -S${WORK_DIR}/iostream3_find_package_wrong_components_test) + + set_tests_properties( + ${ZLIB_CONTRIB_PREFIX}iostream3_find_package_wrong_components_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + WILL_FAIL TRUE) +endif(ZLIB_IOSTREAM3_INSTALL) + +if(ZLIB_IOSTREAM3_BUILD_SHARED) + add_executable(${ZLIB_CONTRIB_PREFIX}iostream3_test + ${iostreamV3_SOURCE_DIR}/test.cc + ${iostreamV3_SOURCE_DIR}/zfstream.h) + + target_link_libraries(${ZLIB_CONTRIB_PREFIX}iostream3_test + PRIVATE IOSTREAMV3::IOSTREAMV3) + + add_test(NAME ${ZLIB_CONTRIB_PREFIX}iostream3_test + COMMAND ${ZLIB_CONTRIB_PREFIX}iostream3_test) + + set_tests_properties(${ZLIB_CONTRIB_PREFIX}iostream3_test + PROPERTIES + FIXTURES_SETUP iostream3_tests + RESOURCE_LOCK iostram_txt_gz) + + if(MSVC + OR MSYS + OR MINGW + OR CYGWIN) + iostreamv3_findtestenv(${ZLIB_CONTRIB_PREFIX}iostream3_test) + endif( + MSVC + OR MSYS + OR MINGW + OR CYGWIN) +endif(ZLIB_IOSTREAM3_BUILD_SHARED) + +if(ZLIB_IOSTREAM3_BUILD_STATIC) + add_executable(${ZLIB_CONTRIB_PREFIX}iostream3_testStatic + ${iostreamV3_SOURCE_DIR}/test.cc + ${iostreamV3_SOURCE_DIR}/zfstream.h) + + target_link_libraries(${ZLIB_CONTRIB_PREFIX}iostream3_testStatic + PRIVATE IOSTREAMV3::IOSTREAMV3STATIC) + + add_test(NAME ${ZLIB_CONTRIB_PREFIX}iostream3_testStatic + COMMAND ${ZLIB_CONTRIB_PREFIX}iostream3_testStatic) + + set_tests_properties(${ZLIB_CONTRIB_PREFIX}iostream3_testStatic + PROPERTIES + FIXTURES_SETUP iostream3_tests + RESOURCE_LOCK iostram_txt_gz) +endif(ZLIB_IOSTREAM3_BUILD_STATIC) + +add_test(NAME ${ZLIB_CONTRIB_PREFIX}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_CONTRIB_PREFIX}iostream3_cleanup PROPERTIES - FIXTURES_REQUIRED ${inst_setup} - WILL_FAIL TRUE) + FIXTURES_CLEANUP iostream3_tests) diff --git a/contrib/minizip/CMakeLists.txt b/contrib/minizip/CMakeLists.txt index 80ccf99061..11606945d8 100644 --- a/contrib/minizip/CMakeLists.txt +++ b/contrib/minizip/CMakeLists.txt @@ -7,11 +7,6 @@ project( DESCRIPTION "A library for creating zipfiles based in zlib" HOMEPAGE_URL "https://www.winimage.com/zLibDll/minizip.html") -if(CMAKE_SIZEOF_VOID_P LESS 8 AND NOT MINGW) - message(WARNING "libminizip needs 64bit - stopping here") - return() -endif(CMAKE_SIZEOF_VOID_P LESS 8 AND NOT MINGW) - # ============================================================================ # CPack # ============================================================================ @@ -131,96 +126,164 @@ set(MINIUNZIP_HDRS if(WIN32 OR CYGWIN) set(minizip_static_suffix "s") set(CMAKE_DEBUG_POSTFIX "d") + set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) endif(WIN32 OR CYGWIN) if(MINIZIP_BUILD_SHARED) - set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) - add_library(libminizip SHARED ${LIBMINIZIP_SRCS} ${LIBMINIZIP_HDRS}) - add_library(MINIZIP::minizip ALIAS libminizip) - target_include_directories( - libminizip PUBLIC $ - $) - target_compile_definitions( - libminizip - PRIVATE $<$:_CRT_SECURE_NO_WARNINGS> - $<$:HAVE_HIDDEN> - $<$:HAVE_UNISTD_H=1> - PUBLIC $<$:_LARGEFILE64_SOURCE=1> - $<$:HAVE_BZIP2=1> - $<$:USE_FILE32API=1>) - - if(NOT CYGWIN) - set_target_properties(libminizip PROPERTIES SOVERSION - ${minizip_VERSION_MAJOR}) - endif(NOT CYGWIN) - - set_target_properties( - libminizip - PROPERTIES EXPORT_NAME minizip - OUTPUT_NAME minizip - VERSION ${minizip_VERSION} - SOVERSION ${minizip_VERSION_MAJOR}) - - target_link_libraries(libminizip - PUBLIC ZLIB::ZLIB + add_library(${ZLIB_CONTRIB_PREFIX}libminizip SHARED + ${LIBMINIZIP_SRCS} + ${LIBMINIZIP_HDRS}) + add_library(MINIZIP::minizip ALIAS ${ZLIB_CONTRIB_PREFIX}libminizip) + target_include_directories(${ZLIB_CONTRIB_PREFIX}libminizip + PUBLIC + $ + $) + target_compile_definitions(${ZLIB_CONTRIB_PREFIX}libminizip + PRIVATE + $<$:_CRT_SECURE_NO_WARNINGS> + $<$:HAVE_HIDDEN> + $<$:HAVE_UNISTD_H=1> + PUBLIC + $<$:_LARGEFILE64_SOURCE=1> + $<$:HAVE_BZIP2=1> + $<$:USE_FILE32API=1>) + + if(CYGWIN) + set_target_properties(${ZLIB_CONTRIB_PREFIX}libminizip + PROPERTIES + PREFIX "lib") + else(CYGWIN) + set_target_properties(${ZLIB_CONTRIB_PREFIX}libminizip + PROPERTIES + SOVERSION ${zlib_VERSION_MAJOR} + VERSION ${INSTALL_VERSION}) + endif(CYGWIN) + + set_target_properties(${ZLIB_CONTRIB_PREFIX}libminizip + PROPERTIES + EXPORT_NAME minizip) + + if(MSVC) + set_target_properties(${ZLIB_CONTRIB_PREFIX}libminizip + PROPERTIES + OUTPUT_NAME libminizip) + else(MSVC) + set_target_properties(${ZLIB_CONTRIB_PREFIX}libminizip + PROPERTIES + OUTPUT_NAME minizip) + endif(MSVC) + + target_link_libraries(${ZLIB_CONTRIB_PREFIX}libminizip + PUBLIC + ZLIB::ZLIB $<$:BZip2::BZip2>) - add_executable(minizip ${MINIZIP_SRCS} ${MINIZIP_HDRS}) - set_target_properties(minizip PROPERTIES EXPORT_NAME minizip_executable) - target_compile_definitions( - minizip PRIVATE $<$:_CRT_SECURE_NO_WARNINGS>) - target_link_libraries(minizip PRIVATE MINIZIP::minizip) - add_executable(miniunzip ${MINIUNZIP_SRCS} ${MINIUNZIP_HDRS}) - set_target_properties(miniunzip PROPERTIES EXPORT_NAME miniunzip_executable) - target_compile_definitions( - miniunzip PRIVATE $<$:_CRT_SECURE_NO_WARNINGS>) - target_link_libraries(miniunzip PRIVATE MINIZIP::minizip) + add_executable(${ZLIB_CONTRIB_PREFIX}minizip + ${MINIZIP_SRCS} + ${MINIZIP_HDRS}) + set_target_properties(${ZLIB_CONTRIB_PREFIX}minizip + PROPERTIES + EXPORT_NAME minizip_executable + OUTPUT_NAME minizip) + target_compile_definitions(${ZLIB_CONTRIB_PREFIX}minizip + PRIVATE $<$:_CRT_SECURE_NO_WARNINGS>) + target_link_libraries(${ZLIB_CONTRIB_PREFIX}minizip + PRIVATE MINIZIP::minizip) + add_executable(${ZLIB_CONTRIB_PREFIX}miniunzip + ${MINIUNZIP_SRCS} + ${MINIUNZIP_HDRS}) + set_target_properties(${ZLIB_CONTRIB_PREFIX}miniunzip + PROPERTIES + EXPORT_NAME miniunzip_executable + OUTPUT_NAME miniunzip) + target_compile_definitions(${ZLIB_CONTRIB_PREFIX}miniunzip + PRIVATE $<$:_CRT_SECURE_NO_WARNINGS>) + target_link_libraries(${ZLIB_CONTRIB_PREFIX}miniunzip + PRIVATE MINIZIP::minizip) endif(MINIZIP_BUILD_SHARED) if(MINIZIP_BUILD_STATIC) - add_library(libminizipstatic STATIC ${LIBMINIZIP_SRCS} ${LIBMINIZIP_HDRS}) - add_library(MINIZIP::minizipstatic ALIAS libminizipstatic) - target_include_directories( - libminizipstatic - PUBLIC $ - $) - target_compile_definitions( - libminizipstatic - PRIVATE $<$:_CRT_SECURE_NO_WARNINGS> - $<$:HAVE_HIDDEN> - $<$:HAVE_UNISTD_H=1> - PUBLIC $<$:_LARGEFILE64_SOURCE=1> - $<$:HAVE_BZIP2=1> - $<$:USE_FILE32API=1>) - set_target_properties( - libminizipstatic PROPERTIES EXPORT_NAME minizipstatic - OUTPUT_NAME minizip${minizip_static_suffix}) + add_library(${ZLIB_CONTRIB_PREFIX}libminizipstatic + STATIC + ${LIBMINIZIP_SRCS} + ${LIBMINIZIP_HDRS}) + add_library(MINIZIP::minizipstatic ALIAS + ${ZLIB_CONTRIB_PREFIX}libminizipstatic) + target_include_directories(${ZLIB_CONTRIB_PREFIX}libminizipstatic + PUBLIC + $ + $) + target_compile_definitions(${ZLIB_CONTRIB_PREFIX}libminizipstatic + PRIVATE + $<$:_CRT_SECURE_NO_WARNINGS> + $<$:HAVE_HIDDEN> + $<$:HAVE_UNISTD_H=1> + PUBLIC + $<$:_LARGEFILE64_SOURCE=1> + $<$:HAVE_BZIP2=1> + $<$:USE_FILE32API=1>) + set_target_properties(${ZLIB_CONTRIB_PREFIX}libminizipstatic + PROPERTIES + EXPORT_NAME minizipstatic) + + if(CYGWIN) + set_target_properties(${ZLIB_CONTRIB_PREFIX}libminizipstatic + PROPERTIES + PREFIX "lib") + endif(CYGWIN) + + if(MSVC) + set_target_properties(${ZLIB_CONTRIB_PREFIX}libminizipstatic + PROPERTIES + ARCHIVE_OUTPUT_NAME libminizip${minizip_static_suffix}) + else(MSVC) + set_target_properties(${ZLIB_CONTRIB_PREFIX}libminizipstatic + PROPERTIES + ARCHIVE_OUTPUT_NAME minizip${minizip_static_suffix}) + endif(MSVC) if(CYGWIN) - set_target_properties(libminizipstatic PROPERTIES SUFFIX ".dll.a") + set_target_properties(${ZLIB_CONTRIB_PREFIX}libminizipstatic + PROPERTIES + SUFFIX ".dll.a") endif(CYGWIN) - target_link_libraries(libminizipstatic PUBLIC ZLIB::ZLIBSTATIC - $<$:BZip2::BZip2>) - - add_executable(minizipstatic ${MINIZIP_SRCS} ${MINIZIP_HDRS}) - set_target_properties(minizipstatic PROPERTIES EXPORT_NAME - minizip_static_executable) - target_compile_definitions( - minizipstatic PRIVATE $<$:_CRT_SECURE_NO_WARNINGS>) - target_link_libraries(minizipstatic PRIVATE MINIZIP::minizipstatic) - add_executable(miniunzipstatic ${MINIUNZIP_SRCS} ${MINIUNZIP_HDRS}) - set_target_properties(miniunzipstatic - PROPERTIES EXPORT_NAME miniunzip_static_executable) - target_compile_definitions( - miniunzipstatic PRIVATE $<$:_CRT_SECURE_NO_WARNINGS>) - target_link_libraries(miniunzipstatic PRIVATE MINIZIP::minizipstatic) + target_link_libraries(${ZLIB_CONTRIB_PREFIX}libminizipstatic + PUBLIC + ZLIB::ZLIBSTATIC + $<$:BZip2::BZip2>) + + add_executable(${ZLIB_CONTRIB_PREFIX}minizipstatic + ${MINIZIP_SRCS} + ${MINIZIP_HDRS}) + set_target_properties(${ZLIB_CONTRIB_PREFIX}minizipstatic + PROPERTIES + EXPORT_NAME minizip_static_executable + OUTPUT_NAME minizipstatic) + target_compile_definitions(${ZLIB_CONTRIB_PREFIX}minizipstatic + PRIVATE $<$:_CRT_SECURE_NO_WARNINGS>) + target_link_libraries(${ZLIB_CONTRIB_PREFIX}minizipstatic + PRIVATE MINIZIP::minizipstatic) + add_executable(${ZLIB_CONTRIB_PREFIX}miniunzipstatic + ${MINIUNZIP_SRCS} + ${MINIUNZIP_HDRS}) + set_target_properties(${ZLIB_CONTRIB_PREFIX}miniunzipstatic + PROPERTIES + EXPORT_NAME miniunzip_static_executable + OUTPUT_NAME miniunzipstatic) + target_compile_definitions(${ZLIB_CONTRIB_PREFIX}miniunzipstatic + PRIVATE $<$:_CRT_SECURE_NO_WARNINGS>) + target_link_libraries(${ZLIB_CONTRIB_PREFIX}miniunzipstatic + PRIVATE MINIZIP::minizipstatic) endif(MINIZIP_BUILD_STATIC) if(MINIZIP_INSTALL) if(MINIZIP_BUILD_SHARED) install( - TARGETS libminizip minizip miniunzip + TARGETS + ${ZLIB_CONTRIB_PREFIX}libminizip + ${ZLIB_CONTRIB_PREFIX}minizip + ${ZLIB_CONTRIB_PREFIX}miniunzip COMPONENT Runtime EXPORT minizipSharedExport RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" @@ -234,7 +297,7 @@ if(MINIZIP_INSTALL) if(MSVC) install( - FILES $ + FILES $ COMPONENT Runtime DESTINATION ${CMAKE_INSTALL_BINDIR} CONFIGURATIONS Debug OR RelWithDebInfo @@ -244,9 +307,11 @@ if(MINIZIP_INSTALL) if(MINIZIP_BUILD_STATIC) install( - TARGETS libminizipstatic + TARGETS + ${ZLIB_CONTRIB_PREFIX}libminizipstatic + ${ZLIB_CONTRIB_PREFIX}minizipstatic + ${ZLIB_CONTRIB_PREFIX}miniunzipstatic COMPONENT Development - TARGETS minizipstatic miniunzipstatic COMPONENT Runtime EXPORT minizipStaticExport RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" @@ -278,110 +343,5 @@ endif(MINIZIP_INSTALL) if(MINIZIP_BUILD_TESTING) enable_testing() - - if(MINIZIP_BUILD_SHARED AND NOT ${CMAKE_SHARED_LIBRARY_SUFFIX} STREQUAL - ".dll") - add_test( - NAME minizip_prepare_shared_zip - COMMAND ${CMAKE_COMMAND} -DCREATE_SHARED=ON -P - ${CMAKE_CURRENT_SOURCE_DIR}/test/test_helper.cm - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test) - add_test( - NAME minizip_zipping_test_file_shared - COMMAND minizip test_file_shared.zip test_file_shared.txt - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test) - add_test( - NAME minizip_prepare_shared_unzip - COMMAND ${CMAKE_COMMAND} -DMOVE_SHARED=ON -P - ${CMAKE_CURRENT_SOURCE_DIR}/test/test_helper.cm - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test) - add_test( - NAME minizip_miniunzipping_test_file_shared.zip - COMMAND miniunzip test_file_shared.zip - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test) - add_test( - NAME minizip_compare_shared - COMMAND ${CMAKE_COMMAND} -E compare_files test_file_shared.txt - test_file_shared.orig - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test) - add_test( - NAME minizip_clean_shared_zip - COMMAND ${CMAKE_COMMAND} -DDELETE_SHARED=ON -P - ${CMAKE_CURRENT_SOURCE_DIR}/test/test_helper.cm - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test) - set_tests_properties(minizip_prepare_shared_zip - PROPERTIES FIXTURES_SETUP prepare_shared) - set_tests_properties( - minizip_zipping_test_file_shared - PROPERTIES FIXTURES_REQUIRED prepare_shared FIXTURES_SETUP - zip_shared) - set_tests_properties( - minizip_prepare_shared_unzip - PROPERTIES FIXTURES_REQUIRED zip_shared FIXTURES_SETUP - prepare_unzip_shared) - set_tests_properties( - minizip_miniunzipping_test_file_shared.zip - PROPERTIES FIXTURES_REQUIRED prepare_unzip_shared FIXTURES_SETUP - prepare_compare_shared) - set_tests_properties( - minizip_compare_shared - PROPERTIES FIXTURES_REQUIRED prepare_compare_shared FIXTURES_SETUP - compared_shared) - set_tests_properties(minizip_clean_shared_zip - PROPERTIES FIXTURES_CLEANUP compared_shared) - endif(MINIZIP_BUILD_SHARED AND NOT ${CMAKE_SHARED_LIBRARY_SUFFIX} STREQUAL - ".dll") - - if(MINIZIP_BUILD_STATIC) - add_test( - NAME minizip_prepare_static_zip - COMMAND ${CMAKE_COMMAND} -DCREATE_STATIC=ON -P - ${CMAKE_CURRENT_SOURCE_DIR}/test/test_helper.cm - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test) - add_test( - NAME minizip_zipping_test_file_static - COMMAND minizipstatic test_file_static.zip test_file_static.txt - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test) - add_test( - NAME minizip_prepare_static_unzip - COMMAND ${CMAKE_COMMAND} -DMOVE_STATIC=ON -P - ${CMAKE_CURRENT_SOURCE_DIR}/test/test_helper.cm - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test) - add_test( - NAME minizip_miniunzipping_test_file_static.zip - COMMAND miniunzipstatic test_file_static.zip - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test) - add_test( - NAME minizip_compare_static - COMMAND ${CMAKE_COMMAND} -E compare_files test_file_static.txt - test_file_static.orig - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test) - add_test( - NAME minizip_clean_static_zip - COMMAND ${CMAKE_COMMAND} -DDELETE_STATIC=ON -P - ${CMAKE_CURRENT_SOURCE_DIR}/test/test_helper.cm - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test) - set_tests_properties(minizip_prepare_static_zip - PROPERTIES FIXTURES_SETUP prepare_static) - set_tests_properties( - minizip_zipping_test_file_static - PROPERTIES FIXTURES_REQUIRED prepare_static FIXTURES_SETUP - zip_static) - set_tests_properties( - minizip_prepare_static_unzip - PROPERTIES FIXTURES_REQUIRED zip_static FIXTURES_SETUP - prepare_unzip_static) - set_tests_properties( - minizip_miniunzipping_test_file_static.zip - PROPERTIES FIXTURES_REQUIRED prepare_unzip_static FIXTURES_SETUP - prepare_compare_static) - set_tests_properties( - minizip_compare_static - PROPERTIES FIXTURES_REQUIRED prepare_compare_static FIXTURES_SETUP - compared_static) - set_tests_properties(minizip_clean_static_zip - PROPERTIES FIXTURES_CLEANUP compared_static) - endif(MINIZIP_BUILD_STATIC) - add_subdirectory(test) endif(MINIZIP_BUILD_TESTING) diff --git a/contrib/minizip/Makefile.am b/contrib/minizip/Makefile.am index d343011ebc..b7dea4f7e7 100644 --- a/contrib/minizip/Makefile.am +++ b/contrib/minizip/Makefile.am @@ -27,6 +27,7 @@ libminizip_la_LDFLAGS = $(AM_LDFLAGS) -version-info 1:0:0 -lz minizip_includedir = $(includedir)/minizip minizip_include_HEADERS = \ crypt.h \ + ints.h \ ioapi.h \ mztools.h \ unzip.h \ diff --git a/contrib/minizip/configure.ac b/contrib/minizip/configure.ac index b739fa0c73..9be42628ab 100644 --- a/contrib/minizip/configure.ac +++ b/contrib/minizip/configure.ac @@ -1,7 +1,7 @@ # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. -AC_INIT([minizip], [1.3.2], [bugzilla.redhat.com]) +AC_INIT([minizip], [1.3.2.1], [bugzilla.redhat.com]) AC_CONFIG_SRCDIR([minizip.c]) AM_INIT_AUTOMAKE([foreign]) LT_INIT diff --git a/contrib/minizip/minizipConfig.cmake.in b/contrib/minizip/minizipConfig.cmake.in index f2fb3052f0..0c8254ddb8 100644 --- a/contrib/minizip/minizipConfig.cmake.in +++ b/contrib/minizip/minizipConfig.cmake.in @@ -1,11 +1,15 @@ -@PACKAGE_INIT@ - set(_MINIZIP_supported_components "shared" "static") include(CMakeFindDependencyMacro) -if(@MINIZIP_ENABLE_BZIP2@) +set(minizip_HAS_BZIP2 + @MINIZIP_ENABLE_BZIP2@ + CACHE + Bool + "Indicates if minizip was compiled with bzip2 support") + +if(minizip_HAS_BZIP2) find_dependency(BZip2) -endif(@MINIZIP_ENABLE_BZIP2@) +endif(minizip_HAS_BZIP2) if(minizip_FIND_COMPONENTS) find_dependency(ZLIB CONFIG COMPONENTS ${minizip_FIND_COMPONENTS}) @@ -16,12 +20,36 @@ if(minizip_FIND_COMPONENTS) set(minizip_NOT_FOUND_MESSAGE "Unsupported component: ${_comp}") endif(NOT _comp IN_LIST _MINIZIP_supported_components) - include("${CMAKE_CURRENT_LIST_DIR}/minizip-${_comp}.cmake") - endforeach(_comp ${ZLIB_FIND_COMPONENTS}) + include("${CMAKE_CURRENT_LIST_DIR}/minizip-${_comp}.cmake" + OPTIONAL + RESULT_VARIABLE _comp_loaded) + + if(NOT _comp_loaded) + set(minizip_FOUND False) + set(minizip_NOT_FOUND_MESSAGE "Component ${_comp} not found.") + else(NOT _comp_loaded) + set(minizip_${_comp}_FOUND TRUE) + endif(NOT _comp_loaded) + endforeach(_comp ${minizip_FIND_COMPONENTS}) else(minizip_FIND_COMPONENTS) find_dependency(ZLIB CONFIG) foreach(_component_config IN LISTS _MINIZIP_supported_components) - include("${CMAKE_CURRENT_LIST_DIR}/minizip-${_component_config}.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/minizip-${_component_config}.cmake" + OPTIONAL) endforeach(_component_config IN LISTS _MINIZIP_supported_components) + + if(NOT TARGET MINIZIP::minizip) + set(minizip_FOUND False) + set(minizip_NOT_FOUND_MESSAGE "Target ZLIB::ZLIB not created\n") + string(APPEND minizip_NOT_FOUND_MESSAGE "build minizip with support for shared libs or\n") + string(APPEND minizip_NOT_FOUND_MESSAGE "specify COMPONENTS static in your find_package call") + endif(NOT TARGET ZLIB::ZLIB) + + if(NOT TARGET MINIZIP::minizipstatic) + set(minizip_FOUND False) + set(minizip_NOT_FOUND_MESSAGE "Target ZLIB::ZLIBSTATIC not created\n") + string(APPEND minizip_NOT_FOUND_MESSAGE "build minizip with support for static libs or\n") + string(APPEND minizip_NOT_FOUND_MESSAGE "specify COMPONENTS shared in your find_package call") + endif(NOT TARGET ZLIB::ZLIBSTATIC) endif(minizip_FIND_COMPONENTS) diff --git a/contrib/minizip/skipset.h b/contrib/minizip/skipset.h index ec4d4ab4dc..ad09dd09b1 100644 --- a/contrib/minizip/skipset.h +++ b/contrib/minizip/skipset.h @@ -1,56 +1,59 @@ /* skipset.h -- set operations using a skiplist -// Copyright (C) 2024-2026 Mark Adler -// See MiniZip_info.txt for the license. - -// This implements a skiplist set, i.e. just keys, no data, with ~O(log n) time -// insert and search operations. The application defines the type of a key, and -// provides a function to compare two keys. - -// This header is not definitions of functions found in another source file -- -// it creates the set functions, with the application's key type, right where -// the #include is. Before this header is #included, these must be defined: -// -// 1. A macro or typedef for set_key_t, the type of a key. -// 2. A macro or function set_cmp(a, b) to compare two keys. The return values -// are < 0 for a < b, 0 for a == b, and > 0 for a > b. -// 3. A macro or function set_drop(s, k) to release the key k's resources, if -// any, when doing a set_end() or set_clear(). s is a pointer to the set -// that key is in, for use with set_free() if desired. -// -// Example usage: -// -// typedef int set_key_t; -// #define set_cmp(a, b) ((a) < (b) ? -1 : (a) == (b) ? 0 : 1) -// #define set_drop(s, k) -// #include "skipset.h" -// -// int test(void) { // return 0: good, 1: bad, -1: out of memory -// set_t set; -// if (setjmp(set.env)) -// return -1; -// set_start(&set); -// set_insert(&set, 2); -// set_insert(&set, 1); -// set_insert(&set, 7); -// int bad = !set_found(&set, 2); -// bad = bad || set_found(&set, 5); -// set_end(&set); -// return bad; -// } -// -// Interface summary (see more details below): -// - set_t is the type of the set being operated on (a set_t pointer is passed) -// - set_start() initializes a new, empty set (initialize set.env first) -// - set_insert() inserts a new key into the set, or not if it's already there -// - set_found() determines whether or not a key is in the set -// - set_end() ends the use of the set, freeing all memory -// - set_clear() empties the set, equivalent to set_end() and then set_start() -// - set_ok() checks if set appears to be usable, i.e. started and not ended -// -// Auxiliary functions available to the application: -// - set_alloc() allocates memory with optional tracking (#define SET_TRACK) -// - set_free() deallocates memory allocated by set_alloc() -// - set_rand() returns 32 random bits (seeded by set_start()) */ + Copyright (C) 2024-2026 Mark Adler + See MiniZip_info.txt for the license. + */ + +/* + This implements a skiplist set, i.e. just keys, no data, with ~O(log n) time + insert and search operations. The application defines the type of a key, and + provides a function to compare two keys. + + This header is not definitions of functions found in another source file -- + it creates the set functions, with the application's key type, right where + the #include is. Before this header is #included, these must be defined: + + 1. A macro or typedef for set_key_t, the type of a key. + 2. A macro or function set_cmp(a, b) to compare two keys. The return values + are < 0 for a < b, 0 for a == b, and > 0 for a > b. + 3. A macro or function set_drop(s, k) to release the key k's resources, if + any, when doing a set_end() or set_clear(). s is a pointer to the set + that key is in, for use with set_free() if desired. + + Example usage: + + typedef int set_key_t; + #define set_cmp(a, b) ((a) < (b) ? -1 : (a) == (b) ? 0 : 1) + #define set_drop(s, k) + #include "skipset.h" + + int test(void) { // return 0: good, 1: bad, -1: out of memory + set_t set; + if (setjmp(set.env)) + return -1; + set_start(&set); + set_insert(&set, 2); + set_insert(&set, 1); + set_insert(&set, 7); + int bad = !set_found(&set, 2); + bad = bad || set_found(&set, 5); + set_end(&set); + return bad; + } + + Interface summary (see more details below): + - set_t is the type of the set being operated on (a set_t pointer is passed) + - set_start() initializes a new, empty set (initialize set.env first) + - set_insert() inserts a new key into the set, or not if it's already there + - set_found() determines whether or not a key is in the set + - set_end() ends the use of the set, freeing all memory + - set_clear() empties the set, equivalent to set_end() and then set_start() + - set_ok() checks if set appears to be usable, i.e. started and not ended + + Auxiliary functions available to the application: + - set_alloc() allocates memory with optional tracking (#define SET_TRACK) + - set_free() deallocates memory allocated by set_alloc() + - set_rand() returns 32 random bits (seeded by set_start()) + */ #ifndef SKIPSET_H #define SKIPSET_H @@ -63,38 +66,44 @@ #include /* assert.h */ #include "ints.h" /* i16_t, ui32_t, ui64_t */ -/* Structures and functions below noted as "--private--" should not be used by -// the application. set_t is partially private and partially public -- see the -// comments there. +/* + Structures and functions below noted as "--private--" should not be used by + the application. set_t is partially private and partially public -- see the + comments there. -// There is no POSIX random() in MSVC, and rand() is awful. For portability, we -// cannot rely on a library function for random numbers. Instead we use the -// fast and effective algorithm below, invented by Melissa O'Neill. + There is no POSIX random() in MSVC, and rand() is awful. For portability, we + cannot rely on a library function for random numbers. Instead we use the + fast and effective algorithm below, invented by Melissa O'Neill. + */ -// *Really* minimal PCG32 code / (c) 2014 M.E. O'Neill / www.pcg-random.org -// Licensed under Apache License 2.0 (NO WARRANTY, etc. see website) -// --private-- Random number generator state. */ +/* + *Really* minimal PCG32 code / (c) 2014 M.E. O'Neill / www.pcg-random.org + Licensed under Apache License 2.0 (NO WARRANTY, etc. see website) + --private-- Random number generator state. + */ typedef struct { ui64_t state; /* 64-bit generator state */ ui64_t inc; /* 63-bit sequence id */ } set_rand_t; /* --private-- Initialize the state *gen using seed and seq. seed seeds the -// advancing 64-bit state. seq is a sequence selection constant. */ -void set_seed(set_rand_t *gen, ui64_t seed, ui64_t seq) { + advancing 64-bit state. seq is a sequence selection constant. */ +static void set_seed(set_rand_t *gen, ui64_t seed, ui64_t seq) { gen->inc = (seq << 1) | 1; gen->state = (seed + gen->inc) * 6364136223846793005ULL + gen->inc; } /* Start a unique random number sequence using bits from noise sources. */ -void set_uniq(set_rand_t *gen, const void *ptr) { +static void set_uniq(set_rand_t *gen, const void *ptr) { set_seed(gen, ((ui64_t)(ptrdiff_t)ptr << 32) ^ ((ui64_t)time(NULL) << 12) ^ clock(), 0); } /* Return 32 random bits, advancing the state *gen. */ -ui32_t set_rand(set_rand_t *gen) { +static ui32_t set_rand(set_rand_t *gen) { + ui32_t mix; + int rot; ui64_t state = gen->state; gen->state = state * 6364136223846793005ULL + gen->inc; - ui32_t mix = (ui32_t)(((state >> 18) ^ state) >> 27); - int rot = state >> 59; + mix = (ui32_t)(((state >> 18) ^ state) >> 27); + rot = state >> 59; return (mix >> rot) | (mix << ((-rot) & 31)); } /* End of PCG32 code. */ @@ -109,7 +118,7 @@ struct set_node_s { }; /* A set. The application sets env, may use gen with set_rand(), and may read -// allocs and memory. The remaining variables are --private-- . */ + allocs and memory. The remaining variables are --private-- . */ typedef struct set_s { set_node_t *head; /* skiplist head -- no key, just links */ set_node_t *path; /* right[] is path to key from set_found() */ @@ -120,15 +129,15 @@ typedef struct set_s { jmp_buf env; /* setjmp() environment for allocation errors */ #ifdef SET_TRACK size_t allocs; /* number of allocations */ - size_t memory; /* total amount of allocated memory (>= requests) */ + size_t memory; /* total size of allocated memory (>= requests) */ #endif } set_t; /* Memory allocation and deallocation. set_alloc(set, ptr, size) returns a -// pointer to an allocation of size bytes if ptr is NULL, or the previous -// allocation ptr resized to size bytes. set_alloc() will never return NULL. -// set_free(set, ptr) frees an allocation created by set_alloc(). These may be -// used by the application. e.g. if allocation tracking is desired. */ + pointer to an allocation of size bytes if ptr is NULL, or the previous + allocation ptr resized to size bytes. set_alloc() will never return NULL. + set_free(set, ptr) frees an allocation created by set_alloc(). These may be + used by the application. e.g. if allocation tracking is desired. */ #ifdef SET_TRACK /* Track the number of allocations and the total backing memory size. */ # if defined(_WIN32) @@ -146,11 +155,11 @@ typedef struct set_s { # elif defined(__NetBSD__) # include # define SET_ALLOC_SIZE(ptr) malloc_usable_size(ptr) -# else // e.g. OpenBSD +# else /* e.g. OpenBSD */ # define SET_ALLOC_SIZE(ptr) 0 # endif -// With tracking. -void *set_alloc(set_t *set, void *ptr, size_t size) { +/* With tracking. */ +static void *set_alloc(set_t *set, void *ptr, size_t size) { size_t had = ptr == NULL ? 0 : SET_ALLOC_SIZE(ptr); void *mem = realloc(ptr, size); if (mem == NULL) @@ -159,7 +168,7 @@ void *set_alloc(set_t *set, void *ptr, size_t size) { set->memory += SET_ALLOC_SIZE(mem) - had; return mem; } -void set_free(set_t *set, void *ptr) { +static void set_free(set_t *set, void *ptr) { if (ptr != NULL) { set->allocs--; set->memory -= SET_ALLOC_SIZE(ptr); @@ -168,23 +177,24 @@ void set_free(set_t *set, void *ptr) { } #else /* Without tracking. */ -void *set_alloc(set_t *set, void *ptr, size_t size) { +static void *set_alloc(set_t *set, void *ptr, size_t size) { void *mem = realloc(ptr, size); if (mem == NULL) longjmp(set->env, ENOMEM); return mem; } -void set_free(set_t *set, void *ptr) { +static void set_free(set_t *set, void *ptr) { (void)set; free(ptr); } #endif /* --private-- Grow node's array right[] as needed to be able to hold at least -// want links. If fill is true, assure that the first want links are filled in, -// setting them to set->head if not previously filled in. Otherwise it is -// assumed that the first want links are about to be filled in. */ -void set_grow(set_t *set, set_node_t *node, int want, int fill) { + want links. If fill is true, assure that the first want links are filled in, + setting them to set->head if not previously filled in. Otherwise it is + assumed that the first want links are about to be filled in. */ +static void set_grow(set_t *set, set_node_t *node, int want, int fill) { + int i; if (node->size < want) { int more = node->size ? node->size : 1; while (more < want) @@ -193,7 +203,6 @@ void set_grow(set_t *set, set_node_t *node, int want, int fill) { (size_t)more * sizeof(set_node_t *)); node->size = (i16_t)more; } - int i; if (fill) for (i = node->fill; i < want; i++) node->right[i] = set->head; @@ -201,7 +210,7 @@ void set_grow(set_t *set, set_node_t *node, int want, int fill) { } /* --private-- Return a new node. key is left uninitialized. */ -set_node_t *set_node(set_t *set) { +static set_node_t *set_node(set_t *set) { set_node_t *node = set_alloc(set, NULL, sizeof(set_node_t)); node->size = 0; node->fill = 0; @@ -210,7 +219,7 @@ set_node_t *set_node(set_t *set) { } /* --private-- Free the list linked from head, along with the keys. */ -void set_sweep(set_t *set) { +static void set_sweep(set_t *set) { set_node_t *step = set->head->right[0]; while (step != set->head) { set_node_t *next = step->right[0]; /* save link to next node */ @@ -222,12 +231,12 @@ void set_sweep(set_t *set) { } /* Initialize a new set. set->env must be initialized using setjmp() before -// set_start() is called. A longjmp(set->env, ENOMEM) will be used to handle a -// memory allocation failure during any of the operations. (See setjmp.h and -// errno.h.) The set can still be used if this happens, assuming that it didn't -// happen during set_start(). Whether set_start() completed or not, set_end() -// can be used to free the set's memory after a longjmp(). */ -void set_start(set_t *set) { + set_start() is called. A longjmp(set->env, ENOMEM) will be used to handle a + memory allocation failure during any of the operations. (See setjmp.h and + errno.h.) The set can still be used if this happens, assuming that it didn't + happen during set_start(). Whether set_start() completed or not, set_end() + can be used to free the set's memory after a longjmp(). */ +SKIPSET_EXPORT void set_start(set_t *set) { #ifdef SET_TRACK set->allocs = 0; set->memory = 0; @@ -235,7 +244,7 @@ void set_start(set_t *set) { set->head = set->path = set->node = NULL; /* in case set_node() fails */ set->path = set_node(set); set->head = set_node(set); - set_grow(set, set->head, 1, 1); /* one link back to head for an empty set */ + set_grow(set, set->head, 1, 1); /* one link back to head for empty set */ *(unsigned char *)&set->head->key = 137; /* set id */ set->depth = 0; set_uniq(&set->gen, set); @@ -243,34 +252,36 @@ void set_start(set_t *set) { } /* Return true if *set appears to be in a usable state. If *set has been zeroed -// out, then set_ok(set) will be false and set_end(set) will be safe. */ -int set_ok(set_t *set) { + out, then set_ok(set) will be false and set_end(set) will be safe. */ +SKIPSET_EXPORT int set_ok(set_t *set) { return set->head != NULL && set->head->right != NULL && *(unsigned char *)&set->head->key == 137; } +#if 0 /* not used in minizip */ /* Empty the set. This frees the memory used for the previous set contents. -// After set_clear(), *set is ready for use, as if after a set_start(). */ -void set_clear(set_t *set) { + After set_clear(), *set is ready for use, as if after a set_start(). */ +SKIPSET_EXPORT void set_clear(set_t *set) { assert(set_ok(set) && "improper use"); /* Free all the keys and their nodes. */ set_sweep(set); /* Leave the head and path allocations as is. Clear their contents, with - // head pointing to itself and setting depth to zero, for an empty set. */ + head pointing to itself and setting depth to zero, for an empty set. */ set->head->right[0] = set->head; set->head->fill = 1; set->path->fill = 0; set->depth = 0; } +#endif /* Done using the set -- free all allocations. The only operation on *set -// permitted after this is set_start(). Though another set_end() would do no -// harm. This can be done at any time after a set_start(), or after a longjmp() -// on any allocation failure, including during a set_start(). */ -void set_end(set_t *set) { + permitted after this is set_start(). Though another set_end() would do no + harm. This can be done at any time after a set_start(), or after a longjmp() + on any allocation failure, including during a set_start(). */ +SKIPSET_EXPORT void set_end(set_t *set) { if (set->head != NULL) { /* Empty the set and free the head node. */ if (set->head->right != NULL) { @@ -296,13 +307,16 @@ void set_end(set_t *set) { } /* Look for key. Return 1 if found or 0 if not. This also puts the path to get -// there in set->path, for use by set_insert(). */ -int set_found(set_t *set, set_key_t key) { + there in set->path, for use by set_insert(). */ +SKIPSET_EXPORT int set_found(set_t *set, set_key_t key) { + set_node_t *head, *here; + int i; assert(set_ok(set) && "improper use"); - /* Start at depth and work down and right as determined by key comparisons. */ - set_node_t *head = set->head, *here = head; - int i = set->depth; + /* Start at depth. Work down and right as determined by key comparisons. */ + head = set->head; + here = head; + i = set->depth; set_grow(set, set->path, i + 1, 0); do { while (here->right[i] != head && @@ -316,8 +330,11 @@ int set_found(set_t *set, set_key_t key) { return here != head && set_cmp(here->key, key) == 0; } -/* Insert the key key. Return 0 on success, or 1 if key is already in the set. */ -int set_insert(set_t *set, set_key_t key) { +/* Insert the key key. Return 0 on success, or 1 if it's already in the set. */ +SKIPSET_EXPORT int set_insert(set_t *set, set_key_t key) { + int level = 0; + int bit; + int i; assert(set_ok(set) && "improper use"); if (set_found(set, key)) @@ -325,13 +342,12 @@ int set_insert(set_t *set, set_key_t key) { return 1; /* Randomly generate a new level-- level 0 with probability 1/2, 1 with - // probability 1/4, 2 with probability 1/8, etc. */ - int level = 0; + probability 1/4, 2 with probability 1/8, etc. */ for (;;) { if (set->ran == 1) /* Ran out. Get another 32 random bits. */ set->ran = set_rand(&set->gen) | (1ULL << 32); - int bit = set->ran & 1; + bit = set->ran & 1; set->ran >>= 1; if (bit) break; @@ -347,11 +363,10 @@ int set_insert(set_t *set, set_key_t key) { } /* Make a new node for the provided key, and insert it in the lists up to - // and including level. */ + and including level. */ set->node = set_node(set); set->node->key = key; set_grow(set, set->node, level + 1, 0); - int i; for (i = 0; i <= level; i++) { set->node->right[i] = set->path->right[i]->right[i]; set->path->right[i]->right[i] = set->node; diff --git a/contrib/minizip/test/CMakeLists.txt b/contrib/minizip/test/CMakeLists.txt index 822420185c..a909a24281 100644 --- a/contrib/minizip/test/CMakeLists.txt +++ b/contrib/minizip/test/CMakeLists.txt @@ -1,176 +1,329 @@ # if we are built from with zlib, use this path's) -if(DEFINED ZLIB_BUILD_MINIZIP) - set(WORK_DIR ${zlib_BINARY_DIR}) - set(inst_setup zlib_install) -else(DEFINED ZLIB_BUILD_MINIZIP) - set(WORK_DIR ${minizip_BINARY_DIR}) - set(inst_setup minizip_install) - set(ZLIB_ARG "-DZLIB_DIR=${ZLIB_DIR}") +if(ZLIB_MINIZIP_INSTALL) + if(NOT DEFINED ZLIB_BUILD_MINIZIP) + set(WORK_DIR ${CMAKE_CURRENT_BINARY_DIR}) + set(inst_setup minizip_install) + set(ZLIB_ARG "-DZLIB_DIR=${ZLIB_DIR}") + + add_test( + NAME minizip_install + COMMAND ${CMAKE_COMMAND} + --install ${minizip_BINARY_DIR} + --prefix ${WORK_DIR}/test_install + --config $ + WORKING_DIRECTORY ${WORK_DIR}) + + set_tests_properties(minizip_install + PROPERTIES + FIXTURES_SETUP minizip_install) + endif(NOT DEFINED ZLIB_BUILD_MINIZIP) + + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/find_package_test.cmake.in + ${WORK_DIR}/minizip_find_package_test/CMakeLists.txt + @ONLY) + + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/find_package_no_components_test.cmake.in + ${WORK_DIR}/minizip_find_package_no_components_test/CMakeLists.txt + @ONLY) + + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/find_package_wrong_components_test.cmake.in + ${WORK_DIR}/minizip_find_package_wrong_components_test/CMakeLists.txt + @ONLY) + + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/add_subdirectory_test.cmake.in + ${WORK_DIR}/minizip_add_subdirectory_test/CMakeLists.txt + @ONLY) + + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/add_subdirectory_exclude_test.cmake.in + ${WORK_DIR}/minizip_add_subdirectory_exclude_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) + + # + # find_package_test + # + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}minizip_find_package_configure + COMMAND + ${CMAKE_COMMAND} + ${PLATFORM} + -B${WORK_DIR}/minizip_find_package_test_build + -DCMAKE_BUILD_TYPE=$ + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test_install + ${ZLIB_ARG} + $<$:--fresh> + -G "${CMAKE_GENERATOR}" + -S${WORK_DIR}/minizip_find_package_test) add_test( - NAME minizip_install - COMMAND ${CMAKE_COMMAND} --install ${minizip_BINARY_DIR} --prefix - ${CMAKE_CURRENT_BINARY_DIR}/test_install --config $ - WORKING_DIRECTORY ${minizip_BINARY_DIR}) + NAME ${ZLIB_CONTRIB_PREFIX}minizip_find_package_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY ${WORK_DIR}/minizip_find_package_test_build) + + set_tests_properties(${ZLIB_CONTRIB_PREFIX}minizip_find_package_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + FIXTURES_SETUP mzfp_config) - set_tests_properties(minizip_install + set_tests_properties(${ZLIB_CONTRIB_PREFIX}minizip_find_package_build 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}/findpackage_no_componentstest) -file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/findpackage_wrong_components_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}/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) - -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) - -# 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 minizip_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 minizip_find_package_build - COMMAND ${CMAKE_COMMAND} --build . --config $ - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test_build) - -set_tests_properties( - minizip_find_package_configure PROPERTIES FIXTURES_REQUIRED ${inst_setup} - FIXTURES_SETUP mzfp_config) - -set_tests_properties(minizip_find_package_build PROPERTIES FIXTURES_REQUIRED - mzfp_config) - -# -# findpackage_no_components_test -# -add_test( - NAME minizip_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( - minizip_find_package_no_components_configure PROPERTIES FIXTURES_REQUIRED ${inst_setup}) - -if(NOT MINIZIP_BUILD_SHARED OR NOT MINIZIP_BUILD_STATIC) + FIXTURES_REQUIRED mzfp_config) + + # + # find_package_no_components_test + # + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}minizip_find_package_no_components_configure + COMMAND + ${CMAKE_COMMAND} + ${PLATFORM} + -B${WORK_DIR}/minizip_find_package_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_install + ${ZLIB_ARG} + $<$:--fresh> + -G "${CMAKE_GENERATOR}" + -S${WORK_DIR}/minizip_find_package_no_components_test) + set_tests_properties( - minizip_find_package_no_components_configure PROPERTIES WILL_FAIL TRUE) -endif(NOT MINIZIP_BUILD_SHARED OR NOT MINIZIP_BUILD_STATIC) - -# -# findpackage_no_components_test -# -add_test( - NAME minizip_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( - minizip_find_package_wrong_components_configure - PROPERTIES - FIXTURES_REQUIRED ${inst_setup} - WILL_FAIL TRUE) - -# -# add_subdirectory_test -# -add_test( - NAME minizip_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 minizip_add_subdirectory_build - COMMAND ${CMAKE_COMMAND} --build . --config $ - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test_build) - -set_tests_properties( - minizip_add_subdirectory_configure - PROPERTIES FIXTURES_REQUIRED ${inst_setup} FIXTURES_SETUP mzas_config) - -set_tests_properties(minizip_add_subdirectory_build PROPERTIES FIXTURES_REQUIRED - mzas_config) - -# -# add_subdirectory_exclude_test -# -add_test( - NAME minizip_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 minizip_add_subdirectory_exclude_build - COMMAND ${CMAKE_COMMAND} --build . --config $ - WORKING_DIRECTORY - ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test_build) - -set_tests_properties( - minizip_add_subdirectory_exclude_configure - PROPERTIES FIXTURES_REQUIRED ${inst_setup} FIXTURES_SETUP mzasx_config) - -set_tests_properties(minizip_add_subdirectory_exclude_build - PROPERTIES FIXTURES_REQUIRED mzasx_config) + ${ZLIB_CONTRIB_PREFIX}minizip_find_package_no_components_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup}) + + if(NOT MINIZIP_BUILD_SHARED OR NOT MINIZIP_BUILD_STATIC) + set_tests_properties( + ${ZLIB_CONTRIB_PREFIX}minizip_find_package_no_components_configure + PROPERTIES + WILL_FAIL TRUE) + endif(NOT MINIZIP_BUILD_SHARED OR NOT MINIZIP_BUILD_STATIC) + + # + # find_package_no_components_test + # + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}minizip_find_package_wrong_components_configure + COMMAND + ${CMAKE_COMMAND} + ${PLATFORM} + -B${WORK_DIR}/minizip_find_package_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_install + ${ZLIB_ARG} + $<$:--fresh> + -G "${CMAKE_GENERATOR}" + -S${WORK_DIR}/minizip_find_package_wrong_components_test) + + set_tests_properties( + ${ZLIB_CONTRIB_PREFIX}minizip_find_package_wrong_components_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + WILL_FAIL TRUE) + + # + # add_subdirectory_test + # + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}minizip_add_subdirectory_configure + COMMAND + ${CMAKE_COMMAND} + ${PLATFORM} + -B${WORK_DIR}/minizip_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_install ${ZLIB_ARG} + $<$:--fresh> + -G "${CMAKE_GENERATOR}" + -S${WORK_DIR}/minizip_add_subdirectory_test) + + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}minizip_add_subdirectory_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY ${WORK_DIR}/minizip_add_subdirectory_test_build) + + set_tests_properties( + ${ZLIB_CONTRIB_PREFIX}minizip_add_subdirectory_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + FIXTURES_SETUP mzas_config) + + set_tests_properties(${ZLIB_CONTRIB_PREFIX}minizip_add_subdirectory_build + PROPERTIES + FIXTURES_REQUIRED mzas_config) + + # + # add_subdirectory_exclude_test + # + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}minizip_add_subdirectory_exclude_configure + COMMAND + ${CMAKE_COMMAND} + ${PLATFORM} + -B${WORK_DIR}/minizip_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_install + ${ZLIB_ARG} + $<$:--fresh> + -G "${CMAKE_GENERATOR}" + -S${WORK_DIR}/minizip_add_subdirectory_exclude_test) + + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}minizip_add_subdirectory_exclude_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY + ${WORK_DIR}/minizip_add_subdirectory_exclude_test_build) + + set_tests_properties( + ${ZLIB_CONTRIB_PREFIX}minizip_add_subdirectory_exclude_configure + PROPERTIES + FIXTURES_REQUIRED ${inst_setup} + FIXTURES_SETUP mzasx_config) + + set_tests_properties( + ${ZLIB_CONTRIB_PREFIX}minizip_add_subdirectory_exclude_build + PROPERTIES + FIXTURES_REQUIRED mzasx_config) +endif(ZLIB_MINIZIP_INSTALL) + +if(MINIZIP_BUILD_SHARED AND + NOT ${CMAKE_SHARED_LIBRARY_SUFFIX} STREQUAL ".dll") + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}minizip_prepare_zip_shared + COMMAND ${CMAKE_COMMAND} -DCREATE_SHARED=ON -P + ${CMAKE_CURRENT_SOURCE_DIR}/test_helper.cm + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}minizip_zipping_test_file_shared + COMMAND ${ZLIB_CONTRIB_PREFIX}minizip test_file_shared.zip test_file_shared.txt + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}minizip_prepare_unzip_shared + COMMAND ${CMAKE_COMMAND} + -DMOVE_SHARED=ON + -P + ${CMAKE_CURRENT_SOURCE_DIR}/test_helper.cm + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}minizip_miniunzipping_test_file_shared + COMMAND ${ZLIB_CONTRIB_PREFIX}miniunzip test_file_shared.zip + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}minizip_compare_shared + COMMAND ${CMAKE_COMMAND} -E compare_files test_file_shared.txt + test_file_shared.orig + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}minizip_clean_shared + COMMAND ${CMAKE_COMMAND} -DDELETE_SHARED=ON -P + ${CMAKE_CURRENT_SOURCE_DIR}/test_helper.cm + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + set_tests_properties(${ZLIB_CONTRIB_PREFIX}minizip_prepare_zip_shared + PROPERTIES + FIXTURES_SETUP "prepare_shared;mz_shared") + set_tests_properties( + ${ZLIB_CONTRIB_PREFIX}minizip_zipping_test_file_shared + PROPERTIES + FIXTURES_REQUIRED "prepare_shared;mz_shared" + FIXTURES_SETUP zip_shared) + set_tests_properties(${ZLIB_CONTRIB_PREFIX}minizip_prepare_unzip_shared + PROPERTIES + FIXTURES_REQUIRED "zip_shared;mz_shared" + FIXTURES_SETUP prepare_unzip_shared) + set_tests_properties( + ${ZLIB_CONTRIB_PREFIX}minizip_miniunzipping_test_file_shared + PROPERTIES + FIXTURES_REQUIRED "prepare_unzip_shared;mz_shared" + FIXTURES_SETUP prepare_compare_shared) + set_tests_properties(${ZLIB_CONTRIB_PREFIX}minizip_compare_shared + PROPERTIES + FIXTURES_REQUIRED "prepare_compare_shared;mz_shared") + set_tests_properties(${ZLIB_CONTRIB_PREFIX}minizip_clean_shared + PROPERTIES + FIXTURES_CLEANUP mz_shared) +endif(MINIZIP_BUILD_SHARED AND + NOT ${CMAKE_SHARED_LIBRARY_SUFFIX} STREQUAL ".dll") + +if(MINIZIP_BUILD_STATIC) + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}minizip_prepare_zip_static + COMMAND ${CMAKE_COMMAND} + -DCREATE_STATIC=ON + -P + ${CMAKE_CURRENT_SOURCE_DIR}/test_helper.cm + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}minizip_zipping_test_file_static + COMMAND ${ZLIB_CONTRIB_PREFIX}minizipstatic + test_file_static.zip + test_file_static.txt + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}minizip_prepare_unzip_static + COMMAND ${CMAKE_COMMAND} + -DMOVE_STATIC=ON + -P + ${CMAKE_CURRENT_SOURCE_DIR}/test_helper.cm + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + add_test( + NAME + ${ZLIB_CONTRIB_PREFIX}minizip_miniunzipping_test_file_static + COMMAND ${ZLIB_CONTRIB_PREFIX}miniunzipstatic + test_file_static.zip + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}minizip_compare_static + COMMAND ${CMAKE_COMMAND} + -E compare_files + test_file_static.txt + test_file_static.orig + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + add_test( + NAME ${ZLIB_CONTRIB_PREFIX}minizip_clean_static + COMMAND ${CMAKE_COMMAND} -DDELETE_STATIC=ON -P + ${CMAKE_CURRENT_SOURCE_DIR}/test_helper.cm + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + set_tests_properties( + ${ZLIB_CONTRIB_PREFIX}minizip_prepare_zip_static + PROPERTIES + FIXTURES_SETUP "prepare_zip_static;mz_static") + set_tests_properties( + ${ZLIB_CONTRIB_PREFIX}minizip_zipping_test_file_static + PROPERTIES + FIXTURES_REQUIRED "prepare_zip_static;mz_static" + FIXTURES_SETUP "create_zip_static") + set_tests_properties(${ZLIB_CONTRIB_PREFIX}minizip_prepare_unzip_static + PROPERTIES + FIXTURES_REQUIRED "create_zip_static;mz_static" + FIXTURES_SETUP "prepare_unzip_static") + set_tests_properties( + ${ZLIB_CONTRIB_PREFIX}minizip_miniunzipping_test_file_static + PROPERTIES + FIXTURES_REQUIRED "prepare_unzip_static;mz_static" + FIXTURES_SETUP "prepare_compare_static") + set_tests_properties(${ZLIB_CONTRIB_PREFIX}minizip_compare_static + PROPERTIES + FIXTURES_REQUIRED "prepare_compare_static;mz_static") + #FIXTURES_SETUP "compared_static") + set_tests_properties(${ZLIB_CONTRIB_PREFIX}minizip_clean_static + PROPERTIES + FIXTURES_CLEANUP mz_static) +endif(MINIZIP_BUILD_STATIC) diff --git a/contrib/minizip/test/find_package_test.cmake.in b/contrib/minizip/test/find_package_test.cmake.in index 7a7f85fc22..01f05457b0 100644 --- a/contrib/minizip/test/find_package_test.cmake.in +++ b/contrib/minizip/test/find_package_test.cmake.in @@ -14,13 +14,19 @@ set(MINIZIP_SRCS @minizip_SOURCE_DIR@/minizip.c @minizip_SOURCE_DIR@/zip.c) if(MINIZIP_BUILD_SHARED) - find_package(minizip ${minizip_VERSION} CONFIG COMPONENTS shared REQUIRED) + find_package(minizip ${minizip_VERSION} + CONFIG + COMPONENTS shared + REQUIRED) add_executable(test_example ${MINIZIP_SRCS}) target_link_libraries(test_example MINIZIP::minizip) endif(MINIZIP_BUILD_SHARED) if(MINIZIP_BUILD_STATIC) - find_package(minizip ${minizip_VERSION} CONFIG COMPONENTS static REQUIRED) + find_package(minizip ${minizip_VERSION} + CONFIG + COMPONENTS static + REQUIRED) add_executable(test_example_static ${MINIZIP_SRCS}) target_link_libraries(test_example_static MINIZIP::minizipstatic) endif(MINIZIP_BUILD_STATIC) diff --git a/contrib/minizip/unzip.c b/contrib/minizip/unzip.c index d7ff21cb54..827c23a12b 100644 --- a/contrib/minizip/unzip.c +++ b/contrib/minizip/unzip.c @@ -1167,13 +1167,12 @@ extern int ZEXPORT unzLocateFile(unzFile file, const char *szFileName, int iCase /* -/////////////////////////////////////////// -// Contributed by Ryan Haksi (mailto://cryogen@infoserve.net) -// I need random access -// -// Further optimization could be realized by adding an ability -// to cache the directory in memory. The goal being a single -// comprehensive file read to put the file I need in a memory. + Contributed by Ryan Haksi (mailto://cryogen@infoserve.net) + I need random access + + Further optimization could be realized by adding an ability + to cache the directory in memory. The goal being a single + comprehensive file read to put the file I need in a memory. */ /* @@ -1242,8 +1241,7 @@ extern int ZEXPORT unzGoToFilePos(unzFile file, unz_file_pos* file_pos) { } /* -// Unzip Helper Functions - should be here? -/////////////////////////////////////////// + Unzip Helper Functions - should be here? */ /* diff --git a/contrib/minizip/zip.c b/contrib/minizip/zip.c index 31005c51b0..0bbdf77e5f 100644 --- a/contrib/minizip/zip.c +++ b/contrib/minizip/zip.c @@ -128,7 +128,8 @@ typedef struct linkedlist_data_s /* zipAlreadyThere() set functions for a set of zero-terminated strings, and -// a block_t type for reading the central directory datablocks. */ + a block_t type for reading the central directory datablocks. */ +#define SKIPSET_EXPORT static typedef char *set_key_t; #define set_cmp(a, b) strcmp(a, b) #define set_drop(s, k) set_free(s, k) @@ -286,18 +287,18 @@ local int add_data_in_datablock(linkedlist_data* ll, const void* buf, uLong len) } /* zipAlreadyThere() operations. "set" in the zip internal structure keeps the -// set of names that are in the under-construction central directory so far. A -// skipset provides ~O(log n) time insertion and searching. Central directory -// records, stored in a linked list of allocated memory datablocks, is read -// through "block" in the zip internal structure. - -// The block_*() functions support extracting the central directory file names -// from the datablocks. They are designed to support a growing directory by -// automatically continuing once more data has been appended to the linked -// datablocks. - -// Initialize *block to the head of list. This should only be called once the -// list has at least some data in it, i.e. list->first_block is not NULL. */ + set of names that are in the under-construction central directory so far. A + skipset provides ~O(log n) time insertion and searching. Central directory + records, stored in a linked list of allocated memory datablocks, is read + through "block" in the zip internal structure. + + The block_*() functions support extracting the central directory file names + from the datablocks. They are designed to support a growing directory by + automatically continuing once more data has been appended to the linked + datablocks. + + Initialize *block to the head of list. This should only be called once the + list has at least some data in it, i.e. list->first_block is not NULL. */ local void block_init(block_t *block, linkedlist_data *list) { block->node = list->first_block; block->next = block->node->data; @@ -305,8 +306,8 @@ local void block_init(block_t *block, linkedlist_data *list) { } /* Mark *block as bad, with all subsequent reads returning end, even if more -// data is added to the datablocks. This is invoked if the central directory is -// invalid, so there is no longer any point in attempting to interpret it. */ + data is added to the datablocks. This is invoked if the central directory is + invalid, so there is no longer any point in attempting to interpret it. */ local void block_stop(block_t *block) { block->left = 0; block->next = NULL; @@ -357,7 +358,7 @@ local int block_get(block_t *block) { } /* Return a 16-bit unsigned little-endian value from block, or a negative value -// if the end is reached. */ + if the end is reached. */ local long block_get2(block_t *block) { int low = block_get(block); int high = block_get(block); @@ -367,6 +368,7 @@ local long block_get2(block_t *block) { /* Read up to len bytes from block into buf. Return the number of bytes read. */ local size_t block_read(block_t *block, unsigned char *buf, size_t len) { size_t need = len; + size_t take; while (need) { if (block->left == 0) { /* Get a byte to update and step through the linked list as needed. */ @@ -378,7 +380,7 @@ local size_t block_read(block_t *block, unsigned char *buf, size_t len) { need--; continue; } - size_t take = need > block->left ? block->left : need; + take = need > block->left ? block->left : need; memcpy(buf, block->next, take); block->next += take; block->left -= take; @@ -389,7 +391,7 @@ local size_t block_read(block_t *block, unsigned char *buf, size_t len) { } /* Skip n bytes in block. Return 0 on success or -1 if there are less than n -// bytes to the end. */ + bytes to the end. */ local int block_skip(block_t *block, size_t n) { while (n > block->left) { n -= block->left; @@ -405,9 +407,10 @@ local int block_skip(block_t *block, size_t n) { } /* Process the next central directory record at *block. Return the allocated, -// zero-terminated file name, or NULL for end of input or invalid data. If -// invalid, *block is marked bad. This uses *set for the allocation of memory. */ + zero-terminated file name, or NULL for end of input or invalid data. If + invalid, *block is marked bad. This uses *set for the allocation of memory. */ local char *block_central_name(block_t *block, set_t *set) { + unsigned flen, xlen, clen; char *name = NULL; for (;;) { if (block_end(block)) @@ -421,11 +424,11 @@ local char *block_central_name(block_t *block, set_t *set) { break; /* Go through the remaining fixed-length portion of the record, - // extracting the lengths of the three variable-length fields. */ + extracting the lengths of the three variable-length fields. */ block_skip(block, 24); - unsigned flen = (unsigned)block_get2(block); /* file name length */ - unsigned xlen = (unsigned)block_get2(block); /* extra length */ - unsigned clen = (unsigned)block_get2(block); /* comment length */ + flen = (unsigned)block_get2(block); /* file name length */ + xlen = (unsigned)block_get2(block); /* extra length */ + clen = (unsigned)block_get2(block); /* comment length */ if (block_skip(block, 12) == -1) /* Premature end of the record. */ break; @@ -440,9 +443,9 @@ local char *block_central_name(block_t *block, set_t *set) { /* Check for embedded nuls in the name. */ if (memchr(name, 0, flen) != NULL) { /* This name can never match the zero-terminated name provided to - // zipAlreadyThere(), so we discard it and go back to get another - // name. (Who the heck is putting nuls inside their zip file entry - // names anyway?) */ + zipAlreadyThere(), so we discard it and go back to get another + name. (Who the heck is putting nuls inside their zip file entry + names anyway?) */ set_free(set, name); continue; } @@ -453,16 +456,19 @@ local char *block_central_name(block_t *block, set_t *set) { } /* Invalid signature or premature end of the central directory record. - // Abandon trying to process the central directory. */ + Abandon trying to process the central directory. */ set_free(set, name); block_stop(block); return NULL; } /* Return 0 if name is not in the central directory so far, 1 if it is, -1 if -// the central directory is invalid, -2 if out of memory, or ZIP_PARAMERROR if -// file is NULL. */ + the central directory is invalid, -2 if out of memory, or ZIP_PARAMERROR if + file is NULL. */ extern int ZEXPORT zipAlreadyThere(zipFile file, char const *name) { + size_t len; + char *copy; + int found; zip64_internal *zip = file; if (zip == NULL) return ZIP_PARAMERROR; @@ -476,14 +482,14 @@ extern int ZEXPORT zipAlreadyThere(zipFile file, char const *name) { } if (!set_ok(&zip->set)) { /* This is the first time here with some central directory content. We - // construct this set of names only on demand. Prepare set and block. */ + construct this set of names only on demand. Prepare set and block. */ set_start(&zip->set); block_init(&zip->block, &zip->central_dir); } /* Update the set of names from the current central directory contents. - // This reads any new central directory records since the last time we were - // here. */ + This reads any new central directory records since the last time we were + here. */ for (;;) { char *there = block_central_name(&zip->block, &zip->set); if (there == NULL) { @@ -496,15 +502,15 @@ extern int ZEXPORT zipAlreadyThere(zipFile file, char const *name) { /* Add there to the set. */ if (set_insert(&zip->set, there)) /* There's already a duplicate in the central directory! We'll just - // let this be and carry on. */ + let this be and carry on. */ set_free(&zip->set, there); } /* Return true if name is in the central directory. */ - size_t len = strlen(name); - char *copy = set_alloc(&zip->set, NULL, len + 1); + len = strlen(name); + copy = set_alloc(&zip->set, NULL, len + 1); memcpy(copy, name, len + 1); - int found = set_found(&zip->set, copy); + found = set_found(&zip->set, copy); set_free(&zip->set, copy); return found; } @@ -939,7 +945,7 @@ local int LoadCentralDirectoryRecord(zip64_internal* pziinit) { err=ZIP_ERRNO; /* TODO.. - // read the comment from the standard central header. */ + read the comment from the standard central header. */ size_comment = 0; } else @@ -1334,8 +1340,8 @@ extern int ZEXPORT zipOpenNewFileInZip4_64(zipFile file, const char* filename, c if ((comment!=NULL) && (strlen(comment)>0xffff)) return ZIP_PARAMERROR; /* The extra field length must fit in 16 bits. If the member also requires - // a Zip64 extra block, that will also need to fit within that 16-bit - // length, but that will be checked for later. */ + a Zip64 extra block, that will also need to fit within that 16-bit + length, but that will be checked for later. */ if ((size_extrafield_local>0xffff) || (size_extrafield_global>0xffff)) return ZIP_PARAMERROR; @@ -1927,8 +1933,8 @@ extern int ZEXPORT zipCloseFileInZipRaw64(zipFile file, ZPOS64_T uncompressed_si } /* Update how much extra free space we got in the memory buffer - // and increase the centralheader size so the new ZIP64 fields are included - // ( 4 below is the size of HeaderID and DataSize field ) */ + and increase the centralheader size so the new ZIP64 fields are included + ( 4 below is the size of HeaderID and DataSize field ) */ zi->ci.size_centralExtraFree -= datasize + 4; zi->ci.size_centralheader += datasize + 4; diff --git a/contrib/nuget/nuget.csproj b/contrib/nuget/nuget.csproj index ead9a20561..e897228290 100644 --- a/contrib/nuget/nuget.csproj +++ b/contrib/nuget/nuget.csproj @@ -7,7 +7,7 @@ $(PackageId).linux $(PackageId).osx (C) 1995-2026 Jean-loup Gailly and Mark Adler - 1.3.2 + 1.3.2.1 NuGet Package for consuming native builds of zlib into .NET without complexity. README