diff --git a/Makefile b/Makefile index 3aa9e3b7c5..6c7272c7b1 100644 --- a/Makefile +++ b/Makefile @@ -1098,6 +1098,11 @@ else STRIP_FLAG = -s endif +# https://reproducible-builds.org/specs/source-date-epoch/ +ifdef SOURCE_DATE_EPOCH + BASE_CFLAGS += -DPRODUCT_DATE=\\\"$(shell date --date="@$$SOURCE_DATE_EPOCH" "+%b %_d %Y" | sed -e 's/ /\\\ /'g)\\\" +endif + BASE_CFLAGS += -DPRODUCT_VERSION=\\\"$(VERSION)\\\" BASE_CFLAGS += -Wformat=2 -Wno-format-zero-length -Wformat-security -Wno-format-nonliteral BASE_CFLAGS += -Wstrict-aliasing=2 -Wmissing-format-attribute diff --git a/code/game/g_main.c b/code/game/g_main.c index e3903bffa6..6d9d9fae3b 100644 --- a/code/game/g_main.c +++ b/code/game/g_main.c @@ -101,7 +101,7 @@ static cvarTable_t gameCvarTable[] = { // noset vars { NULL, "gamename", GAMEVERSION , CVAR_SERVERINFO | CVAR_ROM, 0, qfalse }, - { NULL, "gamedate", __DATE__ , CVAR_ROM, 0, qfalse }, + { NULL, "gamedate", PRODUCT_DATE , CVAR_ROM, 0, qfalse }, { &g_restarted, "g_restarted", "0", CVAR_ROM, 0, qfalse }, // latched vars @@ -408,7 +408,7 @@ void G_InitGame( int levelTime, int randomSeed, int restart ) { G_Printf ("------- Game Initialization -------\n"); G_Printf ("gamename: %s\n", GAMEVERSION); - G_Printf ("gamedate: %s\n", __DATE__); + G_Printf ("gamedate: %s\n", PRODUCT_DATE); srand( randomSeed ); diff --git a/code/qcommon/common.c b/code/qcommon/common.c index 42d604f394..80dd2c349e 100644 --- a/code/qcommon/common.c +++ b/code/qcommon/common.c @@ -2639,7 +2639,7 @@ void Com_Init( char *commandLine ) { char *s; int qport; - Com_Printf( "%s %s %s\n", Q3_VERSION, PLATFORM_STRING, __DATE__ ); + Com_Printf( "%s %s %s\n", Q3_VERSION, PLATFORM_STRING, PRODUCT_DATE ); if ( setjmp (abortframe) ) { Sys_Error ("Error during initialization"); @@ -2760,7 +2760,7 @@ void Com_Init( char *commandLine ) { com_introPlayed = Cvar_Get( "com_introplayed", "0", CVAR_ARCHIVE); #endif - s = va("%s %s %s", Q3_VERSION, PLATFORM_STRING, __DATE__ ); + s = va("%s %s %s", Q3_VERSION, PLATFORM_STRING, PRODUCT_DATE ); com_version = Cvar_Get ("version", s, CVAR_ROM | CVAR_SERVERINFO ); com_gamename = Cvar_Get("com_gamename", GAMENAME_FOR_MASTER, CVAR_SERVERINFO | CVAR_INIT); com_protocol = Cvar_Get("com_protocol", va("%i", PROTOCOL_VERSION), CVAR_SERVERINFO | CVAR_INIT); diff --git a/code/qcommon/q_shared.h b/code/qcommon/q_shared.h index 1812f5eb85..791a5abef4 100644 --- a/code/qcommon/q_shared.h +++ b/code/qcommon/q_shared.h @@ -70,6 +70,10 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define PRODUCT_VERSION "1.36" #endif +#ifndef PRODUCT_DATE +# define PRODUCT_DATE __DATE__ +#endif + #define Q3_VERSION PRODUCT_NAME " " PRODUCT_VERSION #define MAX_TEAMNAME 32 diff --git a/code/sys/sys_main.c b/code/sys/sys_main.c index 8bbc3a5a1a..019ea12b69 100644 --- a/code/sys/sys_main.c +++ b/code/sys/sys_main.c @@ -553,7 +553,7 @@ void Sys_ParseArgs( int argc, char **argv ) if( !strcmp( argv[1], "--version" ) || !strcmp( argv[1], "-v" ) ) { - const char* date = __DATE__; + const char* date = PRODUCT_DATE; #ifdef DEDICATED fprintf( stdout, Q3_VERSION " dedicated server (%s)\n", date ); #else