meson: Use configure_file when version-tag is specified

vcs_tag() is slow. When the version-tag meson option is set,
we can use configure_file() directly to speed up incremental
builds.

Before (with version-tag set to v247):

```
‣ Running build script...
[1/418] Generating version.h with a custom command

real    0m0.521s
user    0m0.229s
sys     0m0.067s
```

After (with version-tag set to v247):

```
‣ Running build script...
ninja: no work to do.

real    0m0.094s
user    0m0.048s
sys     0m0.022s
```
This commit is contained in:
Daan De Meyer 2021-01-10 13:18:36 +01:00
parent bf1868c8d7
commit 064b8e2c99
2 changed files with 18 additions and 15 deletions

View file

@ -555,15 +555,24 @@ endif
#####################################################################
vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
project_source_root,
get_option('version-tag'),
meson.project_version()]
version_tag = get_option('version-tag')
if version_tag != ''
vcs_data = configuration_data()
vcs_data.set('VCS_TAG', version_tag)
version_h = configure_file(configuration : vcs_data,
input : 'src/version/version.h.in',
output : 'version.h')
else
vcs_tagger = [
project_source_root + '/tools/meson-vcs-tag.sh',
project_source_root,
meson.project_version()]
version_h = vcs_tag(
input : 'src/version/version.h.in',
output : 'version.h',
command: vcs_tagger)
version_h = vcs_tag(
input : 'src/version/version.h.in',
output : 'version.h',
command: vcs_tagger)
endif
versiondep = declare_dependency(sources: version_h)

View file

@ -4,13 +4,7 @@ set -eu
set -o pipefail
dir="$1"
tag="$2"
fallback="$3"
if [ -n "$tag" ]; then
echo "$tag"
exit 0
fi
fallback="$2"
# Apparently git describe has a bug where it always considers the work-tree
# dirty when invoked with --git-dir (even though 'git status' is happy). Work