build: fix for host clang and cross gcc
authorGavin Hu <gavin.hu@arm.com>
Fri, 29 Jun 2018 17:27:37 +0000 (01:27 +0800)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 11 Jul 2018 19:14:21 +0000 (21:14 +0200)
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 <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Reviewed-by: Steve Capper <steve.capper@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
config/meson.build
drivers/meson.build
examples/meson.build
lib/meson.build
test/test/meson.build

index 50081b5..272d4a8 100644 (file)
@@ -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)
index ac6c972..1737d86 100644 (file)
@@ -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
index 3d15684..e655887 100644 (file)
@@ -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']
index 9d11571..fefb360 100644 (file)
@@ -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
 
index 263cc1c..b1dd6ec 100644 (file)
@@ -237,6 +237,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()
@@ -262,7 +267,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)