meson: avoid rebuilding some libzstd sources in the programs

These need to be explicitly included as we use their private symbols,
but we don't need to recompile them when we can reuse the existing
objects.

Minus 7 compile steps.
This commit is contained in:
Eli Schwartz
2022-04-28 21:56:36 -04:00
parent df6eefb3bb
commit 8d522b8a9d
+13 -10
View File
@@ -19,12 +19,7 @@ zstd_programs_sources = [join_paths(zstd_rootdir, 'programs/zstdcli.c'),
join_paths(zstd_rootdir, 'programs/benchzstd.c'), join_paths(zstd_rootdir, 'programs/benchzstd.c'),
join_paths(zstd_rootdir, 'programs/datagen.c'), join_paths(zstd_rootdir, 'programs/datagen.c'),
join_paths(zstd_rootdir, 'programs/dibio.c'), join_paths(zstd_rootdir, 'programs/dibio.c'),
join_paths(zstd_rootdir, 'programs/zstdcli_trace.c'), join_paths(zstd_rootdir, 'programs/zstdcli_trace.c')]
# needed due to use of private symbol + -fvisibility=hidden
join_paths(zstd_rootdir, 'lib/common/xxhash.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')]
zstd_deps = [ libzstd_dep ] zstd_deps = [ libzstd_dep ]
zstd_c_args = libzstd_debug_cflags zstd_c_args = libzstd_debug_cflags
@@ -75,6 +70,12 @@ zstd = executable('zstd',
zstd_programs_sources, zstd_programs_sources,
c_args: zstd_c_args, c_args: zstd_c_args,
dependencies: zstd_deps, dependencies: zstd_deps,
# needed due to use of private symbol + -fvisibility=hidden
objects: libzstd.extract_objects(
join_paths(zstd_rootdir, 'lib/common/xxhash.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')),
export_dynamic: export_dynamic_on_windows, # Since Meson 0.45.0 export_dynamic: export_dynamic_on_windows, # Since Meson 0.45.0
install: true) install: true)
@@ -82,16 +83,18 @@ zstd_frugal_sources = [join_paths(zstd_rootdir, 'programs/zstdcli.c'),
join_paths(zstd_rootdir, 'programs/timefn.c'), join_paths(zstd_rootdir, 'programs/timefn.c'),
join_paths(zstd_rootdir, 'programs/util.c'), join_paths(zstd_rootdir, 'programs/util.c'),
join_paths(zstd_rootdir, 'programs/fileio.c'), join_paths(zstd_rootdir, 'programs/fileio.c'),
join_paths(zstd_rootdir, 'programs/fileio_asyncio.c'), join_paths(zstd_rootdir, 'programs/fileio_asyncio.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')]
# Minimal target, with only zstd compression and decompression. # Minimal target, with only zstd compression and decompression.
# No bench. No legacy. # No bench. No legacy.
executable('zstd-frugal', executable('zstd-frugal',
zstd_frugal_sources, zstd_frugal_sources,
dependencies: zstd_frugal_deps, dependencies: zstd_frugal_deps,
# needed due to use of private symbol + -fvisibility=hidden
objects: libzstd.extract_objects(
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')),
c_args: zstd_frugal_c_args, c_args: zstd_frugal_c_args,
install: true) install: true)