Masahiro Yamada
392885ee82
kbuild: let fixdep directly write to .*.cmd files
...
Currently, fixdep writes dependencies to .*.tmp, which is renamed to
.*.cmd after everything succeeds. This is a very safe way to avoid
corrupted .*.cmd files. The if_changed_dep has carried this safety
mechanism since it was added in 2002.
If fixdep fails for some reasons or a user terminates the build while
fixdep is running, the incomplete output from the fixdep could be
troublesome.
This is my insight about some bad scenarios:
[1] If the compiler succeeds to generate *.o file, but fixdep fails
to write necessary dependencies to .*.cmd file, Make will miss
to rebuild the object when headers or CONFIG options are changed.
In this case, fixdep should not generate .*.cmd file at all so
that 'arg-check' will surely trigger the rebuild of the object.
[2] A partially constructed .*.cmd file may not be a syntactically
correct makefile. The next time Make runs, it would include it,
then fail to parse it. Once this happens, 'make clean' is be the
only way to fix it.
In fact, [1] is no longer a problem since commit 9c2af1c737 ("kbuild:
add .DELETE_ON_ERROR special target"). Make deletes a target file on
any failure in its recipe. Because fixdep is a part of the recipe of
*.o target, if it fails, the *.o is deleted anyway. However, I am a
bit worried about the slight possibility of [2].
So, here is a solution. Let fixdep directly write to a .*.cmd file,
but allow makefiles to include it only when its corresponding target
exists.
This effectively reverts commit 2982c95357 ("kbuild: remove redundant
$(wildcard ...) for cmd_files calculation"), and commit 00d78ab2ba
("kbuild: remove dead code in cmd_files calculation in top Makefile")
because now we must check the presence of targets.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2018-12-01 23:13:14 +09:00
..
basic
kbuild: move bin2c back to scripts/ from scripts/basic/
2018-07-18 01:18:05 +09:00
coccinelle
Coccinelle: remove pci_alloc_consistent semantic to detect in zalloc-simple.cocci
2018-08-22 23:21:43 +09:00
dtc
Merge branch 'all-dtbs' into dt/next
2018-10-04 14:16:15 -05:00
gcc-plugins
stackleak: Allow runtime disabling of kernel stack erasing
2018-09-04 10:35:48 -07:00
gdb
genksyms
genksyms: remove symbol prefix support
2018-05-17 22:43:35 +09:00
kconfig
kconfig: merge_config: avoid false positive matches from comment lines
2018-11-11 23:04:51 +09:00
ksymoops
mod
kbuild: move modpost out of 'scripts' target
2018-12-01 23:09:34 +09:00
package
builddeb: Fix inclusion of dtbs in debian package
2018-11-11 23:04:53 +09:00
selinux
staging: lustre: delete the filesystem from the tree.
2018-06-05 19:22:35 +02:00
tracing
scripts: Add Python 3 support to tracing/draw_functrace.py
2018-07-29 11:08:38 +09:00
.gitignore
kbuild: move bin2c back to scripts/ from scripts/basic/
2018-07-18 01:18:05 +09:00
adjust_autoksyms.sh
kbuild: remove CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX
2018-05-17 22:44:57 +09:00
asn1_compiler.c
ASN.1: Remove unnecessary shadowed local variable
2018-10-29 00:19:41 +09:00
bin2c.c
kbuild: move bin2c back to scripts/ from scripts/basic/
2018-07-18 01:18:05 +09:00
bloat-o-meter
syscalls/core, syscalls/x86: Clean up compat syscall stub naming convention
2018-04-09 16:47:28 +02:00
bootgraph.pl
bpf_helpers_doc.py
bpf: change eBPF helper doc parsing script to allow for smaller indent
2018-05-17 17:34:43 +02:00
cc-can-link.sh
bpfilter: check compiler capability in Kconfig
2018-06-28 13:36:39 +09:00
check_extable.sh
checkincludes.pl
checkkconfigsymbols.py
checkpatch.pl
checkpatch: remove GCC_BINARY_CONSTANT warning
2018-10-31 08:54:13 -07:00
checkstack.pl
scripts: Add ppc64le support for checkstack.pl
2018-07-02 23:54:28 +10:00
checksyscalls.sh
checkversion.pl
clang-version.sh
kbuild: Add a space after ! to prevent parsing as file pattern
2018-08-22 23:21:40 +09:00
cleanfile
cleanpatch
coccicheck
coccicheck: return proper error code on fail
2018-08-14 08:58:56 +09:00
config
conmakehash.c
const_structs.checkpatch
decode_stacktrace.sh
decodecode
depmod.sh
kbuild: modules_install: warn when missing System.map file
2018-09-09 09:14:07 +09:00
diffconfig
documentation-file-ref-check
scripts/documentation-file-ref-check: ignore sched-pelt false positive
2018-07-02 11:25:00 -06:00
export_report.pl
extract-cert.c
extract-ikconfig
extract-module-sig.pl
extract-sys-certs.pl
extract-vmlinux
extract-vmlinux: Check for uncompressed image as fallback
2018-10-17 08:18:01 +02:00
extract_xc3028.pl
MAINTAINERS & files: Canonize the e-mails I use at files
2018-05-04 06:21:06 -04:00
faddr2line
scripts/faddr2line: make the new code listing format optional
2018-06-05 09:04:37 -07:00
file-size.sh
kbuild: Use ls(1) instead of stat(1) to obtain file size
2018-03-26 02:01:24 +09:00
find-unused-docs.sh
gcc-goto.sh
gcc-ld
gcc-plugin.sh
gcc-version.sh
gcc-x86_32-has-stack-protector.sh
stack-protector: test compiler capability in Kconfig and drop AUTO mode
2018-06-08 18:56:00 +09:00
gcc-x86_64-has-stack-protector.sh
stack-protector: Fix test with 32-bit userland and CONFIG_64BIT=y
2018-06-25 23:21:13 +09:00
get_dvb_firmware
get_maintainer.pl
get_maintainer: allow option --mpath <directory> to read all files in <directory>
2018-08-22 10:52:48 -07:00
gfp-translate
headerdep.pl
headers.sh
headers_check.pl
headers_install.sh
kbuild: Improve portability of some sed invocations
2018-03-26 02:01:18 +09:00
insert-sys-cert.c
kallsyms.c
kallsyms: remove left-over Blackfin code
2018-09-10 22:54:33 +09:00
Kbuild.include
kbuild: let fixdep directly write to .*.cmd files
2018-12-01 23:13:14 +09:00
Kconfig.include
gcc-plugins: test plugin support in Kconfig and clean up Makefile
2018-06-11 09:16:22 +09:00
kernel-doc
kernel-doc: fix declaration type determination
2018-10-18 12:20:35 -06:00
ld-version.sh
leaking_addresses.pl
leaking_addresses: check if file name contains address
2018-04-07 08:50:34 +10:00
Lindent
link-vmlinux.sh
kbuild: rename LDFLAGS to KBUILD_LDFLAGS
2018-08-24 08:22:08 +09:00
Makefile
kbuild: descend into scripts/gcc-plugins/ via scripts/Makefile
2018-12-01 23:09:38 +09:00
Makefile.asm-generic
Makefile.build
kbuild: let fixdep directly write to .*.cmd files
2018-12-01 23:13:14 +09:00
Makefile.clean
kbuild: remove deprecated host-progs variable
2018-08-09 21:51:17 +09:00
Makefile.dtbinst
Makefile.extrawarn
Kbuild updates for v4.20 (2nd)
2018-11-03 10:47:33 -07:00
Makefile.gcc-plugins
kbuild: descend into scripts/gcc-plugins/ via scripts/Makefile
2018-12-01 23:09:38 +09:00
Makefile.headersinst
Makefile.host
kbuild: Rename HOST_LOADLIBES to KBUILD_HOSTLDLIBS
2018-07-18 01:18:05 +09:00
Makefile.kasan
Makefile.kcov
kcov: test compiler capability in Kconfig and correct dependency
2018-06-11 09:14:08 +09:00
Makefile.lib
kbuild: consolidate Devicetree dtb build rules
2018-10-02 09:23:21 -05:00
Makefile.modbuiltin
Kbuild: Makefile.modbuiltin: include auto.conf and tristate.conf mandatory
2018-08-03 00:47:00 +09:00
Makefile.modinst
kbuild: remove duplicated comments about PHONY
2018-07-06 22:04:03 +09:00
Makefile.modpost
kbuild: rename LDFLAGS to KBUILD_LDFLAGS
2018-08-24 08:22:08 +09:00
Makefile.modsign
kbuild: remove duplicated comments about PHONY
2018-07-06 22:04:03 +09:00
Makefile.ubsan
lib/ubsan: remove null-pointer checks
2018-08-10 20:19:58 -07:00
makelst
markup_oops.pl
mkcompile_h
mkmakefile
kbuild: simplify command line creation in scripts/mkmakefile
2018-10-04 22:56:02 +09:00
mksysmap
mkuboot.sh
module-common.lds
namespace.pl
kbuild: rename built-in.o to built-in.a
2018-03-26 02:01:19 +09:00
objdiff
parse-maintainers.pl
patch-kernel
pnmtologo.c
profile2linkerlist.pl
prune-kernel
recordmcount.c
scripts: Fixed printf format mismatch
2018-05-29 22:04:12 +09:00
recordmcount.h
scripts: Fixed printf format mismatch
2018-05-29 22:04:12 +09:00
recordmcount.pl
nds32/ftrace: Add RECORD_MCOUNT support
2018-09-04 14:45:18 +08:00
setlocalversion
scripts/setlocalversion: Improve -dirty check with git-status --no-optional-locks
2018-11-21 23:57:33 +09:00
show_delta
sign-file.c
sortextable.c
sortextable.h
spdxcheck.py
scripts: add Python 3 compatibility to spdxcheck.py
2018-08-17 16:20:27 -07:00
spelling.txt
treewide: correct "differenciate" and "instanciate" typos
2018-08-23 18:48:43 -07:00
sphinx-pre-install
split-man.pl
MAINTAINERS & files: Canonize the e-mails I use at files
2018-05-04 06:21:06 -04:00
stackdelta
stackusage
subarch.include
selftests: add headers_install to lib.mk
2018-09-05 08:12:09 -06:00
tags.sh
scripts/tags.sh: add DECLARE_HASHTABLE()
2018-10-26 16:25:18 -07:00
unifdef.c
ver_linux
ver_linux: Do not check for ver_linux pattern in version function
2018-07-07 17:44:52 +02:00
xen-hypercalls.sh
xz_wrap.sh