xref: /aosp_15_r20/external/zstd/build/meson/programs/meson.build (revision 01826a4963a0d8a59bc3812d29bdf0fb76416722)
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