Tom,


On Thu, May 14, 2020 at 9:32 PM Tom Rini <tr...@konsulko.com> wrote:
>
> As part of re-syncing our Kconfig logic up to v4.19, we had missed
> adding this new file that includes helper macros.  To quote the upstream
> commit e1cfdc0e72fc ("kconfig: add basic helper macros to 
> scripts/Kconfig.include"):
>
> Kconfig got text processing tools like we see in Make.  Add Kconfig
> helper macros to scripts/Kconfig.include like we collect Makefile
> macros in scripts/Kbuild.include.
>
> Cc: Masahiro Yamada <yamada.masah...@socionext.com>
> Signed-off-by: Tom Rini <tr...@konsulko.com>


If you want to align with Linux kernel, please go ahead.


Some notes.


Previously, CROSS_COMPILE was not required at the Kconfig stage.

So, people was able to do this:

      make qemu_arm64_defconfig
      make CROSS_COMPILE=aarch64-linux-gnu-


Going forward, Kconfig requires CROSS_COMPILE set correctly.

      make CROSS_COMPILE=aarch64-linux-gnu-  qemu_arm64_defconfig
      make CROSS_COMPILE=aarch64-linux-gnu-

Maybe, passing CROSS_COMPILE as an environment variable is handier

      export CROSS_COMPILE=aarch64-linux-gnu-
      make qemu_arm64_defconfig
      make





When you upgrade the compiler, in theory,
you must re-run Kconfig because the .config now
contains the compiler information.

If you want to do this automatically,
you can import CC_VERSION_TEXT.

Specifically, the following two commits:
21c54b774744719c386fbdc829b0e7759edb8ece
315bab4e972d9795529b764718d475492db40c0f




> ---
>  Kconfig                 |  2 ++
>  scripts/Kconfig.include | 30 ++++++++++++++++++++++++++++++
>  2 files changed, 32 insertions(+)
>  create mode 100644 scripts/Kconfig.include
>
> diff --git a/Kconfig b/Kconfig
> index 15f1a75c61ab..72b4439264a6 100644
> --- a/Kconfig
> +++ b/Kconfig
> @@ -5,6 +5,8 @@
>  #
>  mainmenu "U-Boot $(UBOOTVERSION) Configuration"
>
> +source "scripts/Kconfig.include"
> +
>  # Allow defaults in arch-specific code to override any given here
>  source "arch/Kconfig"
>
> diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include
> new file mode 100644
> index 000000000000..dad5583451af
> --- /dev/null
> +++ b/scripts/Kconfig.include
> @@ -0,0 +1,30 @@
> +# Kconfig helper macros
> +
> +# Convenient variables
> +comma       := ,
> +quote       := "
> +squote      := '
> +empty       :=
> +space       := $(empty) $(empty)
> +dollar      := $
> +right_paren := )
> +left_paren  := (
> +
> +# $(if-success,<command>,<then>,<else>)
> +# Return <then> if <command> exits with 0, <else> otherwise.
> +if-success = $(shell,{ $(1); } >/dev/null 2>&1 && echo "$(2)" || echo "$(3)")
> +
> +# $(success,<command>)
> +# Return y if <command> exits with 0, n otherwise
> +success = $(if-success,$(1),y,n)
> +
> +# $(cc-option,<flag>)
> +# Return y if the compiler supports <flag>, n otherwise
> +cc-option = $(success,$(CC) -Werror $(1) -E -x c /dev/null -o /dev/null)
> +
> +# $(ld-option,<flag>)
> +# Return y if the linker supports <flag>, n otherwise
> +ld-option = $(success,$(LD) -v $(1))
> +
> +# gcc version including patch level
> +gcc-version := $(shell,$(srctree)/scripts/gcc-version.sh -p $(CC) | sed 
> 's/^0*//')
> --
> 2.17.1
>


--
Best Regards
Masahiro Yamada

Reply via email to