2018-11-27 10:04:41 -08:00
|
|
|
# #############################################################################
|
|
|
|
# Copyright (c) 2018-present Dima Krasner <dima@dimakrasner.com>
|
|
|
|
# lzutao <taolzu(at)gmail.com>
|
|
|
|
# All rights reserved.
|
|
|
|
#
|
|
|
|
# This source code is licensed under both the BSD-style license (found in the
|
|
|
|
# LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
|
|
# in the COPYING file in the root directory of this source tree).
|
|
|
|
# #############################################################################
|
|
|
|
|
2018-11-30 00:30:45 -08:00
|
|
|
zstd_rootdir = '../../..'
|
2018-11-27 10:04:41 -08:00
|
|
|
|
2018-11-30 00:30:45 -08:00
|
|
|
libzstd_includes = [include_directories(join_paths(zstd_rootdir,'lib'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/common'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/compress'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/decompress'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/dictBuilder'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/deprecated'))]
|
2018-11-27 10:04:41 -08:00
|
|
|
|
2018-11-30 00:30:45 -08:00
|
|
|
libzstd_sources = [join_paths(zstd_rootdir, 'lib/common/entropy_common.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/common/fse_decompress.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/common/threading.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/common/pool.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/common/zstd_common.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/common/error_private.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/common/xxhash.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/compress/hist.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/compress/fse_compress.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/compress/huf_compress.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/compress/zstd_compress.c'),
|
2019-07-03 13:40:37 -07:00
|
|
|
join_paths(zstd_rootdir, 'lib/compress/zstd_compress_literals.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/compress/zstd_compress_sequences.c'),
|
2019-11-05 12:51:25 -08:00
|
|
|
join_paths(zstd_rootdir, 'lib/compress/zstd_compress_superblock.c'),
|
2018-11-30 00:30:45 -08:00
|
|
|
join_paths(zstd_rootdir, 'lib/compress/zstdmt_compress.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/compress/zstd_fast.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/compress/zstd_double_fast.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/compress/zstd_lazy.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/compress/zstd_opt.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/compress/zstd_ldm.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/decompress/huf_decompress.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/decompress/zstd_decompress.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/decompress/zstd_decompress_block.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/decompress/zstd_ddict.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/dictBuilder/cover.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/dictBuilder/fastcover.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/dictBuilder/divsufsort.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/dictBuilder/zdict.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/deprecated/zbuff_common.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/deprecated/zbuff_compress.c'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/deprecated/zbuff_decompress.c')]
|
2018-11-27 10:04:41 -08:00
|
|
|
|
2018-11-30 00:30:45 -08:00
|
|
|
# Explicit define legacy support
|
2018-11-30 06:05:03 -08:00
|
|
|
add_project_arguments('-DZSTD_LEGACY_SUPPORT=@0@'.format(legacy_level),
|
2018-11-30 00:30:45 -08:00
|
|
|
language: 'c')
|
|
|
|
|
2018-11-30 06:05:03 -08:00
|
|
|
if legacy_level == 0
|
2018-11-30 00:30:45 -08:00
|
|
|
message('Legacy support: DISABLED')
|
|
|
|
else
|
|
|
|
# See ZSTD_LEGACY_SUPPORT of lib/README.md
|
2018-11-30 06:05:03 -08:00
|
|
|
message('Enable legacy support back to version 0.@0@'.format(legacy_level))
|
2018-11-30 00:30:45 -08:00
|
|
|
|
|
|
|
libzstd_includes += [ include_directories(join_paths(zstd_rootdir, 'lib/legacy')) ]
|
|
|
|
foreach i : [1, 2, 3, 4, 5, 6, 7]
|
2018-11-30 06:05:03 -08:00
|
|
|
if legacy_level <= i
|
2018-11-30 00:30:45 -08:00
|
|
|
libzstd_sources += join_paths(zstd_rootdir, 'lib/legacy/zstd_v0@0@.c'.format(i))
|
2018-11-27 10:04:41 -08:00
|
|
|
endif
|
2018-11-30 00:30:45 -08:00
|
|
|
endforeach
|
2018-11-27 10:04:41 -08:00
|
|
|
endif
|
|
|
|
|
2018-11-30 00:30:45 -08:00
|
|
|
libzstd_deps = []
|
2018-11-30 06:05:03 -08:00
|
|
|
if use_multi_thread
|
2018-11-30 00:30:45 -08:00
|
|
|
message('Enable multi-threading support')
|
|
|
|
add_project_arguments('-DZSTD_MULTITHREAD', language: 'c')
|
|
|
|
libzstd_deps = [ thread_dep ]
|
|
|
|
endif
|
|
|
|
|
|
|
|
libzstd_c_args = []
|
|
|
|
if cc_id == compiler_msvc
|
|
|
|
if default_library_type != 'static'
|
|
|
|
libzstd_sources += [windows_mod.compile_resources(
|
|
|
|
join_paths(zstd_rootdir, 'build/VS2010/libzstd-dll/libzstd-dll.rc'))]
|
|
|
|
libzstd_c_args += ['-DZSTD_DLL_EXPORT=1',
|
|
|
|
'-DZSTD_HEAPMODE=0',
|
|
|
|
'-D_CONSOLE',
|
|
|
|
'-D_CRT_SECURE_NO_WARNINGS']
|
|
|
|
else
|
|
|
|
libzstd_c_args += ['-DZSTD_HEAPMODE=0',
|
|
|
|
'-D_CRT_SECURE_NO_WARNINGS']
|
|
|
|
endif
|
2018-11-27 10:04:41 -08:00
|
|
|
endif
|
|
|
|
|
2018-11-30 00:30:45 -08:00
|
|
|
mingw_ansi_stdio_flags = []
|
|
|
|
if host_machine_os == os_windows and cc_id == compiler_gcc
|
|
|
|
mingw_ansi_stdio_flags = [ '-D__USE_MINGW_ANSI_STDIO' ]
|
|
|
|
endif
|
|
|
|
libzstd_c_args += mingw_ansi_stdio_flags
|
|
|
|
|
|
|
|
libzstd_debug_cflags = []
|
2018-11-30 06:05:03 -08:00
|
|
|
if use_debug
|
|
|
|
libzstd_c_args += '-DDEBUGLEVEL=@0@'.format(debug_level)
|
2018-11-30 00:30:45 -08:00
|
|
|
if cc_id == compiler_gcc or cc_id == compiler_clang
|
|
|
|
libzstd_debug_cflags = ['-Wstrict-aliasing=1', '-Wswitch-enum',
|
|
|
|
'-Wdeclaration-after-statement', '-Wstrict-prototypes',
|
2019-02-01 01:30:31 -08:00
|
|
|
'-Wundef', '-Wpointer-arith', '-Wvla',
|
2018-11-30 00:30:45 -08:00
|
|
|
'-Wformat=2', '-Winit-self', '-Wfloat-equal', '-Wwrite-strings',
|
|
|
|
'-Wredundant-decls', '-Wmissing-prototypes', '-Wc++-compat']
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
libzstd_c_args += cc.get_supported_arguments(libzstd_debug_cflags)
|
|
|
|
|
2018-11-27 10:04:41 -08:00
|
|
|
libzstd = library('zstd',
|
2018-11-30 00:30:45 -08:00
|
|
|
libzstd_sources,
|
|
|
|
include_directories: libzstd_includes,
|
|
|
|
c_args: libzstd_c_args,
|
|
|
|
dependencies: libzstd_deps,
|
|
|
|
install: true,
|
2018-12-04 10:12:11 -08:00
|
|
|
version: zstd_libversion)
|
2018-11-30 00:30:45 -08:00
|
|
|
|
|
|
|
libzstd_dep = declare_dependency(link_with: libzstd,
|
|
|
|
include_directories: libzstd_includes)
|
2018-11-27 10:04:41 -08:00
|
|
|
|
2018-12-27 20:20:33 -08:00
|
|
|
pkgconfig.generate(libzstd,
|
|
|
|
name: 'libzstd',
|
2018-11-30 00:30:45 -08:00
|
|
|
filebase: 'libzstd',
|
|
|
|
description: 'fast lossless compression algorithm library',
|
|
|
|
version: zstd_libversion,
|
|
|
|
url: 'http://www.zstd.net/')
|
2018-11-27 10:04:41 -08:00
|
|
|
|
2018-11-30 00:30:45 -08:00
|
|
|
install_headers(join_paths(zstd_rootdir, 'lib/zstd.h'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/dictBuilder/zdict.h'),
|
|
|
|
join_paths(zstd_rootdir, 'lib/common/zstd_errors.h'))
|