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