Go to file
Romain Naour 5e9417e3b4 package/clang: install a toolchain-wrapper for the host clang cross-compiler
In order to use Clang as a host cross-compiler for Buildroot, we
need to provide at least the path to the sysroot (using
--sysroot) and some other compiler flags.

This series looks to reuse the toolchain wrapper for GCC since
Clang support most of the gcc flags used in the Buildroot's
toolchain wrapper. The only flag -mfused-madd (deprecated
since gcc 4.6) for mips is not supported by clang. Since
Clang require gcc >= 5.x this flag can never be used.

host-clang refers to an existing GCC-based toolchain (internal or
external) for libstdc++. However, a Buildroot external toolchain
gets a different BR_CROSS_PATH_SUFFIX. Therefore, we can't reuse the
toolchain-wrapper that gets built for the GCC-based toolchain, but
instead have to compile an additional clang-specific wrapper, called
toolchain-wrapper-clang.

After building the clang toolchain wrapper, create the symlinks needed
to force package infrastructure to use clang througt the wrapper.

Initially clang install the clang-8 binary and create all other symlinks:

 # clang -> clang-8
 # clang++ -> clang
 # clang-8
 # clang-cl -> clang
 # clang-cpp -> clang

Use a post install hook to rename the clang-8 binary to clang-8.br_real
and recreate all symlinks:

 # clang -> toolchain-wrapper-clang
 # clang++ -> toolchain-wrapper-clang
 # clang-8 -> toolchain-wrapper-clang
 # clang-8.br_real
 # clang++.br_real -> clang-8.br_real
 # clang.br_real -> clang-8.br_real
 # clang-cl -> toolchain-wrapper-clang
 # clang-cl.br_real -> clang-8.br_real
 # clang-cpp -> toolchain-wrapper-clang
 # clang-cpp.br_real -> clang-8.br_real

NOTE: *.br_real symlinks are needed as the wrapper references them

Use the previously introduced CLANG_VERSION_MAJOR variable to create
theses symlinks.

Set BR_CROSS_PATH_SUFFIX to ".br_real" as for the Buildroot's internal
GCC toolchain backend to find the "real" clang binary installed in
$(HOST_DIR)/bin.

Borrow TOOLCHAIN_WRAPPER_BUILD and TOOLCHAIN_WRAPPER_INSTALL to
build and install the specific clang toolchain wrapper.

Signed-off-by: Romain Naour <romain.naour@smile.fr>
Cc: Valentin Korenblit <valentinkorenblit@gmail.com>
Signed-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2022-06-20 21:32:21 +02:00
arch Remove support for the NDS32 architecture 2022-06-19 18:30:45 +02:00
board board/zynqmp/post-build.sh: remove unnecessary if 2022-06-19 18:39:03 +02:00
boot package/arm-gnu-toolchain: Bump to 11.2-2022.02 and rename from arm-gnu-a-toolchain 2022-06-19 18:52:38 +02:00
configs configs/zynqmp_kria_kv260_defconfig: add parameters to generate extlinux.conf 2022-06-19 18:39:02 +02:00
docs Remove support for the NDS32 architecture 2022-06-19 18:30:45 +02:00
fs fs/squashfs: fix BR2_TARGET_ROOTFS_SQUASHFS_BS_8K 2022-05-29 22:28:21 +02:00
linux linux: update cip/cip-rt kernels to latest versions 2022-06-06 15:21:21 +02:00
package package/clang: install a toolchain-wrapper for the host clang cross-compiler 2022-06-20 21:32:21 +02:00
support support/misc/toolchainfile.cmake.in: allow variables to be overridden 2022-06-20 20:59:21 +02:00
system package/systemd: add setting for systemd default.target 2022-05-02 22:58:44 +02:00
toolchain toolchain/toolchain-external/toolchain-external-andes-nds32: remove package 2022-06-19 18:26:44 +02:00
utils Remove support for the NDS32 architecture 2022-06-19 18:30:45 +02:00
.clang-format .clang-format: initial import from Linux 5.15.6 2022-01-01 15:01:13 +01:00
.defconfig
.flake8
.gitignore
.gitlab-ci.yml utils/checkpackagelib/lib_sysv: run shellcheck 2022-02-06 18:27:03 +01:00
CHANGES Update for 2022.02.3 2022-06-19 12:53:35 +02:00
Config.in Config.in: only allow BR2_STATIC_LIBS on supported libc/arch 2022-06-06 15:14:05 +02:00
Config.in.legacy Remove support for the NDS32 architecture 2022-06-19 18:30:45 +02:00
COPYING
DEVELOPERS package/compiler-rt: new package 2022-06-20 21:11:01 +02:00
Makefile Kickoff 2022.08 cycle 2022-06-07 21:06:39 +02:00
Makefile.legacy
README

Buildroot is a simple, efficient and easy-to-use tool to generate embedded
Linux systems through cross-compilation.

The documentation can be found in docs/manual. You can generate a text
document with 'make manual-text' and read output/docs/manual/manual.text.
Online documentation can be found at http://buildroot.org/docs.html

To build and use the buildroot stuff, do the following:

1) run 'make menuconfig'
2) select the target architecture and the packages you wish to compile
3) run 'make'
4) wait while it compiles
5) find the kernel, bootloader, root filesystem, etc. in output/images

You do not need to be root to build or run buildroot.  Have fun!

Buildroot comes with a basic configuration for a number of boards. Run
'make list-defconfigs' to view the list of provided configurations.

Please feed suggestions, bug reports, insults, and bribes back to the
buildroot mailing list: buildroot@buildroot.org
You can also find us on #buildroot on OFTC IRC.

If you would like to contribute patches, please read
https://buildroot.org/manual.html#submitting-patches