Skip to content
  1. Dec 17, 2021
    • Jean-Philippe Brucker's avatar
      tools: Help cross-building with clang · cebdb737
      Jean-Philippe Brucker authored
      Cross-compilation with clang uses the -target parameter rather than a
      toolchain prefix. Just like the kernel Makefile, add that parameter to
      CFLAGS when CROSS_COMPILE is set.
      
      Unlike the kernel Makefile, we use the --sysroot and --gcc-toolchain
      options because unlike the kernel, tools require standard libraries.
      Commit c91d4e47
      
       ("Makefile: Remove '--gcc-toolchain' flag") provides
      some background about --gcc-toolchain. Normally clang finds on its own
      the additional utilities and libraries that it needs (for example GNU ld
      or glibc). On some systems however, this autodetection doesn't work.
      There, our only recourse is asking GCC directly, and pass the result to
      --sysroot and --gcc-toolchain. Of course that only works when a cross
      GCC is available.
      
      Autodetection worked fine on Debian, but to use the aarch64-linux-gnu
      toolchain from Archlinux I needed both --sysroot (for crt1.o) and
      --gcc-toolchain (for crtbegin.o, -lgcc). The --prefix parameter wasn't
      needed there, but it might be useful on other distributions.
      
      Use the CLANG_CROSS_FLAGS variable instead of CLANG_FLAGS because it
      allows tools such as bpftool, that need to build both host and target
      binaries, to easily filter out the cross-build flags from CFLAGS.
      
      Signed-off-by: default avatarJean-Philippe Brucker <jean-philippe@linaro.org>
      Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
      Acked-by: default avatarQuentin Monnet <quentin@isovalent.com>
      Acked-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      Link: https://lore.kernel.org/bpf/20211216163842.829836-2-jean-philippe@linaro.org
      cebdb737
  2. Dec 15, 2021
  3. Dec 14, 2021
  4. Dec 13, 2021
  5. Dec 12, 2021
  6. Dec 11, 2021