kernel_optimize_test/scripts
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
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
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
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
bootgraph.pl
bpf_helpers_doc.py
cc-can-link.sh
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
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
export_report.pl
extract_xc3028.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
faddr2line
file-size.sh
find-unused-docs.sh
gcc-goto.sh
gcc-ld
gcc-plugin.sh
gcc-version.sh
gcc-x86_32-has-stack-protector.sh
gcc-x86_64-has-stack-protector.sh
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_check.pl
headers_install.sh
headers.sh
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
kernel-doc kernel-doc: fix declaration type determination 2018-10-18 12:20:35 -06:00
ld-version.sh
leaking_addresses.pl
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
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
Makefile.modpost kbuild: rename LDFLAGS to KBUILD_LDFLAGS 2018-08-24 08:22:08 +09:00
Makefile.modsign
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
objdiff
parse-maintainers.pl
patch-kernel
pnmtologo.c
profile2linkerlist.pl
prune-kernel
recordmcount.c
recordmcount.h
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
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
xen-hypercalls.sh
xz_wrap.sh