kbuild: build with -Werror=date-time if the compiler supports it

Using __DATE__, __TIME__ would make the build non-deterministic.

If the code needs to refer to build date/time, use U_BOOT_DATE and
U_BOOT_TIME in include/generated/timestamp_autogenerated.h instead.

This commit has been imported from Linux Kernel,
which should be applied to U-Boot too:

    commit fe7c36c7bde12190341722af69358e42171162f3
    Author: Josh Triplett <josh@joshtriplett.org>
    Date:   Mon Dec 23 13:56:06 2013 -0800

    Makefile: Build with -Werror=date-time if the compiler supports it

    GCC 4.9 and newer have a new warning -Wdate-time, which warns on any use
    of __DATE__, __TIME__, or __TIMESTAMP__, which would make the build
    non-deterministic.  Now that the kernel does not use any of those
    macros, turn on -Werror=date-time if available, to keep it that way.

    The kernel already (optionally) records this information at build time
    in a single place; other kernel code should not duplicate that.

Signed-off-by: Josh Triplett <josh@joshtriplett.org>
Signed-off-by: Michal Marek <mmarek@suse.cz>
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
This commit is contained in:
Masahiro Yamada 2014-04-18 19:09:51 +09:00 committed by Tom Rini
parent 9995d8c8dc
commit 65bb6d8dee

View File

@ -578,6 +578,9 @@ KBUILD_AFLAGS += -Wa,-gstabs,-S
endif
endif
# Prohibit date/time macros, which would make the build non-deterministic
KBUILD_CFLAGS += $(call cc-option,-Werror=date-time)
ifneq ($(CONFIG_SYS_TEXT_BASE),)
KBUILD_CPPFLAGS += -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE)
endif