xref: /openbmc/linux/Kbuild (revision 44656fa0)
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
886feeaa8SSam Ravnborg#####
91cdf25d7SChristoph Lameter# 1) Generate bounds.h
101cdf25d7SChristoph Lameter
1101fc0ac1SSam Ravnborgbounds-file := include/generated/bounds.h
121cdf25d7SChristoph Lameter
131cdf25d7SChristoph Lameteralways  := $(bounds-file)
141cdf25d7SChristoph Lametertargets := $(bounds-file) kernel/bounds.s
151cdf25d7SChristoph Lameter
161cdf25d7SChristoph Lameterquiet_cmd_bounds = GEN     $@
171cdf25d7SChristoph Lameterdefine cmd_bounds
181cdf25d7SChristoph Lameter	(set -e; \
191cdf25d7SChristoph Lameter	 echo "#ifndef __LINUX_BOUNDS_H__"; \
201cdf25d7SChristoph Lameter	 echo "#define __LINUX_BOUNDS_H__"; \
211cdf25d7SChristoph Lameter	 echo "/*"; \
221cdf25d7SChristoph Lameter	 echo " * DO NOT MODIFY."; \
231cdf25d7SChristoph Lameter	 echo " *"; \
241cdf25d7SChristoph Lameter	 echo " * This file was generated by Kbuild"; \
251cdf25d7SChristoph Lameter	 echo " *"; \
261cdf25d7SChristoph Lameter	 echo " */"; \
271cdf25d7SChristoph Lameter	 echo ""; \
281cdf25d7SChristoph Lameter	 sed -ne $(sed-y) $<; \
291cdf25d7SChristoph Lameter	 echo ""; \
301cdf25d7SChristoph Lameter	 echo "#endif" ) > $@
311cdf25d7SChristoph Lameterendef
321cdf25d7SChristoph Lameter
331cdf25d7SChristoph Lameter# We use internal kbuild rules to avoid the "is up to date" message from make
341cdf25d7SChristoph Lameterkernel/bounds.s: kernel/bounds.c FORCE
351cdf25d7SChristoph Lameter	$(Q)mkdir -p $(dir $@)
361cdf25d7SChristoph Lameter	$(call if_changed_dep,cc_s_c)
371cdf25d7SChristoph Lameter
381cdf25d7SChristoph Lameter$(obj)/$(bounds-file): kernel/bounds.s Kbuild
391cdf25d7SChristoph Lameter	$(Q)mkdir -p $(dir $@)
401cdf25d7SChristoph Lameter	$(call cmd,bounds)
411cdf25d7SChristoph Lameter
421cdf25d7SChristoph Lameter#####
431cdf25d7SChristoph Lameter# 2) Generate asm-offsets.h
4486feeaa8SSam Ravnborg#
4586feeaa8SSam Ravnborg
46559df2e0SSam Ravnborgoffsets-file := include/generated/asm-offsets.h
4786feeaa8SSam Ravnborg
481cdf25d7SChristoph Lameteralways  += $(offsets-file)
491cdf25d7SChristoph Lametertargets += $(offsets-file)
506752ed90SThomas Gleixnertargets += arch/$(SRCARCH)/kernel/asm-offsets.s
511cdf25d7SChristoph Lameter
5286feeaa8SSam Ravnborg
53048eb582SSam Ravnborg# Default sed regexp - multiline due to syntax constraints
54048eb582SSam Ravnborgdefine sed-y
55bf2ae2b3SChristoph Lameter	"/^->/{s:->#\(.*\):/* \1 */:; \
5695a2f6f7SDavid Howells	s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
57a22dcdb0SAlexander van Heukelum	s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
58bf2ae2b3SChristoph Lameter	s:->::; p;}"
59048eb582SSam Ravnborgendef
60048eb582SSam Ravnborg
6186feeaa8SSam Ravnborgquiet_cmd_offsets = GEN     $@
6286feeaa8SSam Ravnborgdefine cmd_offsets
6386feeaa8SSam Ravnborg	(set -e; \
6486feeaa8SSam Ravnborg	 echo "#ifndef __ASM_OFFSETS_H__"; \
6586feeaa8SSam Ravnborg	 echo "#define __ASM_OFFSETS_H__"; \
6686feeaa8SSam Ravnborg	 echo "/*"; \
6786feeaa8SSam Ravnborg	 echo " * DO NOT MODIFY."; \
6886feeaa8SSam Ravnborg	 echo " *"; \
6965ff22eeSOlaf Hering	 echo " * This file was generated by Kbuild"; \
7086feeaa8SSam Ravnborg	 echo " *"; \
7186feeaa8SSam Ravnborg	 echo " */"; \
7286feeaa8SSam Ravnborg	 echo ""; \
73ac448afbSBrian Gerst	 sed -ne $(sed-y) $<; \
7486feeaa8SSam Ravnborg	 echo ""; \
7586feeaa8SSam Ravnborg	 echo "#endif" ) > $@
7686feeaa8SSam Ravnborgendef
7786feeaa8SSam Ravnborg
7886feeaa8SSam Ravnborg# We use internal kbuild rules to avoid the "is up to date" message from make
791cdf25d7SChristoph Lameterarch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c \
801cdf25d7SChristoph Lameter                                      $(obj)/$(bounds-file) FORCE
8186feeaa8SSam Ravnborg	$(Q)mkdir -p $(dir $@)
8286feeaa8SSam Ravnborg	$(call if_changed_dep,cc_s_c)
8386feeaa8SSam Ravnborg
846752ed90SThomas Gleixner$(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s Kbuild
8586feeaa8SSam Ravnborg	$(call cmd,offsets)
8686feeaa8SSam Ravnborg
87c53aeca0SSam Ravnborg#####
881cdf25d7SChristoph Lameter# 3) Check for missing system calls
89c53aeca0SSam Ravnborg#
90c53aeca0SSam Ravnborg
915f7efb4cSArnaud Lacombealways += missing-syscalls
925f7efb4cSArnaud Lacombetargets += missing-syscalls
935f7efb4cSArnaud Lacombe
94c53aeca0SSam Ravnborgquiet_cmd_syscalls = CALL    $<
95*44656fa0SDavid Daney      cmd_syscalls = $(CONFIG_SHELL) $< $(CC) $(c_flags) $(missing_syscalls_flags)
96c53aeca0SSam Ravnborg
975f7efb4cSArnaud Lacombemissing-syscalls: scripts/checksyscalls.sh $(offsets-file) FORCE
98c53aeca0SSam Ravnborg	$(call cmd,syscalls)
991cdf25d7SChristoph Lameter
100ef8ff89bSMichal Marek# Keep these two files during make clean
101ef8ff89bSMichal Marekno-clean-files := $(bounds-file) $(offsets-file)
102