xref: /openbmc/linux/Kbuild (revision 1cdf25d7)
186feeaa8SSam Ravnborg#
286feeaa8SSam Ravnborg# Kbuild for top-level directory of the kernel
386feeaa8SSam Ravnborg# This file takes care of the following:
4*1cdf25d7SChristoph Lameter# 1) Generate bounds.h
5*1cdf25d7SChristoph Lameter# 2) Generate asm-offsets.h (may need bounds.h)
6*1cdf25d7SChristoph Lameter# 3) Check for missing system calls
786feeaa8SSam Ravnborg
886feeaa8SSam Ravnborg#####
9*1cdf25d7SChristoph Lameter# 1) Generate bounds.h
10*1cdf25d7SChristoph Lameter
11*1cdf25d7SChristoph Lameterbounds-file := include/linux/bounds.h
12*1cdf25d7SChristoph Lameter
13*1cdf25d7SChristoph Lameteralways  := $(bounds-file)
14*1cdf25d7SChristoph Lametertargets := $(bounds-file) kernel/bounds.s
15*1cdf25d7SChristoph Lameter
16*1cdf25d7SChristoph Lameterquiet_cmd_bounds = GEN     $@
17*1cdf25d7SChristoph Lameterdefine cmd_bounds
18*1cdf25d7SChristoph Lameter	(set -e; \
19*1cdf25d7SChristoph Lameter	 echo "#ifndef __LINUX_BOUNDS_H__"; \
20*1cdf25d7SChristoph Lameter	 echo "#define __LINUX_BOUNDS_H__"; \
21*1cdf25d7SChristoph Lameter	 echo "/*"; \
22*1cdf25d7SChristoph Lameter	 echo " * DO NOT MODIFY."; \
23*1cdf25d7SChristoph Lameter	 echo " *"; \
24*1cdf25d7SChristoph Lameter	 echo " * This file was generated by Kbuild"; \
25*1cdf25d7SChristoph Lameter	 echo " *"; \
26*1cdf25d7SChristoph Lameter	 echo " */"; \
27*1cdf25d7SChristoph Lameter	 echo ""; \
28*1cdf25d7SChristoph Lameter	 sed -ne $(sed-y) $<; \
29*1cdf25d7SChristoph Lameter	 echo ""; \
30*1cdf25d7SChristoph Lameter	 echo "#endif" ) > $@
31*1cdf25d7SChristoph Lameterendef
32*1cdf25d7SChristoph Lameter
33*1cdf25d7SChristoph Lameter# We use internal kbuild rules to avoid the "is up to date" message from make
34*1cdf25d7SChristoph Lameterkernel/bounds.s: kernel/bounds.c FORCE
35*1cdf25d7SChristoph Lameter	$(Q)mkdir -p $(dir $@)
36*1cdf25d7SChristoph Lameter	$(call if_changed_dep,cc_s_c)
37*1cdf25d7SChristoph Lameter
38*1cdf25d7SChristoph Lameter$(obj)/$(bounds-file): kernel/bounds.s Kbuild
39*1cdf25d7SChristoph Lameter	$(Q)mkdir -p $(dir $@)
40*1cdf25d7SChristoph Lameter	$(call cmd,bounds)
41*1cdf25d7SChristoph Lameter
42*1cdf25d7SChristoph Lameter#####
43*1cdf25d7SChristoph Lameter# 2) Generate asm-offsets.h
4486feeaa8SSam Ravnborg#
4586feeaa8SSam Ravnborg
4696a388deSThomas Gleixneroffsets-file := include/asm-$(SRCARCH)/asm-offsets.h
4786feeaa8SSam Ravnborg
48*1cdf25d7SChristoph Lameteralways  += $(offsets-file)
49*1cdf25d7SChristoph Lametertargets += $(offsets-file)
506752ed90SThomas Gleixnertargets += arch/$(SRCARCH)/kernel/asm-offsets.s
51*1cdf25d7SChristoph Lameter
5286feeaa8SSam Ravnborg
53048eb582SSam Ravnborg# Default sed regexp - multiline due to syntax constraints
54048eb582SSam Ravnborgdefine sed-y
55048eb582SSam Ravnborg	"/^->/{s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;}"
56048eb582SSam Ravnborgendef
57048eb582SSam Ravnborg# Override default regexp for specific architectures
580947640fSAtsushi Nemotosed-$(CONFIG_MIPS) := "/^@@@/{s/^@@@//; s/ \#.*\$$//; p;}"
59048eb582SSam Ravnborg
6086feeaa8SSam Ravnborgquiet_cmd_offsets = GEN     $@
6186feeaa8SSam Ravnborgdefine cmd_offsets
6286feeaa8SSam Ravnborg	(set -e; \
6386feeaa8SSam Ravnborg	 echo "#ifndef __ASM_OFFSETS_H__"; \
6486feeaa8SSam Ravnborg	 echo "#define __ASM_OFFSETS_H__"; \
6586feeaa8SSam Ravnborg	 echo "/*"; \
6686feeaa8SSam Ravnborg	 echo " * DO NOT MODIFY."; \
6786feeaa8SSam Ravnborg	 echo " *"; \
6865ff22eeSOlaf Hering	 echo " * This file was generated by Kbuild"; \
6986feeaa8SSam Ravnborg	 echo " *"; \
7086feeaa8SSam Ravnborg	 echo " */"; \
7186feeaa8SSam Ravnborg	 echo ""; \
72ac448afbSBrian Gerst	 sed -ne $(sed-y) $<; \
7386feeaa8SSam Ravnborg	 echo ""; \
7486feeaa8SSam Ravnborg	 echo "#endif" ) > $@
7586feeaa8SSam Ravnborgendef
7686feeaa8SSam Ravnborg
7786feeaa8SSam Ravnborg# We use internal kbuild rules to avoid the "is up to date" message from make
78*1cdf25d7SChristoph Lameterarch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c \
79*1cdf25d7SChristoph Lameter                                      $(obj)/$(bounds-file) FORCE
8086feeaa8SSam Ravnborg	$(Q)mkdir -p $(dir $@)
8186feeaa8SSam Ravnborg	$(call if_changed_dep,cc_s_c)
8286feeaa8SSam Ravnborg
836752ed90SThomas Gleixner$(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s Kbuild
84ac448afbSBrian Gerst	$(Q)mkdir -p $(dir $@)
8586feeaa8SSam Ravnborg	$(call cmd,offsets)
8686feeaa8SSam Ravnborg
87c53aeca0SSam Ravnborg#####
88*1cdf25d7SChristoph Lameter# 3) Check for missing system calls
89c53aeca0SSam Ravnborg#
90c53aeca0SSam Ravnborg
91c53aeca0SSam Ravnborgquiet_cmd_syscalls = CALL    $<
92c53aeca0SSam Ravnborg      cmd_syscalls = $(CONFIG_SHELL) $< $(CC) $(c_flags)
93c53aeca0SSam Ravnborg
94c53aeca0SSam RavnborgPHONY += missing-syscalls
95c53aeca0SSam Ravnborgmissing-syscalls: scripts/checksyscalls.sh FORCE
96c53aeca0SSam Ravnborg	$(call cmd,syscalls)
97*1cdf25d7SChristoph Lameter
98*1cdf25d7SChristoph Lameter# Delete all targets during make clean
99*1cdf25d7SChristoph Lameterclean-files := $(addprefix $(objtree)/,$(targets))
100*1cdf25d7SChristoph Lameter
101