xref: /linux/Kbuild (revision 39664e2f3cdef98f42437e903159a6044a1d99d6)
186feeaa8SSam Ravnborg#
286feeaa8SSam Ravnborg# Kbuild for top-level directory of the kernel
386feeaa8SSam Ravnborg# This file takes care of the following:
41cdf25d7SChristoph Lameter# 1) Generate bounds.h
51cdf25d7SChristoph Lameter# 2) Generate asm-offsets.h (may need bounds.h)
61cdf25d7SChristoph Lameter# 3) Check for missing system calls
786feeaa8SSam Ravnborg
8048eb582SSam Ravnborg# Default sed regexp - multiline due to syntax constraints
9048eb582SSam Ravnborgdefine sed-y
10bf2ae2b3SChristoph Lameter	"/^->/{s:->#\(.*\):/* \1 */:; \
1195a2f6f7SDavid Howells	s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
12a22dcdb0SAlexander van Heukelum	s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
13bf2ae2b3SChristoph Lameter	s:->::; p;}"
14048eb582SSam Ravnborgendef
15048eb582SSam Ravnborg
1686feeaa8SSam Ravnborgquiet_cmd_offsets = GEN     $@
1786feeaa8SSam Ravnborgdefine cmd_offsets
1886feeaa8SSam Ravnborg	(set -e; \
1939664e2fSMasahiro Yamada	 echo "#ifndef $2"; \
2039664e2fSMasahiro Yamada	 echo "#define $2"; \
2186feeaa8SSam Ravnborg	 echo "/*"; \
2286feeaa8SSam Ravnborg	 echo " * DO NOT MODIFY."; \
2386feeaa8SSam Ravnborg	 echo " *"; \
2465ff22eeSOlaf Hering	 echo " * This file was generated by Kbuild"; \
2586feeaa8SSam Ravnborg	 echo " *"; \
2686feeaa8SSam Ravnborg	 echo " */"; \
2786feeaa8SSam Ravnborg	 echo ""; \
28ac448afbSBrian Gerst	 sed -ne $(sed-y) $<; \
2986feeaa8SSam Ravnborg	 echo ""; \
3086feeaa8SSam Ravnborg	 echo "#endif" ) > $@
3186feeaa8SSam Ravnborgendef
3286feeaa8SSam Ravnborg
3339664e2fSMasahiro Yamada#####
3439664e2fSMasahiro Yamada# 1) Generate bounds.h
3539664e2fSMasahiro Yamada
3639664e2fSMasahiro Yamadabounds-file := include/generated/bounds.h
3739664e2fSMasahiro Yamada
3839664e2fSMasahiro Yamadaalways  := $(bounds-file)
3939664e2fSMasahiro Yamadatargets := $(bounds-file) kernel/bounds.s
4039664e2fSMasahiro Yamada
4139664e2fSMasahiro Yamada# We use internal kbuild rules to avoid the "is up to date" message from make
4239664e2fSMasahiro Yamadakernel/bounds.s: kernel/bounds.c FORCE
4339664e2fSMasahiro Yamada	$(Q)mkdir -p $(dir $@)
4439664e2fSMasahiro Yamada	$(call if_changed_dep,cc_s_c)
4539664e2fSMasahiro Yamada
4639664e2fSMasahiro Yamada$(obj)/$(bounds-file): kernel/bounds.s Kbuild
4739664e2fSMasahiro Yamada	$(Q)mkdir -p $(dir $@)
4839664e2fSMasahiro Yamada	$(call cmd,offsets,__LINUX_BOUNDS_H__)
4939664e2fSMasahiro Yamada
5039664e2fSMasahiro Yamada#####
5139664e2fSMasahiro Yamada# 2) Generate asm-offsets.h
5239664e2fSMasahiro Yamada#
5339664e2fSMasahiro Yamada
5439664e2fSMasahiro Yamadaoffsets-file := include/generated/asm-offsets.h
5539664e2fSMasahiro Yamada
5639664e2fSMasahiro Yamadaalways  += $(offsets-file)
5739664e2fSMasahiro Yamadatargets += $(offsets-file)
5839664e2fSMasahiro Yamadatargets += arch/$(SRCARCH)/kernel/asm-offsets.s
5939664e2fSMasahiro Yamada
6086feeaa8SSam Ravnborg# We use internal kbuild rules to avoid the "is up to date" message from make
611cdf25d7SChristoph Lameterarch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c \
621cdf25d7SChristoph Lameter                                      $(obj)/$(bounds-file) FORCE
6386feeaa8SSam Ravnborg	$(Q)mkdir -p $(dir $@)
6486feeaa8SSam Ravnborg	$(call if_changed_dep,cc_s_c)
6586feeaa8SSam Ravnborg
666752ed90SThomas Gleixner$(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s Kbuild
6739664e2fSMasahiro Yamada	$(call cmd,offsets,__ASM_OFFSETS_H__)
6886feeaa8SSam Ravnborg
69c53aeca0SSam Ravnborg#####
701cdf25d7SChristoph Lameter# 3) Check for missing system calls
71c53aeca0SSam Ravnborg#
72c53aeca0SSam Ravnborg
735f7efb4cSArnaud Lacombealways += missing-syscalls
745f7efb4cSArnaud Lacombetargets += missing-syscalls
755f7efb4cSArnaud Lacombe
76c53aeca0SSam Ravnborgquiet_cmd_syscalls = CALL    $<
7744656fa0SDavid Daney      cmd_syscalls = $(CONFIG_SHELL) $< $(CC) $(c_flags) $(missing_syscalls_flags)
78c53aeca0SSam Ravnborg
795f7efb4cSArnaud Lacombemissing-syscalls: scripts/checksyscalls.sh $(offsets-file) FORCE
80c53aeca0SSam Ravnborg	$(call cmd,syscalls)
811cdf25d7SChristoph Lameter
82ef8ff89bSMichal Marek# Keep these two files during make clean
83ef8ff89bSMichal Marekno-clean-files := $(bounds-file) $(offsets-file)
84