From fc513db3e8bca6be022e95a75723143cb6eca36e Mon Sep 17 00:00:00 2001 From: Tobias Wiese Date: Fri, 7 Aug 2020 17:49:20 +0200 Subject: 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 --- src/Makefile | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'src/Makefile') 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) -- cgit v1.2.3