From 7ae51087e57a725394605ca1ff2195f0e996e212 Mon Sep 17 00:00:00 2001
From: florian <florian@freepascal.org>
Date: Sun, 18 Oct 2020 17:13:39 +0000
Subject: [PATCH]   * compiler Makefile checks if SOURCE_SOURCE_DATE_EPOCH_DATE
 is set or if git is used, in either case the former or the latter are used
 for the build date reported by the compiler

git-svn-id: trunk@47133 -
(cherry picked from commit 201281ae2a98d79e9fc49ec4a3e5b35e7d757027)
---
 compiler/Makefile     | 12 ++++++++++++
 compiler/Makefile.fpc | 16 ++++++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/compiler/Makefile b/compiler/Makefile
index ba2927ce86..99c788430f 100644
--- a/compiler/Makefile
+++ b/compiler/Makefile
@@ -403,6 +403,18 @@ endif
 ifndef RTLOPT
 RTLOPT:=$(OPT)
 endif
+DATE_FMT = +%Y/%m/%d
+ifdef SOURCE_DATE_EPOCH
+    DATESTR ?= $(shell date -u -d "@$(SOURCE_DATE_EPOCH)" "$(DATE_FMT)" 2>/dev/null || date -u -r "$(SOURCE_DATE_EPOCH)" "$(DATE_FMT)" 2>/dev/null || date -u "$(DATE_FMT)")
+else
+   GIT_DIR = $(wildcard ../.git)
+   ifneq ($(GIT_DIR),)
+      DATESTR:=$(shell git log -1 --pretty=%cd --date=format:'%Y/%m/%d')
+   endif
+endif
+ifdef DATESTR
+override OPTNEW+=-DD$(DATESTR)
+endif
 ifdef CYCLELEVEL
 ifeq ($(CYCLELEVEL),1)
 override LOCALOPT+=$(OPTLEVEL1)
diff --git a/compiler/Makefile.fpc b/compiler/Makefile.fpc
index 4f289af110..f9c04fff0c 100644
--- a/compiler/Makefile.fpc
+++ b/compiler/Makefile.fpc
@@ -129,6 +129,22 @@ ifndef RTLOPT
 RTLOPT:=$(OPT)
 endif
 
+DATE_FMT = +%Y/%m/%d
+ifdef SOURCE_DATE_EPOCH
+    COMPDATESTR ?= $(shell date -u -d "@$(SOURCE_DATE_EPOCH)" "$(DATE_FMT)" 2>/dev/null || date -u -r "$(SOURCE_DATE_EPOCH)" "$(DATE_FMT)" 2>/dev/null || date -u "$(DATE_FMT)")
+else
+   # does a git directory exist? ...
+   GIT_DIR = $(wildcard ../.git)
+   ifneq ($(GIT_DIR),)
+      # ... then take date from head
+      COMPDATESTR:=$(shell git log -1 --pretty=%cd --date=format:'%Y/%m/%d')
+   endif
+endif
+
+ifdef COMPDATESTR
+override OPTNEW+=-DD$(COMPDATESTR)
+endif
+
 ifdef CYCLELEVEL
 ifeq ($(CYCLELEVEL),1)
 override LOCALOPT+=$(OPTLEVEL1)