History

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

Alexey Dobriyan committed 5 years ago

Commit 0e0345b1 parent e3456056 files · +16 −52Browse files

Showing the changes to scripts/basic (1 of 6 files). Show all

Unified · Split

scripts/basic/fixdep.c+6−37
@@ -34,7 +34,7 @@ · 33 unmodified lines
34 * the config symbols are rebuilt.34 * the config symbols are rebuilt.
35 *35 *
36 * So if the user changes his CONFIG_HIS_DRIVER option, only the objects36 * So if the user changes his CONFIG_HIS_DRIVER option, only the objects
37 * which depend on "include/config/his/driver.h" will be rebuilt,37 * which depend on "include/config/HIS_DRIVER" will be rebuilt,
38 * so most likely only his driver ;-)38 * so most likely only his driver ;-)
39 *39 *
40 * The idea above dates, by the way, back to Michael E Chastain, AFAIK.40 * The idea above dates, by the way, back to Michael E Chastain, AFAIK.
@@ -74,7 +74,7 @@ · 33 unmodified lines
74 *74 *
75 * and then basically copies the .<target>.d file to stdout, in the75 * and then basically copies the .<target>.d file to stdout, in the
76 * process filtering out the dependency on autoconf.h and adding76 * process filtering out the dependency on autoconf.h and adding
77 * dependencies on include/config/my/option.h for every77 * dependencies on include/config/MY_OPTION for every
78 * CONFIG_MY_OPTION encountered in any of the prerequisites.78 * CONFIG_MY_OPTION encountered in any of the prerequisites.
79 *79 *
80 * We don't even try to really parse the header files, but80 * We don't even try to really parse the header files, but
@@ -107,8 +107,8 @@ static void usage(void) · 26 unmodified lines
107 107
108/*108/*
109 * In the intended usage of this program, the stdout is redirected to .*.cmd109 * In the intended usage of this program, the stdout is redirected to .*.cmd
110 * files. The return value of printf() and putchar() must be checked to catch110 * files. The return value of printf() must be checked to catch any error,
111 * any error, e.g. "No space left on device".111 * e.g. "No space left on device".
112 */112 */
113static void xprintf(const char *format, ...)113static void xprintf(const char *format, ...)
114{114{
@@ -124,38 +124,6 @@ static void xprintf(const char *format, ...) · 9 unmodified lines
124 va_end(ap);124 va_end(ap);
125}125}
126 126
127static void xputchar(int c)
128{
129 int ret;
130
131 ret = putchar(c);
132 if (ret == EOF) {
133 perror("fixdep");
134 exit(1);
135 }
136}
137
138/*
139 * Print out a dependency path from a symbol name
140 */
141static void print_dep(const char *m, int slen, const char *dir)
142{
143 int c, prev_c = '/', i;
144
145 xprintf(" $(wildcard %s/", dir);
146 for (i = 0; i < slen; i++) {
147 c = m[i];
148 if (c == '_')
149 c = '/';
150 else
151 c = tolower(c);
152 if (c != '/' || prev_c != '/')
153 xputchar(c);
154 prev_c = c;
155 }
156 xprintf(".h) \\\n");
157}
158
159struct item {127struct item {
160 struct item *next;128 struct item *next;
161 unsigned int len;129 unsigned int len;
@@ -220,7 +188,8 @@ static void use_config(const char *m, int slen) · 58 unmodified lines
220 return;188 return;
221 189
222 define_config(m, slen, hash);190 define_config(m, slen, hash);
223 print_dep(m, slen, "include/config");191 /* Print out a dependency path from a symbol name. */
192 xprintf(" $(wildcard include/config/%.*s) \\\n", slen, m);
224}193}
225 194
226/* test if s ends in sub */195/* test if s ends in sub */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t