On 08/27/2015 03:03 PM, Paul Kocialkowski wrote: > Le jeudi 27 août 2015 à 11:30 +0200, Andreas Bießmann a écrit :
>> Changes in v2: >> * check for '-u' and '-d "@0"' switch rather than for the GNU variant >> >> Makefile | 15 ++++++++++++--- >> 1 file changed, 12 insertions(+), 3 deletions(-) >> >> diff --git a/Makefile b/Makefile >> index b9b2375..b797e38 100644 >> --- a/Makefile >> +++ b/Makefile >> @@ -346,6 +346,10 @@ PERL = perl >> PYTHON = python >> DTC = dtc >> CHECK = sparse >> +DATE := $(foreach date,gdate date.gnu date, \ >> + $(shell _date=`which $(date)`; \ >> + $${_date} -u -d "@0" >/dev/null 2>&1; \ >> + test $$? -eq 0 && echo $${_date})) > > First, I don't understand why you need to call date with the full path: > if which can find it, then calling the binary without its full path > should do just as well, right? You'r right. > Then, correct me if I'm wrong, but calling test and using && is > overkill, you could simply do: $${_date} -u -d "@0" >/dev/null 2>&1 && > echo $${_date} Also true. > So in the end, the whole line would look like: > > DATE := $(foreach date,gdate date.gnu date, \ > $($${date} -u -d "@0" >/dev/null 2>&1 \ > && echo $${date})) > > Let me know what you think (and please test it as well). That should work. I wonder however why we don't include this snippet in the filechk_timestamp.h script directly. In fact the $(DATE) (a date that support -d '@0' switch) is just used there, so why clobber the Makefile with it? ---8<--- define filechk_timestamp.h (if test -n "$${SOURCE_DATE_EPOCH}"; then \ date=""; \ for _date in gdate date.gnu date; do \ $${_date} -u -d "$${SOURCE_DATE}" >/dev/null 2>&1 && \ date="$${_date}"; \ done; \ if test -n "$${date}"; then \ SOURCE_DATE="@$${SOURCE_DATE_EPOCH}"; \ LC_ALL=C $${date} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_DATE "%b %d %C%y"'; \ LC_ALL=C $${date} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TIME "%T"'; \ LC_ALL=C $${date} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TZ "%z"'; \ else \ return 42; \ fi; \ else \ LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \ LC_ALL=C date +'#define U_BOOT_TIME "%T"'; \ LC_ALL=C date +'#define U_BOOT_TZ "%z"'; \ fi) endef --->8--- >> CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ >> -Wbitwise -Wno-return-void -D__CHECK_ENDIAN__ $(CF) >> @@ -1281,9 +1285,9 @@ endef >> define filechk_timestamp.h >> (if test -n "$${SOURCE_DATE_EPOCH}"; then \ >> SOURCE_DATE="@$${SOURCE_DATE_EPOCH}"; \ >> - LC_ALL=C date -u -d "$${SOURCE_DATE}" +'#define U_BOOT_DATE "%b >> %d %C%y"'; \ >> - LC_ALL=C date -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TIME >> "%T"'; \ >> - LC_ALL=C date -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TZ >> "%z"'; \ >> + LC_ALL=C $(DATE) -u -d "$${SOURCE_DATE}" +'#define U_BOOT_DATE >> "%b %d %C%y"'; \ >> + LC_ALL=C $(DATE) -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TIME >> "%T"'; \ >> + LC_ALL=C $(DATE) -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TZ >> "%z"'; \ >> else \ >> LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \ >> LC_ALL=C date +'#define U_BOOT_TIME "%T"'; \ >> @@ -1295,6 +1299,11 @@ $(version_h): include/config/uboot.release FORCE >> $(call filechk,version.h) >> >> $(timestamp_h): $(srctree)/Makefile FORCE >> +ifneq ($(strip $(SOURCE_DATE_EPOCH)),) >> +ifeq ($(strip $(DATE)),) >> + $(error "Your gdate/date.gnu/date does not support the '-u' and '-d' >> switches like GNU date does!") >> +endif >> +endif >> $(call filechk,timestamp.h) >> >> # >> --------------------------------------------------------------------------- > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot