Patch "tools build feature: Use CC and CXX from parent" has been added to the 4.14-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    tools build feature: Use CC and CXX from parent

to the 4.14-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     tools-build-feature-use-cc-and-cxx-from-parent.patch
and it can be found in the queue-4.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 455c1cf067416e63b3b35e862dfe93b8dc796ab7
Author: Thomas Hebb <tommyhebb@xxxxxxxxx>
Date:   Sun Jul 26 21:08:14 2020 -0700

    tools build feature: Use CC and CXX from parent
    
    [ Upstream commit e3232c2f39acafd5a29128425bc30b9884642cfa ]
    
    commit c8c188679ccf ("tools build: Use the same CC for feature detection
    and actual build") changed these assignments from unconditional (:=) to
    conditional (?=) so that they wouldn't clobber values from the
    environment. However, conditional assignment does not work properly for
    variables that Make implicitly sets, among which are CC and CXX. To
    quote tools/scripts/Makefile.include, which handles this properly:
    
      # Makefiles suck: This macro sets a default value of $(2) for the
      # variable named by $(1), unless the variable has been set by
      # environment or command line. This is necessary for CC and AR
      # because make sets default values, so the simpler ?= approach
      # won't work as expected.
    
    In other words, the conditional assignments will not run even if the
    variables are not overridden in the environment; Make will set CC to
    "cc" and CXX to "g++" when it starts[1], meaning the variables are not
    empty by the time the conditional assignments are evaluated. This breaks
    cross-compilation when CROSS_COMPILE is set but CC isn't, since "cc"
    gets used for feature detection instead of the cross compiler (and
    likewise for CXX).
    
    To fix the issue, just pass down the values of CC and CXX computed by
    the parent Makefile, which gets included by the Makefile that actually
    builds whatever we're detecting features for and so is guaranteed to
    have good values. This is a better solution anyway, since it means we
    aren't trying to replicate the logic of the parent build system and so
    don't risk it getting out of sync.
    
    Leave PKG_CONFIG alone, since 1) there's no common logic to compute it
    in Makefile.include, and 2) it's not an implicit variable, so
    conditional assignment works properly.
    
    [1] https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html
    
    Fixes: c8c188679ccf ("tools build: Use the same CC for feature detection and actual build")
    Signed-off-by: Thomas Hebb <tommyhebb@xxxxxxxxx>
    Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx>
    Cc: David Carrillo-Cisneros <davidcc@xxxxxxxxxx>
    Cc: Ian Rogers <irogers@xxxxxxxxxx>
    Cc: Igor Lubashev <ilubashe@xxxxxxxxxx>
    Cc: Namhyung Kim <namhyung@xxxxxxxxxx>
    Cc: Quentin Monnet <quentin@xxxxxxxxxxxxx>
    Cc: Song Liu <songliubraving@xxxxxx>
    Cc: Stephane Eranian <eranian@xxxxxxxxxx>
    Cc: thomas hebb <tommyhebb@xxxxxxxxx>
    Link: http://lore.kernel.org/lkml/0a6e69d1736b0fa231a648f50b0cce5d8a6734ef.1595822871.git.tommyhebb@xxxxxxxxx
    Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
index c71a05b9c984f..a2389f0c0b1c0 100644
--- a/tools/build/Makefile.feature
+++ b/tools/build/Makefile.feature
@@ -7,7 +7,7 @@ endif
 
 feature_check = $(eval $(feature_check_code))
 define feature_check_code
-  feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" CXXFLAGS="$(EXTRA_CXXFLAGS) $(FEATURE_CHECK_CXXFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) $(OUTPUT_FEATURES)test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0)
+  feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CC=$(CC) CXX=$(CXX) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" CXXFLAGS="$(EXTRA_CXXFLAGS) $(FEATURE_CHECK_CXXFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) $(OUTPUT_FEATURES)test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0)
 endef
 
 feature_set = $(eval $(feature_set_code))
diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
index 96982640fbf88..26316749e594a 100644
--- a/tools/build/feature/Makefile
+++ b/tools/build/feature/Makefile
@@ -55,8 +55,6 @@ FILES=                                          \
 
 FILES := $(addprefix $(OUTPUT),$(FILES))
 
-CC ?= $(CROSS_COMPILE)gcc
-CXX ?= $(CROSS_COMPILE)g++
 PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config
 LLVM_CONFIG ?= llvm-config
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux