diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-02 18:56:54 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-02 18:56:54 -0500 |
commit | 56635f7e6197404d7363f8dcaa7a97abf57276fb (patch) | |
tree | 510b8df93c8a595fa42c1bb65b103632c1076c58 | |
parent | a8e782348d9f0dc64f6adb81f5f6959921949f13 (diff) | |
parent | b67ff8ce122f3353bd741db48ce1756c12fb5f2d (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next
* git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next:
kbuild: ignore a few files in headers_check
kbuild: add checks for include of linux/types in userspace headers
kbuild: drop debugging leftover in tags.sh
kbuild: document environment variables
kbuild: make *config usage docs
kbuild: disable sparse warning "returning void-valued expression"
kbuild: in headers_install autoconvert asm/inline/volatile to __xxx__
kbuild: check for leaked CONFIG_ symbols to userspace
headers_check.pl: disallow extern's
kconfig: improve error messages for bad source statements
kconfig: struct property commented
kconfig: add comments to symbol flags
kconfig: explain symbol value defaults
m68k: fix recursive dependency in Kconfig
-rw-r--r-- | Documentation/kbuild/00-INDEX | 6 | ||||
-rw-r--r-- | Documentation/kbuild/kbuild.txt | 126 | ||||
-rw-r--r-- | Documentation/kbuild/kconfig.txt | 188 | ||||
-rw-r--r-- | Makefile | 3 | ||||
-rw-r--r-- | README | 32 | ||||
-rw-r--r-- | arch/m68k/Kconfig | 1 | ||||
-rw-r--r-- | scripts/headers_check.pl | 70 | ||||
-rw-r--r-- | scripts/headers_install.pl | 3 | ||||
-rw-r--r-- | scripts/kconfig/expr.h | 82 | ||||
-rw-r--r-- | scripts/kconfig/lex.zconf.c_shipped | 7 | ||||
-rw-r--r-- | scripts/kconfig/zconf.l | 7 | ||||
-rwxr-xr-x | scripts/tags.sh | 1 |
12 files changed, 476 insertions, 50 deletions
diff --git a/Documentation/kbuild/00-INDEX b/Documentation/kbuild/00-INDEX index 114644285454..e8d2b6d83a3d 100644 --- a/Documentation/kbuild/00-INDEX +++ b/Documentation/kbuild/00-INDEX | |||
@@ -1,5 +1,9 @@ | |||
1 | 00-INDEX | 1 | 00-INDEX |
2 | - this file: info on the kernel build process | 2 | - this file: info on the kernel build process |
3 | kbuild.txt | ||
4 | - developer information on kbuild | ||
5 | kconfig.txt | ||
6 | - usage help for make *config | ||
3 | kconfig-language.txt | 7 | kconfig-language.txt |
4 | - specification of Config Language, the language in Kconfig files | 8 | - specification of Config Language, the language in Kconfig files |
5 | makefiles.txt | 9 | makefiles.txt |
diff --git a/Documentation/kbuild/kbuild.txt b/Documentation/kbuild/kbuild.txt new file mode 100644 index 000000000000..51771847e816 --- /dev/null +++ b/Documentation/kbuild/kbuild.txt | |||
@@ -0,0 +1,126 @@ | |||
1 | Environment variables | ||
2 | |||
3 | KCPPFLAGS | ||
4 | -------------------------------------------------- | ||
5 | Additional options to pass when preprocessing. The preprocessing options | ||
6 | will be used in all cases where kbuild do preprocessing including | ||
7 | building C files and assembler files. | ||
8 | |||
9 | KAFLAGS | ||
10 | -------------------------------------------------- | ||
11 | Additional options to the assembler. | ||
12 | |||
13 | KCFLAGS | ||
14 | -------------------------------------------------- | ||
15 | Additional options to the C compiler. | ||
16 | |||
17 | KBUILD_VERBOSE | ||
18 | -------------------------------------------------- | ||
19 | Set the kbuild verbosity. Can be assinged same values as "V=...". | ||
20 | See make help for the full list. | ||
21 | Setting "V=..." takes precedence over KBUILD_VERBOSE. | ||
22 | |||
23 | KBUILD_EXTMOD | ||
24 | -------------------------------------------------- | ||
25 | Set the directory to look for the kernel source when building external | ||
26 | modules. | ||
27 | The directory can be specified in several ways: | ||
28 | 1) Use "M=..." on the command line | ||
29 | 2) Environmnet variable KBUILD_EXTMOD | ||
30 | 3) Environmnet variable SUBDIRS | ||
31 | The possibilities are listed in the order they take precedence. | ||
32 | Using "M=..." will always override the others. | ||
33 | |||
34 | KBUILD_OUTPUT | ||
35 | -------------------------------------------------- | ||
36 | Specify the output directory when building the kernel. | ||
37 | The output directory can also be specificed using "O=...". | ||
38 | Setting "O=..." takes precedence over KBUILD_OUTPUT | ||
39 | |||
40 | ARCH | ||
41 | -------------------------------------------------- | ||
42 | Set ARCH to the architecture to be built. | ||
43 | In most cases the name of the architecture is the same as the | ||
44 | directory name found in the arch/ directory. | ||
45 | But some architectures suach as x86 and sparc has aliases. | ||
46 | x86: i386 for 32 bit, x86_64 for 64 bit | ||
47 | sparc: sparc for 32 bit, sparc64 for 64 bit | ||
48 | |||
49 | CROSS_COMPILE | ||
50 | -------------------------------------------------- | ||
51 | Specify an optional fixed part of the binutils filename. | ||
52 | CROSS_COMPILE can be a part of the filename or the full path. | ||
53 | |||
54 | CROSS_COMPILE is also used for ccache is some setups. | ||
55 | |||
56 | CF | ||
57 | -------------------------------------------------- | ||
58 | Additional options for sparse. | ||
59 | CF is often used on the command-line like this: | ||
60 | |||
61 | make CF=-Wbitwise C=2 | ||
62 | |||
63 | INSTALL_PATH | ||
64 | -------------------------------------------------- | ||
65 | INSTALL_PATH specifies where to place the updated kernel and system map | ||
66 | images. Default is /boot, but you can set it to other values | ||
67 | |||
68 | |||
69 | MODLIB | ||
70 | -------------------------------------------------- | ||
71 | Specify where to install modules. | ||
72 | The default value is: | ||
73 | |||
74 | $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE) | ||
75 | |||
76 | The value can be overridden in which case the default value is ignored. | ||
77 | |||
78 | INSTALL_MOD_PATH | ||
79 | -------------------------------------------------- | ||
80 | INSTALL_MOD_PATH specifies a prefix to MODLIB for module directory | ||
81 | relocations required by build roots. This is not defined in the | ||
82 | makefile but the argument can be passed to make if needed. | ||
83 | |||
84 | INSTALL_MOD_STRIP | ||
85 | -------------------------------------------------- | ||
86 | INSTALL_MOD_STRIP, if defined, will cause modules to be | ||
87 | stripped after they are installed. If INSTALL_MOD_STRIP is '1', then | ||
88 | the default option --strip-debug will be used. Otherwise, | ||
89 | INSTALL_MOD_STRIP will used as the options to the strip command. | ||
90 | |||
91 | INSTALL_FW_PATH | ||
92 | -------------------------------------------------- | ||
93 | INSTALL_FW_PATH specify where to install the firmware blobs. | ||
94 | The default value is: | ||
95 | |||
96 | $(INSTALL_MOD_PATH)/lib/firmware | ||
97 | |||
98 | The value can be overridden in which case the default value is ignored. | ||
99 | |||
100 | INSTALL_HDR_PATH | ||
101 | -------------------------------------------------- | ||
102 | INSTALL_HDR_PATH specify where to install user space headers when | ||
103 | executing "make headers_*". | ||
104 | The default value is: | ||
105 | |||
106 | $(objtree)/usr | ||
107 | |||
108 | $(objtree) is the directory where output files are saved. | ||
109 | The output directory is often set using "O=..." on the commandline. | ||
110 | |||
111 | The value can be overridden in which case the default value is ignored. | ||
112 | |||
113 | KBUILD_MODPOST_WARN | ||
114 | -------------------------------------------------- | ||
115 | KBUILD_MODPOST_WARN can be set to avoid error out in case of undefined | ||
116 | symbols in the final module linking stage. | ||
117 | |||
118 | KBUILD_MODPOST_FINAL | ||
119 | -------------------------------------------------- | ||
120 | KBUILD_MODPOST_NOFINAL can be set to skip the final link of modules. | ||
121 | This is solely usefull to speed up test compiles. | ||
122 | |||
123 | KBUILD_EXTRA_SYMBOLS | ||
124 | -------------------------------------------------- | ||
125 | For modules use symbols from another modules. | ||
126 | See more details in modules.txt. | ||
diff --git a/Documentation/kbuild/kconfig.txt b/Documentation/kbuild/kconfig.txt new file mode 100644 index 000000000000..26a7c0a93193 --- /dev/null +++ b/Documentation/kbuild/kconfig.txt | |||
@@ -0,0 +1,188 @@ | |||
1 | This file contains some assistance for using "make *config". | ||
2 | |||
3 | Use "make help" to list all of the possible configuration targets. | ||
4 | |||
5 | The xconfig ('qconf') and menuconfig ('mconf') programs also | ||
6 | have embedded help text. Be sure to check it for navigation, | ||
7 | search, and other general help text. | ||
8 | |||
9 | ====================================================================== | ||
10 | General | ||
11 | -------------------------------------------------- | ||
12 | |||
13 | New kernel releases often introduce new config symbols. Often more | ||
14 | important, new kernel releases may rename config symbols. When | ||
15 | this happens, using a previously working .config file and running | ||
16 | "make oldconfig" won't necessarily produce a working new kernel | ||
17 | for you, so you may find that you need to see what NEW kernel | ||
18 | symbols have been introduced. | ||
19 | |||
20 | To see a list of new config symbols when using "make oldconfig", use | ||
21 | |||
22 | cp user/some/old.config .config | ||
23 | yes "" | make oldconfig >conf.new | ||
24 | |||
25 | and the config program will list as (NEW) any new symbols that have | ||
26 | unknown values. Of course, the .config file is also updated with | ||
27 | new (default) values, so you can use: | ||
28 | |||
29 | grep "(NEW)" conf.new | ||
30 | |||
31 | to see the new config symbols or you can 'diff' the previous and | ||
32 | new .config files to see the differences: | ||
33 | |||
34 | diff .config.old .config | less | ||
35 | |||
36 | (Yes, we need something better here.) | ||
37 | |||
38 | |||
39 | ====================================================================== | ||
40 | menuconfig | ||
41 | -------------------------------------------------- | ||
42 | |||
43 | SEARCHING for CONFIG symbols | ||
44 | |||
45 | Searching in menuconfig: | ||
46 | |||
47 | The Search function searches for kernel configuration symbol | ||
48 | names, so you have to know something close to what you are | ||
49 | looking for. | ||
50 | |||
51 | Example: | ||
52 | /hotplug | ||
53 | This lists all config symbols that contain "hotplug", | ||
54 | e.g., HOTPLUG, HOTPLUG_CPU, MEMORY_HOTPLUG. | ||
55 | |||
56 | For search help, enter / followed TAB-TAB-TAB (to highlight | ||
57 | <Help>) and Enter. This will tell you that you can also use | ||
58 | regular expressions (regexes) in the search string, so if you | ||
59 | are not interested in MEMORY_HOTPLUG, you could try | ||
60 | |||
61 | /^hotplug | ||
62 | |||
63 | |||
64 | ______________________________________________________________________ | ||
65 | Color Themes for 'menuconfig' | ||
66 | |||
67 | It is possible to select different color themes using the variable | ||
68 | MENUCONFIG_COLOR. To select a theme use: | ||
69 | |||
70 | make MENUCONFIG_COLOR=<theme> menuconfig | ||
71 | |||
72 | Available themes are: | ||
73 | mono => selects colors suitable for monochrome displays | ||
74 | blackbg => selects a color scheme with black background | ||
75 | classic => theme with blue background. The classic look | ||
76 | bluetitle => a LCD friendly version of classic. (default) | ||
77 | |||
78 | ______________________________________________________________________ | ||
79 | Environment variables in 'menuconfig' | ||
80 | |||
81 | KCONFIG_ALLCONFIG | ||
82 | -------------------------------------------------- | ||
83 | (partially based on lkml email from/by Rob Landley, re: miniconfig) | ||
84 | -------------------------------------------------- | ||
85 | The allyesconfig/allmodconfig/allnoconfig/randconfig variants can | ||
86 | also use the environment variable KCONFIG_ALLCONFIG as a flag or a | ||
87 | filename that contains config symbols that the user requires to be | ||
88 | set to a specific value. If KCONFIG_ALLCONFIG is used without a | ||
89 | filename, "make *config" checks for a file named | ||
90 | "all{yes/mod/no/random}.config" (corresponding to the *config command | ||
91 | that was used) for symbol values that are to be forced. If this file | ||
92 | is not found, it checks for a file named "all.config" to contain forced | ||
93 | values. | ||
94 | |||
95 | This enables you to create "miniature" config (miniconfig) or custom | ||
96 | config files containing just the config symbols that you are interested | ||
97 | in. Then the kernel config system generates the full .config file, | ||
98 | including dependencies of your miniconfig file, based on the miniconfig | ||
99 | file. | ||
100 | |||
101 | This 'KCONFIG_ALLCONFIG' file is a config file which contains | ||
102 | (usually a subset of all) preset config symbols. These variable | ||
103 | settings are still subject to normal dependency checks. | ||
104 | |||
105 | Examples: | ||
106 | KCONFIG_ALLCONFIG=custom-notebook.config make allnoconfig | ||
107 | or | ||
108 | KCONFIG_ALLCONFIG=mini.config make allnoconfig | ||
109 | or | ||
110 | make KCONFIG_ALLCONFIG=mini.config allnoconfig | ||
111 | |||
112 | These examples will disable most options (allnoconfig) but enable or | ||
113 | disable the options that are explicitly listed in the specified | ||
114 | mini-config files. | ||
115 | |||
116 | KCONFIG_NOSILENTUPDATE | ||
117 | -------------------------------------------------- | ||
118 | If this variable has a non-blank value, it prevents silent kernel | ||
119 | config udpates (requires explicit updates). | ||
120 | |||
121 | KCONFIG_CONFIG | ||
122 | -------------------------------------------------- | ||
123 | This environment variable can be used to specify a default kernel config | ||
124 | file name to override the default name of ".config". | ||
125 | |||
126 | KCONFIG_OVERWRITECONFIG | ||
127 | -------------------------------------------------- | ||
128 | If you set KCONFIG_OVERWRITECONFIG in the environment, Kconfig will not | ||
129 | break symlinks when .config is a symlink to somewhere else. | ||
130 | |||
131 | KCONFIG_NOTIMESTAMP | ||
132 | -------------------------------------------------- | ||
133 | If this environment variable exists and is non-null, the timestamp line | ||
134 | in generated .config files is omitted. | ||
135 | |||
136 | KCONFIG_AUTOCONFIG | ||
137 | -------------------------------------------------- | ||
138 | This environment variable can be set to specify the path & name of the | ||
139 | "auto.conf" file. Its default value is "include/config/auto.conf". | ||
140 | |||
141 | KCONFIG_AUTOHEADER | ||
142 | -------------------------------------------------- | ||
143 | This environment variable can be set to specify the path & name of the | ||
144 | "autoconf.h" (header) file. Its default value is "include/linux/autoconf.h". | ||
145 | |||
146 | ______________________________________________________________________ | ||
147 | menuconfig User Interface Options | ||
148 | ---------------------------------------------------------------------- | ||
149 | MENUCONFIG_MODE | ||
150 | -------------------------------------------------- | ||
151 | This mode shows all sub-menus in one large tree. | ||
152 | |||
153 | Example: | ||
154 | MENUCONFIG_MODE=single_menu make menuconfig | ||
155 | |||
156 | ====================================================================== | ||
157 | xconfig | ||
158 | -------------------------------------------------- | ||
159 | |||
160 | Searching in xconfig: | ||
161 | |||
162 | The Search function searches for kernel configuration symbol | ||
163 | names, so you have to know something close to what you are | ||
164 | looking for. | ||
165 | |||
166 | Example: | ||
167 | Ctrl-F hotplug | ||
168 | or | ||
169 | Menu: File, Search, hotplug | ||
170 | |||
171 | lists all config symbol entries that contain "hotplug" in | ||
172 | the symbol name. In this Search dialog, you may change the | ||
173 | config setting for any of the entries that are not grayed out. | ||
174 | You can also enter a different search string without having | ||
175 | to return to the main menu. | ||
176 | |||
177 | |||
178 | ====================================================================== | ||
179 | gconfig | ||
180 | -------------------------------------------------- | ||
181 | |||
182 | Searching in gconfig: | ||
183 | |||
184 | None (gconfig isn't maintained as well as xconfig or menuconfig); | ||
185 | however, gconfig does have a few more viewing choices than | ||
186 | xconfig does. | ||
187 | |||
188 | ### | ||
@@ -321,7 +321,8 @@ KALLSYMS = scripts/kallsyms | |||
321 | PERL = perl | 321 | PERL = perl |
322 | CHECK = sparse | 322 | CHECK = sparse |
323 | 323 | ||
324 | CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ -Wbitwise $(CF) | 324 | CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ |
325 | -Wbitwise -Wno-return-void $(CF) | ||
325 | MODFLAGS = -DMODULE | 326 | MODFLAGS = -DMODULE |
326 | CFLAGS_MODULE = $(MODFLAGS) | 327 | CFLAGS_MODULE = $(MODFLAGS) |
327 | AFLAGS_MODULE = $(MODFLAGS) | 328 | AFLAGS_MODULE = $(MODFLAGS) |
@@ -52,11 +52,11 @@ DOCUMENTATION: | |||
52 | 52 | ||
53 | - The Documentation/DocBook/ subdirectory contains several guides for | 53 | - The Documentation/DocBook/ subdirectory contains several guides for |
54 | kernel developers and users. These guides can be rendered in a | 54 | kernel developers and users. These guides can be rendered in a |
55 | number of formats: PostScript (.ps), PDF, and HTML, among others. | 55 | number of formats: PostScript (.ps), PDF, HTML, & man-pages, among others. |
56 | After installation, "make psdocs", "make pdfdocs", or "make htmldocs" | 56 | After installation, "make psdocs", "make pdfdocs", "make htmldocs", |
57 | will render the documentation in the requested format. | 57 | or "make mandocs" will render the documentation in the requested format. |
58 | 58 | ||
59 | INSTALLING the kernel: | 59 | INSTALLING the kernel source: |
60 | 60 | ||
61 | - If you install the full sources, put the kernel tarball in a | 61 | - If you install the full sources, put the kernel tarball in a |
62 | directory where you have permissions (eg. your home directory) and | 62 | directory where you have permissions (eg. your home directory) and |
@@ -187,14 +187,9 @@ CONFIGURING the kernel: | |||
187 | "make randconfig" Create a ./.config file by setting symbol | 187 | "make randconfig" Create a ./.config file by setting symbol |
188 | values to random values. | 188 | values to random values. |
189 | 189 | ||
190 | The allyesconfig/allmodconfig/allnoconfig/randconfig variants can | 190 | You can find more information on using the Linux kernel config tools |
191 | also use the environment variable KCONFIG_ALLCONFIG to specify a | 191 | in Documentation/kbuild/make-configs.txt. |
192 | filename that contains config options that the user requires to be | 192 | |
193 | set to a specific value. If KCONFIG_ALLCONFIG=filename is not used, | ||
194 | "make *config" checks for a file named "all{yes/mod/no/random}.config" | ||
195 | for symbol values that are to be forced. If this file is not found, | ||
196 | it checks for a file named "all.config" to contain forced values. | ||
197 | |||
198 | NOTES on "make config": | 193 | NOTES on "make config": |
199 | - having unnecessary drivers will make the kernel bigger, and can | 194 | - having unnecessary drivers will make the kernel bigger, and can |
200 | under some circumstances lead to problems: probing for a | 195 | under some circumstances lead to problems: probing for a |
@@ -231,6 +226,19 @@ COMPILING the kernel: | |||
231 | - If you configured any of the parts of the kernel as `modules', you | 226 | - If you configured any of the parts of the kernel as `modules', you |
232 | will also have to do "make modules_install". | 227 | will also have to do "make modules_install". |
233 | 228 | ||
229 | - Verbose kernel compile/build output: | ||
230 | |||
231 | Normally the kernel build system runs in a fairly quiet mode (but not | ||
232 | totally silent). However, sometimes you or other kernel developers need | ||
233 | to see compile, link, or other commands exactly as they are executed. | ||
234 | For this, use "verbose" build mode. This is done by inserting | ||
235 | "V=1" in the "make" command. E.g.: | ||
236 | |||
237 | make V=1 all | ||
238 | |||
239 | To have the build system also tell the reason for the rebuild of each | ||
240 | target, use "V=2". The default is "V=0". | ||
241 | |||
234 | - Keep a backup kernel handy in case something goes wrong. This is | 242 | - Keep a backup kernel handy in case something goes wrong. This is |
235 | especially true for the development releases, since each new release | 243 | especially true for the development releases, since each new release |
236 | contains new code which has not been debugged. Make sure you keep a | 244 | contains new code which has not been debugged. Make sure you keep a |
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig index 836fb66f080d..c825bde17cb3 100644 --- a/arch/m68k/Kconfig +++ b/arch/m68k/Kconfig | |||
@@ -280,7 +280,6 @@ config M68060 | |||
280 | 280 | ||
281 | config MMU_MOTOROLA | 281 | config MMU_MOTOROLA |
282 | bool | 282 | bool |
283 | depends on MMU && !MMU_SUN3 | ||
284 | 283 | ||
285 | config MMU_SUN3 | 284 | config MMU_SUN3 |
286 | bool | 285 | bool |
diff --git a/scripts/headers_check.pl b/scripts/headers_check.pl index 488a3b1f760f..db30fac3083e 100644 --- a/scripts/headers_check.pl +++ b/scripts/headers_check.pl | |||
@@ -14,7 +14,9 @@ | |||
14 | # Only include files located in asm* and linux* are checked. | 14 | # Only include files located in asm* and linux* are checked. |
15 | # The rest are assumed to be system include files. | 15 | # The rest are assumed to be system include files. |
16 | # | 16 | # |
17 | # 2) TODO: check for leaked CONFIG_ symbols | 17 | # 2) It is checked that prototypes does not use "extern" |
18 | # | ||
19 | # 3) Check for leaked CONFIG_ symbols | ||
18 | 20 | ||
19 | use strict; | 21 | use strict; |
20 | 22 | ||
@@ -32,7 +34,11 @@ foreach my $file (@files) { | |||
32 | $lineno = 0; | 34 | $lineno = 0; |
33 | while ($line = <FH>) { | 35 | while ($line = <FH>) { |
34 | $lineno++; | 36 | $lineno++; |
35 | check_include(); | 37 | &check_include(); |
38 | &check_asm_types(); | ||
39 | &check_sizetypes(); | ||
40 | &check_prototypes(); | ||
41 | &check_config(); | ||
36 | } | 42 | } |
37 | close FH; | 43 | close FH; |
38 | } | 44 | } |
@@ -54,3 +60,63 @@ sub check_include | |||
54 | } | 60 | } |
55 | } | 61 | } |
56 | } | 62 | } |
63 | |||
64 | sub check_prototypes | ||
65 | { | ||
66 | if ($line =~ m/^\s*extern\b/) { | ||
67 | printf STDERR "$filename:$lineno: extern's make no sense in userspace\n"; | ||
68 | } | ||
69 | } | ||
70 | |||
71 | sub check_config | ||
72 | { | ||
73 | if ($line =~ m/[^a-zA-Z0-9_]+CONFIG_([a-zA-Z0-9]+)[^a-zA-Z0-9]/) { | ||
74 | printf STDERR "$filename:$lineno: leaks CONFIG_$1 to userspace where it is not valid\n"; | ||
75 | } | ||
76 | } | ||
77 | |||
78 | my $linux_asm_types; | ||
79 | sub check_asm_types() | ||
80 | { | ||
81 | if ($filename =~ /types.h|int-l64.h|int-ll64.h/o) { | ||
82 | return; | ||
83 | } | ||
84 | if ($lineno == 1) { | ||
85 | $linux_asm_types = 0; | ||
86 | } elsif ($linux_asm_types >= 1) { | ||
87 | return; | ||
88 | } | ||
89 | if ($line =~ m/^\s*#\s*include\s+<asm\/types.h>/) { | ||
90 | $linux_asm_types = 1; | ||
91 | printf STDERR "$filename:$lineno: " . | ||
92 | "include of <linux/types.h> is preferred over <asm/types.h>\n" | ||
93 | # Warn until headers are all fixed | ||
94 | #$ret = 1; | ||
95 | } | ||
96 | } | ||
97 | |||
98 | my $linux_types; | ||
99 | sub check_sizetypes | ||
100 | { | ||
101 | if ($filename =~ /types.h|int-l64.h|int-ll64.h/o) { | ||
102 | return; | ||
103 | } | ||
104 | if ($lineno == 1) { | ||
105 | $linux_types = 0; | ||
106 | } elsif ($linux_types >= 1) { | ||
107 | return; | ||
108 | } | ||
109 | if ($line =~ m/^\s*#\s*include\s+<linux\/types.h>/) { | ||
110 | $linux_types = 1; | ||
111 | return; | ||
112 | } | ||
113 | if ($line =~ m/__[us](8|16|32|64)\b/) { | ||
114 | printf STDERR "$filename:$lineno: " . | ||
115 | "found __[us]{8,16,32,64} type " . | ||
116 | "without #include <linux/types.h>\n"; | ||
117 | $linux_types = 2; | ||
118 | # Warn until headers are all fixed | ||
119 | #$ret = 1; | ||
120 | } | ||
121 | } | ||
122 | |||
diff --git a/scripts/headers_install.pl b/scripts/headers_install.pl index 7d2b4146e02f..c6ae4052ab43 100644 --- a/scripts/headers_install.pl +++ b/scripts/headers_install.pl | |||
@@ -36,6 +36,9 @@ foreach my $file (@files) { | |||
36 | $line =~ s/\s__attribute_const__\s/ /g; | 36 | $line =~ s/\s__attribute_const__\s/ /g; |
37 | $line =~ s/\s__attribute_const__$//g; | 37 | $line =~ s/\s__attribute_const__$//g; |
38 | $line =~ s/^#include <linux\/compiler.h>//; | 38 | $line =~ s/^#include <linux\/compiler.h>//; |
39 | $line =~ s/(^|\s)(inline)\b/$1__$2__/g; | ||
40 | $line =~ s/(^|\s)(asm)\b(\s|[(]|$)/$1__$2__$3/g; | ||
41 | $line =~ s/(^|\s|[(])(volatile)\b(\s|[(]|$)/$1__$2__$3/g; | ||
39 | printf OUTFILE "%s", $line; | 42 | printf OUTFILE "%s", $line; |
40 | } | 43 | } |
41 | close OUTFILE; | 44 | close OUTFILE; |
diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h index 9d4cba1c001d..6408fefae083 100644 --- a/scripts/kconfig/expr.h +++ b/scripts/kconfig/expr.h | |||
@@ -65,9 +65,13 @@ enum symbol_type { | |||
65 | S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER | 65 | S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER |
66 | }; | 66 | }; |
67 | 67 | ||
68 | /* enum values are used as index to symbol.def[] */ | ||
68 | enum { | 69 | enum { |
69 | S_DEF_USER, /* main user value */ | 70 | S_DEF_USER, /* main user value */ |
70 | S_DEF_AUTO, | 71 | S_DEF_AUTO, /* values read from auto.conf */ |
72 | S_DEF_DEF3, /* Reserved for UI usage */ | ||
73 | S_DEF_DEF4, /* Reserved for UI usage */ | ||
74 | S_DEF_COUNT | ||
71 | }; | 75 | }; |
72 | 76 | ||
73 | struct symbol { | 77 | struct symbol { |
@@ -75,7 +79,7 @@ struct symbol { | |||
75 | char *name; | 79 | char *name; |
76 | enum symbol_type type; | 80 | enum symbol_type type; |
77 | struct symbol_value curr; | 81 | struct symbol_value curr; |
78 | struct symbol_value def[4]; | 82 | struct symbol_value def[S_DEF_COUNT]; |
79 | tristate visible; | 83 | tristate visible; |
80 | int flags; | 84 | int flags; |
81 | struct property *prop; | 85 | struct property *prop; |
@@ -84,42 +88,64 @@ struct symbol { | |||
84 | 88 | ||
85 | #define for_all_symbols(i, sym) for (i = 0; i < 257; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER) | 89 | #define for_all_symbols(i, sym) for (i = 0; i < 257; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER) |
86 | 90 | ||
87 | #define SYMBOL_CONST 0x0001 | 91 | #define SYMBOL_CONST 0x0001 /* symbol is const */ |
88 | #define SYMBOL_CHECK 0x0008 | 92 | #define SYMBOL_CHECK 0x0008 /* used during dependency checking */ |
89 | #define SYMBOL_CHOICE 0x0010 | 93 | #define SYMBOL_CHOICE 0x0010 /* start of a choice block (null name) */ |
90 | #define SYMBOL_CHOICEVAL 0x0020 | 94 | #define SYMBOL_CHOICEVAL 0x0020 /* used as a value in a choice block */ |
91 | #define SYMBOL_VALID 0x0080 | 95 | #define SYMBOL_VALID 0x0080 /* set when symbol.curr is calculated */ |
92 | #define SYMBOL_OPTIONAL 0x0100 | 96 | #define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */ |
93 | #define SYMBOL_WRITE 0x0200 | 97 | #define SYMBOL_WRITE 0x0200 /* ? */ |
94 | #define SYMBOL_CHANGED 0x0400 | 98 | #define SYMBOL_CHANGED 0x0400 /* ? */ |
95 | #define SYMBOL_AUTO 0x1000 | 99 | #define SYMBOL_AUTO 0x1000 /* value from environment variable */ |
96 | #define SYMBOL_CHECKED 0x2000 | 100 | #define SYMBOL_CHECKED 0x2000 /* used during dependency checking */ |
97 | #define SYMBOL_WARNED 0x8000 | 101 | #define SYMBOL_WARNED 0x8000 /* warning has been issued */ |
98 | #define SYMBOL_DEF 0x10000 | 102 | |
99 | #define SYMBOL_DEF_USER 0x10000 | 103 | /* Set when symbol.def[] is used */ |
100 | #define SYMBOL_DEF_AUTO 0x20000 | 104 | #define SYMBOL_DEF 0x10000 /* First bit of SYMBOL_DEF */ |
101 | #define SYMBOL_DEF3 0x40000 | 105 | #define SYMBOL_DEF_USER 0x10000 /* symbol.def[S_DEF_USER] is valid */ |
102 | #define SYMBOL_DEF4 0x80000 | 106 | #define SYMBOL_DEF_AUTO 0x20000 /* symbol.def[S_DEF_AUTO] is valid */ |
107 | #define SYMBOL_DEF3 0x40000 /* symbol.def[S_DEF_3] is valid */ | ||
108 | #define SYMBOL_DEF4 0x80000 /* symbol.def[S_DEF_4] is valid */ | ||
103 | 109 | ||
104 | #define SYMBOL_MAXLENGTH 256 | 110 | #define SYMBOL_MAXLENGTH 256 |
105 | #define SYMBOL_HASHSIZE 257 | 111 | #define SYMBOL_HASHSIZE 257 |
106 | #define SYMBOL_HASHMASK 0xff | 112 | #define SYMBOL_HASHMASK 0xff |
107 | 113 | ||
114 | /* A property represent the config options that can be associated | ||
115 | * with a config "symbol". | ||
116 | * Sample: | ||
117 | * config FOO | ||
118 | * default y | ||
119 | * prompt "foo prompt" | ||
120 | * select BAR | ||
121 | * config BAZ | ||
122 | * int "BAZ Value" | ||
123 | * range 1..255 | ||
124 | */ | ||
108 | enum prop_type { | 125 | enum prop_type { |
109 | P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, | 126 | P_UNKNOWN, |
110 | P_SELECT, P_RANGE, P_ENV | 127 | P_PROMPT, /* prompt "foo prompt" or "BAZ Value" */ |
128 | P_COMMENT, /* text associated with a comment */ | ||
129 | P_MENU, /* prompt associated with a menuconfig option */ | ||
130 | P_DEFAULT, /* default y */ | ||
131 | P_CHOICE, /* choice value */ | ||
132 | P_SELECT, /* select BAR */ | ||
133 | P_RANGE, /* range 7..100 (for a symbol) */ | ||
134 | P_ENV, /* value from environment variable */ | ||
111 | }; | 135 | }; |
112 | 136 | ||
113 | struct property { | 137 | struct property { |
114 | struct property *next; | 138 | struct property *next; /* next property - null if last */ |
115 | struct symbol *sym; | 139 | struct symbol *sym; /* the symbol for which the property is associated */ |
116 | enum prop_type type; | 140 | enum prop_type type; /* type of property */ |
117 | const char *text; | 141 | const char *text; /* the prompt value - P_PROMPT, P_MENU, P_COMMENT */ |
118 | struct expr_value visible; | 142 | struct expr_value visible; |
119 | struct expr *expr; | 143 | struct expr *expr; /* the optional conditional part of the property */ |
120 | struct menu *menu; | 144 | struct menu *menu; /* the menu the property are associated with |
121 | struct file *file; | 145 | * valid for: P_SELECT, P_RANGE, P_CHOICE, |
122 | int lineno; | 146 | * P_PROMPT, P_DEFAULT, P_MENU, P_COMMENT */ |
147 | struct file *file; /* what file was this property defined */ | ||
148 | int lineno; /* what lineno was this property defined */ | ||
123 | }; | 149 | }; |
124 | 150 | ||
125 | #define for_all_properties(sym, st, tok) \ | 151 | #define for_all_properties(sym, st, tok) \ |
diff --git a/scripts/kconfig/lex.zconf.c_shipped b/scripts/kconfig/lex.zconf.c_shipped index 7342ce0a7780..dc3e81807d13 100644 --- a/scripts/kconfig/lex.zconf.c_shipped +++ b/scripts/kconfig/lex.zconf.c_shipped | |||
@@ -2370,11 +2370,14 @@ void zconf_nextfile(const char *name) | |||
2370 | current_buf = buf; | 2370 | current_buf = buf; |
2371 | 2371 | ||
2372 | if (file->flags & FILE_BUSY) { | 2372 | if (file->flags & FILE_BUSY) { |
2373 | printf("recursive scan (%s)?\n", name); | 2373 | printf("%s:%d: do not source '%s' from itself\n", |
2374 | zconf_curname(), zconf_lineno(), name); | ||
2374 | exit(1); | 2375 | exit(1); |
2375 | } | 2376 | } |
2376 | if (file->flags & FILE_SCANNED) { | 2377 | if (file->flags & FILE_SCANNED) { |
2377 | printf("file %s already scanned?\n", name); | 2378 | printf("%s:%d: file '%s' is already sourced from '%s'\n", |
2379 | zconf_curname(), zconf_lineno(), name, | ||
2380 | file->parent->name); | ||
2378 | exit(1); | 2381 | exit(1); |
2379 | } | 2382 | } |
2380 | file->flags |= FILE_BUSY; | 2383 | file->flags |= FILE_BUSY; |
diff --git a/scripts/kconfig/zconf.l b/scripts/kconfig/zconf.l index 5164ef7ce499..21ff69c9ad4e 100644 --- a/scripts/kconfig/zconf.l +++ b/scripts/kconfig/zconf.l | |||
@@ -314,11 +314,14 @@ void zconf_nextfile(const char *name) | |||
314 | current_buf = buf; | 314 | current_buf = buf; |
315 | 315 | ||
316 | if (file->flags & FILE_BUSY) { | 316 | if (file->flags & FILE_BUSY) { |
317 | printf("recursive scan (%s)?\n", name); | 317 | printf("%s:%d: do not source '%s' from itself\n", |
318 | zconf_curname(), zconf_lineno(), name); | ||
318 | exit(1); | 319 | exit(1); |
319 | } | 320 | } |
320 | if (file->flags & FILE_SCANNED) { | 321 | if (file->flags & FILE_SCANNED) { |
321 | printf("file %s already scanned?\n", name); | 322 | printf("%s:%d: file '%s' is already sourced from '%s'\n", |
323 | zconf_curname(), zconf_lineno(), name, | ||
324 | file->parent->name); | ||
322 | exit(1); | 325 | exit(1); |
323 | } | 326 | } |
324 | file->flags |= FILE_BUSY; | 327 | file->flags |= FILE_BUSY; |
diff --git a/scripts/tags.sh b/scripts/tags.sh index 4e7547209852..9e3451d2c3a1 100755 --- a/scripts/tags.sh +++ b/scripts/tags.sh | |||
@@ -84,7 +84,6 @@ docscope() | |||
84 | 84 | ||
85 | exuberant() | 85 | exuberant() |
86 | { | 86 | { |
87 | all_sources > all | ||
88 | all_sources | xargs $1 -a \ | 87 | all_sources | xargs $1 -a \ |
89 | -I __initdata,__exitdata,__acquires,__releases \ | 88 | -I __initdata,__exitdata,__acquires,__releases \ |
90 | -I __read_mostly,____cacheline_aligned \ | 89 | -I __read_mostly,____cacheline_aligned \ |