| .. | .. |
|---|
| 1 | 1 | # SPDX-License-Identifier: GPL-2.0 |
|---|
| 2 | 2 | # |
|---|
| 3 | 3 | # Kbuild for top-level directory of the kernel |
|---|
| 4 | | -# This file takes care of the following: |
|---|
| 5 | | -# 1) Generate bounds.h |
|---|
| 6 | | -# 2) Generate timeconst.h |
|---|
| 7 | | -# 3) Generate asm-offsets.h (may need bounds.h and timeconst.h) |
|---|
| 8 | | -# 4) Check for missing system calls |
|---|
| 9 | | -# 5) Generate constants.py (may need bounds.h) |
|---|
| 10 | 4 | |
|---|
| 11 | 5 | ##### |
|---|
| 12 | | -# 1) Generate bounds.h |
|---|
| 6 | +# Generate bounds.h |
|---|
| 13 | 7 | |
|---|
| 14 | 8 | bounds-file := include/generated/bounds.h |
|---|
| 15 | 9 | |
|---|
| 16 | | -always := $(bounds-file) |
|---|
| 10 | +always-y := $(bounds-file) |
|---|
| 17 | 11 | targets := kernel/bounds.s |
|---|
| 18 | 12 | |
|---|
| 19 | | -# We use internal kbuild rules to avoid the "is up to date" message from make |
|---|
| 20 | | -kernel/bounds.s: kernel/bounds.c FORCE |
|---|
| 21 | | - $(call if_changed_dep,cc_s_c) |
|---|
| 22 | | - |
|---|
| 23 | | -$(obj)/$(bounds-file): kernel/bounds.s FORCE |
|---|
| 13 | +$(bounds-file): kernel/bounds.s FORCE |
|---|
| 24 | 14 | $(call filechk,offsets,__LINUX_BOUNDS_H__) |
|---|
| 25 | 15 | |
|---|
| 26 | 16 | ##### |
|---|
| 27 | | -# 2) Generate timeconst.h |
|---|
| 17 | +# Generate timeconst.h |
|---|
| 28 | 18 | |
|---|
| 29 | 19 | timeconst-file := include/generated/timeconst.h |
|---|
| 30 | 20 | |
|---|
| 31 | | -targets += $(timeconst-file) |
|---|
| 21 | +filechk_gentimeconst = echo $(CONFIG_HZ) | bc -q $< |
|---|
| 32 | 22 | |
|---|
| 33 | | -quiet_cmd_gentimeconst = GEN $@ |
|---|
| 34 | | -define cmd_gentimeconst |
|---|
| 35 | | - (echo $(CONFIG_HZ) | bc -q $< ) > $@ |
|---|
| 36 | | -endef |
|---|
| 37 | | -define filechk_gentimeconst |
|---|
| 38 | | - (echo $(CONFIG_HZ) | bc -q $< ) |
|---|
| 39 | | -endef |
|---|
| 40 | | - |
|---|
| 41 | | -$(obj)/$(timeconst-file): kernel/time/timeconst.bc FORCE |
|---|
| 23 | +$(timeconst-file): kernel/time/timeconst.bc FORCE |
|---|
| 42 | 24 | $(call filechk,gentimeconst) |
|---|
| 43 | 25 | |
|---|
| 44 | 26 | ##### |
|---|
| 45 | | -# 3) Generate asm-offsets.h |
|---|
| 46 | | -# |
|---|
| 27 | +# Generate asm-offsets.h |
|---|
| 47 | 28 | |
|---|
| 48 | 29 | offsets-file := include/generated/asm-offsets.h |
|---|
| 49 | 30 | |
|---|
| 50 | | -always += $(offsets-file) |
|---|
| 31 | +always-y += $(offsets-file) |
|---|
| 51 | 32 | targets += arch/$(SRCARCH)/kernel/asm-offsets.s |
|---|
| 52 | 33 | |
|---|
| 53 | | -# We use internal kbuild rules to avoid the "is up to date" message from make |
|---|
| 54 | | -arch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c \ |
|---|
| 55 | | - $(obj)/$(timeconst-file) $(obj)/$(bounds-file) FORCE |
|---|
| 56 | | - $(call if_changed_dep,cc_s_c) |
|---|
| 34 | +arch/$(SRCARCH)/kernel/asm-offsets.s: $(timeconst-file) $(bounds-file) |
|---|
| 57 | 35 | |
|---|
| 58 | | -$(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s FORCE |
|---|
| 36 | +$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s FORCE |
|---|
| 59 | 37 | $(call filechk,offsets,__ASM_OFFSETS_H__) |
|---|
| 60 | 38 | |
|---|
| 61 | 39 | ##### |
|---|
| 62 | | -# 4) Check for missing system calls |
|---|
| 63 | | -# |
|---|
| 40 | +# Check for missing system calls |
|---|
| 64 | 41 | |
|---|
| 65 | | -always += missing-syscalls |
|---|
| 66 | | -targets += missing-syscalls |
|---|
| 42 | +always-y += missing-syscalls |
|---|
| 67 | 43 | |
|---|
| 68 | 44 | quiet_cmd_syscalls = CALL $< |
|---|
| 69 | 45 | cmd_syscalls = $(CONFIG_SHELL) $< $(CC) $(c_flags) $(missing_syscalls_flags) |
|---|
| .. | .. |
|---|
| 72 | 48 | $(call cmd,syscalls) |
|---|
| 73 | 49 | |
|---|
| 74 | 50 | ##### |
|---|
| 75 | | -# 5) Generate constants for Python GDB integration |
|---|
| 76 | | -# |
|---|
| 51 | +# Check atomic headers are up-to-date |
|---|
| 77 | 52 | |
|---|
| 78 | | -extra-$(CONFIG_GDB_SCRIPTS) += build_constants_py |
|---|
| 53 | +always-y += old-atomics |
|---|
| 79 | 54 | |
|---|
| 80 | | -build_constants_py: $(obj)/$(timeconst-file) $(obj)/$(bounds-file) |
|---|
| 81 | | - @$(MAKE) $(build)=scripts/gdb/linux $@ |
|---|
| 55 | +quiet_cmd_atomics = CALL $< |
|---|
| 56 | + cmd_atomics = $(CONFIG_SHELL) $< |
|---|
| 82 | 57 | |
|---|
| 83 | | -# Keep these three files during make clean |
|---|
| 84 | | -no-clean-files := $(bounds-file) $(offsets-file) $(timeconst-file) |
|---|
| 58 | +old-atomics: scripts/atomic/check-atomics.sh FORCE |
|---|
| 59 | + $(call cmd,atomics) |
|---|