From 1757002ddbde9de4e4d503e85d7ffaac5ff84c6c Mon Sep 17 00:00:00 2001 From: James R Date: Fri, 10 Jul 2020 22:20:33 -0700 Subject: [PATCH] Automate VERSION/SUBVERSION; move version related definitions to version.h CMake support. Srb2win.rc still needs touchy, whatever. --- CMakeLists.txt | 6 +++++- src/d_main.c | 18 ++++++++++++++++++ src/doomdef.h | 20 ++------------------ src/version.h | 12 ++++++++++++ 4 files changed, 37 insertions(+), 19 deletions(-) create mode 100644 src/version.h diff --git a/CMakeLists.txt b/CMakeLists.txt index e12b0d345..25a44f016 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,12 @@ cmake_minimum_required(VERSION 3.0) + +file(STRINGS src/version.h SRB2_VERSION) +string(REGEX MATCH "[0-9]+\\.[0-9.]+" SRB2_VERSION ${SRB2_VERSION}) + # DO NOT CHANGE THIS SRB2 STRING! Some variable names depend on this string. # Version change is fine. project(SRB2 - VERSION 2.2.6 + VERSION ${SRB2_VERSION} LANGUAGES C) if(${PROJECT_SOURCE_DIR} MATCHES ${PROJECT_BINARY_DIR}) diff --git a/src/d_main.c b/src/d_main.c index 28570b909..22875593c 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -1142,6 +1142,21 @@ static inline void D_Titlebar(void) } #endif +static void +D_ConvertVersionNumbers (void) +{ + /* leave at defaults (0) under DEVELOP */ +#ifndef DEVELOP + int major; + int minor; + + sscanf(SRB2VERSION, "%d.%d.%d", &major, &minor, &SUBVERSION); + + /* this is stupid */ + VERSION = ( major * 100 ) + minor; +#endif +} + // // D_SRB2Main // @@ -1152,6 +1167,9 @@ void D_SRB2Main(void) INT32 pstartmap = 1; boolean autostart = false; + /* break the version string into version numbers, for netplay */ + D_ConvertVersionNumbers(); + // Print GPL notice for our console users (Linux) CONS_Printf( "\n\nSonic Robo Blast 2\n" diff --git a/src/doomdef.h b/src/doomdef.h index 380adf781..50e4b9b77 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -86,6 +86,7 @@ // warning C4213: nonstandard extension used : cast on l-value +#include "version.h" #include "doomtype.h" #include @@ -135,17 +136,11 @@ extern char logfilename[1024]; //#define DEVELOP // Disable this for release builds to remove excessive cheat commands and enable MD5 checking and stuff, all in one go. :3 #ifdef DEVELOP -#define VERSION 0 // Game version -#define SUBVERSION 0 // more precise version number #define VERSIONSTRING "Development EXE" -#define VERSIONSTRINGW L"Development EXE" // most interface strings are ignored in development mode. // we use comprevision and compbranch instead. #else -#define VERSION 202 // Game version -#define SUBVERSION 6 // more precise version number -#define VERSIONSTRING "v2.2.6" -#define VERSIONSTRINGW L"v2.2.6" +#define VERSIONSTRING "v"SRB2VERSION // Hey! If you change this, add 1 to the MODVERSION below! // Otherwise we can't force updates! #endif @@ -204,17 +199,6 @@ extern char logfilename[1024]; // Will always resemble the versionstring, 205 = 2.0.5, 210 = 2.1, etc. #define CODEBASE 220 -// The Modification ID; must be obtained from a Master Server Admin ( https://mb.srb2.org/showgroups.php ). -// DO NOT try to set this otherwise, or your modification will be unplayable through the Master Server. -// "18" is the default mod ID for version 2.2 -#define MODID 18 - -// The Modification Version, starting from 1. Do not follow your version string for this, -// it's only for detection of the version the player is using so the MS can alert them of an update. -// Only set it higher, not lower, obviously. -// Note that we use this to help keep internal testing in check; this is why v2.2.0 is not version "1". -#define MODVERSION 47 - // To version config.cfg, MAJOREXECVERSION is set equal to MODVERSION automatically. // Increment MINOREXECVERSION whenever a config change is needed that does not correspond // to an increment in MODVERSION. This might never happen in practice. diff --git a/src/version.h b/src/version.h new file mode 100644 index 000000000..31cf85bdc --- /dev/null +++ b/src/version.h @@ -0,0 +1,12 @@ +#define SRB2VERSION "2.2.6"/* this must be the first line, for cmake !! */ + +// The Modification ID; must be obtained from a Master Server Admin ( https://mb.srb2.org/showgroups.php ). +// DO NOT try to set this otherwise, or your modification will be unplayable through the Master Server. +// "18" is the default mod ID for version 2.2 +#define MODID 18 + +// The Modification Version, starting from 1. Do not follow your version string for this, +// it's only for detection of the version the player is using so the MS can alert them of an update. +// Only set it higher, not lower, obviously. +// Note that we use this to help keep internal testing in check; this is why v2.2.0 is not version "1". +#define MODVERSION 47