Skip to content

Instantly share code, notes, and snippets.

@ksophocleous
Last active September 25, 2017 22:36
Show Gist options
  • Save ksophocleous/0d48934c4da937301f9fa309b535032c to your computer and use it in GitHub Desktop.
Save ksophocleous/0d48934c4da937301f9fa309b535032c to your computer and use it in GitHub Desktop.
zlib-diffs
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0fe939d..26e3b7e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,12 +7,35 @@ set(VERSION "1.2.11")
option(ASM686 "Enable building i686 assembly implementation")
option(AMD64 "Enable building amd64 assembly implementation")
+option(BUILD_EXAMPLES "Enable building example binaries" ON)
+
+set(INSTALL_BIN_DIR "bin" CACHE PATH "Installation directory for executables")
+set(INSTALL_LIB_DIR "lib" CACHE PATH "Installation directory for libraries")
+set(INSTALL_INC_DIR "include" CACHE PATH "Installation directory for headers")
+set(INSTALL_MAN_DIR "share/man" CACHE PATH "Installation directory for manual pages")
+set(INSTALL_PKGCONFIG_DIR "share/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")
+
+if(MSVC)
+ option(BUILD_WITH_STATIC_MSVC_RUNTIME "Link with the static vc runtime" OFF)
+ if(BUILD_WITH_STATIC_MSVC_RUNTIME)
+ # CMAKE_CONFIGURATION_TYPES is empty on non-IDE generators (Ninja, NMake)
+ # and that's why we also use CMAKE_BUILD_TYPE to cover for those generators.
+ # For IDE generators, CMAKE_BUILD_TYPE is usually empty
+ foreach(_config_type ${CMAKE_CONFIGURATION_TYPES} ${CMAKE_BUILD_TYPE})
+ string(TOUPPER ${_config_type} _upper_config_type)
+ set(_flag_var "CMAKE_C_FLAGS_${_upper_config_type}")
+ if(${_flag_var} MATCHES "/MD")
+ string(REGEX REPLACE "/MD" "/MT" ${_flag_var} "${${_flag_var}}")
+ endif()
+ endforeach()
+
+ # clean up
+ set(_upper_config_type)
+ set(_config_type)
+ set(_flag_var)
+ endif()
+endif()
-set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables")
-set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries")
-set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers")
-set(INSTALL_MAN_DIR "${CMAKE_INSTALL_PREFIX}/share/man" CACHE PATH "Installation directory for manual pages")
-set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/share/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")
include(CheckTypeSize)
include(CheckFunctionExists)
@@ -80,9 +103,9 @@ endif()
set(ZLIB_PC ${CMAKE_CURRENT_BINARY_DIR}/zlib.pc)
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zlib.pc.cmakein
- ${ZLIB_PC} @ONLY)
-configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein
- ${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY)
+ ${ZLIB_PC} @ONLY)
+configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein
+ ${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY)
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
@@ -135,31 +158,31 @@ if(CMAKE_COMPILER_IS_GNUCC)
elseif (AMD64)
set(ZLIB_ASMS contrib/amd64/amd64-match.S)
endif ()
-
- if(ZLIB_ASMS)
- add_definitions(-DASMV)
- set_source_files_properties(${ZLIB_ASMS} PROPERTIES LANGUAGE C COMPILE_FLAGS -DNO_UNDERLINE)
- endif()
+
+ if(ZLIB_ASMS)
+ add_definitions(-DASMV)
+ set_source_files_properties(${ZLIB_ASMS} PROPERTIES LANGUAGE C COMPILE_FLAGS -DNO_UNDERLINE)
+ endif()
endif()
if(MSVC)
if(ASM686)
- ENABLE_LANGUAGE(ASM_MASM)
+ ENABLE_LANGUAGE(ASM_MASM)
set(ZLIB_ASMS
- contrib/masmx86/inffas32.asm
- contrib/masmx86/match686.asm
- )
+ contrib/masmx86/inffas32.asm
+ contrib/masmx86/match686.asm
+ )
elseif (AMD64)
- ENABLE_LANGUAGE(ASM_MASM)
+ ENABLE_LANGUAGE(ASM_MASM)
set(ZLIB_ASMS
- contrib/masmx64/gvmat64.asm
- contrib/masmx64/inffasx64.asm
- )
+ contrib/masmx64/gvmat64.asm
+ contrib/masmx64/inffasx64.asm
+ )
endif()
- if(ZLIB_ASMS)
- add_definitions(-DASMV -DASMINF)
- endif()
+ if(ZLIB_ASMS)
+ add_definitions(-DASMV -DASMINF)
+ endif()
endif()
# parse the full version number from zlib.h and include in ZLIB_FULL_VERSION
@@ -183,12 +206,17 @@ if(MINGW)
set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj)
endif(MINGW)
-add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
+if(BUILD_SHARED_LIBS)
+ add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
+endif()
add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
-set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
-set_target_properties(zlib PROPERTIES SOVERSION 1)
-if(NOT CYGWIN)
+if(BUILD_SHARED_LIBS)
+ set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
+ set_target_properties(zlib PROPERTIES SOVERSION 1)
+endif()
+
+if(NOT CYGWIN AND BUILD_SHARED_LIBS)
# This property causes shared libraries on Linux to have the full version
# encoded into their final filename. We disable this on Cygwin because
# it causes cygz-${ZLIB_FULL_VERSION}.dll to be created when cygz.dll
@@ -201,49 +229,67 @@ endif()
if(UNIX)
# On unix-like platforms the library is almost always called libz
- set_target_properties(zlib zlibstatic PROPERTIES OUTPUT_NAME z)
- if(NOT APPLE)
- set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"")
- endif()
+ if(BUILD_SHARED_LIBS)
+ set_target_properties(zlib PROPERTIES OUTPUT_NAME z)
+ endif()
+ set_target_properties(zlibstatic PROPERTIES OUTPUT_NAME z)
+ if(NOT APPLE AND BUILD_SHARED_LIBS)
+ set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"")
+ endif()
elseif(BUILD_SHARED_LIBS AND WIN32)
# Creates zlib1.dll when building shared library version
set_target_properties(zlib PROPERTIES SUFFIX "1.dll")
endif()
-if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL )
- install(TARGETS zlib zlibstatic
- RUNTIME DESTINATION "${INSTALL_BIN_DIR}"
- ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
- LIBRARY DESTINATION "${INSTALL_LIB_DIR}" )
-endif()
-if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL )
- install(FILES ${ZLIB_PUBLIC_HDRS} DESTINATION "${INSTALL_INC_DIR}")
-endif()
-if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL )
- install(FILES zlib.3 DESTINATION "${INSTALL_MAN_DIR}/man3")
-endif()
-if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL )
- install(FILES ${ZLIB_PC} DESTINATION "${INSTALL_PKGCONFIG_DIR}")
+if(NOT SKIP_INSTALL_ALL)
+ if(NOT SKIP_INSTALL_LIBRARIES)
+ list(APPEND targets zlibstatic)
+ if(BUILD_SHARED_LIBS)
+ list(APPEND targets zlib)
+ endif()
+ install(TARGETS ${targets}
+ EXPORT ${PROJECT_NAME}Config
+ RUNTIME DESTINATION "${INSTALL_BIN_DIR}"
+ ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
+ LIBRARY DESTINATION "${INSTALL_LIB_DIR}")
+ install(EXPORT ${PROJECT_NAME}Config
+ NAMESPACE zlib::
+ DESTINATION cmake)
+ if(CMAKE_VERSION VERSION_GREATER 2.8.11)
+ if(BUILD_SHARED_LIBS)
+ target_include_directories(zlib PUBLIC $<INSTALL_INTERFACE:${INSTALL_INC_DIR}>)
+ endif()
+ target_include_directories(zlibstatic PUBLIC $<INSTALL_INTERFACE:${INSTALL_INC_DIR}>)
+ endif()
+ endif()
+ if(NOT SKIP_INSTALL_HEADERS)
+ install(FILES ${ZLIB_PUBLIC_HDRS} DESTINATION "${INSTALL_INC_DIR}")
+ endif()
+ if(NOT SKIP_INSTALL_FILES)
+ install(FILES zlib.3 DESTINATION "${INSTALL_MAN_DIR}/man3")
+ install(FILES ${ZLIB_PC} DESTINATION "${INSTALL_PKGCONFIG_DIR}")
+ endif()
endif()
#============================================================================
# Example binaries
#============================================================================
-
-add_executable(example test/example.c)
-target_link_libraries(example zlib)
-add_test(example example)
-
-add_executable(minigzip test/minigzip.c)
-target_link_libraries(minigzip zlib)
-
-if(HAVE_OFF64_T)
- add_executable(example64 test/example.c)
- target_link_libraries(example64 zlib)
- set_target_properties(example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
- add_test(example64 example64)
-
- add_executable(minigzip64 test/minigzip.c)
- target_link_libraries(minigzip64 zlib)
- set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
+if(BUILD_EXAMPLES)
+ add_executable(example test/example.c)
+ target_link_libraries(example zlibstatic)
+ add_test(example example)
+
+ add_executable(minigzip test/minigzip.c)
+ target_link_libraries(minigzip zlibstatic)
+
+ if(HAVE_OFF64_T)
+ add_executable(example64 test/example.c)
+ target_link_libraries(example64 zlibstatic)
+ set_target_properties(example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
+ add_test(example64 example64)
+
+ add_executable(minigzip64 test/minigzip.c)
+ target_link_libraries(minigzip64 zlibstatic)
+ set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
+ endif()
endif()
@ksophocleous
Copy link
Author

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0fe939d..26e3b7e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,12 +7,35 @@ set(VERSION "1.2.11")

option(ASM686 "Enable building i686 assembly implementation")
option(AMD64 "Enable building amd64 assembly implementation")
+option(BUILD_EXAMPLES "Enable building example binaries" ON)
+
+set(INSTALL_BIN_DIR "bin" CACHE PATH "Installation directory for executables")
+set(INSTALL_LIB_DIR "lib" CACHE PATH "Installation directory for libraries")
+set(INSTALL_INC_DIR "include" CACHE PATH "Installation directory for headers")
+set(INSTALL_MAN_DIR "share/man" CACHE PATH "Installation directory for manual pages")
+set(INSTALL_PKGCONFIG_DIR "share/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")
+
+if(MSVC)

  • option(BUILD_WITH_STATIC_MSVC_RUNTIME "Link with the static vc runtime" OFF)
  • if(BUILD_WITH_STATIC_MSVC_RUNTIME)
  •    # CMAKE_CONFIGURATION_TYPES is empty on non-IDE generators (Ninja, NMake)
    
  •    # and that's why we also use CMAKE_BUILD_TYPE to cover for those generators.
    
  •    # For IDE generators, CMAKE_BUILD_TYPE is usually empty
    
  •    foreach(_config_type ${CMAKE_CONFIGURATION_TYPES} ${CMAKE_BUILD_TYPE})
    
  •        string(TOUPPER ${_config_type} _upper_config_type)
    
  •        set(_flag_var "CMAKE_C_FLAGS_${_upper_config_type}")
    
  •        if(${_flag_var} MATCHES "/MD")
    
  •            string(REGEX REPLACE "/MD" "/MT" ${_flag_var} "${${_flag_var}}")
    
  •        endif()
    
  •    endforeach()
    
  •    # clean up
    
  •    set(_upper_config_type)
    
  •    set(_config_type)
    
  •    set(_flag_var)
    
  • endif()
    +endif()

-set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables")
-set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries")
-set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers")
-set(INSTALL_MAN_DIR "${CMAKE_INSTALL_PREFIX}/share/man" CACHE PATH "Installation directory for manual pages")
-set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/share/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")

include(CheckTypeSize)
include(CheckFunctionExists)
@@ -80,9 +103,9 @@ endif()

set(ZLIB_PC ${CMAKE_CURRENT_BINARY_DIR}/zlib.pc)
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zlib.pc.cmakein

  •   ${ZLIB_PC} @ONLY)
    

-configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein

  •   ${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY)
    
  •    ${ZLIB_PC} @ONLY)
    

+configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein

  •    ${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY)
    

include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})

@@ -135,31 +158,31 @@ if(CMAKE_COMPILER_IS_GNUCC)
elseif (AMD64)
set(ZLIB_ASMS contrib/amd64/amd64-match.S)
endif ()

  • if(ZLIB_ASMS)
  •   add_definitions(-DASMV)
    
  •   set_source_files_properties(${ZLIB_ASMS} PROPERTIES LANGUAGE C COMPILE_FLAGS -DNO_UNDERLINE)
    
  • endif()
  • if(ZLIB_ASMS)
  •    add_definitions(-DASMV)
    
  •    set_source_files_properties(${ZLIB_ASMS} PROPERTIES LANGUAGE C COMPILE_FLAGS -DNO_UNDERLINE)
    
  • endif()
    endif()

if(MSVC)
if(ASM686)

  •   ENABLE_LANGUAGE(ASM_MASM)
    
  •    ENABLE_LANGUAGE(ASM_MASM)
       set(ZLIB_ASMS
    
  •   	contrib/masmx86/inffas32.asm
    
  •   	contrib/masmx86/match686.asm
    
  •   )
    
  •        contrib/masmx86/inffas32.asm
    
  •        contrib/masmx86/match686.asm
    
  •    )
    
    elseif (AMD64)
  •   ENABLE_LANGUAGE(ASM_MASM)
    
  •    ENABLE_LANGUAGE(ASM_MASM)
       set(ZLIB_ASMS
    
  •   	contrib/masmx64/gvmat64.asm
    
  •   	contrib/masmx64/inffasx64.asm
    
  •   )
    
  •        contrib/masmx64/gvmat64.asm
    
  •        contrib/masmx64/inffasx64.asm
    
  •    )
    
    endif()
  • if(ZLIB_ASMS)
  •   add_definitions(-DASMV -DASMINF)
    
  • endif()
  • if(ZLIB_ASMS)
  •    add_definitions(-DASMV -DASMINF)
    
  • endif()
    endif()

