1b2441318SGreg 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 19*11fda148SMasahiro Yamada$(bounds-file): kernel/bounds.s FORCE 2070a4fd6cSMichal Marek $(call filechk,offsets,__LINUX_BOUNDS_H__) 2139664e2fSMasahiro Yamada 2239664e2fSMasahiro Yamada##### 230a227985SNicholas Mc Guire# 2) Generate timeconst.h 240a227985SNicholas Mc Guire 250a227985SNicholas Mc Guiretimeconst-file := include/generated/timeconst.h 260a227985SNicholas Mc Guire 270a227985SNicholas Mc Guiretargets += $(timeconst-file) 280a227985SNicholas Mc Guire 290a227985SNicholas Mc Guirequiet_cmd_gentimeconst = GEN $@ 300a227985SNicholas Mc Guiredefine cmd_gentimeconst 310a227985SNicholas Mc Guire (echo $(CONFIG_HZ) | bc -q $< ) > $@ 320a227985SNicholas Mc Guireendef 330a227985SNicholas Mc Guiredefine filechk_gentimeconst 340a227985SNicholas Mc Guire (echo $(CONFIG_HZ) | bc -q $< ) 350a227985SNicholas Mc Guireendef 360a227985SNicholas Mc Guire 37*11fda148SMasahiro Yamada$(timeconst-file): kernel/time/timeconst.bc FORCE 380a227985SNicholas Mc Guire $(call filechk,gentimeconst) 390a227985SNicholas Mc Guire 400a227985SNicholas Mc Guire##### 410a227985SNicholas Mc Guire# 3) Generate asm-offsets.h 4239664e2fSMasahiro Yamada# 4339664e2fSMasahiro Yamada 4439664e2fSMasahiro Yamadaoffsets-file := include/generated/asm-offsets.h 4539664e2fSMasahiro Yamada 4639664e2fSMasahiro Yamadaalways += $(offsets-file) 4739664e2fSMasahiro Yamadatargets += arch/$(SRCARCH)/kernel/asm-offsets.s 4839664e2fSMasahiro Yamada 49*11fda148SMasahiro Yamadaarch/$(SRCARCH)/kernel/asm-offsets.s: $(timeconst-file) $(bounds-file) 5086feeaa8SSam Ravnborg 51*11fda148SMasahiro Yamada$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s FORCE 5270a4fd6cSMichal Marek $(call filechk,offsets,__ASM_OFFSETS_H__) 5386feeaa8SSam Ravnborg 54c53aeca0SSam Ravnborg##### 550a227985SNicholas Mc Guire# 4) Check for missing system calls 56c53aeca0SSam Ravnborg# 57c53aeca0SSam Ravnborg 585f7efb4cSArnaud Lacombealways += missing-syscalls 595f7efb4cSArnaud Lacombetargets += missing-syscalls 605f7efb4cSArnaud Lacombe 61c53aeca0SSam Ravnborgquiet_cmd_syscalls = CALL $< 6244656fa0SDavid Daney cmd_syscalls = $(CONFIG_SHELL) $< $(CC) $(c_flags) $(missing_syscalls_flags) 63c53aeca0SSam Ravnborg 645f7efb4cSArnaud Lacombemissing-syscalls: scripts/checksyscalls.sh $(offsets-file) FORCE 65c53aeca0SSam Ravnborg $(call cmd,syscalls) 661cdf25d7SChristoph Lameter 67f197d75fSKieran Bingham##### 68f197d75fSKieran Bingham# 5) Generate constants for Python GDB integration 69f197d75fSKieran Bingham# 70f197d75fSKieran Bingham 71f197d75fSKieran Binghamextra-$(CONFIG_GDB_SCRIPTS) += build_constants_py 72f197d75fSKieran Bingham 73*11fda148SMasahiro Yamadabuild_constants_py: $(timeconst-file) $(bounds-file) 74f197d75fSKieran Bingham @$(MAKE) $(build)=scripts/gdb/linux $@ 75f197d75fSKieran Bingham 760a227985SNicholas Mc Guire# Keep these three files during make clean 770a227985SNicholas Mc Guireno-clean-files := $(bounds-file) $(offsets-file) $(timeconst-file) 78