build: remove architecture flag as default C flag

Any flags added to the project args are automatically added to all builds,
both native and cross-compiled. This is not what we want for the -march
flag as a valid -march for the cross-compile is not valid for pmdinfogen
which is a native-build tool.

Instead we store the march flag as a variable, and add it to the default
cflags for all libs, drivers, examples, etc. This will allow pmdinfogen to
compile successfully in a cross-compilation environment.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
This commit is contained in:
Bruce Richardson 2017-12-15 17:12:43 +00:00
parent 6c9457c279
commit b114af1603
10 changed files with 15 additions and 12 deletions

View File

@ -45,7 +45,7 @@ endif
executable('dpdk-testpmd',
sources,
c_args: '-DALLOW_EXPERIMENTAL_API',
c_args: [machine_arg, '-DALLOW_EXPERIMENTAL_API'],
link_whole: link_libs,
dependencies: dep_objs,
install_rpath: join_paths(get_option('prefix'), driver_install_path),

View File

@ -6,5 +6,4 @@ pmdinfogen_inc += include_directories('../../lib/librte_pci')
pmdinfogen = executable('pmdinfogen',
'pmdinfogen.c',
include_directories: pmdinfogen_inc,
native: true,
c_args: cflags)
native: true)

View File

@ -2,9 +2,13 @@
# Copyright(c) 2017 Intel Corporation
# set the machine type and cflags for it
machine = get_option('machine')
if meson.is_cross_build()
machine = host_machine.cpu()
else
machine = get_option('machine')
endif
dpdk_conf.set('RTE_MACHINE', machine)
add_project_arguments('-march=@0@'.format(machine), language: 'c')
machine_arg = '-march=' + machine
# use pthreads
add_project_link_arguments('-pthread', language: 'c')

View File

@ -800,7 +800,7 @@ build
cflags
**Default Value = []**.
**Default Value = [<-march/-mcpu flags>]**.
Used to specify any additional cflags that need to be passed to compile
the sources in the library.

View File

@ -23,7 +23,7 @@ foreach class:driver_classes
allow_experimental_apis = false
sources = []
objs = []
cflags = []
cflags = [machine_arg]
includes = [include_directories(drv_path)]
# set up internal deps. Drivers can append/override as necessary
deps = std_deps

View File

@ -1,7 +1,7 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2017 Intel Corporation
cflags = ['-DPF_DRIVER',
cflags += ['-DPF_DRIVER',
'-DVF_DRIVER',
'-DINTEGRATED_VF',
'-DX722_A0_SUPPORT']

View File

@ -1,7 +1,7 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2017 Intel Corporation
cflags = ['-DRTE_LIBRTE_IXGBE_BYPASS']
cflags += ['-DRTE_LIBRTE_IXGBE_BYPASS']
subdir('base')
objs = [base_objs]

View File

@ -10,7 +10,7 @@ foreach example: get_option('examples').split(',')
name = example
sources = []
allow_experimental_apis = false
cflags = []
cflags = [machine_arg]
ext_deps = []
includes = [include_directories(example)]
deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']

View File

@ -33,7 +33,7 @@ foreach l:libraries
sources = []
headers = []
includes = []
cflags = []
cflags = [machine_arg]
objs = [] # other object files to link against, used e.g. for
# instruction-set optimized versions of code

View File

@ -65,5 +65,5 @@ pkg.generate(name: meson.project_name(),
['-Wl,-Bdynamic'] + dpdk_extra_ldflags,
description: 'The Data Plane Development Kit (DPDK)',
subdirs: [get_option('include_subdir_arch'), '.'],
extra_cflags: ['-include', 'rte_config.h', '-march=@0@'.format(machine)]
extra_cflags: ['-include', 'rte_config.h', machine_arg]
)