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