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