kbuild: redo fake deps at include/config/*.h
Make include/config/foo/bar.h fake deps files generation simpler. * delete .h suffix those aren't header files, shorten filenames, * delete tolower() Linux filesystems can deal with both upper and lowercase filenames very well, * put everything in 1 directory Presumably 'mkdir -p' split is from dark times when filesystems handled huge directories badly, disks were round adding to seek times. x86_64 allmodconfig lists 12364 files in include/config. ../obj/include/config/ ├── 104_QUAD_8 ├── 60XX_WDT ├── 64BIT ... ├── ZSWAP_DEFAULT_ON ├── ZSWAP_ZPOOL_DEFAULT └── ZSWAP_ZPOOL_DEFAULT_ZBUD 0 directories, 12364 files Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
This commit is contained in:
Родитель
e3456056f1
Коммит
0e0345b77a
|
@ -9,6 +9,6 @@
|
|||
* This header exists to force full rebuild when the compiler is upgraded.
|
||||
*
|
||||
* When fixdep scans this, it will find this string "CONFIG_CC_VERSION_TEXT"
|
||||
* and add dependency on include/config/cc/version/text.h, which is touched
|
||||
* and add dependency on include/config/CC_VERSION_TEXT, which is touched
|
||||
* by Kconfig when the version string from the compiler changes.
|
||||
*/
|
||||
|
|
|
@ -21,7 +21,7 @@ config CC_VERSION_TEXT
|
|||
|
||||
- Ensure full rebuild when the compiler is updated
|
||||
include/linux/compiler-version.h contains this option in the comment
|
||||
line so fixdep adds include/config/cc/version/text.h into the
|
||||
line so fixdep adds include/config/CC_VERSION_TEXT into the
|
||||
auto-generated dependency. When the compiler is updated, syncconfig
|
||||
will touch it and then every file will be rebuilt.
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ all_dirs="$all_dirs $dir_list"
|
|||
#
|
||||
# When Kconfig regenerates include/generated/autoconf.h, its timestamp is
|
||||
# updated, but the contents might be still the same. When any CONFIG option is
|
||||
# changed, Kconfig touches the corresponding timestamp file include/config/*.h.
|
||||
# changed, Kconfig touches the corresponding timestamp file include/config/*.
|
||||
# Hence, the md5sum detects the configuration change anyway. We do not need to
|
||||
# check include/generated/autoconf.h explicitly.
|
||||
#
|
||||
|
|
|
@ -239,8 +239,8 @@ endif # CONFIG_STACK_VALIDATION
|
|||
|
||||
# Rebuild all objects when objtool changes, or is enabled/disabled.
|
||||
objtool_dep = $(objtool_obj) \
|
||||
$(wildcard include/config/orc/unwinder.h \
|
||||
include/config/stack/validation.h)
|
||||
$(wildcard include/config/ORC_UNWINDER \
|
||||
include/config/STACK_VALIDATION)
|
||||
|
||||
ifdef CONFIG_TRIM_UNUSED_KSYMS
|
||||
cmd_gen_ksymdeps = \
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
* the config symbols are rebuilt.
|
||||
*
|
||||
* So if the user changes his CONFIG_HIS_DRIVER option, only the objects
|
||||
* which depend on "include/config/his/driver.h" will be rebuilt,
|
||||
* which depend on "include/config/HIS_DRIVER" will be rebuilt,
|
||||
* so most likely only his driver ;-)
|
||||
*
|
||||
* The idea above dates, by the way, back to Michael E Chastain, AFAIK.
|
||||
|
@ -74,7 +74,7 @@
|
|||
*
|
||||
* and then basically copies the .<target>.d file to stdout, in the
|
||||
* process filtering out the dependency on autoconf.h and adding
|
||||
* dependencies on include/config/my/option.h for every
|
||||
* dependencies on include/config/MY_OPTION for every
|
||||
* CONFIG_MY_OPTION encountered in any of the prerequisites.
|
||||
*
|
||||
* We don't even try to really parse the header files, but
|
||||
|
@ -107,8 +107,8 @@ static void usage(void)
|
|||
|
||||
/*
|
||||
* In the intended usage of this program, the stdout is redirected to .*.cmd
|
||||
* files. The return value of printf() and putchar() must be checked to catch
|
||||
* any error, e.g. "No space left on device".
|
||||
* files. The return value of printf() must be checked to catch any error,
|
||||
* e.g. "No space left on device".
|
||||
*/
|
||||
static void xprintf(const char *format, ...)
|
||||
{
|
||||
|
@ -124,38 +124,6 @@ static void xprintf(const char *format, ...)
|
|||
va_end(ap);
|
||||
}
|
||||
|
||||
static void xputchar(int c)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = putchar(c);
|
||||
if (ret == EOF) {
|
||||
perror("fixdep");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Print out a dependency path from a symbol name
|
||||
*/
|
||||
static void print_dep(const char *m, int slen, const char *dir)
|
||||
{
|
||||
int c, prev_c = '/', i;
|
||||
|
||||
xprintf(" $(wildcard %s/", dir);
|
||||
for (i = 0; i < slen; i++) {
|
||||
c = m[i];
|
||||
if (c == '_')
|
||||
c = '/';
|
||||
else
|
||||
c = tolower(c);
|
||||
if (c != '/' || prev_c != '/')
|
||||
xputchar(c);
|
||||
prev_c = c;
|
||||
}
|
||||
xprintf(".h) \\\n");
|
||||
}
|
||||
|
||||
struct item {
|
||||
struct item *next;
|
||||
unsigned int len;
|
||||
|
@ -220,7 +188,8 @@ static void use_config(const char *m, int slen)
|
|||
return;
|
||||
|
||||
define_config(m, slen, hash);
|
||||
print_dep(m, slen, "include/config");
|
||||
/* Print out a dependency path from a symbol name. */
|
||||
xprintf(" $(wildcard include/config/%.*s) \\\n", slen, m);
|
||||
}
|
||||
|
||||
/* test if s ends in sub */
|
||||
|
|
|
@ -130,19 +130,14 @@ static size_t depfile_prefix_len;
|
|||
static int conf_touch_dep(const char *name)
|
||||
{
|
||||
int fd, ret;
|
||||
const char *s;
|
||||
char *d, c;
|
||||
char *d;
|
||||
|
||||
/* check overflow: prefix + name + ".h" + '\0' must fit in buffer. */
|
||||
if (depfile_prefix_len + strlen(name) + 3 > sizeof(depfile_path))
|
||||
/* check overflow: prefix + name + '\0' must fit in buffer. */
|
||||
if (depfile_prefix_len + strlen(name) + 1 > sizeof(depfile_path))
|
||||
return -1;
|
||||
|
||||
d = depfile_path + depfile_prefix_len;
|
||||
s = name;
|
||||
|
||||
while ((c = *s++))
|
||||
*d++ = (c == '_') ? '/' : tolower(c);
|
||||
strcpy(d, ".h");
|
||||
strcpy(d, name);
|
||||
|
||||
/* Assume directory path already exists. */
|
||||
fd = open(depfile_path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
|
||||
|
@ -465,7 +460,7 @@ load:
|
|||
* Reading from include/config/auto.conf
|
||||
* If CONFIG_FOO previously existed in
|
||||
* auto.conf but it is missing now,
|
||||
* include/config/foo.h must be touched.
|
||||
* include/config/FOO must be touched.
|
||||
*/
|
||||
conf_touch_dep(line + strlen(CONFIG_));
|
||||
else
|
||||
|
|
Загрузка…
Ссылка в новой задаче