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
The -m doesn't work since it's added last, but it's not even needed. The sequence below re-adds clang, that's just fine.
make CC=clang olddefconfig make CC=clang sound/ make CC=clang drivers/soundwire/ make CC=clang
The fun part now is that I get tons of unrelated errors - but at least that's a sign we're using the clang compiler
https://github.com/thesofproject/linux/actions/runs/5813817494/job/157621785...
sound/pci/hda/hda_bind.c:232:18: error: format string is not a string literal (potentially insecure) [-Werror,-Wformat-security] 2151 request_module(mod); 2152 ^~~ 2153 ./include/linux/kmod.h:25:55: note: expanded from macro 'request_module' 2154 #define request_module(mod...) __request_module(true, mod) 2155 ^~~ 2156 sound/pci/hda/hda_bind.c:232:18: note: treat the string as an argument to avoid this 2157 request_module(mod); 2158 ^ 2159 "%s", 2160 ./include/linux/kmod.h:25:55: note: expanded from macro 'request_module' 2161 #define request_module(mod...) __request_module(true, mod) 2162 ^ 2163 1 error generated.