^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) # Makefile for the linux kernel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) obj-y = fork.o exec_domain.o panic.o \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) cpu.o exit.o softirq.o resource.o \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) sysctl.o capability.o ptrace.o user.o \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) signal.o sys.o umh.o workqueue.o pid.o task_work.o \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) extable.o params.o \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) kthread.o sys_ni.o nsproxy.o \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) notifier.o ksysfs.o cred.o reboot.o \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) async.o range.o smpboot.o ucount.o regset.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) obj-$(CONFIG_USERMODE_DRIVER) += usermode_driver.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) obj-$(CONFIG_MODULES) += kmod.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) obj-$(CONFIG_MULTIUSER) += groups.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) ifdef CONFIG_FUNCTION_TRACER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) # Do not trace internal ftrace files
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) CFLAGS_REMOVE_irq_work.o = $(CC_FLAGS_FTRACE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) # Prevents flicker of uninteresting __do_softirq()/__local_bh_disable_ip()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) # in coverage traces.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) KCOV_INSTRUMENT_softirq.o := n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) # Avoid KCSAN instrumentation in softirq ("No shared variables, all the data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) # are CPU local" => assume no data races), to reduce overhead in interrupts.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) KCSAN_SANITIZE_softirq.o = n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) # These are called from save_stack_trace() on slub debug path,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) # and produce insane amounts of uninteresting coverage.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) KCOV_INSTRUMENT_module.o := n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) KCOV_INSTRUMENT_extable.o := n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) KCOV_INSTRUMENT_stacktrace.o := n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) # Don't self-instrument.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) KCOV_INSTRUMENT_kcov.o := n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) KASAN_SANITIZE_kcov.o := n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) KCSAN_SANITIZE_kcov.o := n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) CFLAGS_kcov.o := $(call cc-option, -fno-conserve-stack) -fno-stack-protector
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) # Don't instrument error handlers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) CFLAGS_REMOVE_cfi.o := $(CC_FLAGS_CFI)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) obj-y += sched/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) obj-y += locking/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) obj-y += power/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) obj-y += printk/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) obj-y += irq/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) obj-y += rcu/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) obj-y += livepatch/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) obj-y += dma/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) obj-y += entry/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) obj-$(CONFIG_KCMP) += kcmp.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) obj-$(CONFIG_FREEZER) += freezer.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) obj-$(CONFIG_PROFILING) += profile.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) obj-$(CONFIG_STACKTRACE) += stacktrace.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) obj-y += time/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) obj-$(CONFIG_FUTEX) += futex.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) obj-$(CONFIG_SMP) += smp.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) ifneq ($(CONFIG_SMP),y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) obj-y += up.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) obj-$(CONFIG_UID16) += uid16.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) obj-$(CONFIG_MODULES) += module.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) obj-$(CONFIG_MODULE_SIG) += module_signing.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) obj-$(CONFIG_MODULE_SIG_FORMAT) += module_signature.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) obj-$(CONFIG_KALLSYMS) += kallsyms.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) obj-$(CONFIG_CRASH_CORE) += crash_core.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) obj-$(CONFIG_KEXEC_CORE) += kexec_core.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) obj-$(CONFIG_KEXEC) += kexec.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) obj-$(CONFIG_KEXEC_FILE) += kexec_file.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) obj-$(CONFIG_KEXEC_ELF) += kexec_elf.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) obj-$(CONFIG_BACKTRACE_SELF_TEST) += backtracetest.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) obj-$(CONFIG_COMPAT) += compat.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) obj-$(CONFIG_CGROUPS) += cgroup/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) obj-$(CONFIG_UTS_NS) += utsname.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) obj-$(CONFIG_USER_NS) += user_namespace.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) obj-$(CONFIG_PID_NS) += pid_namespace.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) obj-$(CONFIG_IKCONFIG) += configs.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) obj-$(CONFIG_IKHEADERS) += kheaders.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) obj-$(CONFIG_SMP) += stop_machine.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) obj-$(CONFIG_KPROBES_SANITY_TEST) += test_kprobes.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) obj-$(CONFIG_AUDIT) += audit.o auditfilter.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) obj-$(CONFIG_AUDITSYSCALL) += auditsc.o audit_watch.o audit_fsnotify.o audit_tree.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) obj-$(CONFIG_GCOV_KERNEL) += gcov/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) obj-$(CONFIG_KCOV) += kcov.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) obj-$(CONFIG_KPROBES) += kprobes.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) obj-$(CONFIG_FAIL_FUNCTION) += fail_function.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) obj-$(CONFIG_KGDB) += debug/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) obj-$(CONFIG_DETECT_HUNG_TASK) += hung_task.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) obj-$(CONFIG_LOCKUP_DETECTOR) += watchdog.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) obj-$(CONFIG_HARDLOCKUP_DETECTOR_PERF) += watchdog_hld.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) obj-$(CONFIG_SECCOMP) += seccomp.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) obj-$(CONFIG_RELAY) += relay.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) obj-$(CONFIG_SYSCTL) += utsname_sysctl.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) obj-$(CONFIG_TASK_DELAY_ACCT) += delayacct.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) obj-$(CONFIG_TASKSTATS) += taskstats.o tsacct.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) obj-$(CONFIG_TRACEPOINTS) += tracepoint.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) obj-$(CONFIG_LATENCYTOP) += latencytop.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) obj-$(CONFIG_FUNCTION_TRACER) += trace/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) obj-$(CONFIG_TRACING) += trace/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) obj-$(CONFIG_TRACE_CLOCK) += trace/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) obj-$(CONFIG_RING_BUFFER) += trace/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) obj-$(CONFIG_TRACEPOINTS) += trace/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) obj-$(CONFIG_IRQ_WORK) += irq_work.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) obj-$(CONFIG_CPU_PM) += cpu_pm.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) obj-$(CONFIG_BPF) += bpf/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) obj-$(CONFIG_KCSAN) += kcsan/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) obj-$(CONFIG_SHADOW_CALL_STACK) += scs.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) obj-$(CONFIG_HAVE_STATIC_CALL_INLINE) += static_call.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) obj-$(CONFIG_CFI_CLANG) += cfi.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) obj-$(CONFIG_PERF_EVENTS) += events/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) obj-$(CONFIG_USER_RETURN_NOTIFIER) += user-return-notifier.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) obj-$(CONFIG_PADATA) += padata.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) obj-$(CONFIG_JUMP_LABEL) += jump_label.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) obj-$(CONFIG_CONTEXT_TRACKING) += context_tracking.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) obj-$(CONFIG_TORTURE_TEST) += torture.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) obj-$(CONFIG_HAS_IOMEM) += iomem.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) obj-$(CONFIG_RSEQ) += rseq.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) obj-$(CONFIG_WATCH_QUEUE) += watch_queue.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) obj-$(CONFIG_SYSCTL_KUNIT_TEST) += sysctl-test.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) CFLAGS_stackleak.o += $(DISABLE_STACKLEAK_PLUGIN)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) obj-$(CONFIG_GCC_PLUGIN_STACKLEAK) += stackleak.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) KASAN_SANITIZE_stackleak.o := n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) KCSAN_SANITIZE_stackleak.o := n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) KCOV_INSTRUMENT_stackleak.o := n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) obj-$(CONFIG_SCF_TORTURE_TEST) += scftorture.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) $(obj)/configs.o: $(obj)/config_data.gz
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) targets += config_data config_data.gz
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) $(obj)/config_data.gz: $(obj)/config_data FORCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) $(call if_changed,gzip)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) filechk_cat = cat $<
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) $(obj)/config_data: $(KCONFIG_CONFIG) FORCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) $(call filechk,cat)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) $(obj)/kheaders.o: $(obj)/kheaders_data.tar.xz
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) quiet_cmd_genikh = CHK $(obj)/kheaders_data.tar.xz
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) cmd_genikh = $(CONFIG_SHELL) $(srctree)/kernel/gen_kheaders.sh $@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) $(obj)/kheaders_data.tar.xz: FORCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) $(call cmd,genikh)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) clean-files := kheaders_data.tar.xz kheaders.md5