[dpdk-dev,v2] build: meson set toolchain info during config init

Message ID 20180403102110.9507-1-pbhagavatula@caviumnetworks.com (mailing list archive)
State Superseded, archived
Delegated to: Bruce Richardson
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Pavan Nikhilesh April 3, 2018, 10:21 a.m. UTC
  Meson set RTE_TOOLCHAIN to clang/gcc and set RTE_TOOLCHAIN_CLANG/GCC to
1 during initilizing dpdk_conf so that it can be used by both x86 and arm.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
---

 v2 Changes:
 - Use get_id for identifying compiler instead of checking for compiler defines
 manually.(Bruce)

 config/arm/meson.build | 9 ---------
 config/meson.build     | 8 ++++++++
 2 files changed, 8 insertions(+), 9 deletions(-)

--
2.16.3
  

Comments

Bruce Richardson April 3, 2018, 10:55 a.m. UTC | #1
On Tue, Apr 03, 2018 at 03:51:10PM +0530, Pavan Nikhilesh wrote:
> Meson set RTE_TOOLCHAIN to clang/gcc and set RTE_TOOLCHAIN_CLANG/GCC to
> 1 during initilizing dpdk_conf so that it can be used by both x86 and arm.
> 
> Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
> ---
> 
>  v2 Changes:
>  - Use get_id for identifying compiler instead of checking for compiler defines
>  manually.(Bruce)
> 
>  config/arm/meson.build | 9 ---------
>  config/meson.build     | 8 ++++++++
>  2 files changed, 8 insertions(+), 9 deletions(-)
> 
> diff --git a/config/arm/meson.build b/config/arm/meson.build
> index c1ab6ed01..e9c9eb1a5 100644
> --- a/config/arm/meson.build
> +++ b/config/arm/meson.build
> @@ -83,15 +83,6 @@ impl_0x69 = ['Intel', flags_generic, machine_args_generic]
>  impl_dpaa = ['NXP DPAA', flags_dpaa, machine_args_generic]
>  impl_dpaa2 = ['NXP DPAA2', flags_dpaa2, machine_args_generic]
> 
> -
> -if cc.get_define('__clang__') != ''
> -	dpdk_conf.set_quoted('RTE_TOOLCHAIN', 'clang')
> -	dpdk_conf.set('RTE_TOOLCHAIN_CLANG', 1)
> -else
> -	dpdk_conf.set_quoted('RTE_TOOLCHAIN', 'gcc')
> -	dpdk_conf.set('RTE_TOOLCHAIN_GCC', 1)
> -endif
> -
>  dpdk_conf.set('RTE_FORCE_INTRINSICS', 1)
> 
>  if cc.sizeof('void *') != 8
> diff --git a/config/meson.build b/config/meson.build
> index f8c67578d..b8f953b54 100644
> --- a/config/meson.build
> +++ b/config/meson.build
> @@ -11,6 +11,14 @@ dpdk_conf.set('RTE_MACHINE', machine)
>  machine_args = []
>  machine_args += '-march=' + machine
> 
> +if cc.get_id() == 'clang'
> +	dpdk_conf.set_quoted('RTE_TOOLCHAIN', 'clang')
> +	dpdk_conf.set('RTE_TOOLCHAIN_CLANG', 1)
> +elif cc.get_id() == 'gcc'
> +	dpdk_conf.set_quoted('RTE_TOOLCHAIN', 'gcc')
> +	dpdk_conf.set('RTE_TOOLCHAIN_GCC', 1)
> +endif
> +

What about:
	toolchain = cc.get_id()
	dpdk_conf.set_quoted('RTE_TOOLCHAIN', toolchain)
	dpdk_conf.set('RTE_TOOLCHAIN_' + toolchain.to_upper())

It will give the exact same result for GCC and CLANG and save us having to
update in future for other compilers. The one potential gotcha is that for
ICC, it's going to report "intel" instead of "icc". However, from use of
grep, it appears that we don't ever check for icc except in the makefiles,
so having it reported as "intel" for meson builds should not be a problem.
[If it is a problem later on we can always put in a special case: if
toolchain == 'intel'; toolchain = 'icc'].

/Bruce
  
