On Wed, Aug 09, 2023 at 02:57:13PM -0500, Pierre-Louis Bossart wrote: > > Looking at your GitHub Actions files, I am not sure exporting CC works > > correctly so I don't think you are building with clang. If I do it > > D'oh. I did not see this one coming... nice. > > > locally: > > > > $ export CC=clang > > > > $ make -j$(nproc) defconfig > > > > $ grep -E 'CONFIG_(CC_IS|CLANG|GCC)' .config > > CONFIG_CC_IS_GCC=y > > CONFIG_GCC_VERSION=130201 > > CONFIG_CLANG_VERSION=0 > > CONFIG_GCC11_NO_ARRAY_BOUNDS=y > > CONFIG_GCC_PLUGINS=y > > # CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set > > # CONFIG_GCC_PLUGIN_STACKLEAK is not set > > > > $ make -j$(nproc) sound/soc/sof/intel/hda.o > > > > $ head -1 sound/soc/sof/intel/.hda.o.cmd > > savedcmd_sound/soc/sof/intel/hda.o := gcc ... > > > > This was brought up some time ago and Masahiro made a decent point that > > this might not be a desirable behavior change. > > > > https://lore.kernel.org/CAK7LNAT6Yp3oemUxSst+htnmM-St8WmSv+UZ2x2XF23cw-kU-Q@xxxxxxxxxxxxxx/ > > > > Switching to passing CC via the actual make command should fix that. > > Not quite. We generate our .config using "make defconfig" as a baseline > and then "merge_config.sh" to add a bunch of fragments we need [1]. And > of course the latter script does not understand CC=clang and switches > back to GCC. Ah, I still think you will need to pass CC to make directly, rather than through the environment but you should be able to prevent merge_config.sh from getting in the way by passing '-m' to avoid having it invoke make itself, then you can add a 'make olddefconfig' step after that, perhaps something like this? - name: build start run: | export ARCH=x86_64 KCFLAGS="-Wall -Werror" export MAKEFLAGS=j"$(nproc)" bash kconfig/kconfig-sof-default.sh -m make CC=clang olddefconfig make CC=clang sound/ make CC=clang drivers/soundwire/ make CC=clang Cheers, Nathan