From a6de4efe6e6a6daaeab233e4cbee397510f6149e Mon Sep 17 00:00:00 2001 From: PeakKS Date: Sat, 5 Oct 2024 21:53:27 -0400 Subject: [PATCH] meson: add support for building versionlib --- meson.build | 6 ++++ meson_options.txt | 26 ++++++++++++++++ versionlib/meson.build | 46 ++++++++++++++++++++++++++++ versionlib/metamod_version_auto.h.in | 16 ++++++++++ 4 files changed, 94 insertions(+) create mode 100644 meson.build create mode 100644 meson_options.txt create mode 100644 versionlib/meson.build create mode 100644 versionlib/metamod_version_auto.h.in diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..6b35d61 --- /dev/null +++ b/meson.build @@ -0,0 +1,6 @@ +project('metamod', 'c', 'cpp') + +public_inc = include_directories('public') + +subdir('versionlib') + diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 0000000..a1b1f16 --- /dev/null +++ b/meson_options.txt @@ -0,0 +1,26 @@ +option('sdks', type: 'array', choices: [ + 'csgo', + 'hl2dm', + 'nucleardawn', + 'l4d2', + 'dods', + 'l4d', + 'css', + 'tf2', + 'insurgency', + 'sdk2013', + 'dota', + 'doi', + 'orangebox', + 'blade', + 'episode1', + 'bms', + 'pvkii', + 'mcv', + 'darkm', + 'swarm', + 'bgt', + 'eye', + 'contagion', + 'cs2', +]) \ No newline at end of file diff --git a/versionlib/meson.build b/versionlib/meson.build new file mode 100644 index 0000000..ba0463b --- /dev/null +++ b/versionlib/meson.build @@ -0,0 +1,46 @@ +fs = import('fs') +metamod_version_string = fs.read('../product.version').strip() + +version_tag = metamod_version_string.split('-') + +version = version_tag[0].split('.') +major = version[0] +minor = version[1] +release = version[2] + +tag = version_tag[1] + +revision = run_command('git', 'rev-list', '--count', 'HEAD', check: true).stdout().strip() +shorthash = run_command('git', 'log', '--pretty=format:%h', '-n', '1', check: true).stdout().strip() +product = '.'.join(major, minor, release) + +if tag != '' + product += '-' + tag + if tag == 'dev' + product += '+' + revision + endif +endif + +metamod_version_config = configuration_data({ + 'tag': tag, + 'shorthash': shorthash, + 'major': major, + 'minor': minor, + 'release': release, + 'product': product, + 'revision': revision, +}) + +configure_file( + input: 'metamod_version_auto.h.in', + output: 'metamod_version_auto.h', + configuration: metamod_version_config +) + +versionlib = static_library( + 'version', + 'versionlib.cpp', + include_directories: [ + public_inc, + ] +) \ No newline at end of file diff --git a/versionlib/metamod_version_auto.h.in b/versionlib/metamod_version_auto.h.in new file mode 100644 index 0000000..06a9ac6 --- /dev/null +++ b/versionlib/metamod_version_auto.h.in @@ -0,0 +1,16 @@ +#ifndef _METAMOD_AUTO_VERSION_INFORMATION_H_ +#define _METAMOD_AUTO_VERSION_INFORMATION_H_ + +#define MMS_BUILD_TAG "@tag@" +#define MMS_BUILD_CSET "@shorthash@" +#define MMS_BUILD_MAJOR "@major@" +#define MMS_BUILD_MINOR "@minor@" +#define MMS_BUILD_RELEASE "@release@" +#define MMS_BUILD_LOCAL_REV "@revision@" + +#define MMS_BUILD_UNIQUEID "@revision@:" MMS_BUILD_CSET + +#define MMS_VERSION_STRING "@product@" +#define MMS_VERSION_FILE @major@,@minor@,@release@,0 + +#endif /* _METAMOD_AUTO_VERSION_INFORMATION_H_ */