[dpdk-dev] mk: fix shell errors when building with clang
Checks
Commit Message
On my system, the version of the compiler is not properly retrieved,
resulting in strange logs when building the dpdk:
/bin/sh: line 0: test: too many arguments
This happens when mk/toolchain/clang/rte.toolchain-compat.mk is included
from a directory that use gcc to build (ex: kernel modules). In that
case, the CLANG_VERSION variable contains spaces that breaks some shell
calls to the test program.
The error is because the output of "gcc -v" on my system contains 2 lines
that matches the "version" string:
Configured with: ../src/configure -v \
--with-pkgversion='Debian 6.3.0-6' [...]
gcc version 6.3.0 20170205 (Debian 6.3.0-6)
This may be specific to Debian. Fix it by specializing the grep.
Fixes: 2ef6eea891e5 ("mk: add clang toolchain")
Cc: stable@dpdk.org
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
mk/toolchain/clang/rte.toolchain-compat.mk | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Comments
2017-04-06 16:12, Olivier Matz:
> On my system, the version of the compiler is not properly retrieved,
> resulting in strange logs when building the dpdk:
> /bin/sh: line 0: test: too many arguments
>
> This happens when mk/toolchain/clang/rte.toolchain-compat.mk is included
> from a directory that use gcc to build (ex: kernel modules). In that
> case, the CLANG_VERSION variable contains spaces that breaks some shell
> calls to the test program.
>
> The error is because the output of "gcc -v" on my system contains 2 lines
> that matches the "version" string:
>
> Configured with: ../src/configure -v \
> --with-pkgversion='Debian 6.3.0-6' [...]
> gcc version 6.3.0 20170205 (Debian 6.3.0-6)
>
> This may be specific to Debian. Fix it by specializing the grep.
>
> Fixes: 2ef6eea891e5 ("mk: add clang toolchain")
>
> Cc: stable@dpdk.org
> Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Applied, thanks
@@ -38,7 +38,8 @@
# find out CLANG version
-CLANG_VERSION := $(shell $(CC) -v 2>&1 | grep version | sed "s/.*version \([0-9]*\.[0-9]*\).*/\1/")
+CLANG_VERSION := $(shell $(CC) -v 2>&1 | \
+ sed -n "s/.*version \([0-9]*\.[0-9]*\).*/\1/p")
CLANG_MAJOR_VERSION := $(shell echo $(CLANG_VERSION) | cut -f1 -d.)