forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'kbuild-v5.7' of git://git.kernel.org/pub/scm/linux/kernel/…
…git/masahiroy/linux-kbuild Pull Kbuild updates from Masahiro Yamada: "Build system: - add CONFIG_UNUSED_KSYMS_WHITELIST, which will be useful to define a fixed set of export symbols for Generic Kernel Image (GKI) - allow to run 'make dt_binding_check' without .config - use full schema for checking DT examples in *.yaml files - make modpost fail for missing MODULE_IMPORT_NS(), which makes more sense because we know the produced modules are never loadable - Remove unused 'AS' variable Kconfig: - sanitize DEFCONFIG_LIST, and remove ARCH_DEFCONFIG from Kconfig files - relax the 'imply' behavior so that symbols implied by 'y' can become 'm' - make 'imply' obey 'depends on' in order to make 'imply' really weak Misc: - add documentation on building the kernel with Clang/LLVM - revive __HAVE_ARCH_STRLEN for 32bit sparc to use optimized strlen() - fix warning from deb-pkg builds when CONFIG_DEBUG_INFO=n - various script and Makefile cleanups" * tag 'kbuild-v5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (34 commits) Makefile: Update kselftest help information kbuild: deb-pkg: fix warning when CONFIG_DEBUG_INFO is unset kbuild: add outputmakefile to no-dot-config-targets kbuild: remove AS variable net: wan: wanxl: refactor the firmware rebuild rule net: wan: wanxl: use $(M68KCC) instead of $(M68KAS) for rebuilding firmware net: wan: wanxl: use allow to pass CROSS_COMPILE_M68k for rebuilding firmware kbuild: add comment about grouped target kbuild: add -Wall to KBUILD_HOSTCXXFLAGS kconfig: remove unused variable in qconf.cc sparc: revive __HAVE_ARCH_STRLEN for 32bit sparc kbuild: refactor Makefile.dtbinst more kbuild: compute the dtbs_install destination more simply Makefile: disallow data races on gcc-10 as well kconfig: make 'imply' obey the direct dependency kconfig: allow symbols implied by y to become m net: drop_monitor: use IS_REACHABLE() to guard net_dm_hw_report() modpost: return error if module is missing ns imports and MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS=n modpost: rework and consolidate logging interface kbuild: allow to run dt_binding_check without kernel configuration ...
- Loading branch information
Showing
35 changed files
with
356 additions
and
200 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
*.example.dts | ||
processed-schema.yaml | ||
processed-schema*.yaml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -20,6 +20,7 @@ Kernel Build System | |
issues | ||
reproducible-builds | ||
gcc-plugins | ||
llvm | ||
|
||
.. only:: subproject and html | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
============================== | ||
Building Linux with Clang/LLVM | ||
============================== | ||
|
||
This document covers how to build the Linux kernel with Clang and LLVM | ||
utilities. | ||
|
||
About | ||
----- | ||
|
||
The Linux kernel has always traditionally been compiled with GNU toolchains | ||
such as GCC and binutils. Ongoing work has allowed for `Clang | ||
<https://clang.llvm.org/>`_ and `LLVM <https://llvm.org/>`_ utilities to be | ||
used as viable substitutes. Distributions such as `Android | ||
<https://www.android.com/>`_, `ChromeOS | ||
<https://www.chromium.org/chromium-os>`_, and `OpenMandriva | ||
<https://www.openmandriva.org/>`_ use Clang built kernels. `LLVM is a | ||
collection of toolchain components implemented in terms of C++ objects | ||
<https://www.aosabook.org/en/llvm.html>`_. Clang is a front-end to LLVM that | ||
supports C and the GNU C extensions required by the kernel, and is pronounced | ||
"klang," not "see-lang." | ||
|
||
Clang | ||
----- | ||
|
||
The compiler used can be swapped out via `CC=` command line argument to `make`. | ||
`CC=` should be set when selecting a config and during a build. | ||
|
||
make CC=clang defconfig | ||
|
||
make CC=clang | ||
|
||
Cross Compiling | ||
--------------- | ||
|
||
A single Clang compiler binary will typically contain all supported backends, | ||
which can help simplify cross compiling. | ||
|
||
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make CC=clang | ||
|
||
`CROSS_COMPILE` is not used to prefix the Clang compiler binary, instead | ||
`CROSS_COMPILE` is used to set a command line flag: `--target <triple>`. For | ||
example: | ||
|
||
clang --target aarch64-linux-gnu foo.c | ||
|
||
LLVM Utilities | ||
-------------- | ||
|
||
LLVM has substitutes for GNU binutils utilities. These can be invoked as | ||
additional parameters to `make`. | ||
|
||
make CC=clang AS=clang LD=ld.lld AR=llvm-ar NM=llvm-nm STRIP=llvm-strip \\ | ||
OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump OBJSIZE=llvm-objsize \\ | ||
READELF=llvm-readelf HOSTCC=clang HOSTCXX=clang++ HOSTAR=llvm-ar \\ | ||
HOSTLD=ld.lld | ||
|
||
Getting Help | ||
------------ | ||
|
||
- `Website <https://clangbuiltlinux.github.io/>`_ | ||
- `Mailing List <https://groups.google.com/forum/#!forum/clang-built-linux>`_: <[email protected]> | ||
- `Issue Tracker <https://github.com/ClangBuiltLinux/linux/issues>`_ | ||
- IRC: #clangbuiltlinux on chat.freenode.net | ||
- `Telegram <https://t.me/ClangBuiltLinux>`_: @ClangBuiltLinux | ||
- `Wiki <https://github.com/ClangBuiltLinux/linux/wiki>`_ | ||
- `Beginner Bugs <https://github.com/ClangBuiltLinux/linux/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22>`_ | ||
|
||
Getting LLVM | ||
------------- | ||
|
||
- http://releases.llvm.org/download.html | ||
- https://github.com/llvm/llvm-project | ||
- https://llvm.org/docs/GettingStarted.html | ||
- https://llvm.org/docs/CMake.html | ||
- https://apt.llvm.org/ | ||
- https://www.archlinux.org/packages/extra/x86_64/llvm/ | ||
- https://github.com/ClangBuiltLinux/tc-build | ||
- https://github.com/ClangBuiltLinux/linux/wiki/Building-Clang-from-source | ||
- https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4139,6 +4139,7 @@ B: https://github.com/ClangBuiltLinux/linux/issues | |
C: irc://chat.freenode.net/clangbuiltlinux | ||
S: Supported | ||
K: \b(?i:clang|llvm)\b | ||
F: Documentation/kbuild/llvm.rst | ||
|
||
CLEANCACHE API | ||
M: Konrad Rzeszutek Wilk <[email protected]> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.