build: fix for host clang and cross gcc

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>
This commit is contained in:
Gavin Hu 2018-06-30 01:27:37 +08:00 committed by Thomas Monjalon
parent c0d022070f
commit d292a42fc8
5 changed files with 18 additions and 3 deletions

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

View 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

View 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']

View 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

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