1*b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 286feeaa8SSam Ravnborg# 386feeaa8SSam Ravnborg# Kbuild for top-level directory of the kernel 486feeaa8SSam Ravnborg# This file takes care of the following: 51cdf25d7SChristoph Lameter# 1) Generate bounds.h 60a227985SNicholas Mc Guire# 2) Generate timeconst.h 70a227985SNicholas Mc Guire# 3) Generate asm-offsets.h (may need bounds.h and timeconst.h) 80a227985SNicholas Mc Guire# 4) Check for missing system calls 9f197d75fSKieran Bingham# 5) Generate constants.py (may need bounds.h) 1086feeaa8SSam Ravnborg 1139664e2fSMasahiro Yamada##### 1239664e2fSMasahiro Yamada# 1) Generate bounds.h 1339664e2fSMasahiro Yamada 1439664e2fSMasahiro Yamadabounds-file := include/generated/bounds.h 1539664e2fSMasahiro Yamada 1639664e2fSMasahiro Yamadaalways := $(bounds-file) 178a58e162SMasahiro Yamadatargets := kernel/bounds.s 1839664e2fSMasahiro Yamada 1939664e2fSMasahiro Yamada# We use internal kbuild rules to avoid the "is up to date" message from make 2039664e2fSMasahiro Yamadakernel/bounds.s: kernel/bounds.c FORCE 2139664e2fSMasahiro Yamada $(Q)mkdir -p $(dir $@) 2239664e2fSMasahiro Yamada $(call if_changed_dep,cc_s_c) 2339664e2fSMasahiro Yamada 2470a4fd6cSMichal Marek$(obj)/$(bounds-file): kernel/bounds.s FORCE 2570a4fd6cSMichal Marek $(call filechk,offsets,__LINUX_BOUNDS_H__) 2639664e2fSMasahiro Yamada 2739664e2fSMasahiro Yamada##### 280a227985SNicholas Mc Guire# 2) Generate timeconst.h 290a227985SNicholas Mc Guire 300a227985SNicholas Mc Guiretimeconst-file := include/generated/timeconst.h 310a227985SNicholas Mc Guire 320a227985SNicholas Mc Guiretargets += $(timeconst-file) 330a227985SNicholas Mc Guire 340a227985SNicholas Mc Guirequiet_cmd_gentimeconst = GEN $@ 350a227985SNicholas Mc Guiredefine cmd_gentimeconst 360a227985SNicholas Mc Guire (echo $(CONFIG_HZ) | bc -q $< ) > $@ 370a227985SNicholas Mc Guireendef 380a227985SNicholas Mc Guiredefine filechk_gentimeconst 390a227985SNicholas Mc Guire (echo $(CONFIG_HZ) | bc -q $< ) 400a227985SNicholas Mc Guireendef 410a227985SNicholas Mc Guire 420a227985SNicholas Mc Guire$(obj)/$(timeconst-file): kernel/time/timeconst.bc FORCE 430a227985SNicholas Mc Guire $(call filechk,gentimeconst) 440a227985SNicholas Mc Guire 450a227985SNicholas Mc Guire##### 460a227985SNicholas Mc Guire# 3) Generate asm-offsets.h 4739664e2fSMasahiro Yamada# 4839664e2fSMasahiro Yamada 4939664e2fSMasahiro Yamadaoffsets-file := include/generated/asm-offsets.h 5039664e2fSMasahiro Yamada 5139664e2fSMasahiro Yamadaalways += $(offsets-file) 5239664e2fSMasahiro Yamadatargets += arch/$(SRCARCH)/kernel/asm-offsets.s 5339664e2fSMasahiro Yamada 5486feeaa8SSam Ravnborg# We use internal kbuild rules to avoid the "is up to date" message from make 551cdf25d7SChristoph Lameterarch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c \ 560a227985SNicholas Mc Guire $(obj)/$(timeconst-file) $(obj)/$(bounds-file) FORCE 5786feeaa8SSam Ravnborg $(Q)mkdir -p $(dir $@) 5886feeaa8SSam Ravnborg $(call if_changed_dep,cc_s_c) 5986feeaa8SSam Ravnborg 6070a4fd6cSMichal Marek$(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s FORCE 6170a4fd6cSMichal Marek $(call filechk,offsets,__ASM_OFFSETS_H__) 6286feeaa8SSam Ravnborg 63c53aeca0SSam Ravnborg##### 640a227985SNicholas Mc Guire# 4) Check for missing system calls 65c53aeca0SSam Ravnborg# 66c53aeca0SSam Ravnborg 675f7efb4cSArnaud Lacombealways += missing-syscalls 685f7efb4cSArnaud Lacombetargets += missing-syscalls 695f7efb4cSArnaud Lacombe 70c53aeca0SSam Ravnborgquiet_cmd_syscalls = CALL $< 7144656fa0SDavid Daney cmd_syscalls = $(CONFIG_SHELL) $< $(CC) $(c_flags) $(missing_syscalls_flags) 72c53aeca0SSam Ravnborg 735f7efb4cSArnaud Lacombemissing-syscalls: scripts/checksyscalls.sh $(offsets-file) FORCE 74c53aeca0SSam Ravnborg $(call cmd,syscalls) 751cdf25d7SChristoph Lameter 76f197d75fSKieran Bingham##### 77f197d75fSKieran Bingham# 5) Generate constants for Python GDB integration 78f197d75fSKieran Bingham# 79f197d75fSKieran Bingham 80f197d75fSKieran Binghamextra-$(CONFIG_GDB_SCRIPTS) += build_constants_py 81f197d75fSKieran Bingham 82f197d75fSKieran Binghambuild_constants_py: $(obj)/$(timeconst-file) $(obj)/$(bounds-file) 83f197d75fSKieran Bingham @$(MAKE) $(build)=scripts/gdb/linux $@ 84f197d75fSKieran Bingham 850a227985SNicholas Mc Guire# Keep these three files during make clean 860a227985SNicholas Mc Guireno-clean-files := $(bounds-file) $(offsets-file) $(timeconst-file) 87