meson: create git_version.h in configuration step

This commit is contained in:
odrling 2021-02-13 18:18:49 +01:00
parent 1b46d5b36e
commit 160fc30e86
3 changed files with 50 additions and 13 deletions

6
git_version.h.in Normal file
View File

@ -0,0 +1,6 @@
#define BUILD_GIT_VERSION_NUMBER @git_version_number@
#define BUILD_GIT_VERSION_STRING @git_version_string@
#define RELEASE_VERSION @release_version@
#define TAGGED_RELEASE 0
#define INSTALLER_VERSION "0.0.0"
#define RESOURCE_BASE_VERSION 0, 0, 0

View File

@ -2,7 +2,7 @@ project('Aegisub', ['c', 'cpp'],
license: 'BSD-3-Clause',
meson_version: '>=0.56.1',
default_options: ['cpp_std=c++11', 'b_lto=true', 'buildtype=debugoptimized'],
version: '3.2.2')
version: '3.3.3')
cmake = import('cmake')
@ -20,17 +20,48 @@ if host_machine.system() == 'windows'
endif
endif
if host_machine.system() == 'windows'
version_sh = find_program('tools/version.ps1')
else
version_sh = find_program('tools/version.sh')
endif
version_inc = include_directories('.')
version_h = custom_target('git_version.h',
command: [version_sh, meson.current_build_dir(), meson.current_source_dir()],
build_by_default: true,
build_always_stale: true, # has internal check whether target file will be refreshed
output: ['git_version.h'])
conf_data = configuration_data()
git_describe = run_command('git', 'describe')
if git_describe.returncode() == 0
last_svn_hash = '16cd907fe7482cb54a7374cd28b8501f138116be'
svn_revision = 6962
git_count = run_command('git', 'rev-list', '--count', last_svn_hash + '..HEAD')
git_release = run_command('git', 'describe', '--exact-match')
git_describe_str = git_describe.stdout().strip().substring(1)
git_version_number = svn_revision + git_count.stdout().strip().to_int()
if git_release.returncode() == 0
git_version_string = git_describe_str
else
branch_cmd = run_command('git', 'symbolic-ref', 'HEAD')
branch = branch_cmd.stdout().strip().substring(11)
git_hash_cmd = run_command('git', 'rev-parse', '--short', 'HEAD')
git_hash = git_hash_cmd.stdout().strip()
git_version_template = '@0@-@1@-@2@'
git_version_string = git_version_template.format(git_version_number,
branch,
git_hash)
endif
else
warning('git describe failed. Using default version number (' + meson.project_version() + ')')
git_version_number = 42
git_describe_str = meson.project_version()
git_version_string = meson.project_version()
endif
conf_data.set('git_version_number', git_version_number)
conf_data.set_quoted('release_version', git_describe_str)
conf_data.set_quoted('git_version_string', git_version_string)
configure_file(input: 'git_version.h.in',
output: 'git_version.h',
configuration: conf_data)
if host_machine.system() == 'darwin' and get_option('build_osx_bundle')
prefix = meson.current_build_dir() / 'Aegisub.app' / 'Contents'
@ -280,7 +311,7 @@ if not deps.contains(luajit)
luajit_inc = luajit_sp.get_variable('incdir')
deps += luajit_sp.get_variable('luajit_dep')
else
luajit_inc = include_directories(luajit.get_pkgconfig_variable('includedir'))
luajit_inc = include_directories(luajit.get_variable(pkgconfig: 'includedir'))
endif
subdir('subprojects/luabins/src')

View File

@ -249,7 +249,7 @@ endforeach
aegisub_cpp_pch = ['include/agi_pre.h']
aegisub_c_pch = ['include/agi_pre_c.h']
aegisub = executable('aegisub', aegisub_src, version_h, acconf,
aegisub = executable('aegisub', aegisub_src, acconf,
link_with: [libresrc, libluabins, libaegisub],
include_directories: [libaegisub_inc, libresrc_inc, version_inc, deps_inc],
cpp_pch: aegisub_cpp_pch,