| 1 | # SPDX-License-Identifier: GPL-2.0 |
| 2 | ### |
| 3 | # scripts contains sources for various helper programs used throughout |
| 4 | # the kernel for the build process. |
| 5 | |
| 6 | hostprogs-always-$(CONFIG_KALLSYMS) += kallsyms |
| 7 | hostprogs-always-$(BUILD_C_RECORDMCOUNT) += recordmcount |
| 8 | hostprogs-always-$(CONFIG_BUILDTIME_TABLE_SORT) += sorttable |
| 9 | hostprogs-always-$(CONFIG_ASN1) += asn1_compiler |
| 10 | hostprogs-always-$(CONFIG_MODULE_SIG_FORMAT) += sign-file |
| 11 | hostprogs-always-$(CONFIG_SYSTEM_EXTRA_CERTIFICATE) += insert-sys-cert |
| 12 | hostprogs-always-$(CONFIG_RUST_KERNEL_DOCTESTS) += rustdoc_test_builder |
| 13 | hostprogs-always-$(CONFIG_RUST_KERNEL_DOCTESTS) += rustdoc_test_gen |
| 14 | |
| 15 | ifneq ($(or $(CONFIG_X86_64),$(CONFIG_LOONGARCH)),) |
| 16 | always-$(CONFIG_RUST) += target.json |
| 17 | filechk_rust_target = $< < include/config/auto.conf |
| 18 | |
| 19 | $(obj)/target.json: scripts/generate_rust_target include/config/auto.conf FORCE |
| 20 | $(call filechk,rust_target) |
| 21 | endif |
| 22 | |
| 23 | hostprogs += generate_rust_target |
| 24 | generate_rust_target-rust := y |
| 25 | rustdoc_test_builder-rust := y |
| 26 | rustdoc_test_gen-rust := y |
| 27 | |
| 28 | HOSTCFLAGS_sorttable.o = -I$(srctree)/tools/include |
| 29 | HOSTLDLIBS_sorttable = -lpthread |
| 30 | HOSTCFLAGS_asn1_compiler.o = -I$(srctree)/include |
| 31 | HOSTCFLAGS_sign-file.o = $(shell $(HOSTPKG_CONFIG) --cflags libcrypto 2> /dev/null) |
| 32 | HOSTLDLIBS_sign-file = $(shell $(HOSTPKG_CONFIG) --libs libcrypto 2> /dev/null || echo -lcrypto) |
| 33 | |
| 34 | ifdef CONFIG_UNWINDER_ORC |
| 35 | ifeq ($(ARCH),x86_64) |
| 36 | SRCARCH := x86 |
| 37 | endif |
| 38 | ifeq ($(ARCH),loongarch) |
| 39 | SRCARCH := loongarch |
| 40 | endif |
| 41 | HOSTCFLAGS_sorttable.o += -I$(srctree)/tools/arch/$(SRCARCH)/include |
| 42 | HOSTCFLAGS_sorttable.o += -DUNWINDER_ORC_ENABLED |
| 43 | endif |
| 44 | |
| 45 | ifdef CONFIG_BUILDTIME_MCOUNT_SORT |
| 46 | HOSTCFLAGS_sorttable.o += -DMCOUNT_SORT_ENABLED |
| 47 | endif |
| 48 | |
| 49 | # The following programs are only built on demand |
| 50 | hostprogs += unifdef |
| 51 | |
| 52 | # The module linker script is preprocessed on demand |
| 53 | targets += module.lds |
| 54 | |
| 55 | subdir-$(CONFIG_GCC_PLUGINS) += gcc-plugins |
| 56 | subdir-$(CONFIG_MODVERSIONS) += genksyms |
| 57 | subdir-$(CONFIG_SECURITY_SELINUX) += selinux |
| 58 | |
| 59 | # Let clean descend into subdirs |
| 60 | subdir- += basic dtc gdb kconfig mod |