xref: /openbmc/linux/Kbuild (revision 11fda148)
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