]> git.droids-corp.org - dpdk.git/commitdiff
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 50081b572767ba2da4f7ecce3e1824f5d4b3efe1..272d4a838d6fddce353bc931467452db05cc3a99 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 ac6c97297aeea3b11f101319872beeecf24ec846..1737d86b884b9c2d39fc83efb9a8edddc31bb381 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 3d156849707c755b5328f9d7d3ad948e424316c3..e6558875ac52d0adf27857c030622c0df79ffc49 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 9d11571f9250f771ec12fb21d9873df420798b0a..fefb3605db269f383677b77b94db6105e1de1933 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 263cc1cf3bddea152c15dfcb2bb2fe61fe99f4fe..b1dd6eca246d0177848510f55063d42ed1cf4206 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)