Added versioning system

This commit is contained in:
OM 2023-06-19 23:32:34 +02:00
parent 19b4ba5db0
commit c9577629d2
4 changed files with 107 additions and 2 deletions

View file

@ -5,6 +5,8 @@ if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.13.0")
cmake_policy(SET CMP0076 NEW)
endif()
include("./q_version.cmake")
# Shared source files for modules
set(SOURCES_SHARED
"${CMAKE_SOURCE_DIR}/code/qcommon/class.cpp"
@ -28,8 +30,7 @@ target_compile_definitions(qcommon INTERFACE TARGET_GAME_TYPE=${TARGET_GAME_TYPE
target_include_directories(qcommon INTERFACE "../qcommon" "../script")
target_compile_features(qcommon INTERFACE cxx_nullptr)
target_compile_features(qcommon INTERFACE c_variadic_macros)
include("./q_version.cmake")
target_link_libraries(qcommon INTERFACE qcommon_version)
# Source files for standalone executable
set(SOURCES_COMMON

View file

@ -0,0 +1,30 @@
add_library(qcommon_version INTERFACE)
# Current branch
execute_process(
COMMAND git branch --show-current
OUTPUT_VARIABLE GIT_BRANCH_NAME
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Revision
execute_process(
COMMAND git show -s --format=%H HEAD
OUTPUT_VARIABLE GIT_REVISION_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Commit date
execute_process(
COMMAND git show -s --format=%ct
OUTPUT_VARIABLE GIT_REVISION_DATE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
string(TIMESTAMP GIT_REVISION_DATE UTC)
set(GIT_REVISION_DATE_HUMAN ${GIT_REVISION_DATE})
string(TIMESTAMP GIT_REVISION_DATE_HUMAN "%b %d %Y" UTC)
configure_file("q_version.generated.h.in" "generated/q_version.generated.h")
target_include_directories(qcommon_version INTERFACE "${CMAKE_CURRENT_BINARY_DIR}/generated")

View file

@ -0,0 +1,28 @@
/*
===========================================================================
Copyright (C) 2023 the OpenMoHAA team
This file is part of OpenMoHAA source code.
OpenMoHAA source code is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
OpenMoHAA source code is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OpenMoHAA source code; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
===========================================================================
*/
// q_version.generated.h -- file versioning
#define GIT_BRANCH_NAME "${GIT_BRANCH_NAME}"
#define GIT_REVISION_HASH "${GIT_REVISION_HASH}"
#define GIT_REVISION_DATE "${GIT_REVISION_DATE}"
#define GIT_REVISION_DATE_HUMAN "${GIT_REVISION_DATE_HUMAN}"

View file

@ -24,6 +24,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#pragma once
#include <q_version.generated.h>
//
// Version
//
@ -32,3 +34,47 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#define PRODUCT_VERSION_MINOR 55
#define PRODUCT_VERSION_PATCH 1
#define PRODUCT_VERSION_STAGE "alpha"
#ifdef GIT_BRANCH_NAME
# define PRODUCT_VERSION_BRANCH GIT_BRANCH_NAME
#else
# define PRODUCT_VERSION_BRANCH "none"
#endif
#ifdef GIT_REVISION_HASH
# define PRODUCT_VERSION_REVISION GIT_REVISION_HASH
#else
# define PRODUCT_VERSION_REVISION ""
#endif
#ifdef GIT_REVISION_DATE_HUMAN
# define PRODUCT_VERSION_DATE GIT_REVISION_DATE_HUMAN
#else
# define PRODUCT_VERSION_DATE __DATE__
#endif
#define PRODUCT_VERSION_FULL PRODUCT_NAME_FULL
#define Q3_VERSION PRODUCT_VERSION_FULL
//
// Version display
//
#define PRODUCT_VERSION_NUMBER_STRING XSTRING(PRODUCT_VERSION_MAJOR) "." XSTRING(PRODUCT_VERSION_MINOR) "." XSTRING(PRODUCT_VERSION_PATCH)
#define PRODUCT_VERSION PRODUCT_VERSION_NUMBER_STRING "-" PRODUCT_VERSION_STAGE
#define PRODUCT_NAME_FULL PRODUCT_NAME " - v" PRODUCT_VERSION " - ext-" PRODUCT_EXTENSION
/*
//
// Version
//
// These values are the only one that must be set for the version
extern const unsigned int PRODUCT_VERISON_MAJOR;
extern const unsigned int PRODUCT_VERISON_MINOR;
extern const unsigned int PRODUCT_VERISON_PATCH;
extern const char* PRODUCT_VERSION_STAGE;
extern const char* PRODUCT_VERSION_BRANCH;
extern const char* PRODUCT_VERSION_REVISION_HASH;
extern const char* PRODUCT_VERSION_REVISION_DATE;
*/