meson: Adjust for clang compiler

Submitted by Khem Raj on Jan. 27, 2018, 7:06 a.m. | Patch ID: 147628

Details

Message ID 20180127070626.27581-1-raj.khem@gmail.com
State Master Next
Commit 6abfcc61fb136c34ea3271697ba8f0ce29f0d382
Headers show

Commit Message

Khem Raj Jan. 27, 2018, 7:06 a.m.
Remove hardcoding c/c++ compiler to be gcc alone, its
possible to use clang as replacement for cross compilers
from meta-clang, therefore set clang/clang++ if
TOOLCHAIN = "clang"

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 meta/classes/meson.bbclass | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

Patch hide | download patch | download mbox

diff --git a/meta/classes/meson.bbclass b/meta/classes/meson.bbclass
index 91ac652651..cd3497a802 100644
--- a/meta/classes/meson.bbclass
+++ b/meta/classes/meson.bbclass
@@ -40,6 +40,11 @@  EXTRA_OEMESON += "${PACKAGECONFIG_CONFARGS}"
 MESON_CROSS_FILE = ""
 MESON_CROSS_FILE_class-target = "--cross-file ${WORKDIR}/meson.cross"
 
+CCOMPILER ?= "gcc"
+CXXCOMPILER ?= "g++"
+CCOMPILER_toolchain-clang = "clang"
+CXXCOMPILER_toolchain-clang = "clang++"
+
 def meson_array(var, d):
     return "', '".join(d.getVar(var).split()).join(("'", "'"))
 
@@ -49,8 +54,8 @@  do_write_config() {
     # This needs to be Py to split the args into single-element lists
     cat >${WORKDIR}/meson.cross <<EOF
 [binaries]
-c = '${HOST_PREFIX}gcc'
-cpp = '${HOST_PREFIX}g++'
+c = '${HOST_PREFIX}${CCOMPILER}'
+cpp = '${HOST_PREFIX}${CXXCOMPILER}'
 ar = '${HOST_PREFIX}ar'
 ld = '${HOST_PREFIX}ld'
 strip = '${HOST_PREFIX}strip'

Comments

Ross Burton Jan. 29, 2018, 5:21 p.m.
On 27 January 2018 at 07:06, Khem Raj <raj.khem@gmail.com> wrote:

> Remove hardcoding c/c++ compiler to be gcc alone, its
> possible to use clang as replacement for cross compilers
> from meta-clang, therefore set clang/clang++ if
> TOOLCHAIN = "clang"
>
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
>  meta/classes/meson.bbclass | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/meta/classes/meson.bbclass b/meta/classes/meson.bbclass
> index 91ac652651..cd3497a802 100644
> --- a/meta/classes/meson.bbclass
> +++ b/meta/classes/meson.bbclass
> @@ -40,6 +40,11 @@ EXTRA_OEMESON += "${PACKAGECONFIG_CONFARGS}"
>  MESON_CROSS_FILE = ""
>  MESON_CROSS_FILE_class-target = "--cross-file ${WORKDIR}/meson.cross"
>
> +CCOMPILER ?= "gcc"
> +CXXCOMPILER ?= "g++"
> +CCOMPILER_toolchain-clang = "clang"
> +CXXCOMPILER_toolchain-clang = "clang++"
> +
>

Can we do this in bitbake.conf instead of repeating ourselves?

Ross
Khem Raj Jan. 29, 2018, 5:44 p.m.
On Mon, Jan 29, 2018 at 9:21 AM, Burton, Ross <ross.burton@intel.com> wrote:
> On 27 January 2018 at 07:06, Khem Raj <raj.khem@gmail.com> wrote:
>>
>> Remove hardcoding c/c++ compiler to be gcc alone, its
>> possible to use clang as replacement for cross compilers
>> from meta-clang, therefore set clang/clang++ if
>> TOOLCHAIN = "clang"
>>
>> Signed-off-by: Khem Raj <raj.khem@gmail.com>
>> ---
>>  meta/classes/meson.bbclass | 9 +++++++--
>>  1 file changed, 7 insertions(+), 2 deletions(-)
>>
>> diff --git a/meta/classes/meson.bbclass b/meta/classes/meson.bbclass
>> index 91ac652651..cd3497a802 100644
>> --- a/meta/classes/meson.bbclass
>> +++ b/meta/classes/meson.bbclass
>> @@ -40,6 +40,11 @@ EXTRA_OEMESON += "${PACKAGECONFIG_CONFARGS}"
>>  MESON_CROSS_FILE = ""
>>  MESON_CROSS_FILE_class-target = "--cross-file ${WORKDIR}/meson.cross"
>>
>> +CCOMPILER ?= "gcc"
>> +CXXCOMPILER ?= "g++"
>> +CCOMPILER_toolchain-clang = "clang"
>> +CXXCOMPILER_toolchain-clang = "clang++"
>> +
>
>
> Can we do this in bitbake.conf instead of repeating ourselves?

having it in meson bbclass keeps it to meson based recipes,
bitbake.conf is a bit too generic.

>
> Ross
Richard Purdie Jan. 29, 2018, 11:07 p.m.
On Mon, 2018-01-29 at 09:44 -0800, Khem Raj wrote:
> On Mon, Jan 29, 2018 at 9:21 AM, Burton, Ross <ross.burton@intel.com>
> wrote:
> > 
> > On 27 January 2018 at 07:06, Khem Raj <raj.khem@gmail.com> wrote:
> > > 
> > > 
> > > Remove hardcoding c/c++ compiler to be gcc alone, its
> > > possible to use clang as replacement for cross compilers
> > > from meta-clang, therefore set clang/clang++ if
> > > TOOLCHAIN = "clang"
> > > 
> > > Signed-off-by: Khem Raj <raj.khem@gmail.com>
> > > ---
> > >  meta/classes/meson.bbclass | 9 +++++++--
> > >  1 file changed, 7 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/meta/classes/meson.bbclass
> > > b/meta/classes/meson.bbclass
> > > index 91ac652651..cd3497a802 100644
> > > --- a/meta/classes/meson.bbclass
> > > +++ b/meta/classes/meson.bbclass
> > > @@ -40,6 +40,11 @@ EXTRA_OEMESON += "${PACKAGECONFIG_CONFARGS}"
> > >  MESON_CROSS_FILE = ""
> > >  MESON_CROSS_FILE_class-target = "--cross-file
> > > ${WORKDIR}/meson.cross"
> > > 
> > > +CCOMPILER ?= "gcc"
> > > +CXXCOMPILER ?= "g++"
> > > +CCOMPILER_toolchain-clang = "clang"
> > > +CXXCOMPILER_toolchain-clang = "clang++"
> > > +
> > 
> > Can we do this in bitbake.conf instead of repeating ourselves?
> having it in meson bbclass keeps it to meson based recipes,
> bitbake.conf is a bit too generic.

Yes, I do worry a bit about namespace pollution from bitbake.conf
already...

Cheers,

Richard