From: Patrick Steinhardt Date: Thu, 24 Sep 2026 14:09:13 GMT Subject: [PATCH 4/7] meson: use precompiled headers for unit tests Message-ID: <20260924-pks-meson-improvements-v1-4-90b7f79f1c4e@pks.im> In-Reply-To: <20260924-pks-meson-improvements-v1-0-90b7f79f1c4e@pks.im> Same as in the preceding commit, our unit tests don't use precompiled headers yet. In this case though it's a tiny bit more complicated to make use of them, as we do not want to include "git-compat-util.h" for "clar.c", as that code file is a third-party implementation that is independent of the Git codebase. But there's an easy workaround: instead of linking that file into the executable directly, we can easily adapt it to be built into a static library first. Like that we can trivially have separate build flags for that one file. Do so and adapt the remaining sources to use precompiled headers. This results in a small but noticeable build speedup: Benchmark 1: meson compile (version = HEAD~) Time (mean ± σ): 5.343 s ± 0.019 s [User: 75.478 s, System: 20.382 s] Range (min … max): 5.308 s … 5.376 s 10 runs Benchmark 2: meson compile (version = HEAD) Time (mean ± σ): 5.077 s ± 0.017 s [User: 70.557 s, System: 19.999 s] Range (min … max): 5.047 s … 5.103 s 10 runs Summary meson compile (version = HEAD) ran 1.05 ± 0.01 times faster than meson compile (version = HEAD~) Signed-off-by: Patrick Steinhardt --- t/meson.build | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/t/meson.build b/t/meson.build index 3ca7b27104..9f1ee9ad59 100644 --- a/t/meson.build +++ b/t/meson.build @@ -30,7 +30,6 @@ clar_test_suites = [ ] clar_sources = [ - 'unit-tests/clar/clar.c', 'unit-tests/unit-test.c', 'unit-tests/lib-oid.c', 'unit-tests/lib-reftable.c' @@ -49,7 +48,7 @@ clar_decls_h = custom_target( ) clar_sources += clar_decls_h -clar_sources += custom_target( +clar_suite_h = custom_target( input: clar_decls_h, output: 'clar.suite', command : [ @@ -66,6 +65,13 @@ clar_unit_tests = executable('unit-tests', c_args: [ '-DGIT_CLAR_DECLS_H="' + clar_decls_h.full_path() + '"', ], + c_pch: '../tools/precompiled.h', + link_with: static_library('clar', + sources: [ + 'unit-tests/clar/clar.c', + clar_suite_h, + ], + ), dependencies: [libgit_commonmain], ) test('unit-tests', clar_unit_tests, kwargs: test_kwargs) -- 2.56.0.rc2.329.gd58861e689.dirty