parse the full version number from zlib.h and include in ZLIB_FULL_VERSION

@@ -183,12 +206,17 @@ if(MINGW)
set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj)
endif(MINGW)

-add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
+if(BUILD_SHARED_LIBS)

  • add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
    +endif()
    add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
    -set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
    -set_target_properties(zlib PROPERTIES SOVERSION 1)

-if(NOT CYGWIN)
+if(BUILD_SHARED_LIBS)

  • set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
  • set_target_properties(zlib PROPERTIES SOVERSION 1)
    +endif()

+if(NOT CYGWIN AND BUILD_SHARED_LIBS)
# This property causes shared libraries on Linux to have the full version
# encoded into their final filename. We disable this on Cygwin because
# it causes cygz-${ZLIB_FULL_VERSION}.dll to be created when cygz.dll
@@ -201,49 +229,67 @@ endif()

if(UNIX)
# On unix-like platforms the library is almost always called libz

  • set_target_properties(zlib zlibstatic PROPERTIES OUTPUT_NAME z)
  • if(NOT APPLE)
  • set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"")
    
  • endif()
  • if(BUILD_SHARED_LIBS)
  •    set_target_properties(zlib PROPERTIES OUTPUT_NAME z)
    
  • endif()
  • set_target_properties(zlibstatic PROPERTIES OUTPUT_NAME z)
  • if(NOT APPLE AND BUILD_SHARED_LIBS)
  •    set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"")
    
  • endif()
    elseif(BUILD_SHARED_LIBS AND WIN32)

    Creates zlib1.dll when building shared library version

    set_target_properties(zlib PROPERTIES SUFFIX "1.dll")
    endif()

