aboutsummaryrefslogtreecommitdiffstats
path: root/Kbuild
diff options
context:
space:
mode:
authorChristoph Lameter2008-04-28 04:12:44 -0500
committerLinus Torvalds2008-04-28 10:58:21 -0500
commit1cdf25d704f7951d02a04064c97db547d6021872 (patch)
tree2571b70c1d95ea66086500b362a0f7fe2999acbc /Kbuild
parent308c05e35e3517d19bb67a7e97772235c9e15cd7 (diff)
downloadkernel-omap-1cdf25d704f7951d02a04064c97db547d6021872.tar.gz
kernel-omap-1cdf25d704f7951d02a04064c97db547d6021872.tar.xz
kernel-omap-1cdf25d704f7951d02a04064c97db547d6021872.zip
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--Kbuild56
1 files changed, 48 insertions, 8 deletions
diff --git a/Kbuild b/Kbuild
index 1570d248ad92..7136de7b6fcb 100644
--- a/Kbuild
+++ b/Kbuild
@@ -1,19 +1,54 @@
1# 1#
2# Kbuild for top-level directory of the kernel 2# Kbuild for top-level directory of the kernel
3# This file takes care of the following: 3# This file takes care of the following:
4# 1) Generate asm-offsets.h 4# 1) Generate bounds.h
5# 2) Check for missing system calls 5# 2) Generate asm-offsets.h (may need bounds.h)
6# 3) Check for missing system calls
6 7
7##### 8#####
8# 1) Generate asm-offsets.h 9# 1) Generate bounds.h
10
11bounds-file := include/linux/bounds.h
12
13always := $(bounds-file)
14targets := $(bounds-file) kernel/bounds.s
15
16quiet_cmd_bounds = GEN $@
17define cmd_bounds
18 (set -e; \
19 echo "#ifndef __LINUX_BOUNDS_H__"; \
20 echo "#define __LINUX_BOUNDS_H__"; \
21 echo "/*"; \
22 echo " * DO NOT MODIFY."; \
23 echo " *"; \
24 echo " * This file was generated by Kbuild"; \
25 echo " *"; \
26 echo " */"; \
27 echo ""; \
28 sed -ne $(sed-y) $<; \
29 echo ""; \
30 echo "#endif" ) > $@
31endef
32
33# We use internal kbuild rules to avoid the "is up to date" message from make
34kernel/bounds.s: kernel/bounds.c FORCE
35 $(Q)mkdir -p $(dir $@)
36 $(call if_changed_dep,cc_s_c)
37
38$(obj)/$(bounds-file): kernel/bounds.s Kbuild
39 $(Q)mkdir -p $(dir $@)
40 $(call cmd,bounds)
41
42#####
43# 2) Generate asm-offsets.h
9# 44#
10 45
11offsets-file := include/asm-$(SRCARCH)/asm-offsets.h 46offsets-file := include/asm-$(SRCARCH)/asm-offsets.h
12 47
13always := $(offsets-file) 48always += $(offsets-file)
14targets := $(offsets-file) 49targets += $(offsets-file)
15targets += arch/$(SRCARCH)/kernel/asm-offsets.s 50targets += arch/$(SRCARCH)/kernel/asm-offsets.s
16clean-files := $(addprefix $(objtree)/,$(targets)) 51
17 52
18# Default sed regexp - multiline due to syntax constraints 53# Default sed regexp - multiline due to syntax constraints
19define sed-y 54define sed-y
@@ -40,7 +75,8 @@ define cmd_offsets
40endef 75endef
41 76
42# We use internal kbuild rules to avoid the "is up to date" message from make 77# We use internal kbuild rules to avoid the "is up to date" message from make
43arch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c FORCE 78arch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c \
79 $(obj)/$(bounds-file) FORCE
44 $(Q)mkdir -p $(dir $@) 80 $(Q)mkdir -p $(dir $@)
45 $(call if_changed_dep,cc_s_c) 81 $(call if_changed_dep,cc_s_c)
46 82
@@ -49,7 +85,7 @@ $(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s Kbuild
49 $(call cmd,offsets) 85 $(call cmd,offsets)
50 86
51##### 87#####
52# 2) Check for missing system calls 88# 3) Check for missing system calls
53# 89#
54 90
55quiet_cmd_syscalls = CALL $< 91quiet_cmd_syscalls = CALL $<
@@ -58,3 +94,7 @@ quiet_cmd_syscalls = CALL $<
58PHONY += missing-syscalls 94PHONY += missing-syscalls
59missing-syscalls: scripts/checksyscalls.sh FORCE 95missing-syscalls: scripts/checksyscalls.sh FORCE
60 $(call cmd,syscalls) 96 $(call cmd,syscalls)
97
98# Delete all targets during make clean
99clean-files := $(addprefix $(objtree)/,$(targets))
100