Pavan Nikhilesh April 3, 2018, 11:11 a.m. UTC | #2
On Tue, Apr 03, 2018 at 11:55:24AM +0100, Bruce Richardson wrote:
> On Tue, Apr 03, 2018 at 03:51:10PM +0530, Pavan Nikhilesh wrote:
> > Meson set RTE_TOOLCHAIN to clang/gcc and set RTE_TOOLCHAIN_CLANG/GCC to
> > 1 during initilizing dpdk_conf so that it can be used by both x86 and arm.
> >
> > Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
> > ---
> >
> >  v2 Changes:
> >  - Use get_id for identifying compiler instead of checking for compiler defines
> >  manually.(Bruce)
> >
> >  config/arm/meson.build | 9 ---------
> >  config/meson.build     | 8 ++++++++
> >  2 files changed, 8 insertions(+), 9 deletions(-)
> >
> > diff --git a/config/arm/meson.build b/config/arm/meson.build
> > index c1ab6ed01..e9c9eb1a5 100644
> > --- a/config/arm/meson.build
> > +++ b/config/arm/meson.build
> > @@ -83,15 +83,6 @@ impl_0x69 = ['Intel', flags_generic, machine_args_generic]
> >  impl_dpaa = ['NXP DPAA', flags_dpaa, machine_args_generic]
> >  impl_dpaa2 = ['NXP DPAA2', flags_dpaa2, machine_args_generic]
> >
> > -
> > -if cc.get_define('__clang__') != ''
> > -	dpdk_conf.set_quoted('RTE_TOOLCHAIN', 'clang')
> > -	dpdk_conf.set('RTE_TOOLCHAIN_CLANG', 1)
> > -else
> > -	dpdk_conf.set_quoted('RTE_TOOLCHAIN', 'gcc')
> > -	dpdk_conf.set('RTE_TOOLCHAIN_GCC', 1)
> > -endif
> > -
> >  dpdk_conf.set('RTE_FORCE_INTRINSICS', 1)
> >
> >  if cc.sizeof('void *') != 8
> > diff --git a/config/meson.build b/config/meson.build
> > index f8c67578d..b8f953b54 100644
> > --- a/config/meson.build
> > +++ b/config/meson.build
> > @@ -11,6 +11,14 @@ dpdk_conf.set('RTE_MACHINE', machine)
> >  machine_args = []
> >  machine_args += '-march=' + machine
> >
> > +if cc.get_id() == 'clang'
> > +	dpdk_conf.set_quoted('RTE_TOOLCHAIN', 'clang')
> > +	dpdk_conf.set('RTE_TOOLCHAIN_CLANG', 1)
> > +elif cc.get_id() == 'gcc'
> > +	dpdk_conf.set_quoted('RTE_TOOLCHAIN', 'gcc')
> > +	dpdk_conf.set('RTE_TOOLCHAIN_GCC', 1)
> > +endif
> > +
>
> What about:
> 	toolchain = cc.get_id()
> 	dpdk_conf.set_quoted('RTE_TOOLCHAIN', toolchain)
> 	dpdk_conf.set('RTE_TOOLCHAIN_' + toolchain.to_upper())
>

Agreed, will send out v3.

> It will give the exact same result for GCC and CLANG and save us having to
> update in future for other compilers. The one potential gotcha is that for
> ICC, it's going to report "intel" instead of "icc". However, from use of
> grep, it appears that we don't ever check for icc except in the makefiles,
> so having it reported as "intel" for meson builds should not be a problem.
> [If it is a problem later on we can always put in a special case: if
> toolchain == 'intel'; toolchain = 'icc'].
>
> /Bruce
  

Patch

diff --git a/config/arm/meson.build b/config/arm/meson.build
index c1ab6ed01..e9c9eb1a5 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -83,15 +83,6 @@  impl_0x69 = ['Intel', flags_generic, machine_args_generic]
 impl_dpaa = ['NXP DPAA', flags_dpaa, machine_args_generic]
 impl_dpaa2 = ['NXP DPAA2', flags_dpaa2, machine_args_generic]

-
-if cc.get_define('__clang__') != ''
-	dpdk_conf.set_quoted('RTE_TOOLCHAIN', 'clang')
-	dpdk_conf.set('RTE_TOOLCHAIN_CLANG', 1)
-else
-	dpdk_conf.set_quoted('RTE_TOOLCHAIN', 'gcc')
-	dpdk_conf.set('RTE_TOOLCHAIN_GCC', 1)
-endif
-
 dpdk_conf.set('RTE_FORCE_INTRINSICS', 1)

 if cc.sizeof('void *') != 8
diff --git a/config/meson.build b/config/meson.build
index f8c67578d..b8f953b54 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -11,6 +11,14 @@  dpdk_conf.set('RTE_MACHINE', machine)
 machine_args = []
 machine_args += '-march=' + machine

+if cc.get_id() == 'clang'
+	dpdk_conf.set_quoted('RTE_TOOLCHAIN', 'clang')
+	dpdk_conf.set('RTE_TOOLCHAIN_CLANG', 1)
+elif cc.get_id() == 'gcc'
+	dpdk_conf.set_quoted('RTE_TOOLCHAIN', 'gcc')
+	dpdk_conf.set('RTE_TOOLCHAIN_GCC', 1)
+endif
+
 # use pthreads
 add_project_link_arguments('-pthread', language: 'c')
 dpdk_extra_ldflags += '-pthread'