mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Masahiro Yamada <yamada.masahiro@socionext.com>
To: barebox@lists.infradead.org
Subject: [PATCH 03/11] kbuild: add .SECONDARY special target
Date: Sun, 30 Dec 2018 22:59:20 +0900	[thread overview]
Message-ID: <1546178368-26182-4-git-send-email-yamada.masahiro@socionext.com> (raw)
In-Reply-To: <1546178368-26182-1-git-send-email-yamada.masahiro@socionext.com>

Based on the following Linux commits:

 - 54a702f70589 ("kbuild: mark $(targets) as .SECONDARY and remove
   .PRECIOUS markers")

 - 8e9b61b293d9 ("kbuild: move .SECONDARY special target to
   Kbuild.include")

This consolidates those two commits and adjusts commit log for barebox.

GNU Make automatically deletes intermediate files that are updated
in a chain of pattern rules.

Example 1) %.dtb.o <- %.dtb.S <- %.dtb <- %.dts
Example 2) %.o <- %.c <- %.c_shipped

arch/arm/crypto/Makefile marks such targets as .PRECIOUS to prevent Make
from deleting them, but the correct way is to use .SECONDARY.

  .SECONDARY
    Prerequisites of this special target are treated as intermediate
    files but are never automatically deleted.

  .PRECIOUS
    When make is interrupted during execution, it may delete the target
    file it is updating if the file was modified since make started.
    If you mark the file as precious, make will never delete the file
    if interrupted.

Both can avoid deletion of intermediate files, but the difference is
the behavior when Make is interrupted; .SECONDARY deletes the target,
but .PRECIOUS does not.

The use of .PRECIOUS is relatively rare since we do not want to keep
partially constructed (possibly corrupted) targets.

.SECONDARY with no prerequisites causes all targets to be treated as
secondary. This agrees the policy of Kbuild.

scripts/Kbuild.include seems a suitable place to add it because it is
included from almost all sub-makes.

I deleted 'SECONDARY' (no dot) from images/Makefile, which I guess
a typo.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

 arch/arm/crypto/Makefile | 2 --
 images/Makefile          | 2 --
 scripts/Kbuild.include   | 3 +++
 3 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/arch/arm/crypto/Makefile b/arch/arm/crypto/Makefile
index 372bf8d..fda4eea 100644
--- a/arch/arm/crypto/Makefile
+++ b/arch/arm/crypto/Makefile
@@ -13,5 +13,3 @@ quiet_cmd_perl = PERL    $@
 
 $(src)/sha256-core.S_shipped: $(src)/sha256-armv4.pl
 	$(call cmd,perl)
-
-.PRECIOUS: $(obj)/sha256-core.S
diff --git a/images/Makefile b/images/Makefile
index 41509aa..e8d1b60 100644
--- a/images/Makefile
+++ b/images/Makefile
@@ -112,8 +112,6 @@ targets += $(patsubst %,%.pbl,$(pblb-y))
 targets += $(patsubst %,%.s,$(pblb-y))
 targets += $(foreach m, $(image-y), $(FILE_$(m)))
 
-SECONDARY: $(addprefix $(obj)/,$(targets))
-
 # Images with full paths
 image-y-path := $(addprefix $(obj)/,$(image-y))
 # File will have a list of images generated
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
index 3b71949..edfe27e 100644
--- a/scripts/Kbuild.include
+++ b/scripts/Kbuild.include
@@ -282,3 +282,6 @@ endif
 
 # delete partially updated (i.e. corrupted) files on error
 .DELETE_ON_ERROR:
+
+# do not delete intermediate files automatically
+.SECONDARY:
-- 
2.7.4


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  parent reply	other threads:[~2018-12-30 14:00 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-30 13:59 [PATCH 00/11] Sync Kconfig to Linux 4.20 Masahiro Yamada
2018-12-30 13:59 ` [PATCH 01/11] kbuild: filter-out PHONY targets from "targets" Masahiro Yamada
2018-12-30 13:59 ` [PATCH 02/11] kbuild: add .DELETE_ON_ERROR special target Masahiro Yamada
2018-12-31  5:52   ` Sam Ravnborg
2018-12-30 13:59 ` Masahiro Yamada [this message]
2018-12-31  5:55   ` [PATCH 03/11] kbuild: add .SECONDARY " Sam Ravnborg
2018-12-30 13:59 ` [PATCH 04/11] kbuild: add %.lex.c and %.tab.[ch] to 'targets' automatically Masahiro Yamada
2018-12-31  5:55   ` Sam Ravnborg
2018-12-30 13:59 ` [PATCH 05/11] treewide: remove blank texts Masahiro Yamada
2018-12-30 13:59 ` [PATCH 06/11] .gitignore: move *.lex.c *.tab.[ch] patterns to the top-level .gitignore Masahiro Yamada
2018-12-30 13:59 ` [PATCH 07/11] kbuild: clean up *.lex.c and *.tab.[ch] patterns from top-level Makefile Masahiro Yamada
2018-12-30 13:59 ` [PATCH 08/11] kbuild: rename HOSTLOADLIBES_* to HOSTLDLIBS_* Masahiro Yamada
2018-12-30 13:59 ` [PATCH 09/11] kbuild: generate lexer and parser during build instead of shipping Masahiro Yamada
2018-12-31  1:02   ` Masahiro Yamada
2018-12-30 13:59 ` [PATCH 10/11] kconfig: sync to Linux 4.20 Masahiro Yamada
2018-12-30 13:59 ` [PATCH 11/11] kbuild: remove unnecessary LEX_PREFIX and YACC_PREFIX Masahiro Yamada
2018-12-31  6:12 ` [PATCH 00/11] Sync Kconfig to Linux 4.20 Sam Ravnborg
2019-01-01  9:13   ` Masahiro Yamada
2019-01-03  9:18     ` Sascha Hauer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1546178368-26182-4-git-send-email-yamada.masahiro@socionext.com \
    --to=yamada.masahiro@socionext.com \
    --cc=barebox@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox