1
0
Fork 0
alistair23-linux/tools
Thomas Hebb 4f69483568 tools build feature: Use CC and CXX from parent
[ Upstream commit e3232c2f39 ]

commit c8c188679c ("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: c8c188679c ("tools build: Use the same CC for feature detection and actual build")
Signed-off-by: Thomas Hebb <tommyhebb@gmail.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Carrillo-Cisneros <davidcc@google.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Igor Lubashev <ilubashe@akamai.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Quentin Monnet <quentin@isovalent.com>
Cc: Song Liu <songliubraving@fb.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: thomas hebb <tommyhebb@gmail.com>
Link: http://lore.kernel.org/lkml/0a6e69d1736b0fa231a648f50b0cce5d8a6734ef.1595822871.git.tommyhebb@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-08-21 13:05:34 +02:00
..
accounting tools/accounting/getdelays.c: fix netlink attribute length 2020-04-13 10:48:08 +02:00
arch x86/syscalls: Revert "x86/syscalls: Make __X32_SYSCALL_BIT be unsigned long" 2020-06-03 08:21:29 +02:00
bpf tools, bpftool: Fix wrong return value in do_dump() 2020-08-19 08:16:19 +02:00
build tools build feature: Use CC and CXX from parent 2020-08-21 13:05:34 +02:00
cgroup iocost_monitor: drop string wrap around numbers when outputting json 2020-06-22 09:31:01 +02:00
debugging
firewire treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
firmware Driver Core and debugfs changes for 5.3-rc1 2019-07-12 12:24:03 -07:00
gpio tools: gpio: Fix out-of-tree build regression 2020-04-17 10:50:17 +02:00
hv - First round of vmbus hibernation support from Dexuan Cui. 2019-09-24 12:36:31 -07:00
iio tools: iio: add .gitignore 2019-08-18 20:45:57 +01:00
include tools lib: Fix builds when glibc contains strlcpy() 2020-02-05 21:22:40 +00:00
io_uring tools/io_uring: sync with liburing 2019-05-23 10:25:26 -06:00
kvm/kvm_stat tools/kvm_stat: Fix kvm_exit filter name 2020-02-11 04:35:36 -08:00
laptop treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 505 2019-06-19 17:11:22 +02:00
leds leds: core: Add support for composing LED class device names 2019-07-25 20:07:52 +02:00
lib tools lib traceevent: Fix memory leak in process_dynamic_array_len 2020-08-11 15:33:38 +02:00
memory-model tools/memory-model: Fix data race detection for unordered store and load 2019-12-31 16:43:40 +01:00
nfsd
objtool objtool: Ignore empty alternatives 2020-06-22 09:30:50 +02:00
pci tools: PCI: Fix fd leakage 2020-01-17 19:48:54 +01:00
pcmcia treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 247 2019-06-19 17:09:08 +02:00
perf perf intel-pt: Fix duplicate branch after CBR 2020-08-21 13:05:29 +02:00
power tools/power turbostat: Fix 32-bit capabilities warning 2020-04-08 09:08:39 +02:00
scripts tools: Let O= makes handle a relative path with -C option 2020-04-01 11:02:00 +02:00
spi treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 178 2019-05-30 11:29:19 -07:00
testing selftests/powerpc: ptrace-pkey: Don't update expected UAMOR value 2020-08-21 13:05:33 +02:00
thermal/tmon treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 89 2019-05-24 17:37:52 +02:00
time treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
usb usbip: Fix unsafe unaligned pointer usage 2020-02-24 08:36:44 +01:00
virtio tools/virtio: xen stub 2019-10-13 09:38:27 -04:00
vm tools/vm: fix cross-compile build 2020-04-29 16:33:15 +02:00
wmi treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
Makefile tools: Keep list of tools in alphabetical order 2019-08-14 10:59:59 -03:00