diff mbox series

tools build feature: Quote CC and CXX for their arguments

Message ID 20200812221518.2869003-1-daniel.diaz@linaro.org
State New
Headers show
Series tools build feature: Quote CC and CXX for their arguments | expand

Commit Message

Daniel Díaz Aug. 12, 2020, 10:15 p.m. UTC
When using a cross-compilation environment, such as OpenEmbedded,
the CC an CXX variables are set to something more than just a
command: there are arguments (such as --sysroot) that need to be
passed on to the compiler so that the right set of headers and
libraries are used.

For the particular case that our systems detected, CC is set to
the following:

  export CC="aarch64-linaro-linux-gcc  --sysroot=/oe/build/tmp/work/machine/perf/1.0-r9/recipe-sysroot"

Without quotes, detection is as follows:

  Auto-detecting system features:
  ...                         dwarf: [ OFF ]
  ...            dwarf_getlocations: [ OFF ]
  ...                         glibc: [ OFF ]
  ...                          gtk2: [ OFF ]
  ...                        libbfd: [ OFF ]
  ...                        libcap: [ OFF ]
  ...                        libelf: [ OFF ]
  ...                       libnuma: [ OFF ]
  ...        numa_num_possible_cpus: [ OFF ]
  ...                       libperl: [ OFF ]
  ...                     libpython: [ OFF ]
  ...                     libcrypto: [ OFF ]
  ...                     libunwind: [ OFF ]
  ...            libdw-dwarf-unwind: [ OFF ]
  ...                          zlib: [ OFF ]
  ...                          lzma: [ OFF ]
  ...                     get_cpuid: [ OFF ]
  ...                           bpf: [ OFF ]
  ...                        libaio: [ OFF ]
  ...                       libzstd: [ OFF ]
  ...        disassembler-four-args: [ OFF ]

  Makefile.config:414: *** No gnu/libc-version.h found, please install glibc-dev[el].  Stop.
  Makefile.perf:230: recipe for target 'sub-make' failed
  make[1]: *** [sub-make] Error 2
  Makefile:69: recipe for target 'all' failed
  make: *** [all] Error 2

With CC and CXX quoted, some of those features are now detected.

Fixes: e3232c2f39ac ("tools build feature: Use CC and CXX from parent")

Signed-off-by: Daniel Díaz <daniel.diaz@linaro.org>

---
 tools/build/Makefile.feature | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.25.1

Comments

Thomas Hebb Aug. 13, 2020, 2:31 a.m. UTC | #1
On Wed, Aug 12, 2020 at 3:15 PM Daniel Díaz <daniel.diaz@linaro.org> wrote:
>

> When using a cross-compilation environment, such as OpenEmbedded,

> the CC an CXX variables are set to something more than just a

> command: there are arguments (such as --sysroot) that need to be

> passed on to the compiler so that the right set of headers and

> libraries are used.

>

> For the particular case that our systems detected, CC is set to

> the following:

>

>   export CC="aarch64-linaro-linux-gcc  --sysroot=/oe/build/tmp/work/machine/perf/1.0-r9/recipe-sysroot"

>

> Without quotes, detection is as follows:

>

>   Auto-detecting system features:

>   ...                         dwarf: [ OFF ]

>   ...            dwarf_getlocations: [ OFF ]

>   ...                         glibc: [ OFF ]

>   ...                          gtk2: [ OFF ]

>   ...                        libbfd: [ OFF ]

>   ...                        libcap: [ OFF ]

>   ...                        libelf: [ OFF ]

>   ...                       libnuma: [ OFF ]

>   ...        numa_num_possible_cpus: [ OFF ]

>   ...                       libperl: [ OFF ]

>   ...                     libpython: [ OFF ]

>   ...                     libcrypto: [ OFF ]

>   ...                     libunwind: [ OFF ]

>   ...            libdw-dwarf-unwind: [ OFF ]

>   ...                          zlib: [ OFF ]

>   ...                          lzma: [ OFF ]

>   ...                     get_cpuid: [ OFF ]

>   ...                           bpf: [ OFF ]

>   ...                        libaio: [ OFF ]

>   ...                       libzstd: [ OFF ]

>   ...        disassembler-four-args: [ OFF ]

>

>   Makefile.config:414: *** No gnu/libc-version.h found, please install glibc-dev[el].  Stop.

>   Makefile.perf:230: recipe for target 'sub-make' failed

>   make[1]: *** [sub-make] Error 2

>   Makefile:69: recipe for target 'all' failed

>   make: *** [all] Error 2

>

> With CC and CXX quoted, some of those features are now detected.

>

> Fixes: e3232c2f39ac ("tools build feature: Use CC and CXX from parent")

>

> Signed-off-by: Daniel Díaz <daniel.diaz@linaro.org>


Whoops, I'm the one who introduced this issue. Fix looks good, thanks!

Reviewed-by: Thomas Hebb <tommyhebb@gmail.com>

Fixes: e3232c2f39ac ("tools build feature: Use CC and CXX from parent")

> ---

>  tools/build/Makefile.feature | 2 +-

>  1 file changed, 1 insertion(+), 1 deletion(-)

>

> diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature

> index 774f0b0ca28a..e7818b44b48e 100644

> --- a/tools/build/Makefile.feature

> +++ b/tools/build/Makefile.feature

> @@ -8,7 +8,7 @@ endif

>

>  feature_check = $(eval $(feature_check_code))

>  define feature_check_code

> -  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)

> +  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)


We should probably also be quoting the arguments that expand $(OUTPUT_FEATURES)
too, although trying to handle path names with spaces is probably a
lost cause anyway.

>  endef

>

>  feature_set = $(eval $(feature_set_code))

> --

> 2.25.1

>
Arnaldo Carvalho de Melo Aug. 13, 2020, 1:01 p.m. UTC | #2
Em Wed, Aug 12, 2020 at 07:31:32PM -0700, Tom Hebb escreveu:
> On Wed, Aug 12, 2020 at 3:15 PM Daniel Díaz <daniel.diaz@linaro.org> wrote:

> >   Makefile.config:414: *** No gnu/libc-version.h found, please install glibc-dev[el].  Stop.

> >   Makefile.perf:230: recipe for target 'sub-make' failed

> >   make[1]: *** [sub-make] Error 2

> >   Makefile:69: recipe for target 'all' failed

> >   make: *** [all] Error 2

> >

> > With CC and CXX quoted, some of those features are now detected.

> >

> > Fixes: e3232c2f39ac ("tools build feature: Use CC and CXX from parent")

> >

> > Signed-off-by: Daniel Díaz <daniel.diaz@linaro.org>

> 

> Whoops, I'm the one who introduced this issue. Fix looks good, thanks!

> 

> Reviewed-by: Thomas Hebb <tommyhebb@gmail.com>

> Fixes: e3232c2f39ac ("tools build feature: Use CC and CXX from parent")


Thanks, applied.

- Arnaldo
diff mbox series

Patch

diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
index 774f0b0ca28a..e7818b44b48e 100644
--- a/tools/build/Makefile.feature
+++ b/tools/build/Makefile.feature
@@ -8,7 +8,7 @@  endif
 
 feature_check = $(eval $(feature_check_code))
 define feature_check_code
-  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)
+  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))