1*01826a49SYabin Cui# ############################################################################# 2*01826a49SYabin Cui# Copyright (c) 2018-present Dima Krasner <[email protected]> 3*01826a49SYabin Cui# lzutao <taolzu(at)gmail.com> 4*01826a49SYabin Cui# All rights reserved. 5*01826a49SYabin Cui# 6*01826a49SYabin Cui# This source code is licensed under both the BSD-style license (found in the 7*01826a49SYabin Cui# LICENSE file in the root directory of this source tree) and the GPLv2 (found 8*01826a49SYabin Cui# in the COPYING file in the root directory of this source tree). 9*01826a49SYabin Cui# ############################################################################# 10*01826a49SYabin Cui 11*01826a49SYabin Cuizstd_rootdir = '../../..' 12*01826a49SYabin Cui 13*01826a49SYabin Cuizstd_programs_sources = [join_paths(zstd_rootdir, 'programs/zstdcli.c'), 14*01826a49SYabin Cui join_paths(zstd_rootdir, 'programs/util.c'), 15*01826a49SYabin Cui join_paths(zstd_rootdir, 'programs/timefn.c'), 16*01826a49SYabin Cui join_paths(zstd_rootdir, 'programs/fileio.c'), 17*01826a49SYabin Cui join_paths(zstd_rootdir, 'programs/fileio_asyncio.c'), 18*01826a49SYabin Cui join_paths(zstd_rootdir, 'programs/benchfn.c'), 19*01826a49SYabin Cui join_paths(zstd_rootdir, 'programs/benchzstd.c'), 20*01826a49SYabin Cui join_paths(zstd_rootdir, 'programs/datagen.c'), 21*01826a49SYabin Cui join_paths(zstd_rootdir, 'programs/lorem.c'), 22*01826a49SYabin Cui join_paths(zstd_rootdir, 'programs/dibio.c'), 23*01826a49SYabin Cui join_paths(zstd_rootdir, 'programs/zstdcli_trace.c')] 24*01826a49SYabin Cui 25*01826a49SYabin Cuizstd_deps = [ libzstd_internal_dep ] 26*01826a49SYabin Cuizstd_c_args = libzstd_debug_cflags 27*01826a49SYabin Cui 28*01826a49SYabin Cuizstd_frugal_deps = [ libzstd_internal_dep ] 29*01826a49SYabin Cuizstd_frugal_c_args = [ '-DZSTD_NOBENCH', '-DZSTD_NODICT', '-DZSTD_NOTRACE' ] 30*01826a49SYabin Cui 31*01826a49SYabin Cuiif use_multi_thread 32*01826a49SYabin Cui zstd_deps += [ thread_dep ] 33*01826a49SYabin Cui zstd_c_args += [ '-DZSTD_MULTITHREAD' ] 34*01826a49SYabin Cui zstd_frugal_deps += [ thread_dep ] 35*01826a49SYabin Cui zstd_frugal_c_args += [ '-DZSTD_MULTITHREAD' ] 36*01826a49SYabin Cuiendif 37*01826a49SYabin Cui 38*01826a49SYabin Cuiif use_zlib 39*01826a49SYabin Cui zstd_deps += [ zlib_dep ] 40*01826a49SYabin Cui zstd_c_args += [ '-DZSTD_GZCOMPRESS', '-DZSTD_GZDECOMPRESS' ] 41*01826a49SYabin Cuiendif 42*01826a49SYabin Cui 43*01826a49SYabin Cuiif use_lzma 44*01826a49SYabin Cui zstd_deps += [ lzma_dep ] 45*01826a49SYabin Cui zstd_c_args += [ '-DZSTD_LZMACOMPRESS', '-DZSTD_LZMADECOMPRESS' ] 46*01826a49SYabin Cuiendif 47*01826a49SYabin Cui 48*01826a49SYabin Cuiif use_lz4 49*01826a49SYabin Cui zstd_deps += [ lz4_dep ] 50*01826a49SYabin Cui zstd_c_args += [ '-DZSTD_LZ4COMPRESS', '-DZSTD_LZ4DECOMPRESS' ] 51*01826a49SYabin Cuiendif 52*01826a49SYabin Cui 53*01826a49SYabin Cuiexport_dynamic_on_windows = false 54*01826a49SYabin Cui# explicit backtrace enable/disable for Linux & Darwin 55*01826a49SYabin Cuihave_execinfo = cc.has_header('execinfo.h', required: use_backtrace) 56*01826a49SYabin Cuiif not have_execinfo 57*01826a49SYabin Cui zstd_c_args += '-DBACKTRACE_ENABLE=0' 58*01826a49SYabin Cuielif use_debug and host_machine_os == os_windows # MinGW target 59*01826a49SYabin Cui zstd_c_args += '-DBACKTRACE_ENABLE=1' 60*01826a49SYabin Cui export_dynamic_on_windows = true 61*01826a49SYabin Cuiendif 62*01826a49SYabin Cui 63*01826a49SYabin Cuiif cc_id == compiler_msvc 64*01826a49SYabin Cui if default_library_type != 'static' 65*01826a49SYabin Cui zstd_programs_sources += [windows_mod.compile_resources( 66*01826a49SYabin Cui join_paths(zstd_rootdir, 'build/VS2010/zstd/zstd.rc'), 67*01826a49SYabin Cui include_directories: libzstd_includes)] 68*01826a49SYabin Cui endif 69*01826a49SYabin Cuiendif 70*01826a49SYabin Cui 71*01826a49SYabin Cuizstd = executable('zstd', 72*01826a49SYabin Cui zstd_programs_sources, 73*01826a49SYabin Cui c_args: zstd_c_args, 74*01826a49SYabin Cui dependencies: zstd_deps, 75*01826a49SYabin Cui export_dynamic: export_dynamic_on_windows, # Since Meson 0.45.0 76*01826a49SYabin Cui build_by_default: bin_programs, 77*01826a49SYabin Cui install: bin_programs) 78*01826a49SYabin Cui 79*01826a49SYabin Cuiif not bin_programs 80*01826a49SYabin Cui # we generate rules to build the programs, but don't install anything 81*01826a49SYabin Cui # so do not continue to installing scripts and manpages 82*01826a49SYabin Cui subdir_done() 83*01826a49SYabin Cuiendif 84*01826a49SYabin Cui 85*01826a49SYabin Cuizstd_frugal_sources = [join_paths(zstd_rootdir, 'programs/zstdcli.c'), 86*01826a49SYabin Cui join_paths(zstd_rootdir, 'programs/timefn.c'), 87*01826a49SYabin Cui join_paths(zstd_rootdir, 'programs/util.c'), 88*01826a49SYabin Cui join_paths(zstd_rootdir, 'programs/fileio.c'), 89*01826a49SYabin Cui join_paths(zstd_rootdir, 'programs/fileio_asyncio.c')] 90*01826a49SYabin Cui 91*01826a49SYabin Cui# Minimal target, with only zstd compression and decompression. 92*01826a49SYabin Cui# No bench. No legacy. 93*01826a49SYabin Cuiexecutable('zstd-frugal', 94*01826a49SYabin Cui zstd_frugal_sources, 95*01826a49SYabin Cui dependencies: zstd_frugal_deps, 96*01826a49SYabin Cui c_args: zstd_frugal_c_args, 97*01826a49SYabin Cui install: true) 98*01826a49SYabin Cui 99*01826a49SYabin Cuiinstall_data(join_paths(zstd_rootdir, 'programs/zstdgrep'), 100*01826a49SYabin Cui join_paths(zstd_rootdir, 'programs/zstdless'), 101*01826a49SYabin Cui install_dir: zstd_bindir) 102*01826a49SYabin Cui 103*01826a49SYabin Cui# ============================================================================= 104*01826a49SYabin Cui# Programs and manpages installing 105*01826a49SYabin Cui# ============================================================================= 106*01826a49SYabin Cui 107*01826a49SYabin Cuiinstall_man(join_paths(zstd_rootdir, 'programs/zstd.1'), 108*01826a49SYabin Cui join_paths(zstd_rootdir, 'programs/zstdgrep.1'), 109*01826a49SYabin Cui join_paths(zstd_rootdir, 'programs/zstdless.1')) 110*01826a49SYabin Cui 111*01826a49SYabin CuiInstallSymlink_py = '../InstallSymlink.py' 112*01826a49SYabin Cuizstd_man1_dir = join_paths(zstd_mandir, 'man1') 113*01826a49SYabin Cuibin_EXT = host_machine_os == os_windows ? '.exe' : '' 114*01826a49SYabin Cuiman1_EXT = meson.version().version_compare('>=0.49.0') ? '.1' : '.1.gz' 115*01826a49SYabin Cui 116*01826a49SYabin Cuiforeach f : ['zstdcat', 'unzstd'] 117*01826a49SYabin Cui meson.add_install_script(InstallSymlink_py, 'zstd' + bin_EXT, f + bin_EXT, zstd_bindir) 118*01826a49SYabin Cui meson.add_install_script(InstallSymlink_py, 'zstd' + man1_EXT, f + man1_EXT, zstd_man1_dir) 119*01826a49SYabin Cuiendforeach 120*01826a49SYabin Cui 121*01826a49SYabin Cuiif use_multi_thread 122*01826a49SYabin Cui meson.add_install_script(InstallSymlink_py, 'zstd' + bin_EXT, 'zstdmt' + bin_EXT, zstd_bindir) 123*01826a49SYabin Cui meson.add_install_script(InstallSymlink_py, 'zstd' + man1_EXT, 'zstdmt' + man1_EXT, zstd_man1_dir) 124*01826a49SYabin Cuiendif 125