| 1 | # SPDX-License-Identifier: GPL-2.0 |
| 2 | # |
| 3 | # Kbuild for top-level directory of the kernel |
| 4 | |
| 5 | ##### |
| 6 | # Generate bounds.h |
| 7 | |
| 8 | bounds-file := include/generated/bounds.h |
| 9 | |
| 10 | always-y := $(bounds-file) |
| 11 | targets := kernel/bounds.s |
| 12 | |
| 13 | $(bounds-file): kernel/bounds.s FORCE |
| 14 | $(call filechk,offsets,__LINUX_BOUNDS_H__) |
| 15 | |
| 16 | ##### |
| 17 | # Generate timeconst.h |
| 18 | |
| 19 | timeconst-file := include/generated/timeconst.h |
| 20 | |
| 21 | filechk_gentimeconst = echo $(CONFIG_HZ) | bc -q $< |
| 22 | |
| 23 | $(timeconst-file): kernel/time/timeconst.bc FORCE |
| 24 | $(call filechk,gentimeconst) |
| 25 | |
| 26 | ##### |
| 27 | # Generate asm-offsets.h |
| 28 | |
| 29 | offsets-file := include/generated/asm-offsets.h |
| 30 | |
| 31 | always-y += $(offsets-file) |
| 32 | targets += arch/$(SRCARCH)/kernel/asm-offsets.s |
| 33 | |
| 34 | arch/$(SRCARCH)/kernel/asm-offsets.s: $(timeconst-file) $(bounds-file) |
| 35 | |
| 36 | $(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s FORCE |
| 37 | $(call filechk,offsets,__ASM_OFFSETS_H__) |
| 38 | |
| 39 | ##### |
| 40 | # Check for missing system calls |
| 41 | |
| 42 | always-y += missing-syscalls |
| 43 | |
| 44 | quiet_cmd_syscalls = CALL $< |
| 45 | cmd_syscalls = $(CONFIG_SHELL) $< $(CC) $(c_flags) $(missing_syscalls_flags) |
| 46 | |
| 47 | missing-syscalls: scripts/checksyscalls.sh $(offsets-file) FORCE |
| 48 | $(call cmd,syscalls) |
| 49 | |
| 50 | ##### |
| 51 | # Check atomic headers are up-to-date |
| 52 | |
| 53 | always-y += old-atomics |
| 54 | |
| 55 | quiet_cmd_atomics = CALL $< |
| 56 | cmd_atomics = $(CONFIG_SHELL) $< |
| 57 | |
| 58 | old-atomics: scripts/atomic/check-atomics.sh FORCE |
| 59 | $(call cmd,atomics) |