Git fork

meson: ensure correct "clar-decls.h" header is used

The "clar-decls.h" header gets generated by us to extract prototypes of
unit test functions from our clar-based tests. This generated file is
then written into "t/unit-tests/" and included via "unit-test.h". The
intent of all this is that we can keep "-Wmissing-prototype" warnings
enabled. If we had that warning disabled, it would be easy to miss in
case any of the non-static functions had a typo in its name and thus
wasn't picked up by our test case extractor.

Including the file directly has a big downside though: if a source tree
was built both with our Makefile and with Meson, then the Meson build
would include the "clar-decls.h" file from our Makefile. And if those
are out of sync we get compiler errors.

We already fixed a similar issue in 4771501c0a (meson: ensure correct
version-def.h is used, 2025-01-14). Let's do the same and pass the
absolute path to "clar-decls.h" via a preprocessor define.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

authored by

Patrick Steinhardt and committed by
Junio C Hamano
5247da07 16bd9f20

+9 -1
+3
t/meson.build
··· 49 49 50 50 clar_unit_tests = executable('unit-tests', 51 51 sources: clar_sources + clar_test_suites, 52 + c_args: [ 53 + '-DGIT_CLAR_DECLS_H="' + clar_decls_h.full_path() + '"', 54 + ], 52 55 dependencies: [libgit_commonmain], 53 56 ) 54 57 test('unit-tests', clar_unit_tests)
+6 -1
t/unit-tests/unit-test.h
··· 1 1 #include "git-compat-util.h" 2 2 #include "clar/clar.h" 3 - #include "clar-decls.h" 4 3 #include "strbuf.h" 4 + 5 + #ifndef GIT_CLAR_DECLS_H 6 + # include "clar-decls.h" 7 + #else 8 + # include GIT_CLAR_DECLS_H 9 + #endif 5 10 6 11 #define cl_failf(fmt, ...) do { \ 7 12 char desc[4096]; \