Mahlzeit!
Der gcc¹ kann ja --date-- und --time-- entsprechend der Environment Variable SOURCE_DATE_EPOCH setzen. So weit so gut, solange ein Programm aus den Quellen komplett neu gebaut wird. Mit Makefile und mehreren *.c funktioniert das nur zufällig, weil die Datei mit diesen Variablen selten geändert und übersetzt wird. Dann funktioniert auch die Empfehlung² nicht, eine RTC erstmalig zu stellen. Außerdem sieht man in dem Beitrag, wie mega umständlich das ist. Und evt. ist nicht klar, ob man UTC oder localtime bekommt.
Mit CFLAGS += SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH) entfällt der Umstand, man bekommt die UNIX-Sekunden direkt als Konstante. Aber trotzdem muss die entsprechende Quelldatei jedes Mal übersetzt werden. So geht's also auch nicht.
Wie kann man so eine Konstante per Makefile dem Linker übergeben? Oder wie macht "man" das?