linux/scripts
Masahiro Yamada eb47ee0181 kbuild: add Kbuild bash completion
Kernel build commands can sometimes be long, particularly when
cross-compiling, making them tedious to type and prone to mistypes.

This commit introduces bash completion support for common variables
and targets in Kbuild.

For installation instructions, please refer to the documentation in
Documentation/kbuild/bash-completion.rst.

The following examples demonstrate how this saves typing.

[Example 1] a long command line for cross-compiling

  $ make A<TAB>
   -> completes 'A' to 'ARCH='

  $ make ARCH=<TAB>
   -> displays all supported architectures

  $ make ARCH=arm64 CR<TAB>
   -> completes 'CR' to 'CROSS_COMPILE='

  $ make ARCH=arm64 CROSS_COMPILE=<TAB>
   -> displays installed toolchains

  $ make ARCH=arm64 CROSS_COMPILE=aa<TAB>
   -> completes 'CROSS_COMPILE=aa' to 'CROSS_COMPILE=aarch64-linux-gnu-'

  $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- def<TAB>
   -> completes 'def' to 'defconfig'

[Example 2] a single build target

  $ make f<TAB>
   -> completes 'f' to 'fs/'

  $ make fs/<TAB>
   -> displays objects and sub-directories in fs/

  $ make fs/xf<TAB>
   -> completes 'fs/xf' to 'fs/xfs/'

  $ make fs/xfs/l<TAB>
   -> completes 'fs/xfs/l' to 'fs/xfs/libxfs/xfs_'

  $ make fs/xfs/libxfs/xfs_g<TAB>
   -> completes 'fs/xfs/libxfs/xfs_g' to 'fs/xfs/libxfs/xfs_group.o'

