]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
meson: avoid rebuilding some libzstd sources in the programs
authorEli Schwartz <eschwartz@archlinux.org>
Tue, 10 Aug 2021 02:53:15 +0000 (22:53 -0400)
committerEli Schwartz <eschwartz@archlinux.org>
Fri, 29 Apr 2022 01:56:36 +0000 (21:56 -0400)
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

index 0704155d84568f2bdeb094de18b188d93d0677fe..55ebf166cadc217e489b356b123fcff6cf359486 100644 (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/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)