From: Toon Claes Date: Tue, 14 Jan 2025 11:15:23 +0000 (+0100) Subject: meson: ensure correct version-def.h is used X-Git-Tag: v2.49.0-rc0~89^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4771501c0a;p=thirdparty%2Fgit.git meson: ensure correct version-def.h is used To build the libgit-version library, Meson first generates `version-def.h` in the build directory. Then it compiles `version.c` into a library. During compilation, Meson tells to include both the build directory and the project root directory. However, when the user previously has compiled Git using Make, they will have a `version-def.h` file in project root directory as well. Because `version-def.h` is included in `version.c` using the #include directive with double quotes, some preprocessors will look for the header file in the same directory as the source file. This will cause compilation of `version.c` ran by Meson to include `version-def.h` previously made by Make, which might be out of date. To explicitly tell the preprocessor which `version-def.h` to use, pass the absolute path of this file as macro GIT_VERSION_H to the preprocessor using option `-D` and have `version.c` `#include GIT_VERSION_H`. To remain working with other build systems than Meson, include "version-def.h" if that macro is not defined. Co-authored-by: Patrick Steinhardt Signed-off-by: Toon Claes Signed-off-by: Junio C Hamano --- diff --git a/meson.build b/meson.build index 0064eb64f5..db27afa999 100644 --- a/meson.build +++ b/meson.build @@ -1493,7 +1493,9 @@ libgit_version_library = static_library('git-version', 'version.c', version_def_h, ], - c_args: libgit_c_args, + c_args: libgit_c_args + [ + '-DGIT_VERSION_H="' + version_def_h.full_path() + '"', + ], dependencies: libgit_dependencies, include_directories: libgit_include_directories, ) diff --git a/version.c b/version.c index 4d763ab48d..4786c4e0a5 100644 --- a/version.c +++ b/version.c @@ -1,8 +1,13 @@ #include "git-compat-util.h" #include "version.h" -#include "version-def.h" #include "strbuf.h" +#ifndef GIT_VERSION_H +# include "version-def.h" +#else +# include GIT_VERSION_H +#endif + const char git_version_string[] = GIT_VERSION; const char git_built_from_commit_string[] = GIT_BUILT_FROM_COMMIT;