replaced compile time with source date (optionally from SOURCE_DATE_EPOCH)
authorHolger Schemel <info@artsoft.org>
Sun, 8 Jan 2017 19:44:44 +0000 (20:44 +0100)
committerHolger Schemel <info@artsoft.org>
Mon, 9 Jan 2017 20:10:28 +0000 (21:10 +0100)
src/Makefile
src/config.c
src/config.h
src/screens.c

index dcc625cf7e71c6e4fa1d75f592571b4c91687bc5..bb33ce8ca879edb73d58b27d31d43afc3e01c589 100644 (file)
@@ -183,6 +183,13 @@ CNFS =     conf_gfx.h      \
 CNFS_CMD = ../build-scripts/create_element_defs.pl
 
 TIMESTAMP_FILE = conftime.h
+TIMESTAMP_FORMAT = %Y-%m-%d %H:%M
+
+# use SOURCE_DATE_EPOCH, or else last Git commit date, or else current date
+SOURCE_DATE_EPOCH ?= $(shell test -d ../.git && test `git ls-files -m | wc -l` -eq 0 && git show -s --format=%ct || date +%s)
+
+# get source date string from either GNU / Linux or BSD / Mac OS X style "date"
+SOURCE_DATE_STRING := $(shell date -u -d "@$(SOURCE_DATE_EPOCH)" "+$(TIMESTAMP_FORMAT)"  2>/dev/null || date -u -r "$(SOURCE_DATE_EPOCH)" "+$(TIMESTAMP_FORMAT)" 2>/dev/null || date -u "+$(TIMESTAMP_FORMAT)")
 
 LIBGAME_DIR = libgame
 LIBGAME = $(LIBGAME_DIR)/libgame.a
@@ -255,10 +262,8 @@ conf_snd.h: conf_snd.c $(CNFS_CMD)
 conf_mus.h: conf_mus.c $(CNFS_CMD)
        @$(MAKE) auto-conf
 
-# $(TIMESTAMP_FILE): $(SRCS) $(LIBGAME) $(GAME_EM) $(GAME_SP)
 $(TIMESTAMP_FILE): $(SRCS) $(RNDLIBS)
-       @date '+"%Y-%m-%d %H:%M"' \
-       | sed -e 's/^/#define COMPILE_DATE_STRING /' \
+       @echo '#define SOURCE_DATE_STRING "$(SOURCE_DATE_STRING)"' \
        > $(TIMESTAMP_FILE)
 
 $(ICON):
index 0eb51d2ec27db76cde56521cff216f2332db4379..608b066ed64f89aa3ed42b81a0e9a24a8965de0f 100644 (file)
@@ -15,9 +15,9 @@
 #include "conftime.h"
 
 
-char *getCompileDateString()
+char *getSourceDateString()
 {
-  return COMPILE_DATE_STRING;
+  return SOURCE_DATE_STRING;
 }
 
 char *getProgramTitleString()
@@ -62,11 +62,11 @@ char *getWindowTitleString()
 
 #ifdef DEBUG
   window_title_string = checked_malloc(strlen(getProgramInitString()) + 20 +
-                                      strlen(getCompileDateString()) + 2 + 1);
+                                      strlen(getSourceDateString()) + 2 + 1);
 
   sprintf(window_title_string, "%s (%d %%) [%s]",
          getProgramInitString(), video.window_scaling_percent,
-         getCompileDateString());
+         getSourceDateString());
 #else
   window_title_string = checked_malloc(strlen(getProgramInitString()) + 20);
 
@@ -78,10 +78,10 @@ char *getWindowTitleString()
 
 #ifdef DEBUG
   window_title_string = checked_malloc(strlen(getProgramInitString()) + 1 +
-                                      strlen(getCompileDateString()) + 2 + 1);
+                                      strlen(getSourceDateString()) + 2 + 1);
 
   sprintf(window_title_string, "%s [%s]",
-         getProgramInitString(), getCompileDateString());
+         getProgramInitString(), getSourceDateString());
 #else
   window_title_string = checked_malloc(strlen(getProgramInitString()) + 1);
 
index f632036017a270e5d3e081394a729344b8ed9e03..ba401a52a93b3e9ce6806d58aed366525d1d1a4f 100644 (file)
@@ -14,7 +14,7 @@
 
 #include "main.h"
 
-char *getCompileDateString(void);
+char *getSourceDateString(void);
 char *getProgramTitleString(void);
 char *getProgramVersionString(void);
 char *getProgramInitString(void);
index 6e26fdf55e4f75e1c8b57b4349269ce1b691191c..a2f63bcdb852779816a4ed9869e4029f25a18b3c 100644 (file)
@@ -3291,8 +3291,8 @@ void DrawInfoScreen_Version()
   DrawTextF(xstart2, ystart2, font_text, TARGET_STRING);
 
   ystart2 += ystep;
-  DrawTextF(xstart1, ystart2, font_header, "Compile time");
-  DrawTextF(xstart2, ystart2, font_text, getCompileDateString());
+  DrawTextF(xstart1, ystart2, font_header, "Source date");
+  DrawTextF(xstart2, ystart2, font_text, getSourceDateString());
 
   ystart2 += 3 * ystep;
   DrawTextF(xstart1, ystart2, font_header, "Library");