This is an automated email from the ASF dual-hosted git repository. jiangtian pushed a commit to branch refactor_header_packaging in repository https://gitbox.apache.org/repos/asf/tsfile.git
commit a0953ccdc2288ddca54a6c2c0620434a91329033 Author: Tian Jiang <[email protected]> AuthorDate: Mon Mar 10 13:06:29 2025 +0800 refactor header packaging & fix zlib missing header --- cpp/CMakeLists.txt | 3 +- cpp/cmake/CopyToDir.cmake | 25 +- cpp/src/CMakeLists.txt | 3 + cpp/src/common/CMakeLists.txt | 2 +- cpp/src/compress/CMakeLists.txt | 2 +- cpp/src/cwrapper/CMakeLists.txt | 2 +- cpp/src/encoding/CMakeLists.txt | 7 +- cpp/src/file/CMakeLists.txt | 2 +- cpp/src/parser/CMakeLists.txt | 3 +- cpp/src/reader/CMakeLists.txt | 2 +- cpp/src/utils/CMakeLists.txt | 7 +- cpp/src/writer/CMakeLists.txt | 2 +- cpp/third_party/zlib-1.2.13/CMakeLists.txt | 22 +- cpp/third_party/zlib-1.2.13/zconf.h | 547 +++++++++++++++++++++++++++++ 14 files changed, 600 insertions(+), 29 deletions(-) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index d33605bc..04498a6a 100755 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -96,7 +96,8 @@ set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) set(PROJECT_SRC_DIR ${PROJECT_SOURCE_DIR}/src) # All include files will be installed here. -set(LIBRARY_INCLUDE_DIR ${PROJECT_BINARY_DIR}/include) +# Use global var so that tests may also use this +set(LIBRARY_INCLUDE_DIR ${PROJECT_BINARY_DIR}/include CACHE STRING "TsFile includes") set(THIRD_PARTY_INCLUDE ${PROJECT_BINARY_DIR}/third_party) add_subdirectory(third_party) diff --git a/cpp/cmake/CopyToDir.cmake b/cpp/cmake/CopyToDir.cmake index 57afa0d9..c57e11ff 100644 --- a/cpp/cmake/CopyToDir.cmake +++ b/cpp/cmake/CopyToDir.cmake @@ -22,17 +22,30 @@ under the License. # This function is used to copy files to a directory and it will handle relative paths automatically. function(copy_to_dir) set(INCLUDE_EXPORT_DR ${LIBRARY_INCLUDE_DIR} CACHE INTERNAL "Include export directory") - foreach(file ${ARGN}) + math(EXPR file_path_length "${ARGC} - 1") + list(SUBLIST ARGN 0 ${file_path_length} file_paths) + list(GET ARGN ${file_path_length} parent) + + add_custom_command( + OUTPUT copy_cmd_${parent} + COMMAND ${CMAKE_COMMAND} -E echo Copying headers of ${parent} + ) + + foreach(file IN LISTS file_paths) get_filename_component(file_name ${file} NAME) get_filename_component(file_path ${file} PATH) string(REPLACE "${CMAKE_SOURCE_DIR}/src" "" relative_path "${file_path}") - add_custom_target( - copy_${file_name} ALL - COMMAND ${CMAKE_COMMAND} -E make_directory ${INCLUDE_EXPORT_DR}/${relative_path} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${file} ${INCLUDE_EXPORT_DR}/${relative_path}/${file_name} - COMMENT "Copying ${file_name} to ${INCLUDE_EXPORT_DR}/${relative_path}" + add_custom_command( + OUTPUT copy_cmd_${parent} APPEND + COMMAND ${CMAKE_COMMAND} -E make_directory ${INCLUDE_EXPORT_DR}/${relative_path} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${file} ${INCLUDE_EXPORT_DR}/${relative_path}/${file_name} ) endforeach() + add_custom_target( + copy_${parent} ALL + DEPENDS copy_cmd_${parent} + ) + add_dependencies(${parent} copy_${parent}) endfunction() diff --git a/cpp/src/CMakeLists.txt b/cpp/src/CMakeLists.txt index 398c0cfa..86c67f2b 100644 --- a/cpp/src/CMakeLists.txt +++ b/cpp/src/CMakeLists.txt @@ -72,6 +72,9 @@ else() target_link_libraries(tsfile common_obj compress_obj cwrapper_obj file_obj read_obj write_obj parser_obj) endif() +# to trigger copy headers +add_dependencies(tsfile utils_obj encoding_obj) + set(LIBTSFILE_PROJECT_VERSION ${TsFile_CPP_VERSION}) set(LIBTSFILE_SO_VERSION ${TsFile_CPP_VERSION}) set_target_properties(tsfile PROPERTIES VERSION ${LIBTSFILE_PROJECT_VERSION}) diff --git a/cpp/src/common/CMakeLists.txt b/cpp/src/common/CMakeLists.txt index ec285c1d..7ac55ab5 100644 --- a/cpp/src/common/CMakeLists.txt +++ b/cpp/src/common/CMakeLists.txt @@ -35,4 +35,4 @@ add_library(common_obj OBJECT ${common_SRC_LIST} # install header files recursively file(GLOB_RECURSE HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h") -copy_to_dir(${HEADERS}) \ No newline at end of file +copy_to_dir(${HEADERS} "common_obj") \ No newline at end of file diff --git a/cpp/src/compress/CMakeLists.txt b/cpp/src/compress/CMakeLists.txt index 99bc0cc2..a2cda6b7 100644 --- a/cpp/src/compress/CMakeLists.txt +++ b/cpp/src/compress/CMakeLists.txt @@ -22,4 +22,4 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON) aux_source_directory(. compress_SRC_LIST) add_library(compress_obj OBJECT ${compress_SRC_LIST}) file(GLOB HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h") -copy_to_dir(${HEADERS}) +copy_to_dir(${HEADERS} "compress_obj") diff --git a/cpp/src/cwrapper/CMakeLists.txt b/cpp/src/cwrapper/CMakeLists.txt index d401fddc..e03c30df 100644 --- a/cpp/src/cwrapper/CMakeLists.txt +++ b/cpp/src/cwrapper/CMakeLists.txt @@ -23,4 +23,4 @@ add_library(cwrapper_obj OBJECT ${CWRAPPER_SRC_LIST}) # install header files file(GLOB HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h") -copy_to_dir(${HEADERS}) +copy_to_dir(${HEADERS} "cwrapper_obj") diff --git a/cpp/src/encoding/CMakeLists.txt b/cpp/src/encoding/CMakeLists.txt index 4611b747..45c1f0bd 100644 --- a/cpp/src/encoding/CMakeLists.txt +++ b/cpp/src/encoding/CMakeLists.txt @@ -18,6 +18,9 @@ under the License. ]] message("Running in src/encoding directory") - +# currently just a place holder for adding dependency of copying headers +add_custom_target( + encoding_obj ALL +) file(GLOB HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h") -copy_to_dir(${HEADERS}) \ No newline at end of file +copy_to_dir(${HEADERS} "encoding_obj") \ No newline at end of file diff --git a/cpp/src/file/CMakeLists.txt b/cpp/src/file/CMakeLists.txt index 5c5296b9..dd425f7c 100644 --- a/cpp/src/file/CMakeLists.txt +++ b/cpp/src/file/CMakeLists.txt @@ -25,4 +25,4 @@ add_library(file_obj OBJECT ${file_SRC_LIST}) # install header files file(GLOB HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h") -copy_to_dir(${HEADERS}) \ No newline at end of file +copy_to_dir(${HEADERS} "file_obj") \ No newline at end of file diff --git a/cpp/src/parser/CMakeLists.txt b/cpp/src/parser/CMakeLists.txt index 56cf40ae..6d257164 100644 --- a/cpp/src/parser/CMakeLists.txt +++ b/cpp/src/parser/CMakeLists.txt @@ -22,4 +22,5 @@ file(GLOB_RECURSE PARSER_SRC_LIST "*.cpp") add_library(parser_obj OBJECT ${PARSER_SRC_LIST}) file(GLOB_RECURSE HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h") -copy_to_dir(${HEADERS}) \ No newline at end of file +SET(PARENT "parser_obj") +copy_to_dir(${HEADERS} "parser_obj") \ No newline at end of file diff --git a/cpp/src/reader/CMakeLists.txt b/cpp/src/reader/CMakeLists.txt index a3e3b97e..21f79898 100644 --- a/cpp/src/reader/CMakeLists.txt +++ b/cpp/src/reader/CMakeLists.txt @@ -24,4 +24,4 @@ add_library(read_obj OBJECT ${read_SRC_LIST}) # install header files file(GLOB_RECURSE HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h") -copy_to_dir(${HEADERS}) \ No newline at end of file +copy_to_dir(${HEADERS} "read_obj") \ No newline at end of file diff --git a/cpp/src/utils/CMakeLists.txt b/cpp/src/utils/CMakeLists.txt index 0a3594c8..2c038d28 100644 --- a/cpp/src/utils/CMakeLists.txt +++ b/cpp/src/utils/CMakeLists.txt @@ -17,7 +17,10 @@ specific language governing permissions and limitations under the License. ]] message("Running in src/utils directory") - +# currently just a place holder for adding dependency of copying headers +add_custom_target( + utils_obj ALL +) # install header files file(GLOB HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h") -copy_to_dir(${HEADERS}) \ No newline at end of file +copy_to_dir(${HEADERS} "utils_obj") \ No newline at end of file diff --git a/cpp/src/writer/CMakeLists.txt b/cpp/src/writer/CMakeLists.txt index aee6ad5a..dddac10b 100644 --- a/cpp/src/writer/CMakeLists.txt +++ b/cpp/src/writer/CMakeLists.txt @@ -25,4 +25,4 @@ add_library(write_obj OBJECT ${write_SRC_LIST}) # install header files file(GLOB HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h") -copy_to_dir(${HEADERS}) \ No newline at end of file +copy_to_dir(${HEADERS} "write_obj") \ No newline at end of file diff --git a/cpp/third_party/zlib-1.2.13/CMakeLists.txt b/cpp/third_party/zlib-1.2.13/CMakeLists.txt index 51631c8e..0d7560f2 100644 --- a/cpp/third_party/zlib-1.2.13/CMakeLists.txt +++ b/cpp/third_party/zlib-1.2.13/CMakeLists.txt @@ -64,17 +64,17 @@ if(MSVC) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) endif() -if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR) - # If we're doing an out of source build and the user has a zconf.h - # in their source tree... - if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h) - message(STATUS "Renaming") - message(STATUS " ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h") - message(STATUS "to 'zconf.h.included' because this file is included with zlib") - message(STATUS "but CMake generates it automatically in the build directory.") - file(RENAME ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.included) - endif() -endif() +#if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR) +# # If we're doing an out of source build and the user has a zconf.h +# # in their source tree... +# if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h) +# message(STATUS "Renaming") +# message(STATUS " ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h") +# message(STATUS "to 'zconf.h.included' because this file is included with zlib") +# message(STATUS "but CMake generates it automatically in the build directory.") +# file(RENAME ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.included) +# endif() +#endif() set(ZLIB_PC ${CMAKE_CURRENT_BINARY_DIR}/zlib.pc) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zlib.pc.cmakein diff --git a/cpp/third_party/zlib-1.2.13/zconf.h b/cpp/third_party/zlib-1.2.13/zconf.h new file mode 100644 index 00000000..bf977d3e --- /dev/null +++ b/cpp/third_party/zlib-1.2.13/zconf.h @@ -0,0 +1,547 @@ +/* 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_combine_gen z_crc32_combine_gen +# define crc32_combine_gen64 z_crc32_combine_gen64 +# define crc32_combine_op z_crc32_combine_op +# 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 +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +# 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 + +#ifndef Z_HAVE_UNISTD_H +# ifdef __WATCOMC__ +# define Z_HAVE_UNISTD_H +# endif +#endif +#ifndef Z_HAVE_UNISTD_H +# if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32) +# define Z_HAVE_UNISTD_H +# endif +#endif +#ifndef Z_SOLO +# if defined(Z_HAVE_UNISTD_H) +# 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 */
