From patchwork Mon Mar 26 15:53:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 132420 Delivered-To: patch@linaro.org Received: by 10.46.84.29 with SMTP id i29csp4003629ljb; Mon, 26 Mar 2018 08:55:33 -0700 (PDT) X-Google-Smtp-Source: AG47ELsfu9yAk+4DrikOsFNJhKVZv/pisZiq0Kzy6NPCJdr/LbopJ9zGVK9wCE2qp/5RU8ZZrraP X-Received: by 2002:a17:902:3341:: with SMTP id a59-v6mr24793154plc.68.1522079732925; Mon, 26 Mar 2018 08:55:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522079732; cv=none; d=google.com; s=arc-20160816; b=Rfu5+gICs50ymqKkqcXd8z1rH62ZMUyWq+tjyopAZA0uYWtFggnHQOjmXfG4Pc+LEm XFqwc4oTsWOfQr2HSjA/MaRX3qcoz03Lh4bHcoW+yzotY7TzaC8+t6MjEQTCd0jBobrh 4yyDa/gOrYkydBL0uQ3i/8xryyFjfBZl6gwVO+SIO0Icwcql8CtiZSX2jwGuYvTLFXRD VQyBRC/OFWpM8jFJVvDH387IUXxE+A8+jm/tq+JdNvNDSgkrSzKI0uyvBFihvCptedsd PWkOnvZ2lHPj0ITjv7SHkemh5z3X99KE1ijxcquawmxBpwy4fNR98H98TrodVlY5K7Rm 13nw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:dkim-filter:arc-authentication-results; bh=ppgNtuP01PJoq7S9YO2B2GtVkG3kV/k47s2IaQzvyOs=; b=cOUApVUkNxr6A08y8GWh6gjJvtk+8s2esxM8JRoj/f8nO47N3CuZ9nef0+zrcaFGJb S5QVzsUGPbeXVW/2Txt/nwCfRuNYqZElHReJCHtgwNNr1Q304LiSw12aVXwZv5y5qHJ4 SNa45/hnLsmDk+kOlSqtwPWDzGjE+4FfbhpVrg9HptNQ25tA2AzMXeYZk2IW0Eu7wQjB /46PKqCXAT24Uiq5avwUtY7z2C3kMFEWxWKa/+4IicJViI22lrr2jHmXxdy2zDG9mIa6 75VXj0X3jpPTqm8R+GXeS4AavRPL17lQa1Oht71m/QR6REvwc+cPFW11IbbaMm3OKNm0 ZB5A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=MDHPs3Up; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n77si11906780pfh.307.2018.03.26.08.55.32; Mon, 26 Mar 2018 08:55:32 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=MDHPs3Up; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752394AbeCZPz3 (ORCPT + 28 others); Mon, 26 Mar 2018 11:55:29 -0400 Received: from conuserg-09.nifty.com ([210.131.2.76]:43700 "EHLO conuserg-09.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752305AbeCZPz1 (ORCPT ); Mon, 26 Mar 2018 11:55:27 -0400 Received: from grover.sesame (FL1-125-199-20-195.osk.mesh.ad.jp [125.199.20.195]) (authenticated) by conuserg-09.nifty.com with ESMTP id w2QFrv8B007902; Tue, 27 Mar 2018 00:53:57 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-09.nifty.com w2QFrv8B007902 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1522079638; bh=ppgNtuP01PJoq7S9YO2B2GtVkG3kV/k47s2IaQzvyOs=; h=From:To:Cc:Subject:Date:From; b=MDHPs3UpST0FuyrzKo1jVoGs1Jg8t4P7BDQ0pCyI0DuVIUoWBZ22Y8P6hh3sb+GXL An+C4aCqtd0Fy5TCdzp4sSGskmIX5yncp07kYiPXDcZicdDkuRzjbDYfFmJaxSirU0 2kAyj++6TLOXctygv/WD7Ggs6Pswk0MVORL6Pfk8NH5giH9SLrCWOpD74Mw8OI5unL u8SA1V1X7KY+XSnxcPV4QH3SYEpPwaS8OcH8m9Y0IORm8CBoYWDSZxwlRK9Tz2RRNs AHYqGMj0spZjD2FI5EUSQBFcPePmoEE9V9ryCkIPmHbN2a+OC3c9AuK2y4jZ5l1qYj qL4j3zqYFDC/Q== X-Nifty-SrcIP: [125.199.20.195] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Arnd Bergmann , Laurent Pinchart , Geert Uytterhoeven , x86@kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, sparclinux@vger.kernel.org, Sam Ravnborg , Masahiro Yamada Subject: [PATCH v2, 10/10] kbuild: mark $(targets) as .SECONDARY and remove .PRECIOUS markers Date: Tue, 27 Mar 2018 00:53:54 +0900 Message-Id: <1522079634-5947-1-git-send-email-yamada.masahiro@socionext.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 A couple of makefiles mark 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. Another difference is that .PRECIOUS works with pattern rules whereas .SECONDARY does not. .PRECIOUS: $(obj)/%.lex.c works, but .SECONDARY: $(obj)/%.lex.c has no effect. However, for the reason above, I do not want to use .PRECIOUS which could cause obscure build breakage. The targets specified as .SECONDARY must be explicit. $(targets) contains all targets that need to include .*.cmd files. So, the intermediates you want to keep are mostly in there. Therefore, mark $(targets) as .SECONDARY. It means primary targets are also marked as .SECONDARY, but I do not see any drawback for this. I replaced some .SECONDARY / .PRECIOUS markers with 'targets'. This will make Kbuild search for non-existing .*.cmd files, but this is not a noticeable performance issue. Signed-off-by: Masahiro Yamada Acked-by: Frank Rowand --- arch/arc/boot/dts/Makefile | 2 -- arch/arm/crypto/Makefile | 2 +- arch/arm64/crypto/Makefile | 2 +- arch/metag/boot/dts/Makefile | 2 -- arch/sparc/vdso/Makefile | 4 +--- arch/x86/entry/vdso/Makefile | 4 +--- drivers/of/unittest-data/Makefile | 4 ---- scripts/Makefile.build | 10 +++++++--- scripts/Makefile.lib | 3 --- 9 files changed, 11 insertions(+), 22 deletions(-) -- 2.7.4 Acked-by: Ingo Molnar diff --git a/arch/arc/boot/dts/Makefile b/arch/arc/boot/dts/Makefile index 22a4c5d..a83c4f5 100644 --- a/arch/arc/boot/dts/Makefile +++ b/arch/arc/boot/dts/Makefile @@ -9,8 +9,6 @@ endif obj-y += $(builtindtb-y).dtb.o dtb-y := $(builtindtb-y).dtb -.SECONDARY: $(obj)/$(builtindtb-y).dtb.S - # for CONFIG_OF_ALL_DTBS test dtstree := $(srctree)/$(src) dtb- := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts)) diff --git a/arch/arm/crypto/Makefile b/arch/arm/crypto/Makefile index 30ef8e2..b69ea35 100644 --- a/arch/arm/crypto/Makefile +++ b/arch/arm/crypto/Makefile @@ -63,4 +63,4 @@ $(src)/sha256-core.S_shipped: $(src)/sha256-armv4.pl $(src)/sha512-core.S_shipped: $(src)/sha512-armv4.pl $(call cmd,perl) -.PRECIOUS: $(obj)/sha256-core.S $(obj)/sha512-core.S +targets += sha256-core.S sha512-core.S diff --git a/arch/arm64/crypto/Makefile b/arch/arm64/crypto/Makefile index cee9b8d9..036eb23 100644 --- a/arch/arm64/crypto/Makefile +++ b/arch/arm64/crypto/Makefile @@ -76,4 +76,4 @@ $(src)/sha256-core.S_shipped: $(src)/sha512-armv8.pl $(src)/sha512-core.S_shipped: $(src)/sha512-armv8.pl $(call cmd,perlasm) -.PRECIOUS: $(obj)/sha256-core.S $(obj)/sha512-core.S +targets += sha256-core.S sha512-core.S diff --git a/arch/metag/boot/dts/Makefile b/arch/metag/boot/dts/Makefile index f0a180f..16505aa 100644 --- a/arch/metag/boot/dts/Makefile +++ b/arch/metag/boot/dts/Makefile @@ -12,5 +12,3 @@ endif dtb-$(CONFIG_METAG_BUILTIN_DTB) += $(builtindtb-y).dtb obj-$(CONFIG_METAG_BUILTIN_DTB) += $(builtindtb-y).dtb.o - -.SECONDARY: $(obj)/$(builtindtb-y).dtb.S diff --git a/arch/sparc/vdso/Makefile b/arch/sparc/vdso/Makefile index a6615d8..dd0b5a9 100644 --- a/arch/sparc/vdso/Makefile +++ b/arch/sparc/vdso/Makefile @@ -29,9 +29,7 @@ vdso_img_cfiles := $(vdso_img-y:%=vdso-image-%.c) vdso_img_sodbg := $(vdso_img-y:%=vdso%.so.dbg) obj-y += $(vdso_img_objs) targets += $(vdso_img_cfiles) -targets += $(vdso_img_sodbg) -.SECONDARY: $(vdso_img-y:%=$(obj)/vdso-image-%.c) \ - $(vdso_img-y:%=$(obj)/vdso%.so) +targets += $(vdso_img_sodbg) $(vdso_img-y:%=vdso%.so) export CPPFLAGS_vdso.lds += -P -C diff --git a/arch/x86/entry/vdso/Makefile b/arch/x86/entry/vdso/Makefile index 1943aeb..d998a48 100644 --- a/arch/x86/entry/vdso/Makefile +++ b/arch/x86/entry/vdso/Makefile @@ -42,9 +42,7 @@ vdso_img_cfiles := $(vdso_img-y:%=vdso-image-%.c) vdso_img_sodbg := $(vdso_img-y:%=vdso%.so.dbg) obj-y += $(vdso_img_objs) targets += $(vdso_img_cfiles) -targets += $(vdso_img_sodbg) -.SECONDARY: $(vdso_img-y:%=$(obj)/vdso-image-%.c) \ - $(vdso_img-y:%=$(obj)/vdso%.so) +targets += $(vdso_img_sodbg) $(vdso_img-y:%=vdso%.so) export CPPFLAGS_vdso.lds += -P -C diff --git a/drivers/of/unittest-data/Makefile b/drivers/of/unittest-data/Makefile index 87a65ca..013d85e 100644 --- a/drivers/of/unittest-data/Makefile +++ b/drivers/of/unittest-data/Makefile @@ -30,7 +30,3 @@ DTC_FLAGS_testcases += -@ # suppress warnings about intentional errors DTC_FLAGS_testcases += -Wno-interrupts_property - -.PRECIOUS: \ - $(obj)/%.dtb.S \ - $(obj)/%.dtb diff --git a/scripts/Makefile.build b/scripts/Makefile.build index ee004f5..67fda60 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build @@ -434,8 +434,6 @@ quiet_cmd_asn1_compiler = ASN.1 $@ cmd_asn1_compiler = $(objtree)/scripts/asn1_compiler $< \ $(subst .h,.c,$@) $(subst .c,.h,$@) -.PRECIOUS: $(objtree)/$(obj)/%.asn1.c $(objtree)/$(obj)/%.asn1.h - $(obj)/%.asn1.c $(obj)/%.asn1.h: $(src)/%.asn1 $(objtree)/scripts/asn1_compiler $(call cmd,asn1_compiler) @@ -573,10 +571,12 @@ targets := $(filter-out $(PHONY), $(targets)) intermediate_targets = $(foreach sfx, $(2), \ $(patsubst %$(strip $(1)),%$(sfx), \ $(filter %$(strip $(1)), $(targets)))) +# %.asn1.o <- %.asn1.[ch] <- %.asn1 # %.dtb.o <- %.dtb.S <- %.dtb <- %.dts # %.lex.o <- %.lex.c <- %.l # %.tab.o <- %.tab.[ch] <- %.y -targets += $(call intermediate_targets, .dtb.o, .dtb.S .dtb) \ +targets += $(call intermediate_targets, .asn1.o, .asn1.c .asn1.h) \ + $(call intermediate_targets, .dtb.o, .dtb.S .dtb) \ $(call intermediate_targets, .lex.o, .lex.c) \ $(call intermediate_targets, .tab.o, .tab.c .tab.h) @@ -616,6 +616,10 @@ $(shell mkdir -p $(obj-dirs)) endif endif +# Some files contained in $(targets) are intermediate artifacts. +# We never want them to be removed automatically. +.SECONDARY: $(targets) + # Declare the contents of the .PHONY variable as phony. We keep that # information in a variable se we can use it in if_changed and friends. diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 2882e19..173d198 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -191,7 +191,6 @@ endef quiet_cmd_flex = LEX $@ cmd_flex = $(LEX) -o$@ -L $< -.PRECIOUS: $(obj)/%.lex.c $(obj)/%.lex.c: $(src)/%.l FORCE $(call if_changed,flex) @@ -200,14 +199,12 @@ $(obj)/%.lex.c: $(src)/%.l FORCE quiet_cmd_bison = YACC $@ cmd_bison = $(YACC) -o$@ -t -l $< -.PRECIOUS: $(obj)/%.tab.c $(obj)/%.tab.c: $(src)/%.y FORCE $(call if_changed,bison) quiet_cmd_bison_h = YACC $@ cmd_bison_h = bison -o/dev/null --defines=$@ -t -l $< -.PRECIOUS: $(obj)/%.tab.h $(obj)/%.tab.h: $(src)/%.y FORCE $(call if_changed,bison_h)