On Fri, Feb 17, 2023 at 4:18 PM Florent Revest revest@chromium.org wrote:
I cross-compile my BPF selftests with the following command:
CLANG_CROSS_FLAGS="--target=aarch64-linux-gnu --sysroot=/sysroot/" \ make LLVM=1 CC=clang CROSS_COMPILE=aarch64-linux-gnu- SRCARCH=arm64
(Note the use of CLANG_CROSS_FLAGS to specify a custom sysroot instead of letting clang use gcc's default sysroot)
However, CLANG_CROSS_FLAGS gets propagated to host tools builds (libbpf and bpftool) and because they reference it directly in their Makefiles, they end up cross-compiling host objects which results in linking errors.
This patch ensures that CLANG_CROSS_FLAGS is reset if CROSS_COMPILE isn't set (for example when reaching a BPF host tool build).
Note: I'm not entirely sure which tree should take that patch. I tagged this patch as "bpf-next" because 1- that's the tree I know best 2- as far as I can tell, only BPF tools Makefiles reference CLANG_CROSS_FLAGS directly and are currently broken in this way 3- I figured this would be a simple enough patch that it's not too hard for another tree to take it.
Anyway, I tried to CC other relevant folks, I figured there could be different opinions on how this should get solved, for example the bpf Makefiles using CLANG_CROSS_FLAGS could check whether CROSS_COMPILE is set first. I'd be happy to adapt a v2 to any suggestion.