diff --git a/docs/release.md b/docs/release.md index 176bebdd3..1f439a9c9 100644 --- a/docs/release.md +++ b/docs/release.md @@ -16,6 +16,10 @@ (release_0.17.0)= +* Allow building against a system Zlib. Note, this is only required if blosc is still + vendored, and a vendored Zlib is no longer built if blosc is not. + By {user}`Elliott Sales de Andrade `, {issue}`860` + ## 0.17.0 ### Breaking changes diff --git a/meson.options b/meson.options index 26a2414d6..f055af877 100644 --- a/meson.options +++ b/meson.options @@ -1,9 +1,11 @@ option('system_blosc', type: 'feature', value: 'disabled', description: 'Use system-installed Blosc library') -option('system_zstd', type: 'feature', value: 'disabled', - description: 'Use system-installed Zstandard library') option('system_lz4', type: 'feature', value: 'disabled', description: 'Use system-installed LZ4 library') +option('system_zlib', type: 'feature', value: 'disabled', + description: 'Use system-installed Zlib library') +option('system_zstd', type: 'feature', value: 'disabled', + description: 'Use system-installed Zstandard library') option('sse2', type: 'feature', value: 'auto', description: 'Enable SSE2 SIMD optimizations') option('avx2', type: 'feature', value: 'auto', diff --git a/src/numcodecs/meson.build b/src/numcodecs/meson.build index eca2b2c64..41a3a7a2f 100644 --- a/src/numcodecs/meson.build +++ b/src/numcodecs/meson.build @@ -123,39 +123,43 @@ if not lz4_dep.found() ) endif -# --- Vendored zlib (always vendored, used by blosc) --- -zlib_sources = files( - '../../c-blosc/internal-complibs/zlib-1.3.1/adler32.c', - '../../c-blosc/internal-complibs/zlib-1.3.1/compress.c', - '../../c-blosc/internal-complibs/zlib-1.3.1/crc32.c', - '../../c-blosc/internal-complibs/zlib-1.3.1/deflate.c', - '../../c-blosc/internal-complibs/zlib-1.3.1/gzclose.c', - '../../c-blosc/internal-complibs/zlib-1.3.1/gzlib.c', - '../../c-blosc/internal-complibs/zlib-1.3.1/gzread.c', - '../../c-blosc/internal-complibs/zlib-1.3.1/gzwrite.c', - '../../c-blosc/internal-complibs/zlib-1.3.1/infback.c', - '../../c-blosc/internal-complibs/zlib-1.3.1/inffast.c', - '../../c-blosc/internal-complibs/zlib-1.3.1/inflate.c', - '../../c-blosc/internal-complibs/zlib-1.3.1/inftrees.c', - '../../c-blosc/internal-complibs/zlib-1.3.1/trees.c', - '../../c-blosc/internal-complibs/zlib-1.3.1/uncompr.c', - '../../c-blosc/internal-complibs/zlib-1.3.1/zutil.c', -) -zlib_inc = include_directories('../../c-blosc/internal-complibs/zlib-1.3.1') - -zlib_lib = static_library('zlib_vendored', zlib_sources, - include_directories: zlib_inc, - c_args: c_args, -) -zlib_dep = declare_dependency( - link_with: zlib_lib, - include_directories: zlib_inc, -) - # --- Vendored blosc --- blosc_dep = dependency('blosc', required: get_option('system_blosc')) if not blosc_dep.found() + # --- Vendored zlib --- + zlib_dep = dependency('zlib', required: get_option('system_zlib')) + + if not zlib_dep.found() + zlib_sources = files( + '../../c-blosc/internal-complibs/zlib-1.3.1/adler32.c', + '../../c-blosc/internal-complibs/zlib-1.3.1/compress.c', + '../../c-blosc/internal-complibs/zlib-1.3.1/crc32.c', + '../../c-blosc/internal-complibs/zlib-1.3.1/deflate.c', + '../../c-blosc/internal-complibs/zlib-1.3.1/gzclose.c', + '../../c-blosc/internal-complibs/zlib-1.3.1/gzlib.c', + '../../c-blosc/internal-complibs/zlib-1.3.1/gzread.c', + '../../c-blosc/internal-complibs/zlib-1.3.1/gzwrite.c', + '../../c-blosc/internal-complibs/zlib-1.3.1/infback.c', + '../../c-blosc/internal-complibs/zlib-1.3.1/inffast.c', + '../../c-blosc/internal-complibs/zlib-1.3.1/inflate.c', + '../../c-blosc/internal-complibs/zlib-1.3.1/inftrees.c', + '../../c-blosc/internal-complibs/zlib-1.3.1/trees.c', + '../../c-blosc/internal-complibs/zlib-1.3.1/uncompr.c', + '../../c-blosc/internal-complibs/zlib-1.3.1/zutil.c', + ) + zlib_inc = include_directories('../../c-blosc/internal-complibs/zlib-1.3.1') + + zlib_lib = static_library('zlib_vendored', zlib_sources, + include_directories: zlib_inc, + c_args: c_args, + ) + zlib_dep = declare_dependency( + link_with: zlib_lib, + include_directories: zlib_inc, + ) + endif + blosc_sources = files( '../../c-blosc/blosc/blosc.c', '../../c-blosc/blosc/blosclz.c', @@ -207,7 +211,7 @@ endif # Extensions with C library dependencies py.extension_module('blosc', 'blosc.pyx', - dependencies: [blosc_dep, lz4_dep, zlib_dep, zstd_dep], + dependencies: [blosc_dep], c_args: c_args, link_args: link_args, install: true,