From 8d522b8a9da21edc7b3b85faa4daeb495ff56a85 Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Mon, 9 Aug 2021 22:53:15 -0400 Subject: [PATCH] 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. --- build/meson/programs/meson.build | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/build/meson/programs/meson.build b/build/meson/programs/meson.build index 0704155d8..55ebf166c 100644 --- a/build/meson/programs/meson.build +++ b/build/meson/programs/meson.build @@ -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/datagen.c'), join_paths(zstd_rootdir, 'programs/dibio.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')] + join_paths(zstd_rootdir, 'programs/zstdcli_trace.c')] zstd_deps = [ libzstd_dep ] zstd_c_args = libzstd_debug_cflags @@ -75,6 +70,12 @@ zstd = executable('zstd', zstd_programs_sources, c_args: zstd_c_args, 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 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/util.c'), join_paths(zstd_rootdir, 'programs/fileio.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')] + join_paths(zstd_rootdir, 'programs/fileio_asyncio.c')] # Minimal target, with only zstd compression and decompression. # No bench. No legacy. executable('zstd-frugal', zstd_frugal_sources, 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, install: true) -- 2.47.3