-if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL )

  • install(TARGETS zlib zlibstatic
  •    RUNTIME DESTINATION "${INSTALL_BIN_DIR}"
    
  •    ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
    
  •    LIBRARY DESTINATION "${INSTALL_LIB_DIR}" )
    

-endif()
-if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL )

  • install(FILES ${ZLIB_PUBLIC_HDRS} DESTINATION "${INSTALL_INC_DIR}")
    -endif()
    -if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL )
  • install(FILES zlib.3 DESTINATION "${INSTALL_MAN_DIR}/man3")
    -endif()
    -if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL )
  • install(FILES ${ZLIB_PC} DESTINATION "${INSTALL_PKGCONFIG_DIR}")
    +if(NOT SKIP_INSTALL_ALL)
  • if(NOT SKIP_INSTALL_LIBRARIES)
  •    list(APPEND targets zlibstatic)
    
  •    if(BUILD_SHARED_LIBS)
    
  •        list(APPEND targets zlib)
    
  •    endif()
    
  •    install(TARGETS ${targets}
    
  •        EXPORT ${PROJECT_NAME}Config
    
  •        RUNTIME DESTINATION "${INSTALL_BIN_DIR}"
    
  •        ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
    
  •        LIBRARY DESTINATION "${INSTALL_LIB_DIR}")
    
  •    install(EXPORT ${PROJECT_NAME}Config
    
  •        NAMESPACE zlib::
    
  •        DESTINATION cmake)
    
  •    if(CMAKE_VERSION VERSION_GREATER 2.8.11)
    
  •        if(BUILD_SHARED_LIBS)
    
  •            target_include_directories(zlib PUBLIC $<INSTALL_INTERFACE:${INSTALL_INC_DIR}>)
    
  •        endif()
    
  •        target_include_directories(zlibstatic PUBLIC $<INSTALL_INTERFACE:${INSTALL_INC_DIR}>)
    
  •    endif()
    
  • endif()
  • if(NOT SKIP_INSTALL_HEADERS)
  •    install(FILES ${ZLIB_PUBLIC_HDRS} DESTINATION "${INSTALL_INC_DIR}")
    
  • endif()
  • if(NOT SKIP_INSTALL_FILES)
  •    install(FILES zlib.3 DESTINATION "${INSTALL_MAN_DIR}/man3")
    
  •    install(FILES ${ZLIB_PC} DESTINATION "${INSTALL_PKGCONFIG_DIR}")
    
  • endif()
    endif()

#============================================================================

Example binaries

#============================================================================

-add_executable(example test/example.c)
-target_link_libraries(example zlib)
-add_test(example example)

-add_executable(minigzip test/minigzip.c)
-target_link_libraries(minigzip zlib)

