Sorry for the slow reply, I was working on some bugs that were taking
up a significant amount of time.

I've tossed this into my integration branch and will follow up if
there are any issues.

Bruce

On Tue, Nov 17, 2020 at 11:38 AM Tyler Hicks
<tyhi...@linux.microsoft.com> wrote:
>
> Pass certain environment variables, meant to convey information about
> the toolchain to use, as make variables when creating a kernel config
> file. The kernel build system checks for toolchain capabilities when
> generating the merged config file and a valid toolchain is required to
> enable some options.
>
> OpenEmbedded has attempted, for a couple years now, to specify the
> compiler by setting the CC environment variable:
>
>  
> https://git.openembedded.org/openembedded-core/commit/?id=ff1bdd75d50f0ebac3d599e461685ace29559a82
>
> This was unsuccessful due to the kernel's top-level Makefile explicitly
> assigning variables, such as CC, and ignoring what's present in the
> environment. It is possible to override this behavior by invoking make
> with the '-e' option but the make manual discourages this:
>
>  Every environment variable that make sees when it starts up is
>  transformed into a make variable with the same name and value.
>  However, an explicit assignment in the makefile, or with a command
>  argument, overrides the environment. (If the ā€˜-eā€™ flag is specified,
>  then values from the environment override assignments in the makefile.
>  See Summary of Options. But this is not recommended practice.)
>
> A simple test case is to create a defconfig while specifying clang as
> the compiler to use:
>
>  $ make CC=clang-10 defconfig
>  ...
>
> Create a config fragment that attempts to enable
> CONFIG_INIT_STACK_ALL_PATTERN which is currently only possible to enable
> when building with clang:
>
>  $ echo "CONFIG_INIT_STACK_ALL_PATTERN=y" > init-stack-all.cfg
>
> Specify clang in the environment when running merge_config.sh and see
> that the option couldn't be enabled:
>
>  $ CC=clang-10 merge_config.sh .config init-stack-all.cfg
>  ...
>  Value requested for CONFIG_INIT_STACK_ALL_PATTERN not in final .config
>  Requested value:  CONFIG_INIT_STACK_ALL_PATTERN=y
>  Actual value:
>
> Note that the less secure CONFIG_INIT_STACK_NONE option is enabled,
> instead:
>
>  $ grep CONFIG_INIT_STACK .config
>  CONFIG_INIT_STACK_NONE=y
>
> Signed-off-by: Tyler Hicks <tyhi...@linux.microsoft.com>
> ---
>  tools/merge_config.sh | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/tools/merge_config.sh b/tools/merge_config.sh
> index 14b4c1fbd04c..38eb85afc263 100755
> --- a/tools/merge_config.sh
> +++ b/tools/merge_config.sh
> @@ -153,7 +153,8 @@ fi
>  # Use the merged file as the starting point for:
>  # alldefconfig: Fills in any missing symbols with Kconfig default
>  # allnoconfig: Fills in any missing symbols with # CONFIG_* is not set
> -make LD="$LD" KCONFIG_ALLCONFIG=$TMP_FILE $OUTPUT_ARG $ALLTARGET
> +make HOSTCC="$HOSTCC" HOSTLD="$HOSTLD" CC="$CC" LD="$LD" \
> +       KCONFIG_ALLCONFIG=$TMP_FILE $OUTPUT_ARG $ALLTARGET
>
>
>  # Check all specified config values took (might have missed-dependency 
> issues)
> --
> 2.17.1
>


-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#9203): 
https://lists.yoctoproject.org/g/linux-yocto/message/9203
Mute This Topic: https://lists.yoctoproject.org/mt/78319959/21656
Group Owner: linux-yocto+ow...@lists.yoctoproject.org
Unsubscribe: https://lists.yoctoproject.org/g/linux-yocto/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to