2017-11-01 15:07:57 +01:00
|
|
|
# SPDX-License-Identifier: GPL-2.0
|
2005-04-16 15:20:36 -07:00
|
|
|
#
|
|
|
|
|
# Makefile for the linux kernel.
|
|
|
|
|
#
|
|
|
|
|
|
2013-07-31 13:53:42 -07:00
|
|
|
obj-y = fork.o exec_domain.o panic.o \
|
2014-06-22 12:06:40 +02:00
|
|
|
cpu.o exit.o softirq.o resource.o \
|
2020-08-14 17:31:07 -07:00
|
|
|
sysctl.o capability.o ptrace.o user.o \
|
2017-09-08 16:17:12 -07:00
|
|
|
signal.o sys.o umh.o workqueue.o pid.o task_work.o \
|
2022-06-22 08:38:37 +02:00
|
|
|
extable.o params.o \
|
2025-09-17 12:28:02 +02:00
|
|
|
kthread.o sys_ni.o nsproxy.o nstree.o nscommon.o \
|
2013-07-08 16:01:32 -07:00
|
|
|
notifier.o ksysfs.o cred.o reboot.o \
|
2023-06-08 09:01:18 +05:30
|
|
|
async.o range.o smpboot.o ucount.o regset.o ksyms_common.o
|
2015-04-15 16:16:41 -07:00
|
|
|
|
|
|
|
|
obj-$(CONFIG_MULTIUSER) += groups.o
|
2023-03-10 16:03:30 -06:00
|
|
|
obj-$(CONFIG_VHOST_TASK) += vhost_task.o
|
2011-10-25 10:00:11 +02:00
|
|
|
|
2008-10-06 19:06:12 -04:00
|
|
|
ifdef CONFIG_FUNCTION_TRACER
|
2016-01-30 11:54:03 +08:00
|
|
|
# Do not trace internal ftrace files
|
2015-01-09 13:06:33 +01:00
|
|
|
CFLAGS_REMOVE_irq_work.o = $(CC_FLAGS_FTRACE)
|
2008-05-12 21:20:55 +02:00
|
|
|
endif
|
|
|
|
|
|
2025-03-21 12:53:32 -07:00
|
|
|
# Branch profiling isn't noinstr-safe
|
|
|
|
|
ifdef CONFIG_TRACE_BRANCH_PROFILING
|
|
|
|
|
CFLAGS_context_tracking.o += -DDISABLE_BRANCH_PROFILING
|
|
|
|
|
endif
|
|
|
|
|
|
2016-03-22 14:27:30 -07:00
|
|
|
# Prevents flicker of uninteresting __do_softirq()/__local_bh_disable_ip()
|
|
|
|
|
# in coverage traces.
|
|
|
|
|
KCOV_INSTRUMENT_softirq.o := n
|
2019-11-14 19:02:58 +01:00
|
|
|
# Avoid KCSAN instrumentation in softirq ("No shared variables, all the data
|
|
|
|
|
# are CPU local" => assume no data races), to reduce overhead in interrupts.
|
|
|
|
|
KCSAN_SANITIZE_softirq.o = n
|
2016-03-22 14:27:30 -07:00
|
|
|
# These are called from save_stack_trace() on slub debug path,
|
|
|
|
|
# and produce insane amounts of uninteresting coverage.
|
|
|
|
|
KCOV_INSTRUMENT_extable.o := n
|
2020-01-30 22:17:35 -08:00
|
|
|
KCOV_INSTRUMENT_stacktrace.o := n
|
2016-03-22 14:27:30 -07:00
|
|
|
# Don't self-instrument.
|
|
|
|
|
KCOV_INSTRUMENT_kcov.o := n
|
2020-12-15 20:46:46 -08:00
|
|
|
# If sanitizers detect any issues in kcov, it may lead to recursion
|
|
|
|
|
# via printk, etc.
|
2016-03-22 14:27:30 -07:00
|
|
|
KASAN_SANITIZE_kcov.o := n
|
2019-11-14 19:02:58 +01:00
|
|
|
KCSAN_SANITIZE_kcov.o := n
|
2020-12-15 20:46:46 -08:00
|
|
|
UBSAN_SANITIZE_kcov.o := n
|
2022-09-15 17:03:46 +02:00
|
|
|
KMSAN_SANITIZE_kcov.o := n
|
2025-12-19 16:40:18 +01:00
|
|
|
|
|
|
|
|
CONTEXT_ANALYSIS_kcov.o := y
|
2020-08-11 18:36:56 -07:00
|
|
|
CFLAGS_kcov.o := $(call cc-option, -fno-conserve-stack) -fno-stack-protector
|
2016-03-22 14:27:30 -07:00
|
|
|
|
2011-11-15 17:14:39 +01:00
|
|
|
obj-y += sched/
|
2013-10-31 18:11:53 +01:00
|
|
|
obj-y += locking/
|
2012-01-14 00:33:03 +01:00
|
|
|
obj-y += power/
|
2013-07-31 13:53:42 -07:00
|
|
|
obj-y += printk/
|
2013-08-30 09:39:53 +02:00
|
|
|
obj-y += irq/
|
2013-10-08 20:23:47 -07:00
|
|
|
obj-y += rcu/
|
2014-12-16 11:58:19 -06:00
|
|
|
obj-y += livepatch/
|
2025-11-01 10:23:23 -04:00
|
|
|
obj-y += liveupdate/
|
2018-06-12 19:01:45 +02:00
|
|
|
obj-y += dma/
|
2020-07-22 23:59:56 +02:00
|
|
|
obj-y += entry/
|
2025-07-29 14:23:05 -04:00
|
|
|
obj-y += unwind/
|
2022-03-22 14:03:31 +00:00
|
|
|
obj-$(CONFIG_MODULES) += module/
|
2011-11-15 17:14:39 +01:00
|
|
|
|
2021-02-05 22:00:12 +00:00
|
|
|
obj-$(CONFIG_KCMP) += kcmp.o
|
2008-10-18 20:27:19 -07:00
|
|
|
obj-$(CONFIG_FREEZER) += freezer.o
|
2008-07-25 01:45:35 -07:00
|
|
|
obj-$(CONFIG_PROFILING) += profile.o
|
2006-07-03 00:24:38 -07:00
|
|
|
obj-$(CONFIG_STACKTRACE) += stacktrace.o
|
2006-06-26 00:25:06 -07:00
|
|
|
obj-y += time/
|
2021-09-23 14:10:50 -03:00
|
|
|
obj-$(CONFIG_FUTEX) += futex/
|
2005-04-16 15:20:36 -07:00
|
|
|
obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o
|
2011-01-12 16:59:39 -08:00
|
|
|
obj-$(CONFIG_SMP) += smp.o
|
2009-01-14 09:35:44 -08:00
|
|
|
ifneq ($(CONFIG_SMP),y)
|
2009-01-09 12:27:08 -08:00
|
|
|
obj-y += up.o
|
|
|
|
|
endif
|
2005-04-16 15:20:36 -07:00
|
|
|
obj-$(CONFIG_UID16) += uid16.o
|
2019-07-04 15:57:34 -03:00
|
|
|
obj-$(CONFIG_MODULE_SIG_FORMAT) += module_signature.o
|
2005-04-16 15:20:36 -07:00
|
|
|
obj-$(CONFIG_KALLSYMS) += kallsyms.o
|
2022-11-15 16:33:48 +08:00
|
|
|
obj-$(CONFIG_KALLSYMS_SELFTEST) += kallsyms_selftest.o
|
2005-04-16 15:20:36 -07:00
|
|
|
obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o
|
2024-01-24 13:12:43 +08:00
|
|
|
obj-$(CONFIG_VMCORE_INFO) += vmcore_info.o elfcorehdr.o
|
2024-01-24 13:12:41 +08:00
|
|
|
obj-$(CONFIG_CRASH_RESERVE) += crash_reserve.o
|
2024-01-24 13:12:44 +08:00
|
|
|
obj-$(CONFIG_KEXEC_CORE) += kexec_core.o
|
|
|
|
|
obj-$(CONFIG_CRASH_DUMP) += crash_core.o
|
2025-05-02 09:12:36 +08:00
|
|
|
obj-$(CONFIG_CRASH_DM_CRYPT) += crash_dump_dm_crypt.o
|
2025-09-04 17:38:53 +08:00
|
|
|
obj-$(CONFIG_CRASH_DUMP_KUNIT_TEST) += crash_core_test.o
|
2005-06-25 14:57:52 -07:00
|
|
|
obj-$(CONFIG_KEXEC) += kexec.o
|
2015-09-09 15:38:51 -07:00
|
|
|
obj-$(CONFIG_KEXEC_FILE) += kexec_file.o
|
2019-08-23 21:49:13 +02:00
|
|
|
obj-$(CONFIG_KEXEC_ELF) += kexec_elf.o
|
2008-01-30 13:33:08 +01:00
|
|
|
obj-$(CONFIG_BACKTRACE_SELF_TEST) += backtracetest.o
|
2005-04-16 15:20:36 -07:00
|
|
|
obj-$(CONFIG_COMPAT) += compat.o
|
2016-12-27 14:49:05 -05:00
|
|
|
obj-$(CONFIG_CGROUPS) += cgroup/
|
2008-02-08 04:18:23 -08:00
|
|
|
obj-$(CONFIG_UTS_NS) += utsname.o
|
|
|
|
|
obj-$(CONFIG_USER_NS) += user_namespace.o
|
2008-02-08 04:18:24 -08:00
|
|
|
obj-$(CONFIG_PID_NS) += pid_namespace.o
|
2005-04-16 15:20:36 -07:00
|
|
|
obj-$(CONFIG_IKCONFIG) += configs.o
|
2019-05-15 17:35:51 -04:00
|
|
|
obj-$(CONFIG_IKHEADERS) += kheaders.o
|
2010-05-08 16:20:53 +02:00
|
|
|
obj-$(CONFIG_SMP) += stop_machine.o
|
2009-12-17 20:12:06 -05:00
|
|
|
obj-$(CONFIG_AUDIT) += audit.o auditfilter.o
|
2018-11-16 12:17:35 -05:00
|
|
|
obj-$(CONFIG_AUDITSYSCALL) += auditsc.o audit_watch.o audit_fsnotify.o audit_tree.o
|
2009-12-17 20:12:06 -05:00
|
|
|
obj-$(CONFIG_GCOV_KERNEL) += gcov/
|
2016-03-22 14:27:30 -07:00
|
|
|
obj-$(CONFIG_KCOV) += kcov.o
|
2005-04-16 15:20:36 -07:00
|
|
|
obj-$(CONFIG_KPROBES) += kprobes.o
|
2018-01-13 02:56:03 +09:00
|
|
|
obj-$(CONFIG_FAIL_FUNCTION) += fail_function.o
|
2009-05-19 07:49:32 -05:00
|
|
|
obj-$(CONFIG_KGDB) += debug/
|
2009-01-15 11:08:40 -08:00
|
|
|
obj-$(CONFIG_DETECT_HUNG_TASK) += hung_task.o
|
2010-05-07 17:11:44 -04:00
|
|
|
obj-$(CONFIG_LOCKUP_DETECTOR) += watchdog.o
|
2023-05-19 10:18:38 -07:00
|
|
|
obj-$(CONFIG_HARDLOCKUP_DETECTOR_BUDDY) += watchdog_buddy.o
|
2023-05-19 10:18:31 -07:00
|
|
|
obj-$(CONFIG_HARDLOCKUP_DETECTOR_PERF) += watchdog_perf.o
|
2005-04-16 15:20:36 -07:00
|
|
|
obj-$(CONFIG_SECCOMP) += seccomp.o
|
2006-03-23 19:56:55 +01:00
|
|
|
obj-$(CONFIG_RELAY) += relay.o
|
2007-02-14 00:33:58 -08:00
|
|
|
obj-$(CONFIG_SYSCTL) += utsname_sysctl.o
|
2006-07-14 00:24:36 -07:00
|
|
|
obj-$(CONFIG_TASK_DELAY_ACCT) += delayacct.o
|
2006-09-30 23:28:55 -07:00
|
|
|
obj-$(CONFIG_TASKSTATS) += taskstats.o tsacct.o
|
2008-07-18 12:16:16 -04:00
|
|
|
obj-$(CONFIG_TRACEPOINTS) += tracepoint.o
|
2008-01-25 21:08:34 +01:00
|
|
|
obj-$(CONFIG_LATENCYTOP) += latencytop.o
|
2008-10-06 19:06:12 -04:00
|
|
|
obj-$(CONFIG_FUNCTION_TRACER) += trace/
|
2008-05-12 21:20:42 +02:00
|
|
|
obj-$(CONFIG_TRACING) += trace/
|
2012-09-02 19:45:14 -07:00
|
|
|
obj-$(CONFIG_TRACE_CLOCK) += trace/
|
2009-06-25 14:30:12 +09:00
|
|
|
obj-$(CONFIG_RING_BUFFER) += trace/
|
2010-10-28 11:31:17 -04:00
|
|
|
obj-$(CONFIG_TRACEPOINTS) += trace/
|
2022-03-26 11:27:05 +09:00
|
|
|
obj-$(CONFIG_RETHOOK) += trace/
|
2010-10-14 14:01:34 +08:00
|
|
|
obj-$(CONFIG_IRQ_WORK) += irq_work.o
|
2011-02-10 02:04:45 -08:00
|
|
|
obj-$(CONFIG_CPU_PM) += cpu_pm.o
|
2014-10-23 18:41:08 -07:00
|
|
|
obj-$(CONFIG_BPF) += bpf/
|
2019-11-14 19:02:54 +01:00
|
|
|
obj-$(CONFIG_KCSAN) += kcsan/
|
2020-04-27 09:00:07 -07:00
|
|
|
obj-$(CONFIG_SHADOW_CALL_STACK) += scs.o
|
2022-03-14 12:49:36 +01:00
|
|
|
obj-$(CONFIG_HAVE_STATIC_CALL) += static_call.o
|
|
|
|
|
obj-$(CONFIG_HAVE_STATIC_CALL_INLINE) += static_call_inline.o
|
2025-09-23 14:34:19 -07:00
|
|
|
obj-$(CONFIG_CFI) += cfi.o
|
2010-10-26 20:24:03 +02:00
|
|
|
|
|
|
|
|
obj-$(CONFIG_PERF_EVENTS) += events/
|
|
|
|
|
|
2009-10-25 14:24:45 +02:00
|
|
|
obj-$(CONFIG_USER_RETURN_NOTIFIER) += user-return-notifier.o
|
2010-01-06 19:47:10 +11:00
|
|
|
obj-$(CONFIG_PADATA) += padata.o
|
2011-08-05 16:40:40 -04:00
|
|
|
obj-$(CONFIG_JUMP_LABEL) += jump_label.o
|
2012-11-27 19:33:25 +01:00
|
|
|
obj-$(CONFIG_CONTEXT_TRACKING) += context_tracking.o
|
2014-01-27 11:49:39 -08:00
|
|
|
obj-$(CONFIG_TORTURE_TEST) += torture.o
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2018-03-29 19:07:13 -07:00
|
|
|
obj-$(CONFIG_HAS_IOMEM) += iomem.o
|
2018-06-02 08:43:54 -04:00
|
|
|
obj-$(CONFIG_RSEQ) += rseq.o
|
2020-01-14 17:07:11 +00:00
|
|
|
obj-$(CONFIG_WATCH_QUEUE) += watch_queue.o
|
2015-08-10 23:07:06 -04:00
|
|
|
|
2020-11-03 22:45:08 +02:00
|
|
|
obj-$(CONFIG_RESOURCE_KUNIT_TEST) += resource_kunit.o
|
2019-09-23 02:02:47 -07:00
|
|
|
obj-$(CONFIG_SYSCTL_KUNIT_TEST) += sysctl-test.o
|
|
|
|
|
|
2025-07-17 16:25:06 -07:00
|
|
|
CFLAGS_kstack_erase.o += $(DISABLE_KSTACK_ERASE)
|
2025-07-26 02:35:49 -07:00
|
|
|
CFLAGS_kstack_erase.o += $(call cc-option,-mgeneral-regs-only)
|
2025-07-17 16:25:06 -07:00
|
|
|
obj-$(CONFIG_KSTACK_ERASE) += kstack_erase.o
|
|
|
|
|
KASAN_SANITIZE_kstack_erase.o := n
|
|
|
|
|
KCSAN_SANITIZE_kstack_erase.o := n
|
|
|
|
|
KCOV_INSTRUMENT_kstack_erase.o := n
|
2018-08-17 01:16:58 +03:00
|
|
|
|
2020-06-24 15:59:59 -07:00
|
|
|
obj-$(CONFIG_SCF_TORTURE_TEST) += scftorture.o
|
|
|
|
|
|
2019-03-07 16:29:53 -08:00
|
|
|
$(obj)/configs.o: $(obj)/config_data.gz
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2021-04-25 15:24:07 +09:00
|
|
|
targets += config_data config_data.gz
|
|
|
|
|
$(obj)/config_data.gz: $(obj)/config_data FORCE
|
2005-04-16 15:20:36 -07:00
|
|
|
$(call if_changed,gzip)
|
2019-04-26 15:04:29 -04:00
|
|
|
|
2021-04-25 15:24:07 +09:00
|
|
|
filechk_cat = cat $<
|
|
|
|
|
|
|
|
|
|
$(obj)/config_data: $(KCONFIG_CONFIG) FORCE
|
|
|
|
|
$(call filechk,cat)
|
|
|
|
|
|
2025-06-09 01:59:55 +09:00
|
|
|
# kheaders_data.tar.xz
|
2019-04-26 15:04:29 -04:00
|
|
|
$(obj)/kheaders.o: $(obj)/kheaders_data.tar.xz
|
|
|
|
|
|
2025-06-09 01:59:55 +09:00
|
|
|
quiet_cmd_kheaders_data = GEN $@
|
2025-06-09 01:59:56 +09:00
|
|
|
cmd_kheaders_data = "$<" "$@" "$(obj)/kheaders-srclist" "$(obj)/kheaders-objlist" "$(KBUILD_BUILD_TIMESTAMP)"
|
2025-06-09 01:59:55 +09:00
|
|
|
cmd_kheaders_data_dep = cat $(depfile) >> $(dot-target).cmd; rm -f $(depfile)
|
2019-04-26 15:04:29 -04:00
|
|
|
|
2025-06-09 01:59:55 +09:00
|
|
|
define rule_kheaders_data
|
|
|
|
|
$(call cmd_and_savecmd,kheaders_data)
|
|
|
|
|
$(call cmd,kheaders_data_dep)
|
|
|
|
|
endef
|
|
|
|
|
|
|
|
|
|
targets += kheaders_data.tar.xz
|
|
|
|
|
$(obj)/kheaders_data.tar.xz: $(src)/gen_kheaders.sh $(obj)/kheaders-srclist $(obj)/kheaders-objlist $(obj)/kheaders.md5 FORCE
|
|
|
|
|
$(call if_changed_rule,kheaders_data)
|
|
|
|
|
|
|
|
|
|
# generated headers in objtree
|
|
|
|
|
#
|
|
|
|
|
# include/generated/utsversion.h is ignored because it is generated
|
|
|
|
|
# after gen_kheaders.sh is executed. (utsversion.h is unneeded for kheaders)
|
|
|
|
|
filechk_kheaders_objlist = \
|
|
|
|
|
for d in include "arch/$(SRCARCH)/include"; do \
|
|
|
|
|
find "$${d}/generated" ! -path "include/generated/utsversion.h" -a -name "*.h" -print; \
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
$(obj)/kheaders-objlist: FORCE
|
|
|
|
|
$(call filechk,kheaders_objlist)
|
|
|
|
|
|
|
|
|
|
# non-generated headers in srctree
|
|
|
|
|
filechk_kheaders_srclist = \
|
|
|
|
|
for d in include "arch/$(SRCARCH)/include"; do \
|
|
|
|
|
find "$(srctree)/$${d}" -path "$(srctree)/$${d}/generated" -prune -o -name "*.h" -print; \
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
$(obj)/kheaders-srclist: FORCE
|
|
|
|
|
$(call filechk,kheaders_srclist)
|
|
|
|
|
|
|
|
|
|
# Some files are symlinks. If symlinks are changed, kheaders_data.tar.xz should
|
|
|
|
|
# be rebuilt.
|
|
|
|
|
filechk_kheaders_md5sum = xargs -r -a $< stat -c %N | md5sum
|
|
|
|
|
|
|
|
|
|
$(obj)/kheaders.md5: $(obj)/kheaders-srclist FORCE
|
|
|
|
|
$(call filechk,kheaders_md5sum)
|
|
|
|
|
|
|
|
|
|
clean-files := kheaders.md5 kheaders-srclist kheaders-objlist
|