-if(HAVE_OFF64_T)

  • add_executable(example64 test/example.c)
  • target_link_libraries(example64 zlib)
  • set_target_properties(example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
  • add_test(example64 example64)
  • add_executable(minigzip64 test/minigzip.c)
  • target_link_libraries(minigzip64 zlib)
  • set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
    +if(BUILD_EXAMPLES)
  • add_executable(example test/example.c)
  • target_link_libraries(example zlibstatic)
  • add_test(example example)
  • add_executable(minigzip test/minigzip.c)
  • target_link_libraries(minigzip zlibstatic)
  • if(HAVE_OFF64_T)
  •    add_executable(example64 test/example.c)
    
  •    target_link_libraries(example64 zlibstatic)
    
  •    set_target_properties(example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
    
  •    add_test(example64 example64)
    
  •    add_executable(minigzip64 test/minigzip.c)
    
  •    target_link_libraries(minigzip64 zlibstatic)
    
  •    set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
    
  • endif()
    endif()
    diff --git a/zconf.h b/zconf.h
    deleted file mode 100644
    index 5e1d68a..0000000
    --- a/zconf.h
    +++ /dev/null
    @@ -1,534 +0,0 @@
    -/* zconf.h -- configuration of the zlib compression library
    • Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
    • For conditions of distribution and use, see copyright notice in zlib.h
  • */

-/* @(#) $Id$ */

-#ifndef ZCONF_H
-#define ZCONF_H

-/*

    • If you really need a unique prefix for all types and library functions,
    • compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
    • Even better than compiling with -DZ_PREFIX would be to use configure to set
    • this permanently in zconf.h using "./configure --zprefix".
  • /
    -#ifdef Z_PREFIX /
    may be set to #if 1 by ./configure */
    -# define Z_PREFIX_SET

-/* all linked symbols and init macros */
-# define dist_code z__dist_code
-# define length_code z__length_code
-# define tr_align z__tr_align
-# define tr_flush_bits z__tr_flush_bits
-# define tr_flush_block z__tr_flush_block
-# define tr_init z__tr_init
-# define tr_stored_block z__tr_stored_block
-# define tr_tally z__tr_tally
-# define adler32 z_adler32
-# define adler32_combine z_adler32_combine
-# define adler32_combine64 z_adler32_combine64
-# define adler32_z z_adler32_z
-# ifndef Z_SOLO
-# define compress z_compress
-# define compress2 z_compress2
-# define compressBound z_compressBound
-# endif
-# define crc32 z_crc32
-# define crc32_combine z_crc32_combine
-# define crc32_combine64 z_crc32_combine64
-# define crc32_z z_crc32_z
-# define deflate z_deflate
-# define deflateBound z_deflateBound
-# define deflateCopy z_deflateCopy
-# define deflateEnd z_deflateEnd
-# define deflateGetDictionary z_deflateGetDictionary
-# define deflateInit z_deflateInit
-# define deflateInit2 z_deflateInit2
-# define deflateInit2
z_deflateInit2

-# define deflateInit
z_deflateInit

-# define deflateParams z_deflateParams
-# define deflatePending z_deflatePending
-# define deflatePrime z_deflatePrime
-# define deflateReset z_deflateReset
-# define deflateResetKeep z_deflateResetKeep
-# define deflateSetDictionary z_deflateSetDictionary
-# define deflateSetHeader z_deflateSetHeader
-# define deflateTune z_deflateTune
-# define deflate_copyright z_deflate_copyright
-# define get_crc_table z_get_crc_table
-# ifndef Z_SOLO
-# define gz_error z_gz_error
-# define gz_intmax z_gz_intmax
-# define gz_strwinerror z_gz_strwinerror
-# define gzbuffer z_gzbuffer
-# define gzclearerr z_gzclearerr
-# define gzclose z_gzclose
-# define gzclose_r z_gzclose_r
-# define gzclose_w z_gzclose_w
-# define gzdirect z_gzdirect
-# define gzdopen z_gzdopen
-# define gzeof z_gzeof
-# define gzerror z_gzerror
-# define gzflush z_gzflush
-# define gzfread z_gzfread
-# define gzfwrite z_gzfwrite
-# define gzgetc z_gzgetc
-# define gzgetc
z_gzgetc

-# define gzgets z_gzgets
-# define gzoffset z_gzoffset
-# define gzoffset64 z_gzoffset64
-# define gzopen z_gzopen
-# define gzopen64 z_gzopen64
-# ifdef WIN32
-# define gzopen_w z_gzopen_w
-# endif
-# define gzprintf z_gzprintf
-# define gzputc z_gzputc
-# define gzputs z_gzputs
-# define gzread z_gzread
-# define gzrewind z_gzrewind
-# define gzseek z_gzseek
-# define gzseek64 z_gzseek64
-# define gzsetparams z_gzsetparams
-# define gztell z_gztell
-# define gztell64 z_gztell64
-# define gzungetc z_gzungetc
-# define gzvprintf z_gzvprintf
-# define gzwrite z_gzwrite
-# endif
-# define inflate z_inflate
-# define inflateBack z_inflateBack
-# define inflateBackEnd z_inflateBackEnd
-# define inflateBackInit z_inflateBackInit
-# define inflateBackInit
z_inflateBackInit

-# define inflateCodesUsed z_inflateCodesUsed
-# define inflateCopy z_inflateCopy
-# define inflateEnd z_inflateEnd
-# define inflateGetDictionary z_inflateGetDictionary
-# define inflateGetHeader z_inflateGetHeader
-# define inflateInit z_inflateInit
-# define inflateInit2 z_inflateInit2
-# define inflateInit2
z_inflateInit2_
-# define inflateInit_ z_inflateInit_
-# define inflateMark z_inflateMark
-# define inflatePrime z_inflatePrime
-# define inflateReset z_inflateReset
-# define inflateReset2 z_inflateReset2
-# define inflateResetKeep z_inflateResetKeep
-# define inflateSetDictionary z_inflateSetDictionary
-# define inflateSync z_inflateSync
-# define inflateSyncPoint z_inflateSyncPoint
-# define inflateUndermine z_inflateUndermine
-# define inflateValidate z_inflateValidate
-# define inflate_copyright z_inflate_copyright
-# define inflate_fast z_inflate_fast
-# define inflate_table z_inflate_table
-# ifndef Z_SOLO
-# define uncompress z_uncompress
-# define uncompress2 z_uncompress2
-# endif
-# define zError z_zError
-# ifndef Z_SOLO
-# define zcalloc z_zcalloc
-# define zcfree z_zcfree
-# endif
-# define zlibCompileFlags z_zlibCompileFlags
-# define zlibVersion z_zlibVersion

-/* all zlib typedefs in zlib.h and zconf.h */
-# define Byte z_Byte
-# define Bytef z_Bytef
-# define alloc_func z_alloc_func
-# define charf z_charf
-# define free_func z_free_func
-# ifndef Z_SOLO
-# define gzFile z_gzFile
-# endif
-# define gz_header z_gz_header
-# define gz_headerp z_gz_headerp
-# define in_func z_in_func
-# define intf z_intf
-# define out_func z_out_func
-# define uInt z_uInt
-# define uIntf z_uIntf
-# define uLong z_uLong
-# define uLongf z_uLongf
-# define voidp z_voidp
-# define voidpc z_voidpc
-# define voidpf z_voidpf

-/* all zlib structs in zlib.h and zconf.h */
-# define gz_header_s z_gz_header_s
-# define internal_state z_internal_state

-#endif

-#if defined(MSDOS) && !defined(MSDOS)
-# define MSDOS
-#endif
-#if (defined(OS_2) || defined(OS2)) && !defined(OS2)
-# define OS2
-#endif
-#if defined(_WINDOWS) && !defined(WINDOWS)
-# define WINDOWS
-#endif
-#if defined(_WIN32) || defined(_WIN32_WCE) || defined(WIN32)
-# ifndef WIN32
-# define WIN32
-# endif
-#endif
-#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
-# if !defined(GNUC) && !defined(FLAT) && !defined(386)
-# ifndef SYS16BIT
-# define SYS16BIT
-# endif
-# endif
-#endif

-/*

    • Compile with -DMAXSEG_64K if the alloc function cannot allocate more
    • than 64k bytes at a time (needed on systems with 16-bit int).
  • */
    -#ifdef SYS16BIT
    -# define MAXSEG_64K
    -#endif
    -#ifdef MSDOS
    -# define UNALIGNED_OK
    -#endif

-#ifdef STDC_VERSION
-# ifndef STDC
-# define STDC
-# endif
-# if STDC_VERSION >= 199901L
-# ifndef STDC99
-# define STDC99
-# endif
-# endif
-#endif
-#if !defined(STDC) && (defined(STDC) || defined(__cplusplus))
-# define STDC
-#endif
-#if !defined(STDC) && (defined(GNUC) || defined(BORLANDC))
-# define STDC
-#endif
-#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
-# define STDC
-#endif
-#if !defined(STDC) && (defined(OS2) || defined(HOS_AIX))
-# define STDC
-#endif

-#if defined(OS400) && !defined(STDC) /* iSeries (formerly AS/400). */
-# define STDC
-#endif

-#ifndef STDC
-# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac /
-# define const /
note: need a more gentle solution here */
-# endif
-#endif

-#if defined(ZLIB_CONST) && !defined(z_const)
-# define z_const const
-#else
-# define z_const
-#endif

-#ifdef Z_SOLO

  • typedef unsigned long z_size_t;
    -#else
    -# define z_longlong long long
    -# if defined(NO_SIZE_T)
  • typedef unsigned NO_SIZE_T z_size_t;
    

-# elif defined(STDC)
-# include <stddef.h>

  • typedef size_t z_size_t;
    

-# else

  • typedef unsigned long z_size_t;
    

-# endif
-# undef z_longlong
-#endif

-/* Maximum value for memLevel in deflateInit2 */
-#ifndef MAX_MEM_LEVEL
-# ifdef MAXSEG_64K
-# define MAX_MEM_LEVEL 8
-# else
-# define MAX_MEM_LEVEL 9
-# endif
-#endif

-/* Maximum value for windowBits in deflateInit2 and inflateInit2.

    • WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
    • created by gzip. (Files created by minigzip can still be extracted by
    • gzip.)
  • /
    -#ifndef MAX_WBITS
    -# define MAX_WBITS 15 /
    32K LZ77 window */
    -#endif

-/* The memory requirements for deflate are (in bytes):

  •        (1 << (windowBits+2)) +  (1 << (memLevel+9))
    
  • that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)
  • plus a few kilobytes for small objects. For example, if you want to reduce
  • the default memory requirements from 256K to 128K, compile with
  • make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
    
  • Of course this will generally degrade compression (there's no free lunch).
  • The memory requirements for inflate are (in bytes) 1 << windowBits
  • that is, 32K for windowBits=15 (default value) plus about 7 kilobytes
  • for small objects.
    -*/
  •                    /* Type declarations */
    

-#ifndef OF /* function prototypes */
-# ifdef STDC
-# define OF(args) args
-# else
-# define OF(args) ()
-# endif
-#endif

-#ifndef Z_ARG /* function prototypes for stdarg */
-# if defined(STDC) || defined(Z_HAVE_STDARG_H)
-# define Z_ARG(args) args
-# else
-# define Z_ARG(args) ()
-# endif
-#endif

-/* The following definitions for FAR are needed only for MSDOS mixed

    • model programming (small or medium model with some far allocations).
    • This was tested only with MSC; for other MSDOS compilers you may have
    • to define NO_MEMCPY in zutil.h. If you don't need the mixed model,
    • just define FAR to be empty.
  • */
    -#ifdef SYS16BIT
    -# if defined(M_I86SM) || defined(M_I86MM)
  • /* MSC small or medium model */
    

-# define SMALL_MEDIUM
-# ifdef _MSC_VER
-# define FAR _far
-# else
-# define FAR far
-# endif
-# endif
-# if (defined(SMALL) || defined(MEDIUM))

  • /* Turbo C small or medium model */
    

-# define SMALL_MEDIUM
-# ifdef BORLANDC
-# define FAR _far
-# else
-# define FAR far
-# endif
-# endif
-#endif

-#if defined(WINDOWS) || defined(WIN32)

  • /* If building or using zlib as a DLL, define ZLIB_DLL.
    • This is not mandatory, but it offers a little performance increase.
  • /
    -# ifdef ZLIB_DLL
    -# if defined(WIN32) && (!defined(BORLANDC) || (BORLANDC >= 0x500))
    -# ifdef ZLIB_INTERNAL
    -# define ZEXTERN extern __declspec(dllexport)
    -# else
    -# define ZEXTERN extern __declspec(dllimport)
    -# endif
    -# endif
    -# endif /
    ZLIB_DLL */
  • /* If building or using zlib with the WINAPI/WINAPIV calling convention,
    • define ZLIB_WINAPI.
    • Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
  • */
    -# ifdef ZLIB_WINAPI
    -# ifdef FAR
    -# undef FAR
    -# endif
    -# include <windows.h>
  • /* No need for _export, use ZLIB.DEF instead. */
    
  • /* For complete Windows compatibility, use WINAPI, not __stdcall. */
    

-# define ZEXPORT WINAPI
-# ifdef WIN32
-# define ZEXPORTVA WINAPIV
-# else
-# define ZEXPORTVA FAR CDECL
-# endif
-# endif
-#endif

-#if defined (BEOS)
-# ifdef ZLIB_DLL
-# ifdef ZLIB_INTERNAL
-# define ZEXPORT __declspec(dllexport)
-# define ZEXPORTVA __declspec(dllexport)
-# else
-# define ZEXPORT __declspec(dllimport)
-# define ZEXPORTVA __declspec(dllimport)
-# endif
-# endif
-#endif

-#ifndef ZEXTERN
-# define ZEXTERN extern
-#endif
-#ifndef ZEXPORT
-# define ZEXPORT
-#endif
-#ifndef ZEXPORTVA
-# define ZEXPORTVA
-#endif

-#ifndef FAR
-# define FAR
-#endif

-#if !defined(MACTYPES)
-typedef unsigned char Byte; /* 8 bits /
-#endif
-typedef unsigned int uInt; /
16 bits or more /
-typedef unsigned long uLong; /
32 bits or more */

-#ifdef SMALL_MEDIUM

  • /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
    -# define Bytef Byte FAR
    -#else
  • typedef Byte FAR Bytef;
    -#endif
    -typedef char FAR charf;
    -typedef int FAR intf;
    -typedef uInt FAR uIntf;
    -typedef uLong FAR uLongf;

-#ifdef STDC

  • typedef void const *voidpc;
  • typedef void FAR *voidpf;
  • typedef void *voidp;
    -#else
  • typedef Byte const *voidpc;
  • typedef Byte FAR *voidpf;
  • typedef Byte *voidp;
    -#endif

-#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC)
-# include <limits.h>
-# if (UINT_MAX == 0xffffffffUL)
-# define Z_U4 unsigned
-# elif (ULONG_MAX == 0xffffffffUL)
-# define Z_U4 unsigned long
-# elif (USHRT_MAX == 0xffffffffUL)
-# define Z_U4 unsigned short
-# endif
-#endif

-#ifdef Z_U4

  • typedef Z_U4 z_crc_t;
    -#else
  • typedef unsigned long z_crc_t;
    -#endif

-#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */
-# define Z_HAVE_UNISTD_H
-#endif

-#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */
-# define Z_HAVE_STDARG_H
-#endif

-#ifdef STDC
-# ifndef Z_SOLO
-# include <sys/types.h> /* for off_t */
-# endif
-#endif

-#if defined(STDC) || defined(Z_HAVE_STDARG_H)
-# ifndef Z_SOLO
-# include <stdarg.h> /* for va_list */
-# endif
-#endif

-#ifdef _WIN32
-# ifndef Z_SOLO
-# include <stddef.h> /* for wchar_t */
-# endif
-#endif

-/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and

    • "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even
    • though the former does not conform to the LFS document), but considering
    • both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
    • equivalently requesting no 64-bit operations
  • */
    -#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
    -# undef _LARGEFILE64_SOURCE
    -#endif

-#if defined(WATCOMC) && !defined(Z_HAVE_UNISTD_H)
-# define Z_HAVE_UNISTD_H
-#endif
-#ifndef Z_SOLO
-# if defined(Z_HAVE_UNISTD_H) || defined(LARGEFILE64_SOURCE)
-# include <unistd.h> /* for SEEK
*, off_t, and _LFS64_LARGEFILE /
-# ifdef VMS
-# include <unixio.h> /
for off_t */
-# endif
-# ifndef z_off_t
-# define z_off_t off_t
-# endif
-# endif
-#endif

-#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0
-# define Z_LFS64
-#endif

-#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64)
-# define Z_LARGE64
-#endif

-#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64)
-# define Z_WANT64
-#endif

-#if !defined(SEEK_SET) && !defined(Z_SOLO)
-# define SEEK_SET 0 /* Seek from beginning of file. /
-# define SEEK_CUR 1 /
Seek from current position. /
-# define SEEK_END 2 /
Set file pointer to EOF plus "offset" */
-#endif

-#ifndef z_off_t
-# define z_off_t long
-#endif

-#if !defined(_WIN32) && defined(Z_LARGE64)
-# define z_off64_t off64_t
-#else
-# if defined(_WIN32) && !defined(GNUC) && !defined(Z_SOLO)
-# define z_off64_t __int64
-# else
-# define z_off64_t z_off_t
-# endif
-#endif

-/* MVS linker does not support external names larger than 8 bytes */
-#if defined(MVS)

  • #pragma map(deflateInit_,"DEIN")
  • #pragma map(deflateInit2_,"DEIN2")
  • #pragma map(deflateEnd,"DEEND")
  • #pragma map(deflateBound,"DEBND")
  • #pragma map(inflateInit_,"ININ")
  • #pragma map(inflateInit2_,"ININ2")
  • #pragma map(inflateEnd,"INEND")
  • #pragma map(inflateSync,"INSY")
  • #pragma map(inflateSetDictionary,"INSEDI")
  • #pragma map(compressBound,"CMBND")
  • #pragma map(inflate_table,"INTABL")
  • #pragma map(inflate_fast,"INFA")
  • #pragma map(inflate_copyright,"INCOPY")
    -#endif

-#endif /* ZCONF_H */

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment