1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 21da177e4SLinus Torvalds# 31da177e4SLinus Torvalds# Makefile for the linux kernel. 41da177e4SLinus Torvalds# 51da177e4SLinus Torvalds 6b9ee979eSJoe Perchesobj-y = fork.o exec_domain.o panic.o \ 75cee9645SThomas Gleixner cpu.o exit.o softirq.o resource.o \ 888db0aa2SXiaoming Ni sysctl.o capability.o ptrace.o user.o \ 90ce2c202SLuis R. Rodriguez signal.o sys.o umh.o workqueue.o pid.o task_work.o \ 10a870544cSJuergen Gross extable.o params.o \ 11f74ca6daSChristian Brauner kthread.o sys_ni.o nsproxy.o nstree.o nscommon.o \ 1215d94b82SRobin Holt notifier.o ksysfs.o cred.o reboot.o \ 13b06e9318SManinder Singh async.o range.o smpboot.o ucount.o regset.o ksyms_common.o 142813893fSIulia Manda 152813893fSIulia Mandaobj-$(CONFIG_MULTIUSER) += groups.o 16e297cd54SMike Christieobj-$(CONFIG_VHOST_TASK) += vhost_task.o 17029632fbSPeter Zijlstra 18606576ceSSteven Rostedtifdef CONFIG_FUNCTION_TRACER 19e11b956eSLi Bin# Do not trace internal ftrace files 20c0a80c0cSHeiko CarstensCFLAGS_REMOVE_irq_work.o = $(CC_FLAGS_FTRACE) 211d09daa5SSteven Rostedtendif 221d09daa5SSteven Rostedt 232cbb20b0SJosh Poimboeuf# Branch profiling isn't noinstr-safe 242cbb20b0SJosh Poimboeufifdef CONFIG_TRACE_BRANCH_PROFILING 252cbb20b0SJosh PoimboeufCFLAGS_context_tracking.o += -DDISABLE_BRANCH_PROFILING 262cbb20b0SJosh Poimboeufendif 272cbb20b0SJosh Poimboeuf 285c9a8750SDmitry Vyukov# Prevents flicker of uninteresting __do_softirq()/__local_bh_disable_ip() 295c9a8750SDmitry Vyukov# in coverage traces. 305c9a8750SDmitry VyukovKCOV_INSTRUMENT_softirq.o := n 310ebba714SMarco Elver# Avoid KCSAN instrumentation in softirq ("No shared variables, all the data 320ebba714SMarco Elver# are CPU local" => assume no data races), to reduce overhead in interrupts. 330ebba714SMarco ElverKCSAN_SANITIZE_softirq.o = n 345c9a8750SDmitry Vyukov# These are called from save_stack_trace() on slub debug path, 355c9a8750SDmitry Vyukov# and produce insane amounts of uninteresting coverage. 365c9a8750SDmitry VyukovKCOV_INSTRUMENT_extable.o := n 3743e76af8SDmitry VyukovKCOV_INSTRUMENT_stacktrace.o := n 385c9a8750SDmitry Vyukov# Don't self-instrument. 395c9a8750SDmitry VyukovKCOV_INSTRUMENT_kcov.o := n 40c1cb05e7SDmitry Vyukov# If sanitizers detect any issues in kcov, it may lead to recursion 41c1cb05e7SDmitry Vyukov# via printk, etc. 425c9a8750SDmitry VyukovKASAN_SANITIZE_kcov.o := n 430ebba714SMarco ElverKCSAN_SANITIZE_kcov.o := n 44c1cb05e7SDmitry VyukovUBSAN_SANITIZE_kcov.o := n 4579dbd006SAlexander PotapenkoKMSAN_SANITIZE_kcov.o := n 4631a1b987SMarco ElverCFLAGS_kcov.o := $(call cc-option, -fno-conserve-stack) -fno-stack-protector 475c9a8750SDmitry Vyukov 48391e43daSPeter Zijlstraobj-y += sched/ 4901768b42SPeter Zijlstraobj-y += locking/ 50dae5cbc2SRafael J. Wysockiobj-y += power/ 51b9ee979eSJoe Perchesobj-y += printk/ 520244ad00SMartin Schwidefskyobj-y += irq/ 534102adabSPaul E. McKenneyobj-y += rcu/ 54b700e7f0SSeth Jenningsobj-y += livepatch/ 55cf65a0f6SChristoph Hellwigobj-y += dma/ 56142781e1SThomas Gleixnerobj-y += entry/ 5771753c6eSJosh Poimboeufobj-y += unwind/ 58cfc1d277SAaron Tomlinobj-$(CONFIG_MODULES) += module/ 59391e43daSPeter Zijlstra 60bfe3911aSChris Wilsonobj-$(CONFIG_KCMP) += kcmp.o 618174f150SMatt Helsleyobj-$(CONFIG_FREEZER) += freezer.o 62b03f6489SAdrian Bunkobj-$(CONFIG_PROFILING) += profile.o 638637c099SIngo Molnarobj-$(CONFIG_STACKTRACE) += stacktrace.o 64ad596171Sjohn stultzobj-y += time/ 6577e52ae3SPeter Zijlstraobj-$(CONFIG_FUTEX) += futex/ 661da177e4SLinus Torvaldsobj-$(CONFIG_GENERIC_ISA_DMA) += dma.o 67351f8f8eSAmerigo Wangobj-$(CONFIG_SMP) += smp.o 689316fcacSAndrew Mortonifneq ($(CONFIG_SMP),y) 6953ce3d95SAndrew Mortonobj-y += up.o 7053ce3d95SAndrew Mortonendif 711da177e4SLinus Torvaldsobj-$(CONFIG_UID16) += uid16.o 72c8424e77SThiago Jung Bauermannobj-$(CONFIG_MODULE_SIG_FORMAT) += module_signature.o 731da177e4SLinus Torvaldsobj-$(CONFIG_KALLSYMS) += kallsyms.o 7430f3bb09SZhen Leiobj-$(CONFIG_KALLSYMS_SELFTEST) += kallsyms_selftest.o 751da177e4SLinus Torvaldsobj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o 762c44b67eSBaoquan Heobj-$(CONFIG_VMCORE_INFO) += vmcore_info.o elfcorehdr.o 7785fcde40SBaoquan Heobj-$(CONFIG_CRASH_RESERVE) += crash_reserve.o 7802aff848SBaoquan Heobj-$(CONFIG_KEXEC_CORE) += kexec_core.o 7902aff848SBaoquan Heobj-$(CONFIG_CRASH_DUMP) += crash_core.o 80180cf31aSCoiby Xuobj-$(CONFIG_CRASH_DM_CRYPT) += crash_dump_dm_crypt.o 81913e65a2SCoiby Xuobj-$(CONFIG_CRASH_DUMP_KUNIT_TEST) += crash_core_test.o 82dc009d92SEric W. Biedermanobj-$(CONFIG_KEXEC) += kexec.o 83a43cac0dSDave Youngobj-$(CONFIG_KEXEC_FILE) += kexec_file.o 84175fca3bSSven Schnelleobj-$(CONFIG_KEXEC_ELF) += kexec_elf.o 853dc92c31SAlexander Grafobj-$(CONFIG_KEXEC_HANDOVER) += kexec_handover.o 86*e38f65d3SPasha Tatashinobj-$(CONFIG_KEXEC_HANDOVER_DEBUG) += kexec_handover_debug.o 876dab2778SArjan van de Venobj-$(CONFIG_BACKTRACE_SELF_TEST) += backtracetest.o 881da177e4SLinus Torvaldsobj-$(CONFIG_COMPAT) += compat.o 89201af4c0STejun Heoobj-$(CONFIG_CGROUPS) += cgroup/ 90aee16ce7SPavel Emelyanovobj-$(CONFIG_UTS_NS) += utsname.o 91aee16ce7SPavel Emelyanovobj-$(CONFIG_USER_NS) += user_namespace.o 9274bd59bbSPavel Emelyanovobj-$(CONFIG_PID_NS) += pid_namespace.o 931da177e4SLinus Torvaldsobj-$(CONFIG_IKCONFIG) += configs.o 94f7b101d3SJoel Fernandes (Google)obj-$(CONFIG_IKHEADERS) += kheaders.o 95bbf1bb3eSTejun Heoobj-$(CONFIG_SMP) += stop_machine.o 96939a67fcSEric Parisobj-$(CONFIG_AUDIT) += audit.o auditfilter.o 97c8fc5d49SRichard Guy Briggsobj-$(CONFIG_AUDITSYSCALL) += auditsc.o audit_watch.o audit_fsnotify.o audit_tree.o 98939a67fcSEric Parisobj-$(CONFIG_GCOV_KERNEL) += gcov/ 995c9a8750SDmitry Vyukovobj-$(CONFIG_KCOV) += kcov.o 1001da177e4SLinus Torvaldsobj-$(CONFIG_KPROBES) += kprobes.o 1014b1a29a7SMasami Hiramatsuobj-$(CONFIG_FAIL_FUNCTION) += fail_function.o 102c4338209SJason Wesselobj-$(CONFIG_KGDB) += debug/ 103e162b39aSMandeep Singh Bainesobj-$(CONFIG_DETECT_HUNG_TASK) += hung_task.o 10458687acbSDon Zickusobj-$(CONFIG_LOCKUP_DETECTOR) += watchdog.o 1051f423c90SDouglas Andersonobj-$(CONFIG_HARDLOCKUP_DETECTOR_BUDDY) += watchdog_buddy.o 1066ea0d042SDouglas Andersonobj-$(CONFIG_HARDLOCKUP_DETECTOR_PERF) += watchdog_perf.o 1071da177e4SLinus Torvaldsobj-$(CONFIG_SECCOMP) += seccomp.o 108b86ff981SJens Axboeobj-$(CONFIG_RELAY) += relay.o 10939732acdSEric W. Biedermanobj-$(CONFIG_SYSCTL) += utsname_sysctl.o 110ca74e92bSShailabh Nagarobj-$(CONFIG_TASK_DELAY_ACCT) += delayacct.o 111f3cef7a9SJay Lanobj-$(CONFIG_TASKSTATS) += taskstats.o tsacct.o 11297e1c18eSMathieu Desnoyersobj-$(CONFIG_TRACEPOINTS) += tracepoint.o 1139745512cSArjan van de Venobj-$(CONFIG_LATENCYTOP) += latencytop.o 114606576ceSSteven Rostedtobj-$(CONFIG_FUNCTION_TRACER) += trace/ 115bc0c38d1SSteven Rostedtobj-$(CONFIG_TRACING) += trace/ 116ea632e9fSJosh Triplettobj-$(CONFIG_TRACE_CLOCK) += trace/ 1171155de47SPaul Mundtobj-$(CONFIG_RING_BUFFER) += trace/ 118870915e0SMathieu Desnoyersobj-$(CONFIG_TRACEPOINTS) += trace/ 11973f9b911SMasami Hiramatsuobj-$(CONFIG_RETHOOK) += trace/ 120e360adbeSPeter Zijlstraobj-$(CONFIG_IRQ_WORK) += irq_work.o 121ab10023eSColin Crossobj-$(CONFIG_CPU_PM) += cpu_pm.o 122f89b7755SAlexei Starovoitovobj-$(CONFIG_BPF) += bpf/ 123dfd402a4SMarco Elverobj-$(CONFIG_KCSAN) += kcsan/ 124d08b9f0cSSami Tolvanenobj-$(CONFIG_SHADOW_CALL_STACK) += scs.o 1258fd4dddaSChristophe Leroyobj-$(CONFIG_HAVE_STATIC_CALL) += static_call.o 1268fd4dddaSChristophe Leroyobj-$(CONFIG_HAVE_STATIC_CALL_INLINE) += static_call_inline.o 12723ef9d43SKees Cookobj-$(CONFIG_CFI) += cfi.o 128fae85b7cSBorislav Petkov 129fae85b7cSBorislav Petkovobj-$(CONFIG_PERF_EVENTS) += events/ 130fae85b7cSBorislav Petkov 1317a041097SAvi Kivityobj-$(CONFIG_USER_RETURN_NOTIFIER) += user-return-notifier.o 13216295becSSteffen Klassertobj-$(CONFIG_PADATA) += padata.o 133b77f0f3cSJason Baronobj-$(CONFIG_JUMP_LABEL) += jump_label.o 13491d1aa43SFrederic Weisbeckerobj-$(CONFIG_CONTEXT_TRACKING) += context_tracking.o 13551b1130eSPaul E. McKenneyobj-$(CONFIG_TORTURE_TEST) += torture.o 1361da177e4SLinus Torvalds 1375981690dSDan Williamsobj-$(CONFIG_HAS_IOMEM) += iomem.o 138d7822b1eSMathieu Desnoyersobj-$(CONFIG_RSEQ) += rseq.o 139c73be61cSDavid Howellsobj-$(CONFIG_WATCH_QUEUE) += watch_queue.o 14092281deeSDan Williams 1415df38ca6SAndy Shevchenkoobj-$(CONFIG_RESOURCE_KUNIT_TEST) += resource_kunit.o 1422cb80dbbSIurii Zaikinobj-$(CONFIG_SYSCTL_KUNIT_TEST) += sysctl-test.o 1432cb80dbbSIurii Zaikin 14457fbad15SKees CookCFLAGS_kstack_erase.o += $(DISABLE_KSTACK_ERASE) 1456676fd3cSKees CookCFLAGS_kstack_erase.o += $(call cc-option,-mgeneral-regs-only) 14657fbad15SKees Cookobj-$(CONFIG_KSTACK_ERASE) += kstack_erase.o 14757fbad15SKees CookKASAN_SANITIZE_kstack_erase.o := n 14857fbad15SKees CookKCSAN_SANITIZE_kstack_erase.o := n 14957fbad15SKees CookKCOV_INSTRUMENT_kstack_erase.o := n 150afaef01cSAlexander Popov 151e9d338a0SPaul E. McKenneyobj-$(CONFIG_SCF_TORTURE_TEST) += scftorture.o 152e9d338a0SPaul E. McKenney 15313610aa9SMasahiro Yamada$(obj)/configs.o: $(obj)/config_data.gz 1541da177e4SLinus Torvalds 15546b41d5dSMasahiro Yamadatargets += config_data config_data.gz 15646b41d5dSMasahiro Yamada$(obj)/config_data.gz: $(obj)/config_data FORCE 1571da177e4SLinus Torvalds $(call if_changed,gzip) 15843d8ce9dSJoel Fernandes (Google) 15946b41d5dSMasahiro Yamadafilechk_cat = cat $< 16046b41d5dSMasahiro Yamada 16146b41d5dSMasahiro Yamada$(obj)/config_data: $(KCONFIG_CONFIG) FORCE 16246b41d5dSMasahiro Yamada $(call filechk,cat) 16346b41d5dSMasahiro Yamada 164626c54afSMasahiro Yamada# kheaders_data.tar.xz 16543d8ce9dSJoel Fernandes (Google)$(obj)/kheaders.o: $(obj)/kheaders_data.tar.xz 16643d8ce9dSJoel Fernandes (Google) 167626c54afSMasahiro Yamadaquiet_cmd_kheaders_data = GEN $@ 1681a0faff2SMasahiro Yamada cmd_kheaders_data = "$<" "$@" "$(obj)/kheaders-srclist" "$(obj)/kheaders-objlist" "$(KBUILD_BUILD_TIMESTAMP)" 169626c54afSMasahiro Yamada cmd_kheaders_data_dep = cat $(depfile) >> $(dot-target).cmd; rm -f $(depfile) 17043d8ce9dSJoel Fernandes (Google) 171626c54afSMasahiro Yamadadefine rule_kheaders_data 172626c54afSMasahiro Yamada $(call cmd_and_savecmd,kheaders_data) 173626c54afSMasahiro Yamada $(call cmd,kheaders_data_dep) 174626c54afSMasahiro Yamadaendef 175626c54afSMasahiro Yamada 176626c54afSMasahiro Yamadatargets += kheaders_data.tar.xz 177626c54afSMasahiro Yamada$(obj)/kheaders_data.tar.xz: $(src)/gen_kheaders.sh $(obj)/kheaders-srclist $(obj)/kheaders-objlist $(obj)/kheaders.md5 FORCE 178626c54afSMasahiro Yamada $(call if_changed_rule,kheaders_data) 179626c54afSMasahiro Yamada 180626c54afSMasahiro Yamada# generated headers in objtree 181626c54afSMasahiro Yamada# 182626c54afSMasahiro Yamada# include/generated/utsversion.h is ignored because it is generated 183626c54afSMasahiro Yamada# after gen_kheaders.sh is executed. (utsversion.h is unneeded for kheaders) 184626c54afSMasahiro Yamadafilechk_kheaders_objlist = \ 185626c54afSMasahiro Yamada for d in include "arch/$(SRCARCH)/include"; do \ 186626c54afSMasahiro Yamada find "$${d}/generated" ! -path "include/generated/utsversion.h" -a -name "*.h" -print; \ 187626c54afSMasahiro Yamada done 188626c54afSMasahiro Yamada 189626c54afSMasahiro Yamada$(obj)/kheaders-objlist: FORCE 190626c54afSMasahiro Yamada $(call filechk,kheaders_objlist) 191626c54afSMasahiro Yamada 192626c54afSMasahiro Yamada# non-generated headers in srctree 193626c54afSMasahiro Yamadafilechk_kheaders_srclist = \ 194626c54afSMasahiro Yamada for d in include "arch/$(SRCARCH)/include"; do \ 195626c54afSMasahiro Yamada find "$(srctree)/$${d}" -path "$(srctree)/$${d}/generated" -prune -o -name "*.h" -print; \ 196626c54afSMasahiro Yamada done 197626c54afSMasahiro Yamada 198626c54afSMasahiro Yamada$(obj)/kheaders-srclist: FORCE 199626c54afSMasahiro Yamada $(call filechk,kheaders_srclist) 200626c54afSMasahiro Yamada 201626c54afSMasahiro Yamada# Some files are symlinks. If symlinks are changed, kheaders_data.tar.xz should 202626c54afSMasahiro Yamada# be rebuilt. 203626c54afSMasahiro Yamadafilechk_kheaders_md5sum = xargs -r -a $< stat -c %N | md5sum 204626c54afSMasahiro Yamada 205626c54afSMasahiro Yamada$(obj)/kheaders.md5: $(obj)/kheaders-srclist FORCE 206626c54afSMasahiro Yamada $(call filechk,kheaders_md5sum) 207626c54afSMasahiro Yamada 208626c54afSMasahiro Yamadaclean-files := kheaders.md5 kheaders-srclist kheaders-objlist 209