X-Git-Url: http://ftp.safe.ca/?p=safe%2Fjmp%2Flinux-2.6;a=blobdiff_plain;f=Kbuild;h=f056b4feee519748ae6ef22fde3df1da532e177b;hp=95d6a00bace08c0ac50b80356847d5f19f6dc55a;hb=864f0f61f829bac5f150a903aad9619322a25424;hpb=ac448afbcdcc218fd8d177960466ecc4a523722f diff --git a/Kbuild b/Kbuild index 95d6a00..f056b4f 100644 --- a/Kbuild +++ b/Kbuild @@ -1,24 +1,61 @@ # # Kbuild for top-level directory of the kernel # This file takes care of the following: -# 1) Generate asm-offsets.h +# 1) Generate bounds.h +# 2) Generate asm-offsets.h (may need bounds.h) +# 3) Check for missing system calls ##### -# 1) Generate asm-offsets.h +# 1) Generate bounds.h + +bounds-file := include/linux/bounds.h + +always := $(bounds-file) +targets := $(bounds-file) kernel/bounds.s + +quiet_cmd_bounds = GEN $@ +define cmd_bounds + (set -e; \ + echo "#ifndef __LINUX_BOUNDS_H__"; \ + echo "#define __LINUX_BOUNDS_H__"; \ + echo "/*"; \ + echo " * DO NOT MODIFY."; \ + echo " *"; \ + echo " * This file was generated by Kbuild"; \ + echo " *"; \ + echo " */"; \ + echo ""; \ + sed -ne $(sed-y) $<; \ + echo ""; \ + echo "#endif" ) > $@ +endef + +# We use internal kbuild rules to avoid the "is up to date" message from make +kernel/bounds.s: kernel/bounds.c FORCE + $(Q)mkdir -p $(dir $@) + $(call if_changed_dep,cc_s_c) + +$(obj)/$(bounds-file): kernel/bounds.s Kbuild + $(Q)mkdir -p $(dir $@) + $(call cmd,bounds) + +##### +# 2) Generate asm-offsets.h # -offsets-file := include/asm-$(ARCH)/asm-offsets.h +offsets-file := include/asm/asm-offsets.h + +always += $(offsets-file) +targets += $(offsets-file) +targets += arch/$(SRCARCH)/kernel/asm-offsets.s -always := $(offsets-file) -targets := $(offsets-file) -targets += arch/$(ARCH)/kernel/asm-offsets.s # Default sed regexp - multiline due to syntax constraints define sed-y - "/^->/{s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;}" + "/^->/{s:->#\(.*\):/* \1 */:; \ + s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \ + s:->::; p;}" endef -# Override default regexp for specific architectures -sed-$(CONFIG_MIPS) := "/^@@@/s///p" quiet_cmd_offsets = GEN $@ define cmd_offsets @@ -28,7 +65,7 @@ define cmd_offsets echo "/*"; \ echo " * DO NOT MODIFY."; \ echo " *"; \ - echo " * This file was generated by $(srctree)/Kbuild"; \ + echo " * This file was generated by Kbuild"; \ echo " *"; \ echo " */"; \ echo ""; \ @@ -38,11 +75,24 @@ define cmd_offsets endef # We use internal kbuild rules to avoid the "is up to date" message from make -arch/$(ARCH)/kernel/asm-offsets.s: arch/$(ARCH)/kernel/asm-offsets.c FORCE +arch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c \ + $(obj)/$(bounds-file) FORCE $(Q)mkdir -p $(dir $@) $(call if_changed_dep,cc_s_c) -$(obj)/$(offsets-file): arch/$(ARCH)/kernel/asm-offsets.s Kbuild - $(Q)mkdir -p $(dir $@) +$(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s Kbuild $(call cmd,offsets) +##### +# 3) Check for missing system calls +# + +quiet_cmd_syscalls = CALL $< + cmd_syscalls = $(CONFIG_SHELL) $< $(CC) $(c_flags) + +PHONY += missing-syscalls +missing-syscalls: scripts/checksyscalls.sh FORCE + $(call cmd,syscalls) + +# Delete all targets during make clean +clean-files := $(addprefix $(objtree)/,$(filter-out $(bounds-file) $(offsets-file),$(targets)))