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