Commit b61442df authored by Masahiro Yamada's avatar Masahiro Yamada
Browse files

tools: do not include scripts/Kbuild.include

Since commit 57fd251c ("kbuild: split 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. People copied scripts and Makefiles to the tools/ directory
to create their own build system.

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

 - Commit ec04aa3a ("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 c2390f16 ("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 9cae4ace ("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 0695f8bc ("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: 57fd251c ("kbuild: split cc-option and friends to scripts/Makefile.compiler")
Reported-by: default avatarJanosch Frank <frankja@linux.ibm.com>
Reported-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
Tested-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
Acked-by: default avatarYonghong Song <yhs@fb.com>
parent 0e0345b7
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -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:
+1 −1
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
include ../../../../scripts/Kbuild.include
include ../../../build/Build.include
include ../../../scripts/Makefile.arch
include ../../../scripts/Makefile.include

+1 −1
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only
include ../../../../scripts/Kbuild.include
include ../../../build/Build.include

all:

+1 −1
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
include ../../../../../../scripts/Kbuild.include
include ../../../../../build/Build.include

noarg:
	$(MAKE) -C ../../
+1 −1
Original line number Diff line number Diff line
# 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