diff options
| author | Christoph Lameter <clameter@sgi.com> | 2008-04-28 02:12:44 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-28 08:58:21 -0700 | 
| commit | 1cdf25d704f7951d02a04064c97db547d6021872 (patch) | |
| tree | 2571b70c1d95ea66086500b362a0f7fe2999acbc /Kbuild | |
| parent | 308c05e35e3517d19bb67a7e97772235c9e15cd7 (diff) | |
| download | linux-1cdf25d704f7951d02a04064c97db547d6021872.tar.bz2 | |
kbuild: create a way to create preprocessor constants from C expressions
The use of enums create constants that are not available to the preprocessor
when building the kernel (f.e.  MAX_NR_ZONES).
Arch code already has a way to export constants calculated to the preprocessor
through the asm-offsets.c file.  Generate something similar for the core
kernel through kbuild.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Cc: Andy Whitcroft <apw@shadowen.org>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: Mel Gorman <mel@csn.ul.ie>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'Kbuild')
| -rw-r--r-- | Kbuild | 56 | 
1 files changed, 48 insertions, 8 deletions
@@ -1,19 +1,54 @@  #  # Kbuild for top-level directory of the kernel  # This file takes care of the following: -# 1) Generate asm-offsets.h -# 2) Check for missing system calls +# 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-$(SRCARCH)/asm-offsets.h -always  := $(offsets-file) -targets := $(offsets-file) +always  += $(offsets-file) +targets += $(offsets-file)  targets += arch/$(SRCARCH)/kernel/asm-offsets.s -clean-files := $(addprefix $(objtree)/,$(targets)) +  # Default sed regexp - multiline due to syntax constraints  define sed-y @@ -40,7 +75,8 @@ define cmd_offsets  endef  # We use internal kbuild rules to avoid the "is up to date" message from make -arch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/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) @@ -49,7 +85,7 @@ $(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s Kbuild  	$(call cmd,offsets)  ##### -# 2) Check for missing system calls +# 3) Check for missing system calls  #  quiet_cmd_syscalls = CALL    $< @@ -58,3 +94,7 @@ quiet_cmd_syscalls = CALL    $<  PHONY += missing-syscalls  missing-syscalls: scripts/checksyscalls.sh FORCE  	$(call cmd,syscalls) + +# Delete all targets during make clean +clean-files := $(addprefix $(objtree)/,$(targets)) +  |