From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 04118A0C41; Wed, 15 Sep 2021 18:28:45 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DA0284068F; Wed, 15 Sep 2021 18:28:44 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id AD6024014F for ; Wed, 15 Sep 2021 18:28:43 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10108"; a="219185864" X-IronPort-AV: E=Sophos;i="5.85,295,1624345200"; d="scan'208";a="219185864" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Sep 2021 09:28:42 -0700 X-IronPort-AV: E=Sophos;i="5.85,295,1624345200"; d="scan'208";a="700286214" Received: from bricha3-mobl.ger.corp.intel.com ([10.252.4.169]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-SHA; 15 Sep 2021 09:28:40 -0700 Date: Wed, 15 Sep 2021 17:28:37 +0100 From: Bruce Richardson To: dev@dpdk.org Cc: bluca@debian.org, david.marchand@redhat.com, ian.stokes@intel.com, Ilya Maximets , Jerin Jacob , Ruifeng Wang , Honnappa Nagarahalli , David Christensen , konstantin.ananyev@intel.com, ferruh.yigit@intel.com Message-ID: References: <20201211155111.145279-1-bruce.richardson@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20201211155111.145279-1-bruce.richardson@intel.com> Subject: Re: [dpdk-dev] [RFC PATCH] build/pkg-config: remove machine arch flag X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Fri, Dec 11, 2020 at 03:51:11PM +0000, Bruce Richardson wrote: > Traditionally any apps built using DPDK had to support the same > instruction sets as supported when the DPDK SDK itself was built, since > that was "leaked" through to the end-app and DPDK headers via > RTE_MACHINE_CPUFLAG_* values. Therefore, when converting over to meson > for app build correctness the "-march=" flag was included in the > pkg-config cflags output. > > However, since the DPDK-specific CPU flags are now obsolete, and we > instead check directly for compiler-defined flags, we should no longer > need to force the exact same architecture match in all cases. To > faciliate such flexibility, a new pkg_config_machine_args array - which > defaults to the existing machine_args array has been defined. The > individual architectures - x86, arm and ppc - can choose if and how to > override this value themselves. > > For x86, since SSE4.2 is the minimum instruction-set level needed to run > DPDK, and since some header files assume that minimum level of > instruction set support, we override the "-march=" value with "-msse4" > for the pkg-config file. This allows end applications to set their own > "march" value while still ensuring valid DPDK compilation. > > Signed-off-by: Bruce Richardson > --- > > CC: Jerin Jacob > CC: Ruifeng Wang > CC: Honnappa Nagarahalli > CC: David Christensen > Feedback requested from ARM and PPC maintainers as to this change > and what flags, if any, need to be in the .pc file for DPDK on such > platforms. For example - is setting 'pkg_config_machine_args' to > 'machine_args' by default necessary behaviour? > Ping for further thoughts or input on this patch. /Bruce > --- > buildtools/pkg-config/meson.build | 2 +- > config/meson.build | 1 + > config/x86/meson.build | 3 +++ > 3 files changed, 5 insertions(+), 1 deletion(-) > > diff --git a/buildtools/pkg-config/meson.build b/buildtools/pkg-config/meson.build > index 5f1930428..8e2e24681 100644 > --- a/buildtools/pkg-config/meson.build > +++ b/buildtools/pkg-config/meson.build > @@ -2,7 +2,7 @@ > # Copyright(c) 2020 Intel Corporation > > pkg = import('pkgconfig') > -pkg_extra_cflags = ['-include', 'rte_config.h'] + machine_args > +pkg_extra_cflags = ['-include', 'rte_config.h'] + pkg_config_machine_args > if is_freebsd > pkg_extra_cflags += ['-D__BSD_VISIBLE'] > endif > diff --git a/config/meson.build b/config/meson.build > index 3ddcc3539..d58ff781d 100644 > --- a/config/meson.build > +++ b/config/meson.build > @@ -100,6 +100,7 @@ if host_machine.cpu_family().startswith('ppc') > else > machine_args += '-march=' + machine > endif > +pkg_config_machine_args = machine_args # may be overriden late per arch > > toolchain = cc.get_id() > dpdk_conf.set_quoted('RTE_TOOLCHAIN', toolchain) > diff --git a/config/x86/meson.build b/config/x86/meson.build > index 31bfa63b1..fcd75502e 100644 > --- a/config/x86/meson.build > +++ b/config/x86/meson.build > @@ -16,6 +16,9 @@ if cc.get_define('__SSE4_2__', args: machine_args) == '' > machine_args += '-msse4' > endif > > +# require SSE4.2 in pkg-config file - don't use -march > +pkg_config_machine_args = ['-msse4'] > + > base_flags = ['SSE', 'SSE2', 'SSE3','SSSE3', 'SSE4_1', 'SSE4_2'] > foreach f:base_flags > compile_time_cpuflags += ['RTE_CPUFLAG_' + f] > -- > 2.27.0 >