From patchwork Thu Jun 14 09:51:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Gavin Hu X-Patchwork-Id: 41088 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3088D1E487; Thu, 14 Jun 2018 11:51:49 +0200 (CEST) Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com [217.140.101.70]) by dpdk.org (Postfix) with ESMTP id 89A971E3B6; Thu, 14 Jun 2018 11:51:46 +0200 (CEST) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id D64EF1596; Thu, 14 Jun 2018 02:51:45 -0700 (PDT) Received: from net-debian.shanghai.arm.com (net-debian.shanghai.arm.com [10.169.36.53]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 460C03F59D; Thu, 14 Jun 2018 02:51:45 -0700 (PDT) From: Gavin Hu To: dev@dpdk.org Cc: gavin hu , stable@dpdk.org Date: Thu, 14 Jun 2018 17:51:21 +0800 Message-Id: <20180614095127.16245-2-gavin.hu@arm.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180614095127.16245-1-gavin.hu@arm.com> References: <1527590616-28299-1-git-send-email-gavin.hu@arm.com> <20180614095127.16245-1-gavin.hu@arm.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v6 1/7] mk: fix cross build errors X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: gavin hu The "-Wimplicit-fallthrough=2" option was introduced into gcc 7.0, it was enabled when the cross compiler gcc is greater than 7.0, but for the host side buildtools/pmdinfogen, if the native gcc is older than 7.0, or the host cc compiler is clang, it should not be enabled. The fix is to differentiate the host gcc Werror options from the cross gcc. gcc -Wp,-MD,./.pmdinfogen.o.d.tmp -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -Wpointer-arith -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral -Wformat-security -Wundef -Wwrite-strings -Wdeprecated -Werror -Wimplicit-fallthrough=2 -Dbbb -Wno-format-truncation -g -I/home/gavin/arm_repo/dpdk/build/include -o pmdinfogen.o -c ~/dpdk/buildtools/pmdinfogen/pmdinfogen.c gcc: error: unrecognized command line option ‘-Wimplicit-fallthrough=2’ ~/dpdk/mk/internal/rte.compile-pre.mk:114: recipe for target 'pmdinfogen.o' failed make[3]: *** [pmdinfogen.o] Error 1 Fixes: ced3e6f8 ("mk: adjust gcc flags for new gcc 7 warnings") Cc: stable@dpdk.org Signed-off-by: Gavin Hu Reviewed-by: Honnappa Nagarahalli Reviewed-by: Steve Capper --- buildtools/pmdinfogen/Makefile | 2 +- mk/toolchain/gcc/rte.toolchain-compat.mk | 5 +++++ mk/toolchain/gcc/rte.vars.mk | 9 +++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/buildtools/pmdinfogen/Makefile b/buildtools/pmdinfogen/Makefile index bf07b6f2e..ff7a5fae6 100644 --- a/buildtools/pmdinfogen/Makefile +++ b/buildtools/pmdinfogen/Makefile @@ -41,7 +41,7 @@ HOSTAPP = dpdk-pmdinfogen # SRCS-y += pmdinfogen.c -HOST_CFLAGS += $(WERROR_FLAGS) -g +HOST_CFLAGS += $(HOST_WERROR_FLAGS) -g HOST_CFLAGS += -I$(RTE_OUTPUT)/include include $(RTE_SDK)/mk/rte.hostapp.mk diff --git a/mk/toolchain/gcc/rte.toolchain-compat.mk b/mk/toolchain/gcc/rte.toolchain-compat.mk index 255c89677..1e4434fa9 100644 --- a/mk/toolchain/gcc/rte.toolchain-compat.mk +++ b/mk/toolchain/gcc/rte.toolchain-compat.mk @@ -15,6 +15,11 @@ GCC_MINOR = $(shell echo __GNUC_MINOR__ | $(CC) -E -x c - | tail -n 1) GCC_PATCHLEVEL = $(shell echo __GNUC_PATCHLEVEL__ | $(CC) -E -x c - | tail -n 1) GCC_VERSION = $(GCC_MAJOR)$(GCC_MINOR) +HOST_GCC_MAJOR = $(shell echo __GNUC__ | $(HOSTCC) -E -x c - | tail -n 1) +HOST_GCC_MINOR = $(shell echo __GNUC_MINOR__ | $(HOSTCC) -E -x c - | tail -n 1) +HOST_GCC_PATCHLEVEL = $(shell echo __GNUC_PATCHLEVEL__ | $(HOSTCC) -E -x c - | tail -n 1) +HOST_GCC_VERSION = $(HOST_GCC_MAJOR)$(HOST_GCC_MINOR) + # if GCC is older than 4.x ifeq ($(shell test $(GCC_VERSION) -lt 40 && echo 1), 1) MACHINE_CFLAGS = diff --git a/mk/toolchain/gcc/rte.vars.mk b/mk/toolchain/gcc/rte.vars.mk index 7e4531bab..d8b99faf6 100644 --- a/mk/toolchain/gcc/rte.vars.mk +++ b/mk/toolchain/gcc/rte.vars.mk @@ -71,6 +71,15 @@ ifeq ($(shell test $(GCC_VERSION) -lt 47 && echo 1), 1) WERROR_FLAGS += -Wno-uninitialized endif +HOST_WERROR_FLAGS := $(WERROR_FLAGS) + +ifeq ($(shell test $(HOST_GCC_VERSION) -gt 70 && echo 1), 1) +# Tell GCC only to error for switch fallthroughs without a suitable comment +HOST_WERROR_FLAGS += -Wimplicit-fallthrough=2 +# Ignore errors for snprintf truncation +HOST_WERROR_FLAGS += -Wno-format-truncation +endif + ifeq ($(shell test $(GCC_VERSION) -gt 70 && echo 1), 1) # Tell GCC only to error for switch fallthroughs without a suitable comment WERROR_FLAGS += -Wimplicit-fallthrough=2 From patchwork Thu Jun 14 09:51:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gavin Hu X-Patchwork-Id: 41089 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2855B1E86A; Thu, 14 Jun 2018 11:51:52 +0200 (CEST) Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com [217.140.101.70]) by dpdk.org (Postfix) with ESMTP id 36EE41E3BB for ; Thu, 14 Jun 2018 11:51:47 +0200 (CEST) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 882F51529; Thu, 14 Jun 2018 02:51:46 -0700 (PDT) Received: from net-debian.shanghai.arm.com (net-debian.shanghai.arm.com [10.169.36.53]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 1A2203F59D; Thu, 14 Jun 2018 02:51:45 -0700 (PDT) From: Gavin Hu To: dev@dpdk.org Cc: gavin hu Date: Thu, 14 Jun 2018 17:51:22 +0800 Message-Id: <20180614095127.16245-3-gavin.hu@arm.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180614095127.16245-1-gavin.hu@arm.com> References: <1527590616-28299-1-git-send-email-gavin.hu@arm.com> <20180614095127.16245-1-gavin.hu@arm.com> Subject: [dpdk-dev] [PATCH v6 2/7] doc: add a guide doc for cross compiling from x86 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: gavin hu This is the guide for cross compiling ARM64 DPDK from X86 hosts. Signed-off-by: Gavin Hu Reviewed-by: Steve Capper Reviewed-by: Honnappa Nagarahalli Acked-by: Marko Kovacevic --- .../linux_gsg/cross_build_dpdk_for_arm64.rst | 137 +++++++++++++++++++++ doc/guides/linux_gsg/index.rst | 1 + 2 files changed, 138 insertions(+) create mode 100644 doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst diff --git a/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst b/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst new file mode 100644 index 000000000..551f0aef8 --- /dev/null +++ b/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst @@ -0,0 +1,137 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright(c) 2018 ARM Corporation. + +Cross compile DPDK for ARM64 +============================ +This chapter describes how to cross compile DPDK for ARM64 from x86 build hosts. + +.. note:: + + Whilst it is recommended to natively build DPDK on ARM64 (just + like with x86), it is also possible to cross-build DPDK for ARM64. An + ARM64 cross compile GNU toolchain is used for this. + +Obtain the cross tool chain +--------------------------- +The latest cross compile tool chain can be downloaded from: +https://releases.linaro.org/components/toolchain/binaries/latest/aarch64-linux-gnu/. +Following is the step to get the version 7.2.1, latest one at the time of this writing. + +.. code-block:: console + + wget https://releases.linaro.org/components/toolchain/binaries/latest/ + aarch64-linux-gnu/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu.tar.xz + +Unzip and add into the PATH +--------------------------- + +.. code-block:: console + + tar -xvf gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu.tar.xz + export PATH=$PATH:/gcc-linaro-7.2.1-2017.11-x86_64 + _aarch64-linux-gnu/bin + +.. note:: + + For the host requirements and other info, refer to the release note section: + https://releases.linaro.org/components/toolchain/binaries/latest/ + +Getting the prerequisite library +-------------------------------- + +NUMA is required by most modern machines, not needed for non-NUMA architectures. + +.. note:: + + For compiling the NUMA lib, run libtool --version to ensure the libtool version >= 2.2, + otherwise the compilation will fail with errors. + +.. code-block:: console + + git clone https://github.com/numactl/numactl.git + cd numactl + git checkout v2.0.11 -b v2.0.11 + ./autogen.sh + autoconf -i + ./configure --host=x86_64 CC=aarch64-linux-gnu-gcc prefix= + make install + +The numa header files and lib file is generated in the include and lib folder respectively under . + +.. _argment_the_cross_toolcain_with_numa_support: + +Augment the cross toolchain with NUMA support +--------------------------------------------- + +.. note:: + + This way is optional, an alternative is to use extra CFLAGS and LDFLAGS, depicted in :ref:`configure_and_cross_compile_dpdk_build` below. + +Copy the NUMA header files to the cross compiler's include directory: + +.. code-block:: console + + cp /include/numa*.h /gcc-linaro-7.2.1-2017.11 + -x86_64_aarch64-linux-gnu/bin/../aarch64-linux-gnu/libc/usr/include/ + cp /lib/libnuma.a /gcc-linaro-7.2.1-2017.11 + -x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/7.2.1/ + +.. _configure_and_cross_compile_dpdk_build: + +Configure and cross compile DPDK Build +-------------------------------------- +To configure a build, choose one of the target configurations, like arm64-dpaa2-linuxapp-gcc and arm64-thunderx-linuxapp-gcc. + +.. code-block:: console + + make config T=arm64-armv8a-linuxapp-gcc + +To cross-compile, without compiling the kernel modules, use the following command: + +.. code-block:: console + + make -j CROSS=aarch64-linux-gnu- CONFIG_RTE_KNI_KMOD=n CONFIG_RTE_EAL_IGB_UIO=n + +To cross-compile, including the kernel modules, the kernel source tree needs to be specified by setting +RTE_KERNELDIR: + +.. code-block:: console + + make -j CROSS=aarch64-linux-gnu- RTE_KERNELDIR= + CROSS_COMPILE=aarch64-linux-gnu- + +To compile for non-NUMA targets, without compiling the kernel modules, use the following command: + +.. code-block:: console + + make -j CROSS=aarch64-linux-gnu- CONFIG_RTE_KNI_KMOD=n CONFIG_RTE_EAL_IGB_UIO=n + CONFIG_RTE_LIBRTE_VHOST_NUMA=n CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=n + +.. note:: + + 1. EXTRA_CFLAGS and EXTRA_LDFLAGS should be added to include the NUMA headers and link the library respectively, + if the above step :ref:`argment_the_cross_toolcain_with_numa_support` was skipped therefore the toolchain was not + argmented with NUMA support. + + 2. "-isystem /include" should be add to EXTRA_CFLAGS, otherwise the numa.h file will get a lot of compiling + errors of Werror=cast-qual, Werror=strict-prototypes and Werror=old-style-definition. + + An example is given below: + + .. code-block:: console + + make -j CROSS=aarch64-linux-gnu- CONFIG_RTE_KNI_KMOD=n CONFIG_RTE_EAL_IGB_UIO=n + EXTRA_CFLAGS="-isystem /include" EXTRA_LDFLAGS= + "-L/lib -lnuma" + +Meson Cross Compiling DPDK +-------------------------- + +To cross-compile DPDK on a desired target machine we can use the following +command:: + + meson cross-build --cross-file + +For example if the target machine is arm64 we can use the following +command:: + meson arm-build --cross-file config/arm/arm64_armv8_linuxapp_gcc diff --git a/doc/guides/linux_gsg/index.rst b/doc/guides/linux_gsg/index.rst index 2a7bdfe92..077f93023 100644 --- a/doc/guides/linux_gsg/index.rst +++ b/doc/guides/linux_gsg/index.rst @@ -13,6 +13,7 @@ Getting Started Guide for Linux intro sys_reqs build_dpdk + cross_build_dpdk_for_arm64 linux_drivers build_sample_apps enable_func From patchwork Thu Jun 14 09:51:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gavin Hu X-Patchwork-Id: 41090 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E4CC41E89F; Thu, 14 Jun 2018 11:51:53 +0200 (CEST) Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com [217.140.101.70]) by dpdk.org (Postfix) with ESMTP id C329D1E46C; Thu, 14 Jun 2018 11:51:47 +0200 (CEST) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 38E64164F; Thu, 14 Jun 2018 02:51:47 -0700 (PDT) Received: from net-debian.shanghai.arm.com (net-debian.shanghai.arm.com [10.169.36.53]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id C07303F59D; Thu, 14 Jun 2018 02:51:46 -0700 (PDT) From: Gavin Hu To: dev@dpdk.org Cc: stable@dpdk.org Date: Thu, 14 Jun 2018 17:51:23 +0800 Message-Id: <20180614095127.16245-4-gavin.hu@arm.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180614095127.16245-1-gavin.hu@arm.com> References: <1527590616-28299-1-git-send-email-gavin.hu@arm.com> <20180614095127.16245-1-gavin.hu@arm.com> Subject: [dpdk-dev] [PATCH v6 3/7] devtools: fix the Exec format error X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" meson will natively compile and generate the sanitycheck.exe file. It will be spawned and run at the host side. Export the cross compiler is not necessary as it is already done by the cross-file, and even worse it generate the files in the wrong target format. The fix to the following compiling error is select the native compiler for the sanity test source file. Traceback (most recent call last): File "/usr/share/meson/mesonbuild/mesonmain.py", line 361, in run app.generate() File "/usr/share/meson/mesonbuild/mesonmain.py", line 150, in generate self._generate(env) File "/usr/share/meson/mesonbuild/mesonmain.py", line 189, in _generate intr = interpreter.Interpreter(b, g) File "/usr/share/meson/mesonbuild/interpreter.py", line 1444, in __init__ self.parse_project() File "/usr/share/meson/mesonbuild/interpreterbase.py", line 159, in parse_project self.evaluate_codeblock(self.ast, end=1) File "/usr/share/meson/mesonbuild/interpreterbase.py", line 195, in evaluate_codeblock raise e File "/usr/share/meson/mesonbuild/interpreterbase.py", line 189, in evaluate_codeblock self.evaluate_statement(cur) File "/usr/share/meson/mesonbuild/interpreterbase.py", line 200, in evaluate_statement return self.function_call(cur) File "/usr/share/meson/mesonbuild/interpreterbase.py", line 456, in function_call return self.funcs[func_name](node, self.flatten(posargs), kwargs) File "/usr/share/meson/mesonbuild/interpreterbase.py", line 55, in wrapped return f(self, node, args, kwargs) File "/usr/share/meson/mesonbuild/interpreterbase.py", line 79, in wrapped return f(s, node_or_state, args, kwargs) File "/usr/share/meson/mesonbuild/interpreter.py", line 1947, in func_project self.add_languages(proj_langs, True) File "/usr/share/meson/mesonbuild/interpreter.py", line 2078, in add_languages (comp, cross_comp) = self.detect_compilers(lang, need_cross_compiler) File "/usr/share/meson/mesonbuild/interpreter.py", line 2047, in detect_compilers comp.sanity_check(self.environment.get_scratch_dir(), self.environment) File "/usr/share/meson/mesonbuild/compilers/c.py", line 254, in sanity_check return self.sanity_check_impl(work_dir, environment, 'sanitycheckc.c', code) File "/usr/share/meson/mesonbuild/compilers/c.py", line 247, in sanity_check_impl pe = subprocess.Popen(cmdlist) File "/usr/lib/python3.5/subprocess.py", line 676, in __init__ restore_signals, start_new_session) File "/usr/lib/python3.5/subprocess.py", line 1282, in _execute_child raise child_exception_type(errno_num, err_msg) OSError: [Errno 8] Exec format error Build started at 2018-06-01T12:48:46.852286 Main binary: /usr/bin/python3 Python system: Linux The Meson build system Version: 0.45.1 Build type: cross build Project name: DPDK Sanity testing C compiler: aarch64-linux-gnu-gcc Is cross compiler: False. Sanity check compiler command line: aarch64-linux-gnu-gcc dpdk/build-arm64-armv8/meson-private/sanitycheckc.c -o dpdk/build-arm64-armv8/meson-private/sanitycheckc.exe Fixes: a55277a788 ("devtools: add test script for meson builds") Cc: stable@dpdk.org Signed-off-by: Gavin Hu Reviewed-by: Phil Yang Reviewed-by: Song Zhu --- devtools/test-meson-builds.sh | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh index 9868c325b..6bce3df7f 100755 --- a/devtools/test-meson-builds.sh +++ b/devtools/test-meson-builds.sh @@ -1,6 +1,7 @@ #! /bin/sh -e # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Intel Corporation +# Copyright(c) 2018 ARM Corporation # Run meson to auto-configure the various builds. # * all builds get put in a directory whose name starts with "build-" @@ -18,7 +19,6 @@ build () # options="--werror -Dexamples=all $*" echo "$MESON $options $srcdir $builddir" $MESON $options $srcdir $builddir - unset CC fi echo "ninja -C $builddir" ninja -C $builddir @@ -26,10 +26,11 @@ build () # # shared and static linked builds with gcc and clang for c in gcc clang ; do + export CC="ccache $c" for s in static shared ; do - export CC="ccache $c" build build-$c-$s --default-library=$s done + unset CC done # test compilation with minimal x86 instruction set @@ -39,8 +40,10 @@ build build-x86-default -Dmachine=nehalem for f in config/arm/arm*gcc ; do c=aarch64-linux-gnu-gcc if ! command -v $c >/dev/null 2>&1 ; then - continue + echo "## ERROR: aarch64-linux-gnu-gcc is missing..." + exit 1 fi - export CC="ccache $c" + export CC="ccache gcc" build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f + unset CC done From patchwork Thu Jun 14 09:51:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gavin Hu X-Patchwork-Id: 41091 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id CF4BC1E917; Thu, 14 Jun 2018 11:51:55 +0200 (CEST) Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com [217.140.101.70]) by dpdk.org (Postfix) with ESMTP id 3CCBF1E487; Thu, 14 Jun 2018 11:51:48 +0200 (CEST) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E8B551596; Thu, 14 Jun 2018 02:51:47 -0700 (PDT) Received: from net-debian.shanghai.arm.com (net-debian.shanghai.arm.com [10.169.36.53]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 70FB33F59D; Thu, 14 Jun 2018 02:51:47 -0700 (PDT) From: Gavin Hu To: dev@dpdk.org Cc: stable@dpdk.org Date: Thu, 14 Jun 2018 17:51:24 +0800 Message-Id: <20180614095127.16245-5-gavin.hu@arm.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180614095127.16245-1-gavin.hu@arm.com> References: <1527590616-28299-1-git-send-email-gavin.hu@arm.com> <20180614095127.16245-1-gavin.hu@arm.com> Subject: [dpdk-dev] [PATCH v6 4/7] build: fix the meson build warning X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This is to fix the unnecessary warning output, it is not consistent with the configurations of other platforms. WARNING: Cross file does not specify strip binary, result will not be stripped. Fixes: e53a5299d2 ("build: support vendor specific ARM cross builds") Cc: stable@dpdk.org Signed-off-by: Gavin Hu Reviewed-by: Phil Yang Reviewed-by: Song Zhu Acked-by: Bruce Richardson --- config/arm/arm64_thunderx_linuxapp_gcc | 1 + 1 file changed, 1 insertion(+) diff --git a/config/arm/arm64_thunderx_linuxapp_gcc b/config/arm/arm64_thunderx_linuxapp_gcc index 7ff34af74..967d9d46d 100644 --- a/config/arm/arm64_thunderx_linuxapp_gcc +++ b/config/arm/arm64_thunderx_linuxapp_gcc @@ -2,6 +2,7 @@ c = 'aarch64-linux-gnu-gcc' cpp = 'aarch64-linux-gnu-cpp' ar = 'aarch64-linux-gnu-gcc-ar' +strip = 'aarch64-linux-gnu-strip' [host_machine] system = 'linux' From patchwork Thu Jun 14 09:51:25 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gavin Hu X-Patchwork-Id: 41092 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8913B1E945; Thu, 14 Jun 2018 11:51:57 +0200 (CEST) Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com [217.140.101.70]) by dpdk.org (Postfix) with ESMTP id 3A5461E4D1; Thu, 14 Jun 2018 11:51:49 +0200 (CEST) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A3B9F1529; Thu, 14 Jun 2018 02:51:48 -0700 (PDT) Received: from net-debian.shanghai.arm.com (net-debian.shanghai.arm.com [10.169.36.53]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 341103F59D; Thu, 14 Jun 2018 02:51:48 -0700 (PDT) From: Gavin Hu To: dev@dpdk.org Cc: stable@dpdk.org Date: Thu, 14 Jun 2018 17:51:25 +0800 Message-Id: <20180614095127.16245-6-gavin.hu@arm.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180614095127.16245-1-gavin.hu@arm.com> References: <1527590616-28299-1-git-send-email-gavin.hu@arm.com> <20180614095127.16245-1-gavin.hu@arm.com> Subject: [dpdk-dev] [PATCH v6 5/7] devtools: fix the missing ninja command error on CentOS X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On CentOS, the ninja executable has a different name: ninja-build, this patch is to fix the missing command error on CentOS as follows: ./devtools/test-meson-builds.sh: line 24: ninja: command not found Fixes: a55277a788 ("devtools: add test script for meson builds") Cc: stable@dpdk.org Signed-off-by: Gavin Hu Reviewed-by: Phil Yang Reviewed-by: Song Zhu --- devtools/test-meson-builds.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh index 6bce3df7f..4afac76dd 100755 --- a/devtools/test-meson-builds.sh +++ b/devtools/test-meson-builds.sh @@ -21,7 +21,11 @@ build () # $MESON $options $srcdir $builddir fi echo "ninja -C $builddir" - ninja -C $builddir + if [ "$(lsb_release -d | grep -c 'CentOS')" != "0" ] ; then + ninja-build -C $builddir + else + ninja -C $builddir + fi } # shared and static linked builds with gcc and clang From patchwork Thu Jun 14 09:51:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gavin Hu X-Patchwork-Id: 41093 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B90561E951; Thu, 14 Jun 2018 11:51:58 +0200 (CEST) Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com [217.140.101.70]) by dpdk.org (Postfix) with ESMTP id E8E521E4D1; Thu, 14 Jun 2018 11:51:49 +0200 (CEST) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 55CD81596; Thu, 14 Jun 2018 02:51:49 -0700 (PDT) Received: from net-debian.shanghai.arm.com (net-debian.shanghai.arm.com [10.169.36.53]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id DC46D3F59D; Thu, 14 Jun 2018 02:51:48 -0700 (PDT) From: Gavin Hu To: dev@dpdk.org Cc: stable@dpdk.org Date: Thu, 14 Jun 2018 17:51:26 +0800 Message-Id: <20180614095127.16245-7-gavin.hu@arm.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180614095127.16245-1-gavin.hu@arm.com> References: <1527590616-28299-1-git-send-email-gavin.hu@arm.com> <20180614095127.16245-1-gavin.hu@arm.com> Subject: [dpdk-dev] [PATCH v6 6/7] build: fix the meson cross compile error X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The following error hits if host cc compiler is clang(default one in most linux distributions) and the cross compiler is gcc. The root cause is: the hybride compilers add the warning options to the meson project as project arguments, which apply for both host compiling and cross compiling. But some options such as '-Wno-format-truncation' are not supported nor recognized by clang, so they have to be removed from the project arguments for the host compiler to run smoothily and added back as cflags for the cross compiler to compile for cross source files. The fix is remove unrecognized warning options from the meson project arguments shared by gcc and clang, as add them specifically for gcc or clang as cflags. [265/893] Compiling C object 'buildtools/pmdinfogen/pmdinfogen@exe/pmdinfogen.c.o'. warning: unknown warning option '-Wno-format-truncation' [-Wunknown-warning-option] Fixes: a55277a788 ("devtools: add test script for meson builds") Cc: stable@dpdk.org Signed-off-by: Gavin Hu Reviewed-by: Phil Yang Reviewed-by: Song Zhu Reviewed-by: Steve Capper Acked-by: Bruce Richardson --- config/meson.build | 3 +-- drivers/meson.build | 3 +++ examples/meson.build | 4 ++++ lib/meson.build | 4 ++++ test/test/meson.build | 7 ++++++- 5 files changed, 18 insertions(+), 3 deletions(-) diff --git a/config/meson.build b/config/meson.build index 50081b572..272d4a838 100644 --- a/config/meson.build +++ b/config/meson.build @@ -57,8 +57,7 @@ add_project_arguments('-include', 'rte_config.h', language: 'c') warning_flags = [ '-Wsign-compare', '-Wcast-qual', - '-Wno-address-of-packed-member', - '-Wno-format-truncation' + '-Wno-address-of-packed-member' ] foreach arg: warning_flags if cc.has_argument(arg) diff --git a/drivers/meson.build b/drivers/meson.build index ac6c97297..1737d86b8 100644 --- a/drivers/meson.build +++ b/drivers/meson.build @@ -32,6 +32,9 @@ foreach class:driver_classes sources = [] objs = [] cflags = machine_args + if cc.has_argument('-Wno-format-truncation') + cflags += '-Wno-format-truncation' + endif includes = [include_directories(drv_path)] # set up internal deps. Drivers can append/override as necessary deps = std_deps diff --git a/examples/meson.build b/examples/meson.build index 3d1568497..e6558875a 100644 --- a/examples/meson.build +++ b/examples/meson.build @@ -24,6 +24,10 @@ foreach example: examples sources = [] allow_experimental_apis = false cflags = machine_args + if cc.has_argument('-Wno-format-truncation') + cflags += '-Wno-format-truncation' + endif + ext_deps = [execinfo] includes = [include_directories(example)] deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline'] diff --git a/lib/meson.build b/lib/meson.build index 9d11571f9..fefb3605d 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -34,6 +34,10 @@ foreach l:libraries headers = [] includes = [] cflags = machine_args + if cc.has_argument('-Wno-format-truncation') + cflags += '-Wno-format-truncation' + endif + objs = [] # other object files to link against, used e.g. for # instruction-set optimized versions of code diff --git a/test/test/meson.build b/test/test/meson.build index a907fd256..dc4ba5514 100644 --- a/test/test/meson.build +++ b/test/test/meson.build @@ -235,6 +235,11 @@ if dpdk_conf.has('RTE_LIBRTE_KNI') test_deps += 'kni' endif +cflags = machine_args +if cc.has_argument('-Wno-format-truncation') + cflags += '-Wno-format-truncation' +endif + test_dep_objs = [] compress_test_dep = dependency('zlib', required: false) if compress_test_dep.found() @@ -260,7 +265,7 @@ if get_option('tests') test_sources, link_whole: link_libs, dependencies: test_dep_objs, - c_args: [machine_args, '-DALLOW_EXPERIMENTAL_API'], + c_args: [cflags, '-DALLOW_EXPERIMENTAL_API'], install_rpath: driver_install_path, install: false) From patchwork Thu Jun 14 09:51:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gavin Hu X-Patchwork-Id: 41094 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0A56D1E982; Thu, 14 Jun 2018 11:52:00 +0200 (CEST) Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com [217.140.101.70]) by dpdk.org (Postfix) with ESMTP id 96E741E367; Thu, 14 Jun 2018 11:51:50 +0200 (CEST) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 09CBE1529; Thu, 14 Jun 2018 02:51:50 -0700 (PDT) Received: from net-debian.shanghai.arm.com (net-debian.shanghai.arm.com [10.169.36.53]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 8E2163F59D; Thu, 14 Jun 2018 02:51:49 -0700 (PDT) From: Gavin Hu To: dev@dpdk.org Cc: stable@dpdk.org Date: Thu, 14 Jun 2018 17:51:27 +0800 Message-Id: <20180614095127.16245-8-gavin.hu@arm.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180614095127.16245-1-gavin.hu@arm.com> References: <1527590616-28299-1-git-send-email-gavin.hu@arm.com> <20180614095127.16245-1-gavin.hu@arm.com> Subject: [dpdk-dev] [PATCH v6 7/7] devtools: expand meson cross compiling coverage X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The default test script covers only default host cc compiler, either gcc or clang, the fix is to cover both, gcc and clang. And also the build dirs are changed to *-host-$c, indicating the difference of cc used. Fixes: a55277a788 ("devtools: add test script for meson builds") Cc: stable@dpdk.org Signed-off-by: Gavin Hu Reviewed-by: Phil Yang Reviewed-by: Song Zhu --- devtools/test-meson-builds.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh index 4afac76dd..74fe5abc8 100755 --- a/devtools/test-meson-builds.sh +++ b/devtools/test-meson-builds.sh @@ -47,7 +47,10 @@ for f in config/arm/arm*gcc ; do echo "## ERROR: aarch64-linux-gnu-gcc is missing..." exit 1 fi - export CC="ccache gcc" - build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f - unset CC + for c in gcc clang ; do + export CC="ccache $c" + build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-$c \ + --cross-file $f + unset CC + done done