From: Bruce Richardson <bruce.richardson@intel.com>
To: dev@dpdk.org
Cc: bluca@debian.org, Bruce Richardson <bruce.richardson@intel.com>
Subject: [PATCH] build: set RTE_ARCH_64 based on pointer size
Date: Wed, 26 Sep 2018 10:15:36 +0100 [thread overview]
Message-ID: <20180926091536.61370-1-bruce.richardson@intel.com> (raw)
Rather than relying on the target machine architecture, use the
size of a pointer from the compiler to determine if we are 64-bits
or not. This allows correct behaviour when you pass -m32 as a compile
option. It also allows us to use this value repeatedly throughout the
repo rather than continually testing for the sizeof(void*).
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
config/arm/meson.build | 3 +--
config/meson.build | 5 ++++-
config/ppc_64/meson.build | 4 +++-
config/x86/meson.build | 3 +--
drivers/net/sfc/meson.build | 2 +-
lib/librte_bpf/meson.build | 2 +-
lib/librte_kni/meson.build | 2 +-
7 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/config/arm/meson.build b/config/arm/meson.build
index 94cca490e..5a1b79a15 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -85,14 +85,13 @@ impl_dpaa2 = ['NXP DPAA2', flags_dpaa2, machine_args_generic]
dpdk_conf.set('RTE_FORCE_INTRINSICS', 1)
-if cc.sizeof('void *') != 8
+if not dpdk_conf.get('RTE_ARCH_64')
dpdk_conf.set('RTE_CACHE_LINE_SIZE', 64)
dpdk_conf.set('RTE_ARCH_ARM', 1)
dpdk_conf.set('RTE_ARCH_ARMv7', 1)
else
dpdk_conf.set('RTE_CACHE_LINE_SIZE', 128)
dpdk_conf.set('RTE_ARCH_ARM64', 1)
- dpdk_conf.set('RTE_ARCH_64', 1)
machine = []
cmd_generic = ['generic', '', '', 'default', '']
diff --git a/config/meson.build b/config/meson.build
index 6f9228c87..172ab0249 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -21,6 +21,8 @@ toolchain = cc.get_id()
dpdk_conf.set_quoted('RTE_TOOLCHAIN', toolchain)
dpdk_conf.set('RTE_TOOLCHAIN_' + toolchain.to_upper(), 1)
+dpdk_conf.set('RTE_ARCH_64', cc.sizeof('void *') == 8)
+
# use pthreads
add_project_link_arguments('-pthread', language: 'c')
dpdk_extra_ldflags += '-pthread'
@@ -65,7 +67,7 @@ warning_flags = [
'-Wcast-qual',
'-Wno-address-of-packed-member'
]
-if cc.sizeof('void *') == 4
+if not dpdk_conf.get('RTE_ARCH_64')
# for 32-bit, don't warn about casting a 32-bit pointer to 64-bit int - it's fine!!
warning_flags += '-Wno-pointer-to-int-cast'
endif
@@ -85,6 +87,7 @@ dpdk_conf.set('RTE_MAX_VFIO_GROUPS', 64)
dpdk_conf.set('RTE_DRIVER_MEMPOOL_BUCKET_SIZE_KB', 64)
dpdk_conf.set('RTE_LIBRTE_DPAA2_USE_PHYS_IOVA', true)
+
compile_time_cpuflags = []
if host_machine.cpu_family().startswith('x86')
arch_subdir = 'x86'
diff --git a/config/ppc_64/meson.build b/config/ppc_64/meson.build
index e207c438b..7ceae1d39 100644
--- a/config/ppc_64/meson.build
+++ b/config/ppc_64/meson.build
@@ -1,9 +1,11 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2018 Luca Boccassi <bluca@debian.org>
+if not dpdk_conf.get('RTE_ARCH_64')
+ error('Only 64-bit compiles are supported for this platform type')
+endif
dpdk_conf.set('RTE_ARCH', 'ppc_64')
dpdk_conf.set('RTE_ARCH_PPC_64', 1)
-dpdk_conf.set('RTE_ARCH_64', 1)
# overrides specific to ppc64
dpdk_conf.set('RTE_MAX_LCORE', 256)
diff --git a/config/x86/meson.build b/config/x86/meson.build
index 33efb5e54..084328da2 100644
--- a/config/x86/meson.build
+++ b/config/x86/meson.build
@@ -19,10 +19,9 @@ foreach f:base_flags
endforeach
dpdk_conf.set('RTE_ARCH_X86', 1)
-if (host_machine.cpu_family() == 'x86_64')
+if dpdk_conf.get('RTE_ARCH_64')
dpdk_conf.set('RTE_ARCH_X86_64', 1)
dpdk_conf.set('RTE_ARCH', 'x86_64')
- dpdk_conf.set('RTE_ARCH_64', 1)
else
dpdk_conf.set('RTE_ARCH_I686', 1)
dpdk_conf.set('RTE_ARCH', 'i686')
diff --git a/drivers/net/sfc/meson.build b/drivers/net/sfc/meson.build
index 2d34e869d..e67560991 100644
--- a/drivers/net/sfc/meson.build
+++ b/drivers/net/sfc/meson.build
@@ -6,7 +6,7 @@
# This software was jointly developed between OKTET Labs (under contract
# for Solarflare) and Solarflare Communications, Inc.
-if arch_subdir != 'x86' or cc.sizeof('void *') == 4
+if arch_subdir != 'x86' or not dpdk_conf.get('RTE_ARCH_64')
build = false
endif
diff --git a/lib/librte_bpf/meson.build b/lib/librte_bpf/meson.build
index bc0cd78f9..4fbb29d7c 100644
--- a/lib/librte_bpf/meson.build
+++ b/lib/librte_bpf/meson.build
@@ -8,7 +8,7 @@ sources = files('bpf.c',
'bpf_pkt.c',
'bpf_validate.c')
-if arch_subdir == 'x86' and cc.sizeof('void *') == 8
+if arch_subdir == 'x86' and dpdk_conf.get('RTE_ARCH_64')
sources += files('bpf_jit_x86.c')
endif
diff --git a/lib/librte_kni/meson.build b/lib/librte_kni/meson.build
index a738a033a..055ae1227 100644
--- a/lib/librte_kni/meson.build
+++ b/lib/librte_kni/meson.build
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2017 Intel Corporation
-if host_machine.system() != 'linux' or cc.sizeof('void *') == 4
+if host_machine.system() != 'linux' or not dpdk_conf.get('RTE_ARCH_64')
build = false
endif
version = 2
--
2.17.1
next reply other threads:[~2018-09-26 9:15 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-26 9:15 Bruce Richardson [this message]
2018-09-26 9:45 ` [PATCH] build: set RTE_ARCH_64 based on pointer size Bruce Richardson
2018-09-26 10:18 ` Luca Boccassi
2019-02-26 17:34 ` Thomas Monjalon
2019-02-19 15:07 ` Luca Boccassi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180926091536.61370-1-bruce.richardson@intel.com \
--to=bruce.richardson@intel.com \
--cc=bluca@debian.org \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.