Commit 0e0345b7 authored by Alexey Dobriyan's avatar Alexey Dobriyan Committed by Masahiro Yamada

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: default avatarAlexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
parent e3456056
...@@ -9,6 +9,6 @@ ...@@ -9,6 +9,6 @@
* This header exists to force full rebuild when the compiler is upgraded. * 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" * 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. * by Kconfig when the version string from the compiler changes.
*/ */
...@@ -21,7 +21,7 @@ config CC_VERSION_TEXT ...@@ -21,7 +21,7 @@ config CC_VERSION_TEXT
- Ensure full rebuild when the compiler is updated - Ensure full rebuild when the compiler is updated
include/linux/compiler-version.h contains this option in the comment 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 auto-generated dependency. When the compiler is updated, syncconfig
will touch it and then every file will be rebuilt. will touch it and then every file will be rebuilt.
......
...@@ -36,7 +36,7 @@ all_dirs="$all_dirs $dir_list" ...@@ -36,7 +36,7 @@ all_dirs="$all_dirs $dir_list"
# #
# When Kconfig regenerates include/generated/autoconf.h, its timestamp is # When Kconfig regenerates include/generated/autoconf.h, its timestamp is
# updated, but the contents might be still the same. When any CONFIG option 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 # Hence, the md5sum detects the configuration change anyway. We do not need to
# check include/generated/autoconf.h explicitly. # check include/generated/autoconf.h explicitly.
# #
......
...@@ -239,8 +239,8 @@ endif # CONFIG_STACK_VALIDATION ...@@ -239,8 +239,8 @@ endif # CONFIG_STACK_VALIDATION
# Rebuild all objects when objtool changes, or is enabled/disabled. # Rebuild all objects when objtool changes, or is enabled/disabled.
objtool_dep = $(objtool_obj) \ objtool_dep = $(objtool_obj) \
$(wildcard include/config/orc/unwinder.h \ $(wildcard include/config/ORC_UNWINDER \
include/config/stack/validation.h) include/config/STACK_VALIDATION)
ifdef CONFIG_TRIM_UNUSED_KSYMS ifdef CONFIG_TRIM_UNUSED_KSYMS
cmd_gen_ksymdeps = \ cmd_gen_ksymdeps = \
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
* the config symbols are rebuilt. * the config symbols are rebuilt.
* *
* So if the user changes his CONFIG_HIS_DRIVER option, only the objects * 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 ;-) * so most likely only his driver ;-)
* *
* The idea above dates, by the way, back to Michael E Chastain, AFAIK. * The idea above dates, by the way, back to Michael E Chastain, AFAIK.
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
* *
* and then basically copies the .<target>.d file to stdout, in the * and then basically copies the .<target>.d file to stdout, in the
* process filtering out the dependency on autoconf.h and adding * 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. * CONFIG_MY_OPTION encountered in any of the prerequisites.
* *
* We don't even try to really parse the header files, but * We don't even try to really parse the header files, but
...@@ -107,8 +107,8 @@ static void usage(void) ...@@ -107,8 +107,8 @@ static void usage(void)
/* /*
* In the intended usage of this program, the stdout is redirected to .*.cmd * 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 * files. The return value of printf() must be checked to catch any error,
* any error, e.g. "No space left on device". * e.g. "No space left on device".
*/ */
static void xprintf(const char *format, ...) static void xprintf(const char *format, ...)
{ {
...@@ -124,38 +124,6 @@ static void xprintf(const char *format, ...) ...@@ -124,38 +124,6 @@ static void xprintf(const char *format, ...)
va_end(ap); 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 {
struct item *next; struct item *next;
unsigned int len; unsigned int len;
...@@ -220,7 +188,8 @@ static void use_config(const char *m, int slen) ...@@ -220,7 +188,8 @@ static void use_config(const char *m, int slen)
return; return;
define_config(m, slen, hash); 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 */ /* test if s ends in sub */
......
...@@ -130,19 +130,14 @@ static size_t depfile_prefix_len; ...@@ -130,19 +130,14 @@ static size_t depfile_prefix_len;
static int conf_touch_dep(const char *name) static int conf_touch_dep(const char *name)
{ {
int fd, ret; int fd, ret;
const char *s; char *d;
char *d, c;
/* check overflow: prefix + name + ".h" + '\0' must fit in buffer. */ /* check overflow: prefix + name + '\0' must fit in buffer. */
if (depfile_prefix_len + strlen(name) + 3 > sizeof(depfile_path)) if (depfile_prefix_len + strlen(name) + 1 > sizeof(depfile_path))
return -1; return -1;
d = depfile_path + depfile_prefix_len; d = depfile_path + depfile_prefix_len;
s = name; strcpy(d, name);
while ((c = *s++))
*d++ = (c == '_') ? '/' : tolower(c);
strcpy(d, ".h");
/* Assume directory path already exists. */ /* Assume directory path already exists. */
fd = open(depfile_path, O_WRONLY | O_CREAT | O_TRUNC, 0644); fd = open(depfile_path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
...@@ -465,7 +460,7 @@ int conf_read_simple(const char *name, int def) ...@@ -465,7 +460,7 @@ int conf_read_simple(const char *name, int def)
* Reading from include/config/auto.conf * Reading from include/config/auto.conf
* If CONFIG_FOO previously existed in * If CONFIG_FOO previously existed in
* auto.conf but it is missing now, * 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_)); conf_touch_dep(line + strlen(CONFIG_));
else else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment