diff mbox series

[v2] tools: do not include scripts/Kbuild.include

Message ID 20210416130051.239782-1-masahiroy@kernel.org
State Accepted
Commit b61442df748f06e98085fb604093a6215ce730eb
Headers show
Series [v2] tools: do not include scripts/Kbuild.include | expand

Commit Message

Masahiro Yamada April 16, 2021, 1 p.m. UTC
Since commit d9f4ff50d2aa ("kbuild: spilt cc-option and friends to
scripts/Makefile.compiler"), some kselftests fail to build.

The tools/ directory opted out Kbuild, and went in a different
direction. They copy any kind of files to the tools/ directory
in order to do whatever they want in their world.

tools/build/Build.include mimics scripts/Kbuild.include, but some
tool Makefiles included the Kbuild one to import a feature that is
missing in tools/build/Build.include:

 - Commit ec04aa3ae87b ("tools/thermal: tmon: use "-fstack-protector"
   only if supported") included scripts/Kbuild.include from
   tools/thermal/tmon/Makefile to import the cc-option macro.

 - Commit c2390f16fc5b ("selftests: kvm: fix for compilers that do
   not support -no-pie") included scripts/Kbuild.include from
   tools/testing/selftests/kvm/Makefile to import the try-run macro.

 - Commit 9cae4ace80ef ("selftests/bpf: do not ignore clang
   failures") included scripts/Kbuild.include from
   tools/testing/selftests/bpf/Makefile to import the .DELETE_ON_ERROR
   target.

 - Commit 0695f8bca93e ("selftests/powerpc: Handle Makefile for
   unrecognized option") included scripts/Kbuild.include from
   tools/testing/selftests/powerpc/pmu/ebb/Makefile to import the
   try-run macro.

Copy what they need into tools/build/Build.include, and make them
include it instead of scripts/Kbuild.include.

Link: https://lore.kernel.org/lkml/86dadf33-70f7-a5ac-cb8c-64966d2f45a1@linux.ibm.com/
Fixes: d9f4ff50d2aa ("kbuild: spilt cc-option and friends to scripts/Makefile.compiler")
Reported-by: Janosch Frank <frankja@linux.ibm.com>
Reported-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

Changes in v2:
  - copy macros to tools/build/BUild.include

 tools/build/Build.include                     | 24 +++++++++++++++++++
 tools/testing/selftests/bpf/Makefile          |  2 +-
 tools/testing/selftests/kvm/Makefile          |  2 +-
 .../selftests/powerpc/pmu/ebb/Makefile        |  2 +-
 tools/thermal/tmon/Makefile                   |  2 +-
 5 files changed, 28 insertions(+), 4 deletions(-)

Comments

Christian Borntraeger April 16, 2021, 1:26 p.m. UTC | #1
On 16.04.21 15:00, Masahiro Yamada wrote:
> Since commit d9f4ff50d2aa ("kbuild: spilt cc-option and friends to
> scripts/Makefile.compiler"), some kselftests fail to build.
> 
> The tools/ directory opted out Kbuild, and went in a different
> direction. They copy any kind of files to the tools/ directory
> in order to do whatever they want in their world.
> 
> tools/build/Build.include mimics scripts/Kbuild.include, but some
> tool Makefiles included the Kbuild one to import a feature that is
> missing in tools/build/Build.include:
> 
>   - Commit ec04aa3ae87b ("tools/thermal: tmon: use "-fstack-protector"
>     only if supported") included scripts/Kbuild.include from
>     tools/thermal/tmon/Makefile to import the cc-option macro.
> 
>   - Commit c2390f16fc5b ("selftests: kvm: fix for compilers that do
>     not support -no-pie") included scripts/Kbuild.include from
>     tools/testing/selftests/kvm/Makefile to import the try-run macro.
> 
>   - Commit 9cae4ace80ef ("selftests/bpf: do not ignore clang
>     failures") included scripts/Kbuild.include from
>     tools/testing/selftests/bpf/Makefile to import the .DELETE_ON_ERROR
>     target.
> 
>   - Commit 0695f8bca93e ("selftests/powerpc: Handle Makefile for
>     unrecognized option") included scripts/Kbuild.include from
>     tools/testing/selftests/powerpc/pmu/ebb/Makefile to import the
>     try-run macro.
> 
> Copy what they need into tools/build/Build.include, and make them
> include it instead of scripts/Kbuild.include.
> 
> Link: https://lore.kernel.org/lkml/86dadf33-70f7-a5ac-cb8c-64966d2f45a1@linux.ibm.com/
> Fixes: d9f4ff50d2aa ("kbuild: spilt cc-option and friends to scripts/Makefile.compiler")
> Reported-by: Janosch Frank <frankja@linux.ibm.com>
> Reported-by: Christian Borntraeger <borntraeger@de.ibm.com>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>

looks better.
Tested-by: Christian Borntraeger <borntraeger@de.ibm.com>
Yonghong Song April 16, 2021, 3:39 p.m. UTC | #2
On 4/16/21 6:00 AM, Masahiro Yamada wrote:
> Since commit d9f4ff50d2aa ("kbuild: spilt cc-option and friends to
> scripts/Makefile.compiler"), some kselftests fail to build.
> 
> The tools/ directory opted out Kbuild, and went in a different
> direction. They copy any kind of files to the tools/ directory
> in order to do whatever they want in their world.
> 
> tools/build/Build.include mimics scripts/Kbuild.include, but some
> tool Makefiles included the Kbuild one to import a feature that is
> missing in tools/build/Build.include:
> 
>   - Commit ec04aa3ae87b ("tools/thermal: tmon: use "-fstack-protector"
>     only if supported") included scripts/Kbuild.include from
>     tools/thermal/tmon/Makefile to import the cc-option macro.
> 
>   - Commit c2390f16fc5b ("selftests: kvm: fix for compilers that do
>     not support -no-pie") included scripts/Kbuild.include from
>     tools/testing/selftests/kvm/Makefile to import the try-run macro.
> 
>   - Commit 9cae4ace80ef ("selftests/bpf: do not ignore clang
>     failures") included scripts/Kbuild.include from
>     tools/testing/selftests/bpf/Makefile to import the .DELETE_ON_ERROR
>     target.
> 
>   - Commit 0695f8bca93e ("selftests/powerpc: Handle Makefile for
>     unrecognized option") included scripts/Kbuild.include from
>     tools/testing/selftests/powerpc/pmu/ebb/Makefile to import the
>     try-run macro.
> 
> Copy what they need into tools/build/Build.include, and make them
> include it instead of scripts/Kbuild.include.
> 
> Link: https://lore.kernel.org/lkml/86dadf33-70f7-a5ac-cb8c-64966d2f45a1@linux.ibm.com/
> Fixes: d9f4ff50d2aa ("kbuild: spilt cc-option and friends to scripts/Makefile.compiler")
> Reported-by: Janosch Frank <frankja@linux.ibm.com>
> Reported-by: Christian Borntraeger <borntraeger@de.ibm.com>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>

LGTM although I see some tools Makefile directly added 
".DELETE_ON_ERROR:" in their Makefile.

Acked-by: Yonghong Song <yhs@fb.com>
Masahiro Yamada April 17, 2021, 2:57 p.m. UTC | #3
On Fri, Apr 16, 2021 at 10:01 PM Masahiro Yamada <masahiroy@kernel.org> wrote:
>

> Since commit d9f4ff50d2aa ("kbuild: spilt cc-option and friends to

> scripts/Makefile.compiler"), some kselftests fail to build.

>

> The tools/ directory opted out Kbuild, and went in a different

> direction. They copy any kind of files to the tools/ directory

> in order to do whatever they want in their world.

>

> tools/build/Build.include mimics scripts/Kbuild.include, but some

> tool Makefiles included the Kbuild one to import a feature that is

> missing in tools/build/Build.include:

>

>  - Commit ec04aa3ae87b ("tools/thermal: tmon: use "-fstack-protector"

>    only if supported") included scripts/Kbuild.include from

>    tools/thermal/tmon/Makefile to import the cc-option macro.

>

>  - Commit c2390f16fc5b ("selftests: kvm: fix for compilers that do

>    not support -no-pie") included scripts/Kbuild.include from

>    tools/testing/selftests/kvm/Makefile to import the try-run macro.

>

>  - Commit 9cae4ace80ef ("selftests/bpf: do not ignore clang

>    failures") included scripts/Kbuild.include from

>    tools/testing/selftests/bpf/Makefile to import the .DELETE_ON_ERROR

>    target.

>

>  - Commit 0695f8bca93e ("selftests/powerpc: Handle Makefile for

>    unrecognized option") included scripts/Kbuild.include from

>    tools/testing/selftests/powerpc/pmu/ebb/Makefile to import the

>    try-run macro.

>

> Copy what they need into tools/build/Build.include, and make them

> include it instead of scripts/Kbuild.include.

>

> Link: https://lore.kernel.org/lkml/86dadf33-70f7-a5ac-cb8c-64966d2f45a1@linux.ibm.com/

> Fixes: d9f4ff50d2aa ("kbuild: spilt cc-option and friends to scripts/Makefile.compiler")

> Reported-by: Janosch Frank <frankja@linux.ibm.com>

> Reported-by: Christian Borntraeger <borntraeger@de.ibm.com>

> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>



Applied to linux-kbuild.




> ---

>

> Changes in v2:

>   - copy macros to tools/build/BUild.include

>

>  tools/build/Build.include                     | 24 +++++++++++++++++++

>  tools/testing/selftests/bpf/Makefile          |  2 +-

>  tools/testing/selftests/kvm/Makefile          |  2 +-

>  .../selftests/powerpc/pmu/ebb/Makefile        |  2 +-

>  tools/thermal/tmon/Makefile                   |  2 +-

>  5 files changed, 28 insertions(+), 4 deletions(-)

>

> diff --git a/tools/build/Build.include b/tools/build/Build.include

> index 585486e40995..2cf3b1bde86e 100644

> --- a/tools/build/Build.include

> +++ b/tools/build/Build.include

> @@ -100,3 +100,27 @@ cxx_flags = -Wp,-MD,$(depfile) -Wp,-MT,$@ $(CXXFLAGS) -D"BUILD_STR(s)=\#s" $(CXX

>  ## HOSTCC C flags

>

>  host_c_flags = -Wp,-MD,$(depfile) -Wp,-MT,$@ $(KBUILD_HOSTCFLAGS) -D"BUILD_STR(s)=\#s" $(HOSTCFLAGS_$(basetarget).o) $(HOSTCFLAGS_$(obj))

> +

> +# output directory for tests below

> +TMPOUT = .tmp_$$$$

> +

> +# try-run

> +# Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise)

> +# Exit code chooses option. "$$TMP" serves as a temporary file and is

> +# automatically cleaned up.

> +try-run = $(shell set -e;              \

> +       TMP=$(TMPOUT)/tmp;              \

> +       mkdir -p $(TMPOUT);             \

> +       trap "rm -rf $(TMPOUT)" EXIT;   \

> +       if ($(1)) >/dev/null 2>&1;      \

> +       then echo "$(2)";               \

> +       else echo "$(3)";               \

> +       fi)

> +

> +# cc-option

> +# Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586)

> +cc-option = $(call try-run, \

> +       $(CC) -Werror $(1) -c -x c /dev/null -o "$$TMP",$(1),$(2))

> +

> +# delete partially updated (i.e. corrupted) files on error

> +.DELETE_ON_ERROR:

> diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile

> index 044bfdcf5b74..17a5cdf48d37 100644

> --- a/tools/testing/selftests/bpf/Makefile

> +++ b/tools/testing/selftests/bpf/Makefile

> @@ -1,5 +1,5 @@

>  # SPDX-License-Identifier: GPL-2.0

> -include ../../../../scripts/Kbuild.include

> +include ../../../build/Build.include

>  include ../../../scripts/Makefile.arch

>  include ../../../scripts/Makefile.include

>

> diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile

> index a6d61f451f88..5ef141f265bd 100644

> --- a/tools/testing/selftests/kvm/Makefile

> +++ b/tools/testing/selftests/kvm/Makefile

> @@ -1,5 +1,5 @@

>  # SPDX-License-Identifier: GPL-2.0-only

> -include ../../../../scripts/Kbuild.include

> +include ../../../build/Build.include

>

>  all:

>

> diff --git a/tools/testing/selftests/powerpc/pmu/ebb/Makefile b/tools/testing/selftests/powerpc/pmu/ebb/Makefile

> index af3df79d8163..c5ecb4634094 100644

> --- a/tools/testing/selftests/powerpc/pmu/ebb/Makefile

> +++ b/tools/testing/selftests/powerpc/pmu/ebb/Makefile

> @@ -1,5 +1,5 @@

>  # SPDX-License-Identifier: GPL-2.0

> -include ../../../../../../scripts/Kbuild.include

> +include ../../../../../build/Build.include

>

>  noarg:

>         $(MAKE) -C ../../

> diff --git a/tools/thermal/tmon/Makefile b/tools/thermal/tmon/Makefile

> index 59e417ec3e13..9db867df7679 100644

> --- a/tools/thermal/tmon/Makefile

> +++ b/tools/thermal/tmon/Makefile

> @@ -1,6 +1,6 @@

>  # SPDX-License-Identifier: GPL-2.0

>  # We need this for the "cc-option" macro.

> -include ../../../scripts/Kbuild.include

> +include ../../build/Build.include

>

>  VERSION = 1.0

>

> --

> 2.27.0

>

> --

> You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.

> To unsubscribe from this group and stop receiving emails from it, send an email to clang-built-linux+unsubscribe@googlegroups.com.

> To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/20210416130051.239782-1-masahiroy%40kernel.org.




-- 
Best Regards
Masahiro Yamada
diff mbox series

Patch

diff --git a/tools/build/Build.include b/tools/build/Build.include
index 585486e40995..2cf3b1bde86e 100644
--- a/tools/build/Build.include
+++ b/tools/build/Build.include
@@ -100,3 +100,27 @@  cxx_flags = -Wp,-MD,$(depfile) -Wp,-MT,$@ $(CXXFLAGS) -D"BUILD_STR(s)=\#s" $(CXX
 ## HOSTCC C flags
 
 host_c_flags = -Wp,-MD,$(depfile) -Wp,-MT,$@ $(KBUILD_HOSTCFLAGS) -D"BUILD_STR(s)=\#s" $(HOSTCFLAGS_$(basetarget).o) $(HOSTCFLAGS_$(obj))
+
+# output directory for tests below
+TMPOUT = .tmp_$$$$
+
+# try-run
+# Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise)
+# Exit code chooses option. "$$TMP" serves as a temporary file and is
+# automatically cleaned up.
+try-run = $(shell set -e;		\
+	TMP=$(TMPOUT)/tmp;		\
+	mkdir -p $(TMPOUT);		\
+	trap "rm -rf $(TMPOUT)" EXIT;	\
+	if ($(1)) >/dev/null 2>&1;	\
+	then echo "$(2)";		\
+	else echo "$(3)";		\
+	fi)
+
+# cc-option
+# Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586)
+cc-option = $(call try-run, \
+	$(CC) -Werror $(1) -c -x c /dev/null -o "$$TMP",$(1),$(2))
+
+# delete partially updated (i.e. corrupted) files on error
+.DELETE_ON_ERROR:
diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
index 044bfdcf5b74..17a5cdf48d37 100644
--- a/tools/testing/selftests/bpf/Makefile
+++ b/tools/testing/selftests/bpf/Makefile
@@ -1,5 +1,5 @@ 
 # SPDX-License-Identifier: GPL-2.0
-include ../../../../scripts/Kbuild.include
+include ../../../build/Build.include
 include ../../../scripts/Makefile.arch
 include ../../../scripts/Makefile.include
 
diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile
index a6d61f451f88..5ef141f265bd 100644
--- a/tools/testing/selftests/kvm/Makefile
+++ b/tools/testing/selftests/kvm/Makefile
@@ -1,5 +1,5 @@ 
 # SPDX-License-Identifier: GPL-2.0-only
-include ../../../../scripts/Kbuild.include
+include ../../../build/Build.include
 
 all:
 
diff --git a/tools/testing/selftests/powerpc/pmu/ebb/Makefile b/tools/testing/selftests/powerpc/pmu/ebb/Makefile
index af3df79d8163..c5ecb4634094 100644
--- a/tools/testing/selftests/powerpc/pmu/ebb/Makefile
+++ b/tools/testing/selftests/powerpc/pmu/ebb/Makefile
@@ -1,5 +1,5 @@ 
 # SPDX-License-Identifier: GPL-2.0
-include ../../../../../../scripts/Kbuild.include
+include ../../../../../build/Build.include
 
 noarg:
 	$(MAKE) -C ../../
diff --git a/tools/thermal/tmon/Makefile b/tools/thermal/tmon/Makefile
index 59e417ec3e13..9db867df7679 100644
--- a/tools/thermal/tmon/Makefile
+++ b/tools/thermal/tmon/Makefile
@@ -1,6 +1,6 @@ 
 # SPDX-License-Identifier: GPL-2.0
 # We need this for the "cc-option" macro.
-include ../../../scripts/Kbuild.include
+include ../../build/Build.include
 
 VERSION = 1.0