This does not aim to provide a complete list of variables and targets,
as there are too many. However, it covers variables and targets used
in common scenarios, and I hope this is useful enough.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nicolas Schier <n.schier@avm.de>
Tested-by: Nicolas Schier <n.schier@avm.de>
2025-03-15 21:22:52 +09:00
..
atomic locking/atomic: scripts: fix ${atomic}_sub_and_test() kerneldoc 2024-06-05 15:52:34 +02:00
bash-completion kbuild: add Kbuild bash completion 2025-03-15 21:22:52 +09:00
basic fixdep: use xmalloc() 2024-09-01 20:34:49 +09:00
clang-tools gen_compile_commands.py: remove code for '\#' replacement 2025-03-15 21:16:21 +09:00
coccinelle coccinelle: misc: add secs_to_jiffies script 2025-01-12 20:21:01 -08:00
dtc dt: dt-extract-compatibles: Extract compatibles from function parameters 2024-09-05 10:17:03 -05:00
dummy-tools kbuild: dummy-tools: pretend we understand -fpatchable-function-entry 2023-11-01 23:24:56 +09:00
gcc-plugins gcc-plugins: randstruct: Remove GCC 4.7 or newer requirement 2024-08-05 14:34:23 -07:00
gdb scripts/gdb: fix aarch64 userspace detection in get_current_task 2025-02-01 03:53:24 -08:00
gendwarfksyms gendwarfksyms: Add a separate pass to resolve FQNs 2025-03-15 21:16:11 +09:00
genksyms genksyms: factor out APP for the ST_NORMAL state 2025-03-15 21:16:21 +09:00
include scripts: import more list macros 2024-10-07 02:12:27 +09:00
ipe scripts: ipe: polgen: remove redundant close and error exit path 2024-11-19 13:57:03 -08:00
kconfig kconfig: remove unnecessary cast in sym_get_string() 2025-03-15 21:16:21 +09:00
ksymoops
mod modpost: use strstarts() to clean up parse_source_files() 2025-03-15 21:16:22 +09:00
package kbuild: deb-pkg: add debarch for ARCH=loongarch64 2025-03-15 21:19:44 +09:00
selinux Remove stale generated 'genheaders' file 2025-01-31 19:49:17 -08:00
tracing scripts: make python shebangs specific about desired version 2025-03-15 21:19:44 +09:00
.gitignore lib: packing: add pack_fields() and unpack_fields() 2024-12-11 20:13:00 -08:00
as-version.sh kbuild: Update assembler calls to use proper flags and language target 2023-01-26 12:41:38 +09:00
asn1_compiler.c ASN.1: Fix check for strdup() success 2023-04-21 08:58:00 -07:00
bloat-o-meter scripts/bloat-o-meter: count weak symbol sizes 2023-08-21 13:46:25 -07:00
bootgraph.pl
bpf_doc.py bpf: Allow specifying bpf_fastcall attribute for BPF helpers 2024-10-03 17:47:53 -07:00
build-version kbuild: move init/build-version to scripts/ 2024-07-16 01:08:37 +09:00
cc-can-link.sh
cc-version.sh scripts: Remove ICC-related dead code 2023-04-24 10:18:32 -07:00
check-git kbuild: use git-archive for source package creation 2023-03-16 22:46:12 +09:00
check-sysctl-docs scripts: check-sysctl-docs: handle per-namespace sysctls 2024-02-23 12:13:09 +01:00
check-uapi.sh check-uapi: Introduce check-uapi.sh 2023-12-29 22:25:20 +09:00
check-variable-fonts.sh docs: scripts/check-variable-fonts.sh: Improve commands for detection 2024-05-02 10:14:52 -06:00
check_extable.sh
checkdeclares.pl
checkincludes.pl
checkkconfigsymbols.py scripts: handle BrokenPipeError for python scripts 2023-01-26 12:43:33 +09:00
checkpatch.pl kbuild: remove EXTRA_*FLAGS support 2025-03-15 21:16:21 +09:00
checkstack.pl scripts/checkstack.pl: fix no space expression between sp and offset 2023-12-29 12:22:28 -08:00
checksyscalls.sh checksyscalls: ignore fstat to silence build warning on LoongArch 2023-03-23 17:18:32 -07:00
checktransupdate.py scripts: fix all issues reported by pylint 2024-07-29 15:34:22 -06:00
checkversion.pl
cleanfile
cleanpatch
coccicheck kbuild: change working directory to external module directory with M= 2024-11-28 08:10:23 +09:00
config kbuild: fix argument parsing in scripts/config 2025-03-15 21:22:42 +09:00
const_structs.checkpatch const_structs.checkpatch: add ctl_table 2024-10-09 13:39:11 +02:00
decode_stacktrace.sh scripts/decode_stacktrace.sh: fix decoding of lines with an additional info 2025-01-12 19:03:34 -08:00
decodecode scripts/decodecode: add support for LoongArch 2023-12-29 12:22:25 -08:00
depmod.sh kbuild: add $(objtree)/ prefix to some in-kernel build artifacts 2024-11-27 09:38:27 +09:00
dev-needs.sh
diffconfig scripts: handle BrokenPipeError for python scripts 2023-01-26 12:43:33 +09:00
documentation-file-ref-check
extract-ikconfig
extract-module-sig.pl
extract-sys-certs.pl
extract-vmlinux
extract_xc3028.pl
faddr2line Revert "scripts/faddr2line: Check only two symbols when calculating symbol size" 2024-10-17 15:16:04 -07:00
file-size.sh
find-unused-docs.sh
gcc-x86_32-has-stack-protector.sh kbuild: Fix '-S -c' in x86 stack protector scripts 2024-07-29 03:47:00 +09:00
gcc-x86_64-has-stack-protector.sh kbuild: Fix '-S -c' in x86 stack protector scripts 2024-07-29 03:47:00 +09:00
gen-randstruct-seed.sh
gen_packed_field_checks.c lib: packing: add pack_fields() and unpack_fields() 2024-12-11 20:13:00 -08:00
generate_builtin_ranges.awk kbuild: generate offset range data for builtin modules 2024-09-20 09:21:43 +09:00
generate_initcall_order.pl
generate_rust_analyzer.py rust: use host dylib naming convention to support macOS 2025-01-10 01:01:24 +01:00
generate_rust_target.rs x86: rust: set rustc-abi=x86-softfloat on rustc>=1.86.0 2025-02-07 00:09:33 +01:00
get_abi.pl scripts/get_abi.pl: ignore some temp files 2024-01-03 14:02:17 -07:00
get_dvb_firmware
get_feat.pl
get_maintainer.pl get_maintainer: add --bug option to print bug reporting info 2024-08-26 16:10:12 -06:00
gfp-translate scripts: fix gfp-translate after ___GFP_*_BITS conversion to an enum 2024-09-01 17:59:01 -07:00
git.orderFile scripts: Introduce a default git.orderFile 2023-12-29 22:25:20 +09:00
head-object-list.txt openrisc: place exception table at the head of vmlinux 2024-12-10 12:04:19 +00:00
headerdep.pl
headers_install.sh m68k: Avoid CONFIG_COLDFIRE switch in uapi header 2024-05-07 08:55:23 +10:00
insert-sys-cert.c
install.sh kbuild: Create INSTALL_PATH directory if it does not exist 2024-07-20 13:34:54 +09:00
jobserver-exec scripts: support GNU make 4.4 in jobserver-exec 2023-01-16 20:15:20 +09:00
kallsyms.c kallsyms: change overflow variable to bool type 2024-09-20 09:21:52 +09:00
Kbuild.include kbuild: add $(objtree)/ prefix to some in-kernel build artifacts 2024-11-27 09:38:27 +09:00
Kconfig.include kbuild: rust: add CONFIG_RUSTC_LLVM_VERSION 2024-10-13 22:22:28 +02:00
kernel-doc scripts/kernel-doc: fix identifier parsing regex 2024-12-30 11:15:10 -07:00
ld-version.sh kbuild: Make ld-version.sh more robust against version string changes 2024-07-15 03:13:32 +09:00
leaking_addresses.pl leaking_addresses: Provide mechanism to scan binary files 2024-02-29 13:38:03 -08:00
Lindent
link-vmlinux.sh kbuild/btf: Propagate CONFIG_WERROR to resolve_btfids 2024-12-10 17:57:42 +01:00
macro_checker.py scripts: add macro_checker script to check unused parameters in macros 2024-09-01 20:43:28 -07:00
make_fit.py scripts/make_fit: Support decomposing DTBs 2024-07-16 01:08:37 +09:00
Makefile Kbuild updates for v6.14 2025-01-31 12:07:07 -08:00
Makefile.asm-headers kbuild: fix rebuild of generic syscall headers 2024-07-18 10:01:55 -07:00
Makefile.autofdo AutoFDO: Enable machine function split optimization for AutoFDO 2024-11-27 09:38:27 +09:00
Makefile.btf kbuild,bpf: Pass make jobs' value to pahole 2024-11-11 20:00:21 -08:00
Makefile.build kbuild: remove EXTRA_*FLAGS support 2025-03-15 21:16:21 +09:00
Makefile.clang sparc/build: Add SPARC target flags for compiling with clang 2024-11-16 09:52:56 +01:00
Makefile.clean kbuild: change working directory to external module directory with M= 2024-11-28 08:10:23 +09:00
Makefile.compiler kbuild: rust: add rustc-min-version support function 2025-03-15 21:19:32 +09:00
Makefile.debug kbuild: rust: use -Zdebuginfo-compression 2024-04-02 17:41:22 +02:00
Makefile.defconf kbuild: suppress stdout from merge_config for silent builds 2025-01-10 23:01:21 +09:00
Makefile.dtbinst kbuild: Install dtb files as 0644 in Makefile.dtbinst 2024-06-26 00:18:57 +09:00
Makefile.dtbs kbuild: move non-boot built-in DTBs to .rodata section 2024-09-30 20:42:52 +09:00
Makefile.extrawarn kbuild: move -fzero-init-padding-bits=all to the top-level Makefile 2025-03-15 21:19:44 +09:00
Makefile.gcc-plugins
Makefile.headersinst
Makefile.host kbuild: support building external modules in a separate build directory 2024-11-28 08:11:55 +09:00
Makefile.kasan kbuild: rust: Enable KASAN support 2024-09-16 18:04:37 +02:00
Makefile.kcov
Makefile.kcsan
Makefile.kmsan
Makefile.lib kbuild: remove EXTRA_*FLAGS support 2025-03-15 21:16:21 +09:00
Makefile.modfinal kbuild: re-enable KCSAN for autogenerated *.mod.c intermediaries 2024-11-28 08:11:55 +09:00
Makefile.modinst kbuild: Fix signing issue for external modules 2025-01-18 08:52:09 +09:00
Makefile.modpost modpost: Allow extended modversions without basic MODVERSIONS 2025-01-11 02:36:32 +09:00
Makefile.package kbuild: rpm-pkg: disable kernel-devel package when cross-compiling 2024-10-31 21:40:46 +09:00
Makefile.propeller kbuild: Fix Propeller build option 2024-11-27 09:38:27 +09:00
Makefile.randstruct
Makefile.ubsan ubsan: Reintroduce signed overflow sanitizer 2024-02-20 20:44:49 -08:00
Makefile.userprogs kbuild: support 'userldlibs' syntax 2023-11-01 23:26:01 +09:00
Makefile.vdsoinst more s390 updates for 6.10 merge window 2024-05-21 12:09:36 -07:00
Makefile.vmlinux kbuild: add dependency from vmlinux to sorttable 2025-03-15 21:19:44 +09:00
Makefile.vmlinux_o kbuild: generate offset range data for builtin modules 2024-09-20 09:21:43 +09:00
makelst
markup_oops.pl
min-tool-version.sh rust: upgrade to Rust 1.78.0 2024-05-05 20:17:25 +02:00
misc-check kbuild: make W=1 warn files that are tracked but ignored by git 2023-01-22 23:43:33 +09:00
mkcompile_h
mksysmap scripts/mksysmap: Fix escape chars '$' 2024-12-28 23:23:52 +09:00
mkuboot.sh
module-common.c kbuild: compile constant module information only once 2024-09-07 17:24:08 +09:00
module.lds.S kbuild: keep symbols for symbol_get() even with CONFIG_TRIM_UNUSED_KSYMS 2025-02-06 01:08:58 +09:00
modules-check.sh
nsdeps scripts/nsdeps: get 'make nsdeps' working again 2024-12-03 08:22:25 -08:00
objdiff
objdump-func scripts/objdump-func: Support multiple functions 2023-04-14 16:08:28 +02:00
orc_hash.sh x86/unwind/orc: Add ELF section with ORC version identifier 2023-06-16 17:17:42 +02:00
pahole-version.sh
parse-maintainers.pl
patch-kernel
profile2linkerlist.pl
prune-kernel
recordmcount.c scripts: clean up IA-64 code 2023-12-03 18:51:48 +09:00
recordmcount.h
recordmcount.pl riscv: remove MCOUNT_NAME workaround 2024-02-22 15:38:54 -08:00
relocs_check.sh powerpc: Move script to check relocations at compile time in scripts/ 2023-04-19 07:46:31 -07:00
remove-stale-files selinux: move genheaders to security/selinux/ 2024-10-03 16:07:51 -04:00
rust_is_available.sh rust: document bindgen 0.71.0 regression 2025-01-10 00:17:00 +01:00
rust_is_available_bindgen_0_66.h rust: warn about bindgen versions 0.66.0 and 0.66.1 2024-07-10 10:28:52 +02:00
rust_is_available_bindgen_libclang.h
rust_is_available_bindgen_libclang_concat.h rust: warn on bindgen < 0.69.5 and libclang >= 19.1 2024-11-12 21:26:54 +01:00
rust_is_available_test.py rust: warn on bindgen < 0.69.5 and libclang >= 19.1 2024-11-12 21:26:54 +01:00
rustc-llvm-version.sh kbuild: rust: avoid errors with old rustcs without LLVM patch version 2024-10-28 00:27:16 +01:00
rustc-version.sh kbuild: rust: add CONFIG_RUSTC_VERSION 2024-09-05 22:44:18 +02:00
rustdoc_test_builder.rs rust: support running Rust documentation tests as KUnit ones 2023-07-19 09:32:53 -06:00
rustdoc_test_gen.rs rust: support running Rust documentation tests as KUnit ones 2023-07-19 09:32:53 -06:00
setlocalversion setlocalversion: add -e option 2024-11-28 08:11:56 +09:00
show_delta scripts: make python shebangs specific about desired version 2025-03-15 21:19:44 +09:00
sign-file.c sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3 2024-09-20 19:52:48 +03:00
sorttable.c scripts/sorttable: Use a structure of function pointers for elf helpers 2025-01-10 07:59:04 -05:00
spdxcheck-test.sh
spdxcheck.py scripts/spdxcheck: Handle license identifiers in Jinja comments 2025-01-08 15:38:33 +01:00
spdxexclude
spelling.txt kernel-wide: add explicity||explicitly to spelling.txt 2025-01-12 20:21:06 -08:00
sphinx-pre-install scripts: sphinx-pre-install: remove unnecessary double check for $cur_version 2024-09-05 14:32:36 -06:00
split-man.pl
ssl-common.h sign-file,extract-cert: avoid using deprecated ERR_get_error_line() 2024-09-20 19:49:52 +03:00
stackdelta
stackusage
subarch.include scripts: subarch.include: fix SUBARCH on macOS hosts 2024-09-10 13:56:37 +09:00
syscall.tbl fs/xattr: add *at family syscalls 2024-11-06 12:59:44 -05:00
syscallhdr.sh
syscallnr.sh
syscalltbl.sh x86/syscall: Mark exit[_group] syscall handlers __noreturn 2024-06-28 15:23:38 +02:00
tags.sh Char/Misc/IIO driver updates for 6.14-rc1 2025-01-27 16:51:51 -08:00
tools-support-relr.sh Makefile: use -z pack-relative-relocs 2023-04-17 11:23:06 +09:00
unifdef.c scripts/unifdef: avoid constexpr keyword 2024-04-23 00:09:41 +09:00
ver_linux
verify_builtin_ranges.awk scripts: add verifier script for builtin module range data 2024-09-20 09:21:52 +09:00
xen-hypercalls.sh
xz_wrap.sh xz: adjust arch-specific options for better kernel compression 2024-09-01 20:43:27 -07:00