meson: fix version generation from git

run_command() was only run at configure time, meaning the generated
version (that was passed on to the sources via -DFUZZEL_VERSION)
became stale.

Fix by implementing a shell script that generates a header file, and
wrap this in a custom target that is run every time (but the generated
file is only updated when the version changes)
This commit is contained in:
Daniel Eklöf 2019-10-19 22:09:52 +02:00
parent 6fd4f6000b
commit 286db002f8
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
4 changed files with 51 additions and 26 deletions

View file

@ -1,6 +1,7 @@
project('foot', 'c',
version: '0.9.0',
license: 'MIT',
meson_version: '>=0.47.0',
default_options: [
'c_std=c11',
'warning_level=1',
@ -9,32 +10,8 @@ project('foot', 'c',
is_debug_build = get_option('buildtype').startswith('debug')
version = '"@0@"'.format(meson.project_version())
sh = find_program('sh', native: true)
git = find_program('git', required: false, native: true)
if git.found()
commit_hash = run_command(
[sh.path(), '-c',
'@0@ --git-dir="$MESON_SOURCE_ROOT/.git" describe --always --tags'.format(
git.path())])
branch = run_command(
[sh.path(), '-c',
'@0@ --git-dir="$MESON_SOURCE_ROOT/.git" rev-parse --abbrev-ref HEAD'.format(
git.path())])
if commit_hash.returncode() == 0 and branch.returncode() == 0
version = '"@0@ (" __DATE__ ", branch \'@1@\')"'.format(
commit_hash.stdout().strip(), branch.stdout().strip())
endif
endif
add_project_arguments(
['-D_GNU_SOURCE=200809L',
'-DFOOT_VERSION=@0@'.format(version)] +
(is_debug_build ? ['-D_DEBUG'] : []),
['-D_GNU_SOURCE=200809L'] + (is_debug_build ? ['-D_DEBUG'] : []),
language: 'c',
)
@ -78,6 +55,13 @@ foreach prot : [
command: [wscanner_prog, 'private-code', '@INPUT@', '@OUTPUT@'])
endforeach
generate_version_sh = files('generate-version.sh')
version = custom_target(
'generate_version',
build_always_stale: true,
output: 'version.h',
command: [generate_version_sh, meson.project_version(), '@SOURCE_DIR@', '@OUTPUT@'])
executable(
'foot',
'base64.c', 'base64.h',
@ -99,7 +83,7 @@ executable(
'tokenize.c', 'tokenize.h',
'tllist.h',
'vt.c', 'vt.h',
wl_proto_src + wl_proto_headers,
wl_proto_src + wl_proto_headers, version,
dependencies: [threads, math, freetype, fontconfig, pixman, wayland_client, wayland_cursor, xkb],
install: true)