diff --git a/git_version.h.in b/git_version.h.in new file mode 100644 index 000000000..3d6ece787 --- /dev/null +++ b/git_version.h.in @@ -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 diff --git a/meson.build b/meson.build index 9612414b4..7f170763b 100644 --- a/meson.build +++ b/meson.build @@ -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') diff --git a/src/meson.build b/src/meson.build index e5f59b991..da6d6e872 100644 --- a/src/meson.build +++ b/src/meson.build @@ -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,