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
This commit is contained in:
commit
56635f7e61
@ -1,5 +1,9 @@
|
|||||||
00-INDEX
|
00-INDEX
|
||||||
- this file: info on the kernel build process
|
- this file: info on the kernel build process
|
||||||
|
kbuild.txt
|
||||||
|
- developer information on kbuild
|
||||||
|
kconfig.txt
|
||||||
|
- usage help for make *config
|
||||||
kconfig-language.txt
|
kconfig-language.txt
|
||||||
- specification of Config Language, the language in Kconfig files
|
- specification of Config Language, the language in Kconfig files
|
||||||
makefiles.txt
|
makefiles.txt
|
||||||
|
126
Documentation/kbuild/kbuild.txt
Normal file
126
Documentation/kbuild/kbuild.txt
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
Environment variables
|
||||||
|
|
||||||
|
KCPPFLAGS
|
||||||
|
--------------------------------------------------
|
||||||
|
Additional options to pass when preprocessing. The preprocessing options
|
||||||
|
will be used in all cases where kbuild do preprocessing including
|
||||||
|
building C files and assembler files.
|
||||||
|
|
||||||
|
KAFLAGS
|
||||||
|
--------------------------------------------------
|
||||||
|
Additional options to the assembler.
|
||||||
|
|
||||||
|
KCFLAGS
|
||||||
|
--------------------------------------------------
|
||||||
|
Additional options to the C compiler.
|
||||||
|
|
||||||
|
KBUILD_VERBOSE
|
||||||
|
--------------------------------------------------
|
||||||
|
Set the kbuild verbosity. Can be assinged same values as "V=...".
|
||||||
|
See make help for the full list.
|
||||||
|
Setting "V=..." takes precedence over KBUILD_VERBOSE.
|
||||||
|
|
||||||
|
KBUILD_EXTMOD
|
||||||
|
--------------------------------------------------
|
||||||
|
Set the directory to look for the kernel source when building external
|
||||||
|
modules.
|
||||||
|
The directory can be specified in several ways:
|
||||||
|
1) Use "M=..." on the command line
|
||||||
|
2) Environmnet variable KBUILD_EXTMOD
|
||||||
|
3) Environmnet variable SUBDIRS
|
||||||
|
The possibilities are listed in the order they take precedence.
|
||||||
|
Using "M=..." will always override the others.
|
||||||
|
|
||||||
|
KBUILD_OUTPUT
|
||||||
|
--------------------------------------------------
|
||||||
|
Specify the output directory when building the kernel.
|
||||||
|
The output directory can also be specificed using "O=...".
|
||||||
|
Setting "O=..." takes precedence over KBUILD_OUTPUT
|
||||||
|
|
||||||
|
ARCH
|
||||||
|
--------------------------------------------------
|
||||||
|
Set ARCH to the architecture to be built.
|
||||||
|
In most cases the name of the architecture is the same as the
|
||||||
|
directory name found in the arch/ directory.
|
||||||
|
But some architectures suach as x86 and sparc has aliases.
|
||||||
|
x86: i386 for 32 bit, x86_64 for 64 bit
|
||||||
|
sparc: sparc for 32 bit, sparc64 for 64 bit
|
||||||
|
|
||||||
|
CROSS_COMPILE
|
||||||
|
--------------------------------------------------
|
||||||
|
Specify an optional fixed part of the binutils filename.
|
||||||
|
CROSS_COMPILE can be a part of the filename or the full path.
|
||||||
|
|
||||||
|
CROSS_COMPILE is also used for ccache is some setups.
|
||||||
|
|
||||||
|
CF
|
||||||
|
--------------------------------------------------
|
||||||
|
Additional options for sparse.
|
||||||
|
CF is often used on the command-line like this:
|
||||||
|
|
||||||
|
make CF=-Wbitwise C=2
|
||||||
|
|
||||||
|
INSTALL_PATH
|
||||||
|
--------------------------------------------------
|
||||||
|
INSTALL_PATH specifies where to place the updated kernel and system map
|
||||||
|
images. Default is /boot, but you can set it to other values
|
||||||
|
|
||||||
|
|
||||||
|
MODLIB
|
||||||
|
--------------------------------------------------
|
||||||
|
Specify where to install modules.
|
||||||
|
The default value is:
|
||||||
|
|
||||||
|
$(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
|
||||||
|
|
||||||
|
The value can be overridden in which case the default value is ignored.
|
||||||
|
|
||||||
|
INSTALL_MOD_PATH
|
||||||
|
--------------------------------------------------
|
||||||
|
INSTALL_MOD_PATH specifies a prefix to MODLIB for module directory
|
||||||
|
relocations required by build roots. This is not defined in the
|
||||||
|
makefile but the argument can be passed to make if needed.
|
||||||
|
|
||||||
|
INSTALL_MOD_STRIP
|
||||||
|
--------------------------------------------------
|
||||||
|
INSTALL_MOD_STRIP, if defined, will cause modules to be
|
||||||
|
stripped after they are installed. If INSTALL_MOD_STRIP is '1', then
|
||||||
|
the default option --strip-debug will be used. Otherwise,
|
||||||
|
INSTALL_MOD_STRIP will used as the options to the strip command.
|
||||||
|
|
||||||
|
INSTALL_FW_PATH
|
||||||
|
--------------------------------------------------
|
||||||
|
INSTALL_FW_PATH specify where to install the firmware blobs.
|
||||||
|
The default value is:
|
||||||
|
|
||||||
|
$(INSTALL_MOD_PATH)/lib/firmware
|
||||||
|
|
||||||
|
The value can be overridden in which case the default value is ignored.
|
||||||
|
|
||||||
|
INSTALL_HDR_PATH
|
||||||
|
--------------------------------------------------
|
||||||
|
INSTALL_HDR_PATH specify where to install user space headers when
|
||||||
|
executing "make headers_*".
|
||||||
|
The default value is:
|
||||||
|
|
||||||
|
$(objtree)/usr
|
||||||
|
|
||||||
|
$(objtree) is the directory where output files are saved.
|
||||||
|
The output directory is often set using "O=..." on the commandline.
|
||||||
|
|
||||||
|
The value can be overridden in which case the default value is ignored.
|
||||||
|
|
||||||
|
KBUILD_MODPOST_WARN
|
||||||
|
--------------------------------------------------
|
||||||
|
KBUILD_MODPOST_WARN can be set to avoid error out in case of undefined
|
||||||
|
symbols in the final module linking stage.
|
||||||
|
|
||||||
|
KBUILD_MODPOST_FINAL
|
||||||
|
--------------------------------------------------
|
||||||
|
KBUILD_MODPOST_NOFINAL can be set to skip the final link of modules.
|
||||||
|
This is solely usefull to speed up test compiles.
|
||||||
|
|
||||||
|
KBUILD_EXTRA_SYMBOLS
|
||||||
|
--------------------------------------------------
|
||||||
|
For modules use symbols from another modules.
|
||||||
|
See more details in modules.txt.
|
188
Documentation/kbuild/kconfig.txt
Normal file
188
Documentation/kbuild/kconfig.txt
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
This file contains some assistance for using "make *config".
|
||||||
|
|
||||||
|
Use "make help" to list all of the possible configuration targets.
|
||||||
|
|
||||||
|
The xconfig ('qconf') and menuconfig ('mconf') programs also
|
||||||
|
have embedded help text. Be sure to check it for navigation,
|
||||||
|
search, and other general help text.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
General
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
New kernel releases often introduce new config symbols. Often more
|
||||||
|
important, new kernel releases may rename config symbols. When
|
||||||
|
this happens, using a previously working .config file and running
|
||||||
|
"make oldconfig" won't necessarily produce a working new kernel
|
||||||
|
for you, so you may find that you need to see what NEW kernel
|
||||||
|
symbols have been introduced.
|
||||||
|
|
||||||
|
To see a list of new config symbols when using "make oldconfig", use
|
||||||
|
|
||||||
|
cp user/some/old.config .config
|
||||||
|
yes "" | make oldconfig >conf.new
|
||||||
|
|
||||||
|
and the config program will list as (NEW) any new symbols that have
|
||||||
|
unknown values. Of course, the .config file is also updated with
|
||||||
|
new (default) values, so you can use:
|
||||||
|
|
||||||
|
grep "(NEW)" conf.new
|
||||||
|
|
||||||
|
to see the new config symbols or you can 'diff' the previous and
|
||||||
|
new .config files to see the differences:
|
||||||
|
|
||||||
|
diff .config.old .config | less
|
||||||
|
|
||||||
|
(Yes, we need something better here.)
|
||||||
|
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
menuconfig
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
SEARCHING for CONFIG symbols
|
||||||
|
|
||||||
|
Searching in menuconfig:
|
||||||
|
|
||||||
|
The Search function searches for kernel configuration symbol
|
||||||
|
names, so you have to know something close to what you are
|
||||||
|
looking for.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
/hotplug
|
||||||
|
This lists all config symbols that contain "hotplug",
|
||||||
|
e.g., HOTPLUG, HOTPLUG_CPU, MEMORY_HOTPLUG.
|
||||||
|
|
||||||
|
For search help, enter / followed TAB-TAB-TAB (to highlight
|
||||||
|
<Help>) and Enter. This will tell you that you can also use
|
||||||
|
regular expressions (regexes) in the search string, so if you
|
||||||
|
are not interested in MEMORY_HOTPLUG, you could try
|
||||||
|
|
||||||
|
/^hotplug
|
||||||
|
|
||||||
|
|
||||||
|
______________________________________________________________________
|
||||||
|
Color Themes for 'menuconfig'
|
||||||
|
|
||||||
|
It is possible to select different color themes using the variable
|
||||||
|
MENUCONFIG_COLOR. To select a theme use:
|
||||||
|
|
||||||
|
make MENUCONFIG_COLOR=<theme> menuconfig
|
||||||
|
|
||||||
|
Available themes are:
|
||||||
|
mono => selects colors suitable for monochrome displays
|
||||||
|
blackbg => selects a color scheme with black background
|
||||||
|
classic => theme with blue background. The classic look
|
||||||
|
bluetitle => a LCD friendly version of classic. (default)
|
||||||
|
|
||||||
|
______________________________________________________________________
|
||||||
|
Environment variables in 'menuconfig'
|
||||||
|
|
||||||
|
KCONFIG_ALLCONFIG
|
||||||
|
--------------------------------------------------
|
||||||
|
(partially based on lkml email from/by Rob Landley, re: miniconfig)
|
||||||
|
--------------------------------------------------
|
||||||
|
The allyesconfig/allmodconfig/allnoconfig/randconfig variants can
|
||||||
|
also use the environment variable KCONFIG_ALLCONFIG as a flag or a
|
||||||
|
filename that contains config symbols that the user requires to be
|
||||||
|
set to a specific value. If KCONFIG_ALLCONFIG is used without a
|
||||||
|
filename, "make *config" checks for a file named
|
||||||
|
"all{yes/mod/no/random}.config" (corresponding to the *config command
|
||||||
|
that was used) for symbol values that are to be forced. If this file
|
||||||
|
is not found, it checks for a file named "all.config" to contain forced
|
||||||
|
values.
|
||||||
|
|
||||||
|
This enables you to create "miniature" config (miniconfig) or custom
|
||||||
|
config files containing just the config symbols that you are interested
|
||||||
|
in. Then the kernel config system generates the full .config file,
|
||||||
|
including dependencies of your miniconfig file, based on the miniconfig
|
||||||
|
file.
|
||||||
|
|
||||||
|
This 'KCONFIG_ALLCONFIG' file is a config file which contains
|
||||||
|
(usually a subset of all) preset config symbols. These variable
|
||||||
|
settings are still subject to normal dependency checks.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
KCONFIG_ALLCONFIG=custom-notebook.config make allnoconfig
|
||||||
|
or
|
||||||
|
KCONFIG_ALLCONFIG=mini.config make allnoconfig
|
||||||
|
or
|
||||||
|
make KCONFIG_ALLCONFIG=mini.config allnoconfig
|
||||||
|
|
||||||
|
These examples will disable most options (allnoconfig) but enable or
|
||||||
|
disable the options that are explicitly listed in the specified
|
||||||
|
mini-config files.
|
||||||
|
|
||||||
|
KCONFIG_NOSILENTUPDATE
|
||||||
|
--------------------------------------------------
|
||||||
|
If this variable has a non-blank value, it prevents silent kernel
|
||||||
|
config udpates (requires explicit updates).
|
||||||
|
|
||||||
|
KCONFIG_CONFIG
|
||||||
|
--------------------------------------------------
|
||||||
|
This environment variable can be used to specify a default kernel config
|
||||||
|
file name to override the default name of ".config".
|
||||||
|
|
||||||
|
KCONFIG_OVERWRITECONFIG
|
||||||
|
--------------------------------------------------
|
||||||
|
If you set KCONFIG_OVERWRITECONFIG in the environment, Kconfig will not
|
||||||
|
break symlinks when .config is a symlink to somewhere else.
|
||||||
|
|
||||||
|
KCONFIG_NOTIMESTAMP
|
||||||
|
--------------------------------------------------
|
||||||
|
If this environment variable exists and is non-null, the timestamp line
|
||||||
|
in generated .config files is omitted.
|
||||||
|
|
||||||
|
KCONFIG_AUTOCONFIG
|
||||||
|
--------------------------------------------------
|
||||||
|
This environment variable can be set to specify the path & name of the
|
||||||
|
"auto.conf" file. Its default value is "include/config/auto.conf".
|
||||||
|
|
||||||
|
KCONFIG_AUTOHEADER
|
||||||
|
--------------------------------------------------
|
||||||
|
This environment variable can be set to specify the path & name of the
|
||||||
|
"autoconf.h" (header) file. Its default value is "include/linux/autoconf.h".
|
||||||
|
|
||||||
|
______________________________________________________________________
|
||||||
|
menuconfig User Interface Options
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
MENUCONFIG_MODE
|
||||||
|
--------------------------------------------------
|
||||||
|
This mode shows all sub-menus in one large tree.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
MENUCONFIG_MODE=single_menu make menuconfig
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
xconfig
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
Searching in xconfig:
|
||||||
|
|
||||||
|
The Search function searches for kernel configuration symbol
|
||||||
|
names, so you have to know something close to what you are
|
||||||
|
looking for.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
Ctrl-F hotplug
|
||||||
|
or
|
||||||
|
Menu: File, Search, hotplug
|
||||||
|
|
||||||
|
lists all config symbol entries that contain "hotplug" in
|
||||||
|
the symbol name. In this Search dialog, you may change the
|
||||||
|
config setting for any of the entries that are not grayed out.
|
||||||
|
You can also enter a different search string without having
|
||||||
|
to return to the main menu.
|
||||||
|
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
gconfig
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
Searching in gconfig:
|
||||||
|
|
||||||
|
None (gconfig isn't maintained as well as xconfig or menuconfig);
|
||||||
|
however, gconfig does have a few more viewing choices than
|
||||||
|
xconfig does.
|
||||||
|
|
||||||
|
###
|
3
Makefile
3
Makefile
@ -321,7 +321,8 @@ KALLSYMS = scripts/kallsyms
|
|||||||
PERL = perl
|
PERL = perl
|
||||||
CHECK = sparse
|
CHECK = sparse
|
||||||
|
|
||||||
CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ -Wbitwise $(CF)
|
CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
|
||||||
|
-Wbitwise -Wno-return-void $(CF)
|
||||||
MODFLAGS = -DMODULE
|
MODFLAGS = -DMODULE
|
||||||
CFLAGS_MODULE = $(MODFLAGS)
|
CFLAGS_MODULE = $(MODFLAGS)
|
||||||
AFLAGS_MODULE = $(MODFLAGS)
|
AFLAGS_MODULE = $(MODFLAGS)
|
||||||
|
32
README
32
README
@ -52,11 +52,11 @@ DOCUMENTATION:
|
|||||||
|
|
||||||
- The Documentation/DocBook/ subdirectory contains several guides for
|
- The Documentation/DocBook/ subdirectory contains several guides for
|
||||||
kernel developers and users. These guides can be rendered in a
|
kernel developers and users. These guides can be rendered in a
|
||||||
number of formats: PostScript (.ps), PDF, and HTML, among others.
|
number of formats: PostScript (.ps), PDF, HTML, & man-pages, among others.
|
||||||
After installation, "make psdocs", "make pdfdocs", or "make htmldocs"
|
After installation, "make psdocs", "make pdfdocs", "make htmldocs",
|
||||||
will render the documentation in the requested format.
|
or "make mandocs" will render the documentation in the requested format.
|
||||||
|
|
||||||
INSTALLING the kernel:
|
INSTALLING the kernel source:
|
||||||
|
|
||||||
- If you install the full sources, put the kernel tarball in a
|
- If you install the full sources, put the kernel tarball in a
|
||||||
directory where you have permissions (eg. your home directory) and
|
directory where you have permissions (eg. your home directory) and
|
||||||
@ -187,14 +187,9 @@ CONFIGURING the kernel:
|
|||||||
"make randconfig" Create a ./.config file by setting symbol
|
"make randconfig" Create a ./.config file by setting symbol
|
||||||
values to random values.
|
values to random values.
|
||||||
|
|
||||||
The allyesconfig/allmodconfig/allnoconfig/randconfig variants can
|
You can find more information on using the Linux kernel config tools
|
||||||
also use the environment variable KCONFIG_ALLCONFIG to specify a
|
in Documentation/kbuild/make-configs.txt.
|
||||||
filename that contains config options that the user requires to be
|
|
||||||
set to a specific value. If KCONFIG_ALLCONFIG=filename is not used,
|
|
||||||
"make *config" checks for a file named "all{yes/mod/no/random}.config"
|
|
||||||
for symbol values that are to be forced. If this file is not found,
|
|
||||||
it checks for a file named "all.config" to contain forced values.
|
|
||||||
|
|
||||||
NOTES on "make config":
|
NOTES on "make config":
|
||||||
- having unnecessary drivers will make the kernel bigger, and can
|
- having unnecessary drivers will make the kernel bigger, and can
|
||||||
under some circumstances lead to problems: probing for a
|
under some circumstances lead to problems: probing for a
|
||||||
@ -231,6 +226,19 @@ COMPILING the kernel:
|
|||||||
- If you configured any of the parts of the kernel as `modules', you
|
- If you configured any of the parts of the kernel as `modules', you
|
||||||
will also have to do "make modules_install".
|
will also have to do "make modules_install".
|
||||||
|
|
||||||
|
- Verbose kernel compile/build output:
|
||||||
|
|
||||||
|
Normally the kernel build system runs in a fairly quiet mode (but not
|
||||||
|
totally silent). However, sometimes you or other kernel developers need
|
||||||
|
to see compile, link, or other commands exactly as they are executed.
|
||||||
|
For this, use "verbose" build mode. This is done by inserting
|
||||||
|
"V=1" in the "make" command. E.g.:
|
||||||
|
|
||||||
|
make V=1 all
|
||||||
|
|
||||||
|
To have the build system also tell the reason for the rebuild of each
|
||||||
|
target, use "V=2". The default is "V=0".
|
||||||
|
|
||||||
- Keep a backup kernel handy in case something goes wrong. This is
|
- Keep a backup kernel handy in case something goes wrong. This is
|
||||||
especially true for the development releases, since each new release
|
especially true for the development releases, since each new release
|
||||||
contains new code which has not been debugged. Make sure you keep a
|
contains new code which has not been debugged. Make sure you keep a
|
||||||
|
@ -280,7 +280,6 @@ config M68060
|
|||||||
|
|
||||||
config MMU_MOTOROLA
|
config MMU_MOTOROLA
|
||||||
bool
|
bool
|
||||||
depends on MMU && !MMU_SUN3
|
|
||||||
|
|
||||||
config MMU_SUN3
|
config MMU_SUN3
|
||||||
bool
|
bool
|
||||||
|
@ -14,7 +14,9 @@
|
|||||||
# Only include files located in asm* and linux* are checked.
|
# Only include files located in asm* and linux* are checked.
|
||||||
# The rest are assumed to be system include files.
|
# The rest are assumed to be system include files.
|
||||||
#
|
#
|
||||||
# 2) TODO: check for leaked CONFIG_ symbols
|
# 2) It is checked that prototypes does not use "extern"
|
||||||
|
#
|
||||||
|
# 3) Check for leaked CONFIG_ symbols
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
|
|
||||||
@ -32,7 +34,11 @@ foreach my $file (@files) {
|
|||||||
$lineno = 0;
|
$lineno = 0;
|
||||||
while ($line = <FH>) {
|
while ($line = <FH>) {
|
||||||
$lineno++;
|
$lineno++;
|
||||||
check_include();
|
&check_include();
|
||||||
|
&check_asm_types();
|
||||||
|
&check_sizetypes();
|
||||||
|
&check_prototypes();
|
||||||
|
&check_config();
|
||||||
}
|
}
|
||||||
close FH;
|
close FH;
|
||||||
}
|
}
|
||||||
@ -54,3 +60,63 @@ sub check_include
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub check_prototypes
|
||||||
|
{
|
||||||
|
if ($line =~ m/^\s*extern\b/) {
|
||||||
|
printf STDERR "$filename:$lineno: extern's make no sense in userspace\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub check_config
|
||||||
|
{
|
||||||
|
if ($line =~ m/[^a-zA-Z0-9_]+CONFIG_([a-zA-Z0-9]+)[^a-zA-Z0-9]/) {
|
||||||
|
printf STDERR "$filename:$lineno: leaks CONFIG_$1 to userspace where it is not valid\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
my $linux_asm_types;
|
||||||
|
sub check_asm_types()
|
||||||
|
{
|
||||||
|
if ($filename =~ /types.h|int-l64.h|int-ll64.h/o) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ($lineno == 1) {
|
||||||
|
$linux_asm_types = 0;
|
||||||
|
} elsif ($linux_asm_types >= 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ($line =~ m/^\s*#\s*include\s+<asm\/types.h>/) {
|
||||||
|
$linux_asm_types = 1;
|
||||||
|
printf STDERR "$filename:$lineno: " .
|
||||||
|
"include of <linux/types.h> is preferred over <asm/types.h>\n"
|
||||||
|
# Warn until headers are all fixed
|
||||||
|
#$ret = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
my $linux_types;
|
||||||
|
sub check_sizetypes
|
||||||
|
{
|
||||||
|
if ($filename =~ /types.h|int-l64.h|int-ll64.h/o) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ($lineno == 1) {
|
||||||
|
$linux_types = 0;
|
||||||
|
} elsif ($linux_types >= 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ($line =~ m/^\s*#\s*include\s+<linux\/types.h>/) {
|
||||||
|
$linux_types = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ($line =~ m/__[us](8|16|32|64)\b/) {
|
||||||
|
printf STDERR "$filename:$lineno: " .
|
||||||
|
"found __[us]{8,16,32,64} type " .
|
||||||
|
"without #include <linux/types.h>\n";
|
||||||
|
$linux_types = 2;
|
||||||
|
# Warn until headers are all fixed
|
||||||
|
#$ret = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -36,6 +36,9 @@ foreach my $file (@files) {
|
|||||||
$line =~ s/\s__attribute_const__\s/ /g;
|
$line =~ s/\s__attribute_const__\s/ /g;
|
||||||
$line =~ s/\s__attribute_const__$//g;
|
$line =~ s/\s__attribute_const__$//g;
|
||||||
$line =~ s/^#include <linux\/compiler.h>//;
|
$line =~ s/^#include <linux\/compiler.h>//;
|
||||||
|
$line =~ s/(^|\s)(inline)\b/$1__$2__/g;
|
||||||
|
$line =~ s/(^|\s)(asm)\b(\s|[(]|$)/$1__$2__$3/g;
|
||||||
|
$line =~ s/(^|\s|[(])(volatile)\b(\s|[(]|$)/$1__$2__$3/g;
|
||||||
printf OUTFILE "%s", $line;
|
printf OUTFILE "%s", $line;
|
||||||
}
|
}
|
||||||
close OUTFILE;
|
close OUTFILE;
|
||||||
|
@ -65,9 +65,13 @@ enum symbol_type {
|
|||||||
S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER
|
S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* enum values are used as index to symbol.def[] */
|
||||||
enum {
|
enum {
|
||||||
S_DEF_USER, /* main user value */
|
S_DEF_USER, /* main user value */
|
||||||
S_DEF_AUTO,
|
S_DEF_AUTO, /* values read from auto.conf */
|
||||||
|
S_DEF_DEF3, /* Reserved for UI usage */
|
||||||
|
S_DEF_DEF4, /* Reserved for UI usage */
|
||||||
|
S_DEF_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
struct symbol {
|
struct symbol {
|
||||||
@ -75,7 +79,7 @@ struct symbol {
|
|||||||
char *name;
|
char *name;
|
||||||
enum symbol_type type;
|
enum symbol_type type;
|
||||||
struct symbol_value curr;
|
struct symbol_value curr;
|
||||||
struct symbol_value def[4];
|
struct symbol_value def[S_DEF_COUNT];
|
||||||
tristate visible;
|
tristate visible;
|
||||||
int flags;
|
int flags;
|
||||||
struct property *prop;
|
struct property *prop;
|
||||||
@ -84,42 +88,64 @@ struct symbol {
|
|||||||
|
|
||||||
#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)
|
#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)
|
||||||
|
|
||||||
#define SYMBOL_CONST 0x0001
|
#define SYMBOL_CONST 0x0001 /* symbol is const */
|
||||||
#define SYMBOL_CHECK 0x0008
|
#define SYMBOL_CHECK 0x0008 /* used during dependency checking */
|
||||||
#define SYMBOL_CHOICE 0x0010
|
#define SYMBOL_CHOICE 0x0010 /* start of a choice block (null name) */
|
||||||
#define SYMBOL_CHOICEVAL 0x0020
|
#define SYMBOL_CHOICEVAL 0x0020 /* used as a value in a choice block */
|
||||||
#define SYMBOL_VALID 0x0080
|
#define SYMBOL_VALID 0x0080 /* set when symbol.curr is calculated */
|
||||||
#define SYMBOL_OPTIONAL 0x0100
|
#define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */
|
||||||
#define SYMBOL_WRITE 0x0200
|
#define SYMBOL_WRITE 0x0200 /* ? */
|
||||||
#define SYMBOL_CHANGED 0x0400
|
#define SYMBOL_CHANGED 0x0400 /* ? */
|
||||||
#define SYMBOL_AUTO 0x1000
|
#define SYMBOL_AUTO 0x1000 /* value from environment variable */
|
||||||
#define SYMBOL_CHECKED 0x2000
|
#define SYMBOL_CHECKED 0x2000 /* used during dependency checking */
|
||||||
#define SYMBOL_WARNED 0x8000
|
#define SYMBOL_WARNED 0x8000 /* warning has been issued */
|
||||||
#define SYMBOL_DEF 0x10000
|
|
||||||
#define SYMBOL_DEF_USER 0x10000
|
/* Set when symbol.def[] is used */
|
||||||
#define SYMBOL_DEF_AUTO 0x20000
|
#define SYMBOL_DEF 0x10000 /* First bit of SYMBOL_DEF */
|
||||||
#define SYMBOL_DEF3 0x40000
|
#define SYMBOL_DEF_USER 0x10000 /* symbol.def[S_DEF_USER] is valid */
|
||||||
#define SYMBOL_DEF4 0x80000
|
#define SYMBOL_DEF_AUTO 0x20000 /* symbol.def[S_DEF_AUTO] is valid */
|
||||||
|
#define SYMBOL_DEF3 0x40000 /* symbol.def[S_DEF_3] is valid */
|
||||||
|
#define SYMBOL_DEF4 0x80000 /* symbol.def[S_DEF_4] is valid */
|
||||||
|
|
||||||
#define SYMBOL_MAXLENGTH 256
|
#define SYMBOL_MAXLENGTH 256
|
||||||
#define SYMBOL_HASHSIZE 257
|
#define SYMBOL_HASHSIZE 257
|
||||||
#define SYMBOL_HASHMASK 0xff
|
#define SYMBOL_HASHMASK 0xff
|
||||||
|
|
||||||
|
/* A property represent the config options that can be associated
|
||||||
|
* with a config "symbol".
|
||||||
|
* Sample:
|
||||||
|
* config FOO
|
||||||
|
* default y
|
||||||
|
* prompt "foo prompt"
|
||||||
|
* select BAR
|
||||||
|
* config BAZ
|
||||||
|
* int "BAZ Value"
|
||||||
|
* range 1..255
|
||||||
|
*/
|
||||||
enum prop_type {
|
enum prop_type {
|
||||||
P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE,
|
P_UNKNOWN,
|
||||||
P_SELECT, P_RANGE, P_ENV
|
P_PROMPT, /* prompt "foo prompt" or "BAZ Value" */
|
||||||
|
P_COMMENT, /* text associated with a comment */
|
||||||
|
P_MENU, /* prompt associated with a menuconfig option */
|
||||||
|
P_DEFAULT, /* default y */
|
||||||
|
P_CHOICE, /* choice value */
|
||||||
|
P_SELECT, /* select BAR */
|
||||||
|
P_RANGE, /* range 7..100 (for a symbol) */
|
||||||
|
P_ENV, /* value from environment variable */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct property {
|
struct property {
|
||||||
struct property *next;
|
struct property *next; /* next property - null if last */
|
||||||
struct symbol *sym;
|
struct symbol *sym; /* the symbol for which the property is associated */
|
||||||
enum prop_type type;
|
enum prop_type type; /* type of property */
|
||||||
const char *text;
|
const char *text; /* the prompt value - P_PROMPT, P_MENU, P_COMMENT */
|
||||||
struct expr_value visible;
|
struct expr_value visible;
|
||||||
struct expr *expr;
|
struct expr *expr; /* the optional conditional part of the property */
|
||||||
struct menu *menu;
|
struct menu *menu; /* the menu the property are associated with
|
||||||
struct file *file;
|
* valid for: P_SELECT, P_RANGE, P_CHOICE,
|
||||||
int lineno;
|
* P_PROMPT, P_DEFAULT, P_MENU, P_COMMENT */
|
||||||
|
struct file *file; /* what file was this property defined */
|
||||||
|
int lineno; /* what lineno was this property defined */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define for_all_properties(sym, st, tok) \
|
#define for_all_properties(sym, st, tok) \
|
||||||
|
@ -2370,11 +2370,14 @@ void zconf_nextfile(const char *name)
|
|||||||
current_buf = buf;
|
current_buf = buf;
|
||||||
|
|
||||||
if (file->flags & FILE_BUSY) {
|
if (file->flags & FILE_BUSY) {
|
||||||
printf("recursive scan (%s)?\n", name);
|
printf("%s:%d: do not source '%s' from itself\n",
|
||||||
|
zconf_curname(), zconf_lineno(), name);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
if (file->flags & FILE_SCANNED) {
|
if (file->flags & FILE_SCANNED) {
|
||||||
printf("file %s already scanned?\n", name);
|
printf("%s:%d: file '%s' is already sourced from '%s'\n",
|
||||||
|
zconf_curname(), zconf_lineno(), name,
|
||||||
|
file->parent->name);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
file->flags |= FILE_BUSY;
|
file->flags |= FILE_BUSY;
|
||||||
|
@ -314,11 +314,14 @@ void zconf_nextfile(const char *name)
|
|||||||
current_buf = buf;
|
current_buf = buf;
|
||||||
|
|
||||||
if (file->flags & FILE_BUSY) {
|
if (file->flags & FILE_BUSY) {
|
||||||
printf("recursive scan (%s)?\n", name);
|
printf("%s:%d: do not source '%s' from itself\n",
|
||||||
|
zconf_curname(), zconf_lineno(), name);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
if (file->flags & FILE_SCANNED) {
|
if (file->flags & FILE_SCANNED) {
|
||||||
printf("file %s already scanned?\n", name);
|
printf("%s:%d: file '%s' is already sourced from '%s'\n",
|
||||||
|
zconf_curname(), zconf_lineno(), name,
|
||||||
|
file->parent->name);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
file->flags |= FILE_BUSY;
|
file->flags |= FILE_BUSY;
|
||||||
|
@ -84,7 +84,6 @@ docscope()
|
|||||||
|
|
||||||
exuberant()
|
exuberant()
|
||||||
{
|
{
|
||||||
all_sources > all
|
|
||||||
all_sources | xargs $1 -a \
|
all_sources | xargs $1 -a \
|
||||||
-I __initdata,__exitdata,__acquires,__releases \
|
-I __initdata,__exitdata,__acquires,__releases \
|
||||||
-I __read_mostly,____cacheline_aligned \
|
-I __read_mostly,____cacheline_aligned \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user