[PATCH 06/11] meson: drop separate version library
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Jan 29, 2025, 07:11 UTC
- Message-ID
- <20250129-b4-pks-meson-improvements-v1-6-ab709f0be12c@pks.im>
- In-Reply-To
- <20250129-b4-pks-meson-improvements-v1-0-ab709f0be12c@pks.im>
When building `libgit.a` we link it against a `libgit_version.a` library that contains the version information that we inject at build time. The intent of this is to avoid rebuilding all of `libgit.a` whenever the version changes. But that wouldn't happen in the first place, as we know to just rebuild the files that depend on the generated "version-def.h" file.
This is an artifact of an earlier version of the Meson build infra that didn't ultimately land. We didn't yet have "version-def.h", and instead injected the version via preprocessor directives. And here we would have rebuilt all of `libgit.a` indeed in case the version changes, because the preprocessor directive applied to all files.
Stop building the separate library and instead add "version-def.h" to the list of source files directly.
Signed-off-by: Patrick Steinhardt <ps@pks.im> --- meson.build | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-)
diff --git a/meson.build b/meson.build index e022235815..1e1e478d17 100644 --- a/meson.build +++ b/meson.build @@ -462,6 +462,7 @@ libgit_sources = [ 'userdiff.c', 'utf8.c', 'varint.c', + 'version.c', 'versioncmp.c', 'walker.c', 'wildmatch.c', @@ -1505,26 +1506,14 @@ version_def_h = custom_target( depends: [git_version_file], env: version_gen_environment, ) - -# Build a separate library for "version.c" so that we do not have to rebuild -# everything when the current Git commit changes. -libgit_version_library = static_library('git-version', - sources: [ - 'version.c', - version_def_h, - ], - c_args: libgit_c_args + [ - '-DGIT_VERSION_H="' + version_def_h.full_path() + '"', - ], - dependencies: libgit_dependencies, - include_directories: libgit_include_directories, -) +libgit_sources += version_def_h libgit = declare_dependency( link_with: static_library('git', sources: libgit_sources, - c_args: libgit_c_args, - link_with: libgit_version_library, + c_args: libgit_c_args + [ + '-DGIT_VERSION_H="' + version_def_h.full_path() + '"', + ], dependencies: libgit_dependencies, include_directories: libgit_include_directories, ),
-- 2.48.1.362.g079036d154.dirty