From 7919683748ce567a93db43f99fa7cf3af54c7102 Mon Sep 17 00:00:00 2001 From: Jan Date: Tue, 23 Jan 2024 21:53:01 +0100 Subject: [PATCH] chore: write header with git version --- premake5.lua | 8 ++++++++ tools/scripts/version.lua | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 tools/scripts/version.lua diff --git a/premake5.lua b/premake5.lua index 0152b930..6d9b19f7 100644 --- a/premake5.lua +++ b/premake5.lua @@ -3,6 +3,7 @@ include "tools/scripts/including.lua" include "tools/scripts/linking.lua" include "tools/scripts/options.lua" include "tools/scripts/platform.lua" +include "tools/scripts/version.lua" -- ================== -- Workspace @@ -63,6 +64,13 @@ workspace "OpenAssetTools" "__STDC_WANT_LIB_EXT1__=1", "_CRT_SECURE_NO_WARNINGS" } + + -- Write the current version to a header + -- This is better than adding it as macro here since changing a global macro would cause a full rebuild + WriteVersionHeader() + includedirs { + GetVersionHeaderFolder() + } filter "options:debug-structureddatadef" defines { "STRUCTUREDDATADEF_DEBUG" } diff --git a/tools/scripts/version.lua b/tools/scripts/version.lua new file mode 100644 index 00000000..dc0087f9 --- /dev/null +++ b/tools/scripts/version.lua @@ -0,0 +1,36 @@ +local BuildSubFolderFolder = "premake" +local HeaderFileName = "GitVersion.h" + +function GetGitVersion() + result, errorCode = os.outputof("git describe --tags") + + if errorCode == 0 then + return result + end + + return "Unknown" +end + +function GetVersionHeaderFolder() + return path.join(BuildFolder(), BuildSubFolderFolder) +end + +function WriteVersionHeader() + local folder = GetVersionHeaderFolder() + local file = path.join(folder, HeaderFileName) + local content = string.format([[ +#pragma once + +#define GIT_VERSION "%s" + ]], GetGitVersion()) + + if os.isdir(folder) ~= True then + os.mkdir(folder) + end + + local ok, err = os.writefile_ifnotequal(content, file) + + if ok == -1 then + error("Could not create version file: " .. err) + end +end