summaryrefslogtreecommitdiffstats
path: root/src/Makefile
diff options
context:
space:
mode:
authorTobias Wiese <tobias@tobiaswiese.com>2020-08-07 17:49:20 +0200
committerTobias Wiese <tobias@tobiaswiese.com>2020-08-07 17:49:20 +0200
commitfc513db3e8bca6be022e95a75723143cb6eca36e (patch)
treeed8ba71adc957551e7e3c0a0a47593e7baf5f9b8 /src/Makefile
parent6b2f03de6f7b533c31d52523d49ede2f627d5bba (diff)
build: honor SOURCE_DATE_EPOCH
Use SOURCE_DATE_EPOCH as build timestamp if available, otherwise fall back to the current time. Previously the build timestamp were given in the --version output using the C __DATE__ AND __TIME__ macros, which prevent a reproducible build. Signed-off-by: Tobias Wiese <tobias@tobiaswiese.com>
Diffstat (limited to 'src/Makefile')
-rw-r--r--src/Makefile20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/Makefile b/src/Makefile
index 339522d..cfb66b7 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,13 +1,23 @@
-INSTALL = install
-
VERSION = $(shell git describe --dirty --always)
+DATE_FMT = +%b %d %Y %H:%M:%S UTC
+
+ifdef SOURCE_DATE_EPOCH
+ BUILD_DATE ?= $(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
+ BUILD_DATE ?= $(shell date -u "$(DATE_FMT)")
+endif
+
+INSTALL = install
-CFLAGS += -Wall -DVERSION="\"$(VERSION)\""
+CFLAGS += -Wall -DVERSION="\"$(VERSION)\"" -DBUILD_DATE="\"$(BUILD_DATE)\""
LDFLAGS +=
TARGETS := exchange
-MAINS := $(addsuffix .o, $(TARGETS))
-OBJ := $(MAINS)
+MAINS := $(addsuffix .o, $(TARGETS))
+OBJ := $(MAINS)
.PHONY: all
all: $(TARGETS)