summaryrefslogtreecommitdiffstats
path: root/src
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
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')
-rw-r--r--src/Makefile20
-rw-r--r--src/exchange.c6
2 files changed, 19 insertions, 7 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)
diff --git a/src/exchange.c b/src/exchange.c
index e525e8f..c818606 100644
--- a/src/exchange.c
+++ b/src/exchange.c
@@ -38,8 +38,10 @@ Available Options:\n\
}
void version() {
- printf("%s %s\n", program_name, VERSION);
- printf("Build on %s %s.\n", __DATE__, __TIME__);
+ printf("%s %s\n", program_name, VERSION);
+#ifdef BUILD_DATE
+ printf("Build on %s.\n", BUILD_DATE);
+#endif
}
#endif // !SMALL