* [patch v2] sanity.bbclass: correct the gcc_arch check logic @ 2013-06-18 13:08 Zhenhua Luo 2013-06-18 13:04 ` Richard Purdie 0 siblings, 1 reply; 11+ messages in thread From: Zhenhua Luo @ 2013-06-18 13:08 UTC (permalink / raw) To: openembedded-core; +Cc: Zhenhua Luo, b40527 The gcc arch check result is incorrect when gcc version is older than 4.5. Sanity checker requests user to add "-march=native" into BUILD_CFLAGS even if the flag is not supported by host gcc. The status is 0 when -march=native is supported by host gcc, so set result to True, otherwise set result to False. Signed-off-by: Zhenhua Luo <zhenhua.luo@freescale.com> --- meta/classes/sanity.bbclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass index 3b9934b..ee09679 100644 --- a/meta/classes/sanity.bbclass +++ b/meta/classes/sanity.bbclass @@ -325,7 +325,7 @@ def check_gcc_march(sanity_data): if status != 0: # Check if GCC could work with march status,result = oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native gcc_test.c -o gcc_test") - if status != 0: + if status == 0: result = True else: result = False -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [patch v2] sanity.bbclass: correct the gcc_arch check logic 2013-06-18 13:08 [patch v2] sanity.bbclass: correct the gcc_arch check logic Zhenhua Luo @ 2013-06-18 13:04 ` Richard Purdie 2013-06-18 13:26 ` Luo Zhenhua-B19537 2013-06-20 3:28 ` Luo Zhenhua-B19537 0 siblings, 2 replies; 11+ messages in thread From: Richard Purdie @ 2013-06-18 13:04 UTC (permalink / raw) To: Zhenhua Luo, Randy MacLeod; +Cc: b40527, openembedded-core On Tue, 2013-06-18 at 21:08 +0800, Zhenhua Luo wrote: > The gcc arch check result is incorrect when gcc version is older than 4.5. > Sanity checker requests user to add "-march=native" into BUILD_CFLAGS even if > the flag is not supported by host gcc. > > The status is 0 when -march=native is supported by host gcc, so set result to > True, otherwise set result to False. > > Signed-off-by: Zhenhua Luo <zhenhua.luo@freescale.com> > --- > meta/classes/sanity.bbclass | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass > index 3b9934b..ee09679 100644 > --- a/meta/classes/sanity.bbclass > +++ b/meta/classes/sanity.bbclass > @@ -325,7 +325,7 @@ def check_gcc_march(sanity_data): > if status != 0: > # Check if GCC could work with march > status,result = oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native gcc_test.c -o gcc_test") > - if status != 0: > + if status == 0: > result = True > else: > result = False Can you and Randy please sort out what the correct value is here please. This appears to directly revert http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=ad276d7d89190c57a152867d7278ee18f784ff2c Cheers, Richard ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [patch v2] sanity.bbclass: correct the gcc_arch check logic 2013-06-18 13:04 ` Richard Purdie @ 2013-06-18 13:26 ` Luo Zhenhua-B19537 2013-06-20 3:28 ` Luo Zhenhua-B19537 1 sibling, 0 replies; 11+ messages in thread From: Luo Zhenhua-B19537 @ 2013-06-18 13:26 UTC (permalink / raw) To: Richard Purdie, Randy MacLeod Cc: Yu Zongchun-B40527, openembedded-core@lists.openembedded.org Hi Randy, During the test on my machine with gcc-4.1.2, if -march=native is not supported by host gcc, a non-zero value(256) returns, otherwise 0 returns. [LOG] status is 256 result is gcc_test.c:1: error: bad value (native) for -march= switch gcc_test.c:1: error: bad value (native) for -mtune= switch Please confirm if this is same as your result. Best Regards, Zhenhua > -----Original Message----- > From: Richard Purdie [mailto:richard.purdie@linuxfoundation.org] > Sent: Tuesday, June 18, 2013 9:04 PM > To: Luo Zhenhua-B19537; Randy MacLeod > Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527 > Subject: Re: [OE-core] [oe-core][patch v2] sanity.bbclass: correct the > gcc_arch check logic > > On Tue, 2013-06-18 at 21:08 +0800, Zhenhua Luo wrote: > > The gcc arch check result is incorrect when gcc version is older than > 4.5. > > Sanity checker requests user to add "-march=native" into BUILD_CFLAGS > > even if the flag is not supported by host gcc. > > > > The status is 0 when -march=native is supported by host gcc, so set > > result to True, otherwise set result to False. > > > > Signed-off-by: Zhenhua Luo <zhenhua.luo@freescale.com> > > --- > > meta/classes/sanity.bbclass | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass > > index 3b9934b..ee09679 100644 > > --- a/meta/classes/sanity.bbclass > > +++ b/meta/classes/sanity.bbclass > > @@ -325,7 +325,7 @@ def check_gcc_march(sanity_data): > > if status != 0: > > # Check if GCC could work with march > > status,result = > oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native gcc_test.c -o > gcc_test") > > - if status != 0: > > + if status == 0: > > result = True > > else: > > result = False > > Can you and Randy please sort out what the correct value is here please. > This appears to directly revert > http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=ad276d7d89190c57a152 > 867d7278ee18f784ff2c > > Cheers, > > Richard > > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [patch v2] sanity.bbclass: correct the gcc_arch check logic 2013-06-18 13:04 ` Richard Purdie 2013-06-18 13:26 ` Luo Zhenhua-B19537 @ 2013-06-20 3:28 ` Luo Zhenhua-B19537 2013-06-21 17:37 ` Randy MacLeod ` (2 more replies) 1 sibling, 3 replies; 11+ messages in thread From: Luo Zhenhua-B19537 @ 2013-06-20 3:28 UTC (permalink / raw) To: Randy MacLeod Cc: Yu Zongchun-B40527, openembedded-core@lists.openembedded.org Ping. > -----Original Message----- > From: Luo Zhenhua-B19537 > Sent: Tuesday, June 18, 2013 9:26 PM > To: 'Richard Purdie'; Randy MacLeod > Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527 > Subject: RE: [OE-core] [oe-core][patch v2] sanity.bbclass: correct the > gcc_arch check logic > > Hi Randy, > > During the test on my machine with gcc-4.1.2, if -march=native is not > supported by host gcc, a non-zero value(256) returns, otherwise 0 returns. > > [LOG] > status is 256 > result is gcc_test.c:1: error: bad value (native) for -march= switch > gcc_test.c:1: error: bad value (native) for -mtune= switch > > Please confirm if this is same as your result. > > > Best Regards, > > Zhenhua > > > > -----Original Message----- > > From: Richard Purdie [mailto:richard.purdie@linuxfoundation.org] > > Sent: Tuesday, June 18, 2013 9:04 PM > > To: Luo Zhenhua-B19537; Randy MacLeod > > Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527 > > Subject: Re: [OE-core] [oe-core][patch v2] sanity.bbclass: correct the > > gcc_arch check logic > > > > On Tue, 2013-06-18 at 21:08 +0800, Zhenhua Luo wrote: > > > The gcc arch check result is incorrect when gcc version is older > > > than > > 4.5. > > > Sanity checker requests user to add "-march=native" into > > > BUILD_CFLAGS even if the flag is not supported by host gcc. > > > > > > The status is 0 when -march=native is supported by host gcc, so set > > > result to True, otherwise set result to False. > > > > > > Signed-off-by: Zhenhua Luo <zhenhua.luo@freescale.com> > > > --- > > > meta/classes/sanity.bbclass | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/meta/classes/sanity.bbclass > > > b/meta/classes/sanity.bbclass index 3b9934b..ee09679 100644 > > > --- a/meta/classes/sanity.bbclass > > > +++ b/meta/classes/sanity.bbclass > > > @@ -325,7 +325,7 @@ def check_gcc_march(sanity_data): > > > if status != 0: > > > # Check if GCC could work with march > > > status,result = > > oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native gcc_test.c > > -o > > gcc_test") > > > - if status != 0: > > > + if status == 0: > > > result = True > > > else: > > > result = False > > > > Can you and Randy please sort out what the correct value is here please. > > This appears to directly revert > > http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=ad276d7d89190c57a > > 152 > > 867d7278ee18f784ff2c > > > > Cheers, > > > > Richard > > > > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [patch v2] sanity.bbclass: correct the gcc_arch check logic 2013-06-20 3:28 ` Luo Zhenhua-B19537 @ 2013-06-21 17:37 ` Randy MacLeod 2013-06-25 21:56 ` Randy MacLeod 2013-06-26 22:16 ` Randy MacLeod 2 siblings, 0 replies; 11+ messages in thread From: Randy MacLeod @ 2013-06-21 17:37 UTC (permalink / raw) To: Luo Zhenhua-B19537 Cc: Yu Zongchun-B40527, openembedded-core@lists.openembedded.org On 13-06-19 11:28 PM, Luo Zhenhua-B19537 wrote: > Ping. It's been a busy week but this will be sorted out today or Monday at the latest. // RAndy > >> -----Original Message----- >> From: Luo Zhenhua-B19537 >> Sent: Tuesday, June 18, 2013 9:26 PM >> To: 'Richard Purdie'; Randy MacLeod >> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527 >> Subject: RE: [OE-core] [oe-core][patch v2] sanity.bbclass: correct the >> gcc_arch check logic >> >> Hi Randy, >> >> During the test on my machine with gcc-4.1.2, if -march=native is not >> supported by host gcc, a non-zero value(256) returns, otherwise 0 returns. >> >> [LOG] >> status is 256 >> result is gcc_test.c:1: error: bad value (native) for -march= switch >> gcc_test.c:1: error: bad value (native) for -mtune= switch >> >> Please confirm if this is same as your result. >> >> >> Best Regards, >> >> Zhenhua >> >> >>> -----Original Message----- >>> From: Richard Purdie [mailto:richard.purdie@linuxfoundation.org] >>> Sent: Tuesday, June 18, 2013 9:04 PM >>> To: Luo Zhenhua-B19537; Randy MacLeod >>> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527 >>> Subject: Re: [OE-core] [oe-core][patch v2] sanity.bbclass: correct the >>> gcc_arch check logic >>> >>> On Tue, 2013-06-18 at 21:08 +0800, Zhenhua Luo wrote: >>>> The gcc arch check result is incorrect when gcc version is older >>>> than >>> 4.5. >>>> Sanity checker requests user to add "-march=native" into >>>> BUILD_CFLAGS even if the flag is not supported by host gcc. >>>> >>>> The status is 0 when -march=native is supported by host gcc, so set >>>> result to True, otherwise set result to False. >>>> >>>> Signed-off-by: Zhenhua Luo <zhenhua.luo@freescale.com> >>>> --- >>>> meta/classes/sanity.bbclass | 2 +- >>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>> >>>> diff --git a/meta/classes/sanity.bbclass >>>> b/meta/classes/sanity.bbclass index 3b9934b..ee09679 100644 >>>> --- a/meta/classes/sanity.bbclass >>>> +++ b/meta/classes/sanity.bbclass >>>> @@ -325,7 +325,7 @@ def check_gcc_march(sanity_data): >>>> if status != 0: >>>> # Check if GCC could work with march >>>> status,result = >>> oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native gcc_test.c >>> -o >>> gcc_test") >>>> - if status != 0: >>>> + if status == 0: >>>> result = True >>>> else: >>>> result = False >>> >>> Can you and Randy please sort out what the correct value is here please. >>> This appears to directly revert >>> http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=ad276d7d89190c57a >>> 152 >>> 867d7278ee18f784ff2c >>> >>> Cheers, >>> >>> Richard >>> >>> > -- # Randy MacLeod. SMTS, Linux, Wind River Direct: 613.963.1350 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [patch v2] sanity.bbclass: correct the gcc_arch check logic 2013-06-20 3:28 ` Luo Zhenhua-B19537 2013-06-21 17:37 ` Randy MacLeod @ 2013-06-25 21:56 ` Randy MacLeod 2013-06-26 22:16 ` Randy MacLeod 2 siblings, 0 replies; 11+ messages in thread From: Randy MacLeod @ 2013-06-25 21:56 UTC (permalink / raw) To: Luo Zhenhua-B19537 Cc: Yu Zongchun-B40527, openembedded-core@lists.openembedded.org On 13-06-19 11:28 PM, Luo Zhenhua-B19537 wrote: > Ping. I'm not sure what the protocol is for being swamped but I still haven't gotten to this. Mark and I made some changes to the -march tests to deal with old compilers so one of us will send that here as soon as we can. Sorry for the delay, // Randy > >> -----Original Message----- >> From: Luo Zhenhua-B19537 >> Sent: Tuesday, June 18, 2013 9:26 PM >> To: 'Richard Purdie'; Randy MacLeod >> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527 >> Subject: RE: [OE-core] [oe-core][patch v2] sanity.bbclass: correct the >> gcc_arch check logic >> >> Hi Randy, >> >> During the test on my machine with gcc-4.1.2, if -march=native is not >> supported by host gcc, a non-zero value(256) returns, otherwise 0 returns. >> >> [LOG] >> status is 256 >> result is gcc_test.c:1: error: bad value (native) for -march= switch >> gcc_test.c:1: error: bad value (native) for -mtune= switch >> >> Please confirm if this is same as your result. >> >> >> Best Regards, >> >> Zhenhua >> >> >>> -----Original Message----- >>> From: Richard Purdie [mailto:richard.purdie@linuxfoundation.org] >>> Sent: Tuesday, June 18, 2013 9:04 PM >>> To: Luo Zhenhua-B19537; Randy MacLeod >>> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527 >>> Subject: Re: [OE-core] [oe-core][patch v2] sanity.bbclass: correct the >>> gcc_arch check logic >>> >>> On Tue, 2013-06-18 at 21:08 +0800, Zhenhua Luo wrote: >>>> The gcc arch check result is incorrect when gcc version is older >>>> than >>> 4.5. >>>> Sanity checker requests user to add "-march=native" into >>>> BUILD_CFLAGS even if the flag is not supported by host gcc. >>>> >>>> The status is 0 when -march=native is supported by host gcc, so set >>>> result to True, otherwise set result to False. >>>> >>>> Signed-off-by: Zhenhua Luo <zhenhua.luo@freescale.com> >>>> --- >>>> meta/classes/sanity.bbclass | 2 +- >>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>> >>>> diff --git a/meta/classes/sanity.bbclass >>>> b/meta/classes/sanity.bbclass index 3b9934b..ee09679 100644 >>>> --- a/meta/classes/sanity.bbclass >>>> +++ b/meta/classes/sanity.bbclass >>>> @@ -325,7 +325,7 @@ def check_gcc_march(sanity_data): >>>> if status != 0: >>>> # Check if GCC could work with march >>>> status,result = >>> oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native gcc_test.c >>> -o >>> gcc_test") >>>> - if status != 0: >>>> + if status == 0: >>>> result = True >>>> else: >>>> result = False >>> >>> Can you and Randy please sort out what the correct value is here please. >>> This appears to directly revert >>> http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=ad276d7d89190c57a >>> 152 >>> 867d7278ee18f784ff2c >>> >>> Cheers, >>> >>> Richard >>> >>> > -- # Randy MacLeod. SMTS, Linux, Wind River Direct: 613.963.1350 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [patch v2] sanity.bbclass: correct the gcc_arch check logic 2013-06-20 3:28 ` Luo Zhenhua-B19537 2013-06-21 17:37 ` Randy MacLeod 2013-06-25 21:56 ` Randy MacLeod @ 2013-06-26 22:16 ` Randy MacLeod 2013-06-27 4:03 ` Luo Zhenhua-B19537 2013-07-05 8:23 ` Luo Zhenhua-B19537 2 siblings, 2 replies; 11+ messages in thread From: Randy MacLeod @ 2013-06-26 22:16 UTC (permalink / raw) To: Luo Zhenhua-B19537 Cc: Yu Zongchun-B40527, openembedded-core@lists.openembedded.org On 13-06-19 11:28 PM, Luo Zhenhua-B19537 wrote: > Ping. > >> -----Original Message----- >> From: Luo Zhenhua-B19537 >> Sent: Tuesday, June 18, 2013 9:26 PM >> To: 'Richard Purdie'; Randy MacLeod >> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527 >> Subject: RE: [OE-core] [oe-core][patch v2] sanity.bbclass: correct the >> gcc_arch check logic >> >> Hi Randy, >> >> During the test on my machine with gcc-4.1.2, if -march=native is not >> supported by host gcc, a non-zero value(256) returns, otherwise 0 returns. >> >> [LOG] >> status is 256 >> result is gcc_test.c:1: error: bad value (native) for -march= switch >> gcc_test.c:1: error: bad value (native) for -mtune= switch >> >> Please confirm if this is same as your result. Yes it's essentially the same. Mark decided that the previous test program that checked for the existence of: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 would be better done as a check for: __sync_bool_compare_and_swap I believe he got the idea from looking at glib's configure script. I'm working on properly checking on which value to give to march: native,i686,x86-64. More tomorrow. // Randy Test results and prelim code if you are interested. Here's how that test behaves with the old toolchain: ### What's the host setup? $ gcc --version gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54) Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ head -1 /etc/issue CentOS release 5.9 (Final) ### Old test and results: All options fail, returning a status of 1. $ gcc -o /tmp/jj /tmp/gcc-jj.c /tmp/gcc-jj.c: In function ‘main’: /tmp/gcc-jj.c:1: error: ‘__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4’ undeclared (first use in this function) /tmp/gcc-jj.c:1: error: (Each undeclared identifier is reported only once /tmp/gcc-jj.c:1: error: for each function it appears in.) $ echo $? 1 $ gcc -march=native -o /tmp/jj /tmp/gcc-jj.c /tmp/gcc-jj.c:1: error: bad value (native) for -march= switch /tmp/gcc-jj.c:1: error: bad value (native) for -mtune= switch $ echo $? 1 $ gcc -march=i686 -o /tmp/jj /tmp/gcc-jj.c /tmp/gcc-jj.c: In function ‘main’: /tmp/gcc-jj.c:1: error: ‘__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4’ undeclared (first use in this function) /tmp/gcc-jj.c:1: error: (Each undeclared identifier is reported only once /tmp/gcc-jj.c:1: error: for each function it appears in.) $ echo $? 1 ### New test and results: -march=`mangle uname -m` works. $ cat /tmp/gcc_test.c int main (){ volatile int atomic = 2; __sync_bool_compare_and_swap (&atomic, 2, 3); return 0;} $ gcc -o /tmp/jj /tmp/gcc_test.c /tmp/ccEVX7IX.o: In function `main': gcc_test.c:(.text+0x2f): undefined reference to `__sync_bool_compare_and_swap_4' collect2: ld returned 1 exit status $ echo $? 1 $ gcc -march=native -o /tmp/jj /tmp/gcc_test.c /tmp/gcc_test.c:1: error: bad value (native) for -march= switch /tmp/gcc_test.c:1: error: bad value (native) for -mtune= switch $ echo $? 1 $ uname -m i686 $ gcc -march=i686 -o /tmp/jj /tmp/gcc_test.c rmacleod@yow-lpggp1 .../wrs/b/snty $ echo $? 0 So you see that -march=native isn't useful for gcc-4.1.2 but -march=`munged uname -m` is. I'm in the middle of writing a more complete test but my lack of python development is showing: -# Checks if necessary to add option march to host gcc +# Checks if necessary to add march option to host gcc def check_gcc_march(sanity_data): - result = False + result = "" # Check if -march not in BUILD_CFLAGS if sanity_data.getVar("BUILD_CFLAGS",True).find("-march") < 0: @@ -293,12 +293,22 @@ def check_gcc_march(sanity_data): # Check if GCC could work without march status,result = oe.utils.getstatusoutput("${BUILD_PREFIX}gcc gcc_test.c -o gcc_test") if status != 0: - # Check if GCC could work with march + # Check if GCC could work with march=native status,result = oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native gcc_test.c -o gcc_test") - if status != 0: - result = True + if status == 0: + result = "native" else: - result = False + # Check if GCC could work with march=i686 + status,result = oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=x86-64 gcc_test.c -o gcc_test") + if status == 0: + result = "x86-64" + else: + # Check if GCC could work with march=i686 + status,result = oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=i686 gcc_test.c -o gcc_test") + if status == 0: + result = "i686" + else: + result = "none" ... - if check_gcc_march(d): - status.addresult("Your gcc version is older than 4.5, please add the following param to local.conf\n \ - BUILD_CFLAGS_append = \" -march=native\"\n") + gcc_march_option = check_gcc_march(d) + if gcc_march_option != "": + if gcc_march_option == "none": + status.addresult("Your gcc version is too old.\n \ + else: + status.addresult("Your gcc version is older than 4.5, please add the following param to local.conf\n \ + BUILD_CFLAGS_append = \" -march=%s\"\n", gcc_march_option) I'll clean this up to actually work and probably use ${BUILD_ARCH} instead of i686/x86-64. More tomorrow. // Randy >> >> >> Best Regards, >> >> Zhenhua >> >> >>> -----Original Message----- >>> From: Richard Purdie [mailto:richard.purdie@linuxfoundation.org] >>> Sent: Tuesday, June 18, 2013 9:04 PM >>> To: Luo Zhenhua-B19537; Randy MacLeod >>> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527 >>> Subject: Re: [OE-core] [oe-core][patch v2] sanity.bbclass: correct the >>> gcc_arch check logic >>> >>> On Tue, 2013-06-18 at 21:08 +0800, Zhenhua Luo wrote: >>>> The gcc arch check result is incorrect when gcc version is older >>>> than >>> 4.5. >>>> Sanity checker requests user to add "-march=native" into >>>> BUILD_CFLAGS even if the flag is not supported by host gcc. >>>> >>>> The status is 0 when -march=native is supported by host gcc, so set >>>> result to True, otherwise set result to False. >>>> >>>> Signed-off-by: Zhenhua Luo <zhenhua.luo@freescale.com> >>>> --- >>>> meta/classes/sanity.bbclass | 2 +- >>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>> >>>> diff --git a/meta/classes/sanity.bbclass >>>> b/meta/classes/sanity.bbclass index 3b9934b..ee09679 100644 >>>> --- a/meta/classes/sanity.bbclass >>>> +++ b/meta/classes/sanity.bbclass >>>> @@ -325,7 +325,7 @@ def check_gcc_march(sanity_data): >>>> if status != 0: >>>> # Check if GCC could work with march >>>> status,result = >>> oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native gcc_test.c >>> -o >>> gcc_test") >>>> - if status != 0: >>>> + if status == 0: >>>> result = True >>>> else: >>>> result = False >>> >>> Can you and Randy please sort out what the correct value is here please. >>> This appears to directly revert >>> http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=ad276d7d89190c57a >>> 152 >>> 867d7278ee18f784ff2c >>> >>> Cheers, >>> >>> Richard >>> >>> > -- # Randy MacLeod. SMTS, Linux, Wind River Direct: 613.963.1350 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [patch v2] sanity.bbclass: correct the gcc_arch check logic 2013-06-26 22:16 ` Randy MacLeod @ 2013-06-27 4:03 ` Luo Zhenhua-B19537 2013-07-05 8:23 ` Luo Zhenhua-B19537 1 sibling, 0 replies; 11+ messages in thread From: Luo Zhenhua-B19537 @ 2013-06-27 4:03 UTC (permalink / raw) To: Randy MacLeod Cc: Yu Zongchun-B40527, openembedded-core@lists.openembedded.org Randy, Thanks for the details. Following is my trial result, FYI. [b19537@busy ~]$ lsb_release -a LSB Version: :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-ia32:printing-4.0-noarch Distributor ID: CentOS Description: CentOS release 5.9 (Final) Release: 5.9 Codename: Final [b19537@busy ~]$ [b19537@busy ~]$ gcc -v Using built-in specs. Target: x86_64-redhat-linux Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --disable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=x86_64-redhat-linux Thread model: posix gcc version 4.1.2 20080704 (Red Hat 4.1.2-54) [b19537@busy ~]$ [b19537@busy ~]$ cat gcc_test_new.c int main (){ volatile int atomic = 2; __sync_bool_compare_and_swap (&atomic, 2, 3); return 0;} [b19537@busy ~]$ [b19537@busy ~]$ gcc -o gcc_test_new gcc_test_new.c [b19537@busy ~]$ echo $? 0 [b19537@busy ~]$ gcc -march=native -o gcc_test_new gcc_test_new.c gcc_test_new.c:1: error: bad value (native) for -march= switch gcc_test_new.c:1: error: bad value (native) for -mtune= switch [b19537@busy ~]$ echo $? 1 [b19537@busy ~]$ [b19537@busy ~]$ gcc -march=x86-64 -o gcc_test_new gcc_test_new.c [b19537@busy ~]$ echo $? 0 [b19537@busy ~]$ Best Regards, Zhenhua > -----Original Message----- > From: Randy MacLeod [mailto:randy.macleod@windriver.com] > Sent: Thursday, June 27, 2013 6:17 AM > To: Luo Zhenhua-B19537 > Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527; Hatle, > Mark > Subject: Re: [OE-core] [oe-core][patch v2] sanity.bbclass: correct the > gcc_arch check logic > > On 13-06-19 11:28 PM, Luo Zhenhua-B19537 wrote: > > Ping. > > > >> -----Original Message----- > >> From: Luo Zhenhua-B19537 > >> Sent: Tuesday, June 18, 2013 9:26 PM > >> To: 'Richard Purdie'; Randy MacLeod > >> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527 > >> Subject: RE: [OE-core] [oe-core][patch v2] sanity.bbclass: correct > >> the gcc_arch check logic > >> > >> Hi Randy, > >> > >> During the test on my machine with gcc-4.1.2, if -march=native is not > >> supported by host gcc, a non-zero value(256) returns, otherwise 0 > returns. > >> > >> [LOG] > >> status is 256 > >> result is gcc_test.c:1: error: bad value (native) for -march= switch > >> gcc_test.c:1: error: bad value (native) for -mtune= switch > >> > >> Please confirm if this is same as your result. > > Yes it's essentially the same. > > Mark decided that the previous test program that checked for the > existence of: > __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 > would be better done as a check for: > __sync_bool_compare_and_swap > I believe he got the idea from looking at glib's configure script. > > I'm working on properly checking on which value to give to march: > native,i686,x86-64. More tomorrow. > > // Randy > > Test results and prelim code if you are interested. > > > Here's how that test behaves with the old toolchain: > > ### What's the host setup? > > $ gcc --version > gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54) Copyright (C) 2006 Free > Software Foundation, Inc. > This is free software; see the source for copying conditions. There is > NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR > PURPOSE. > > $ head -1 /etc/issue > CentOS release 5.9 (Final) > > > ### Old test and results: All options fail, returning a status of 1. > > $ gcc -o /tmp/jj /tmp/gcc-jj.c > /tmp/gcc-jj.c: In function ‘main’: > /tmp/gcc-jj.c:1: error: ‘__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4’ undeclared > (first use in this function) > /tmp/gcc-jj.c:1: error: (Each undeclared identifier is reported only once > /tmp/gcc-jj.c:1: error: for each function it appears in.) > > $ echo $? > 1 > > > $ gcc -march=native -o /tmp/jj /tmp/gcc-jj.c > /tmp/gcc-jj.c:1: error: bad value (native) for -march= switch > /tmp/gcc-jj.c:1: error: bad value (native) for -mtune= switch $ echo $? > 1 > > $ gcc -march=i686 -o /tmp/jj /tmp/gcc-jj.c > /tmp/gcc-jj.c: In function ‘main’: > /tmp/gcc-jj.c:1: error: ‘__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4’ undeclared > (first use in this function) > /tmp/gcc-jj.c:1: error: (Each undeclared identifier is reported only once > /tmp/gcc-jj.c:1: error: for each function it appears in.) $ echo $? > 1 > > > > > ### New test and results: -march=`mangle uname -m` works. > > $ cat /tmp/gcc_test.c > int main (){ volatile int atomic = 2; __sync_bool_compare_and_swap > (&atomic, 2, 3); return 0;} > > > $ gcc -o /tmp/jj /tmp/gcc_test.c > /tmp/ccEVX7IX.o: In function `main': > gcc_test.c:(.text+0x2f): undefined reference to > `__sync_bool_compare_and_swap_4' > collect2: ld returned 1 exit status > $ echo $? > 1 > > $ gcc -march=native -o /tmp/jj /tmp/gcc_test.c > /tmp/gcc_test.c:1: error: bad value (native) for -march= switch > /tmp/gcc_test.c:1: error: bad value (native) for -mtune= switch > $ echo $? > 1 > > $ uname -m > i686 > > $ gcc -march=i686 -o /tmp/jj /tmp/gcc_test.c > rmacleod@yow-lpggp1 .../wrs/b/snty $ echo $? > 0 > > So you see that -march=native isn't useful for gcc-4.1.2 but > -march=`munged uname -m` is. > > > I'm in the middle of writing a more complete test but > my lack of python development is showing: > > > -# Checks if necessary to add option march to host gcc > +# Checks if necessary to add march option to host gcc > def check_gcc_march(sanity_data): > - result = False > + result = "" > > # Check if -march not in BUILD_CFLAGS > if sanity_data.getVar("BUILD_CFLAGS",True).find("-march") < 0: > @@ -293,12 +293,22 @@ def check_gcc_march(sanity_data): > # Check if GCC could work without march > status,result = oe.utils.getstatusoutput("${BUILD_PREFIX}gcc > gcc_test.c -o gcc_test") > if status != 0: > - # Check if GCC could work with march > + # Check if GCC could work with march=native > status,result = > oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native gcc_test.c -o > gcc_test") > - if status != 0: > - result = True > + if status == 0: > + result = "native" > else: > - result = False > + # Check if GCC could work with march=i686 > + status,result = > oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=x86-64 gcc_test.c -o > gcc_test") > + if status == 0: > + result = "x86-64" > + else: > + # Check if GCC could work with march=i686 > + status,result = > oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=i686 gcc_test.c -o > gcc_test") > + if status == 0: > + result = "i686" > + else: > + result = "none" > > > ... > > - if check_gcc_march(d): > - status.addresult("Your gcc version is older than 4.5, please > add the following param to local.conf\n \ > - BUILD_CFLAGS_append = \" -march=native\"\n") > + gcc_march_option = check_gcc_march(d) > + if gcc_march_option != "": > + if gcc_march_option == "none": > + status.addresult("Your gcc version is too old.\n \ > + else: > + status.addresult("Your gcc version is older than 4.5, > please add the following param to local.conf\n \ > + BUILD_CFLAGS_append = \" -march=%s\"\n", > gcc_march_option) > > > > I'll clean this up to actually work and probably use > ${BUILD_ARCH} instead of i686/x86-64. > > More tomorrow. > > // Randy > > >> > >> > >> Best Regards, > >> > >> Zhenhua > >> > >> > >>> -----Original Message----- > >>> From: Richard Purdie [mailto:richard.purdie@linuxfoundation.org] > >>> Sent: Tuesday, June 18, 2013 9:04 PM > >>> To: Luo Zhenhua-B19537; Randy MacLeod > >>> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527 > >>> Subject: Re: [OE-core] [oe-core][patch v2] sanity.bbclass: correct > the > >>> gcc_arch check logic > >>> > >>> On Tue, 2013-06-18 at 21:08 +0800, Zhenhua Luo wrote: > >>>> The gcc arch check result is incorrect when gcc version is older > >>>> than > >>> 4.5. > >>>> Sanity checker requests user to add "-march=native" into > >>>> BUILD_CFLAGS even if the flag is not supported by host gcc. > >>>> > >>>> The status is 0 when -march=native is supported by host gcc, so set > >>>> result to True, otherwise set result to False. > >>>> > >>>> Signed-off-by: Zhenhua Luo <zhenhua.luo@freescale.com> > >>>> --- > >>>> meta/classes/sanity.bbclass | 2 +- > >>>> 1 file changed, 1 insertion(+), 1 deletion(-) > >>>> > >>>> diff --git a/meta/classes/sanity.bbclass > >>>> b/meta/classes/sanity.bbclass index 3b9934b..ee09679 100644 > >>>> --- a/meta/classes/sanity.bbclass > >>>> +++ b/meta/classes/sanity.bbclass > >>>> @@ -325,7 +325,7 @@ def check_gcc_march(sanity_data): > >>>> if status != 0: > >>>> # Check if GCC could work with march > >>>> status,result = > >>> oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native gcc_test.c > >>> -o > >>> gcc_test") > >>>> - if status != 0: > >>>> + if status == 0: > >>>> result = True > >>>> else: > >>>> result = False > >>> > >>> Can you and Randy please sort out what the correct value is here > please. > >>> This appears to directly revert > >>> > http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=ad276d7d89190c57a > >>> 152 > >>> 867d7278ee18f784ff2c > >>> > >>> Cheers, > >>> > >>> Richard > >>> > >>> > > > > > -- > # Randy MacLeod. SMTS, Linux, Wind River > Direct: 613.963.1350 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [patch v2] sanity.bbclass: correct the gcc_arch check logic 2013-06-26 22:16 ` Randy MacLeod 2013-06-27 4:03 ` Luo Zhenhua-B19537 @ 2013-07-05 8:23 ` Luo Zhenhua-B19537 2013-07-23 17:24 ` Randy MacLeod 1 sibling, 1 reply; 11+ messages in thread From: Luo Zhenhua-B19537 @ 2013-07-05 8:23 UTC (permalink / raw) To: Randy MacLeod Cc: Yu Zongchun-B40527, openembedded-core@lists.openembedded.org Hi Randy, Any update? Can this patch be applied? Now "sed -e 's/if status != 0/if status == 0/' sanity.bbclass" is needed in my test script to ensure Yocto can work on our build server. Best Regards, Zhenhua > -----Original Message----- > From: Luo Zhenhua-B19537 > Sent: Thursday, June 27, 2013 12:04 PM > To: 'Randy MacLeod' > Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527; Hatle, > Mark > Subject: RE: [OE-core] [oe-core][patch v2] sanity.bbclass: correct the > gcc_arch check logic > > Randy, > > Thanks for the details. > > Following is my trial result, FYI. > > [b19537@busy ~]$ lsb_release -a > LSB Version: :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics- > 4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0- > amd64:printing-4.0-ia32:printing-4.0-noarch > Distributor ID: CentOS > Description: CentOS release 5.9 (Final) > Release: 5.9 > Codename: Final > [b19537@busy ~]$ > [b19537@busy ~]$ gcc -v > Using built-in specs. > Target: x86_64-redhat-linux > Configured with: ../configure --prefix=/usr --mandir=/usr/share/man -- > infodir=/usr/share/info --enable-shared --enable-threads=posix --enable- > checking=release --with-system-zlib --enable-__cxa_atexit --disable- > libunwind-exceptions --enable-libgcj-multifile --enable- > languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk -- > disable-dssi --disable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2- > gcj-1.4.2.0/jre --with-cpu=generic --host=x86_64-redhat-linux Thread > model: posix gcc version 4.1.2 20080704 (Red Hat 4.1.2-54) [b19537@busy > ~]$ [b19537@busy ~]$ cat gcc_test_new.c int main (){ volatile int atomic > = 2; __sync_bool_compare_and_swap (&atomic, 2, 3); return 0;} > [b19537@busy ~]$ [b19537@busy ~]$ gcc -o gcc_test_new gcc_test_new.c > [b19537@busy ~]$ echo $? > 0 > [b19537@busy ~]$ gcc -march=native -o gcc_test_new gcc_test_new.c > gcc_test_new.c:1: error: bad value (native) for -march= switch > gcc_test_new.c:1: error: bad value (native) for -mtune= switch > [b19537@busy ~]$ echo $? > 1 > [b19537@busy ~]$ > [b19537@busy ~]$ gcc -march=x86-64 -o gcc_test_new gcc_test_new.c > [b19537@busy ~]$ echo $? > 0 > [b19537@busy ~]$ > > > Best Regards, > > Zhenhua > > > > -----Original Message----- > > From: Randy MacLeod [mailto:randy.macleod@windriver.com] > > Sent: Thursday, June 27, 2013 6:17 AM > > To: Luo Zhenhua-B19537 > > Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527; > > Hatle, Mark > > Subject: Re: [OE-core] [oe-core][patch v2] sanity.bbclass: correct the > > gcc_arch check logic > > > > On 13-06-19 11:28 PM, Luo Zhenhua-B19537 wrote: > > > Ping. > > > > > >> -----Original Message----- > > >> From: Luo Zhenhua-B19537 > > >> Sent: Tuesday, June 18, 2013 9:26 PM > > >> To: 'Richard Purdie'; Randy MacLeod > > >> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527 > > >> Subject: RE: [OE-core] [oe-core][patch v2] sanity.bbclass: correct > > >> the gcc_arch check logic > > >> > > >> Hi Randy, > > >> > > >> During the test on my machine with gcc-4.1.2, if -march=native is > > >> not supported by host gcc, a non-zero value(256) returns, otherwise > > >> 0 > > returns. > > >> > > >> [LOG] > > >> status is 256 > > >> result is gcc_test.c:1: error: bad value (native) for -march= > > >> switch > > >> gcc_test.c:1: error: bad value (native) for -mtune= switch > > >> > > >> Please confirm if this is same as your result. > > > > Yes it's essentially the same. > > > > Mark decided that the previous test program that checked for the > > existence of: > > __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 > > would be better done as a check for: > > __sync_bool_compare_and_swap > > I believe he got the idea from looking at glib's configure script. > > > > I'm working on properly checking on which value to give to march: > > native,i686,x86-64. More tomorrow. > > > > // Randy > > > > Test results and prelim code if you are interested. > > > > > > Here's how that test behaves with the old toolchain: > > > > ### What's the host setup? > > > > $ gcc --version > > gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54) Copyright (C) 2006 Free > > Software Foundation, Inc. > > This is free software; see the source for copying conditions. There > > is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A > > PARTICULAR PURPOSE. > > > > $ head -1 /etc/issue > > CentOS release 5.9 (Final) > > > > > > ### Old test and results: All options fail, returning a status of 1. > > > > $ gcc -o /tmp/jj /tmp/gcc-jj.c > > /tmp/gcc-jj.c: In function ‘main’: > > /tmp/gcc-jj.c:1: error: ‘__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4’ > > undeclared (first use in this function) > > /tmp/gcc-jj.c:1: error: (Each undeclared identifier is reported only > > once > > /tmp/gcc-jj.c:1: error: for each function it appears in.) > > > > $ echo $? > > 1 > > > > > > $ gcc -march=native -o /tmp/jj /tmp/gcc-jj.c > > /tmp/gcc-jj.c:1: error: bad value (native) for -march= switch > > /tmp/gcc-jj.c:1: error: bad value (native) for -mtune= switch $ echo $? > > 1 > > > > $ gcc -march=i686 -o /tmp/jj /tmp/gcc-jj.c > > /tmp/gcc-jj.c: In function ‘main’: > > /tmp/gcc-jj.c:1: error: ‘__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4’ > > undeclared (first use in this function) > > /tmp/gcc-jj.c:1: error: (Each undeclared identifier is reported only > > once > > /tmp/gcc-jj.c:1: error: for each function it appears in.) $ echo $? > > 1 > > > > > > > > > > ### New test and results: -march=`mangle uname -m` works. > > > > $ cat /tmp/gcc_test.c > > int main (){ volatile int atomic = 2; __sync_bool_compare_and_swap > > (&atomic, 2, 3); return 0;} > > > > > > $ gcc -o /tmp/jj /tmp/gcc_test.c > > /tmp/ccEVX7IX.o: In function `main': > > gcc_test.c:(.text+0x2f): undefined reference to > > `__sync_bool_compare_and_swap_4' > > collect2: ld returned 1 exit status > > $ echo $? > > 1 > > > > $ gcc -march=native -o /tmp/jj /tmp/gcc_test.c > > /tmp/gcc_test.c:1: error: bad value (native) for -march= switch > > /tmp/gcc_test.c:1: error: bad value (native) for -mtune= switch $ echo > > $? > > 1 > > > > $ uname -m > > i686 > > > > $ gcc -march=i686 -o /tmp/jj /tmp/gcc_test.c > > rmacleod@yow-lpggp1 .../wrs/b/snty $ echo $? > > 0 > > > > So you see that -march=native isn't useful for gcc-4.1.2 but > > -march=`munged uname -m` is. > > > > > > I'm in the middle of writing a more complete test but my lack of > > python development is showing: > > > > > > -# Checks if necessary to add option march to host gcc > > +# Checks if necessary to add march option to host gcc > > def check_gcc_march(sanity_data): > > - result = False > > + result = "" > > > > # Check if -march not in BUILD_CFLAGS > > if sanity_data.getVar("BUILD_CFLAGS",True).find("-march") < 0: > > @@ -293,12 +293,22 @@ def check_gcc_march(sanity_data): > > # Check if GCC could work without march > > status,result = oe.utils.getstatusoutput("${BUILD_PREFIX}gcc > > gcc_test.c -o gcc_test") > > if status != 0: > > - # Check if GCC could work with march > > + # Check if GCC could work with march=native > > status,result = > > oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native gcc_test.c > > -o > > gcc_test") > > - if status != 0: > > - result = True > > + if status == 0: > > + result = "native" > > else: > > - result = False > > + # Check if GCC could work with march=i686 > > + status,result = > > oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=x86-64 gcc_test.c > > -o > > gcc_test") > > + if status == 0: > > + result = "x86-64" > > + else: > > + # Check if GCC could work with march=i686 > > + status,result = > > oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=i686 gcc_test.c -o > > gcc_test") > > + if status == 0: > > + result = "i686" > > + else: > > + result = "none" > > > > > > ... > > > > - if check_gcc_march(d): > > - status.addresult("Your gcc version is older than 4.5, please > > add the following param to local.conf\n \ > > - BUILD_CFLAGS_append = \" -march=native\"\n") > > + gcc_march_option = check_gcc_march(d) > > + if gcc_march_option != "": > > + if gcc_march_option == "none": > > + status.addresult("Your gcc version is too old.\n \ > > + else: > > + status.addresult("Your gcc version is older than 4.5, > > please add the following param to local.conf\n \ > > + BUILD_CFLAGS_append = \" -march=%s\"\n", > > gcc_march_option) > > > > > > > > I'll clean this up to actually work and probably use ${BUILD_ARCH} > > instead of i686/x86-64. > > > > More tomorrow. > > > > // Randy > > > > >> > > >> > > >> Best Regards, > > >> > > >> Zhenhua > > >> > > >> > > >>> -----Original Message----- > > >>> From: Richard Purdie [mailto:richard.purdie@linuxfoundation.org] > > >>> Sent: Tuesday, June 18, 2013 9:04 PM > > >>> To: Luo Zhenhua-B19537; Randy MacLeod > > >>> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527 > > >>> Subject: Re: [OE-core] [oe-core][patch v2] sanity.bbclass: correct > > the > > >>> gcc_arch check logic > > >>> > > >>> On Tue, 2013-06-18 at 21:08 +0800, Zhenhua Luo wrote: > > >>>> The gcc arch check result is incorrect when gcc version is older > > >>>> than > > >>> 4.5. > > >>>> Sanity checker requests user to add "-march=native" into > > >>>> BUILD_CFLAGS even if the flag is not supported by host gcc. > > >>>> > > >>>> The status is 0 when -march=native is supported by host gcc, so > > >>>> set result to True, otherwise set result to False. > > >>>> > > >>>> Signed-off-by: Zhenhua Luo <zhenhua.luo@freescale.com> > > >>>> --- > > >>>> meta/classes/sanity.bbclass | 2 +- > > >>>> 1 file changed, 1 insertion(+), 1 deletion(-) > > >>>> > > >>>> diff --git a/meta/classes/sanity.bbclass > > >>>> b/meta/classes/sanity.bbclass index 3b9934b..ee09679 100644 > > >>>> --- a/meta/classes/sanity.bbclass > > >>>> +++ b/meta/classes/sanity.bbclass > > >>>> @@ -325,7 +325,7 @@ def check_gcc_march(sanity_data): > > >>>> if status != 0: > > >>>> # Check if GCC could work with march > > >>>> status,result = > > >>> oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native > > >>> gcc_test.c -o > > >>> gcc_test") > > >>>> - if status != 0: > > >>>> + if status == 0: > > >>>> result = True > > >>>> else: > > >>>> result = False > > >>> > > >>> Can you and Randy please sort out what the correct value is here > > please. > > >>> This appears to directly revert > > >>> > > http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=ad276d7d89190c57a > > >>> 152 > > >>> 867d7278ee18f784ff2c > > >>> > > >>> Cheers, > > >>> > > >>> Richard > > >>> > > >>> > > > > > > > > > -- > > # Randy MacLeod. SMTS, Linux, Wind River > > Direct: 613.963.1350 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [patch v2] sanity.bbclass: correct the gcc_arch check logic 2013-07-05 8:23 ` Luo Zhenhua-B19537 @ 2013-07-23 17:24 ` Randy MacLeod 2013-07-24 2:15 ` Luo Zhenhua-B19537 0 siblings, 1 reply; 11+ messages in thread From: Randy MacLeod @ 2013-07-23 17:24 UTC (permalink / raw) To: Luo Zhenhua-B19537 Cc: Yu Zongchun-B40527, openembedded-core@lists.openembedded.org On 13-07-05 04:23 AM, Luo Zhenhua-B19537 wrote: > Hi Randy, > > Any update? Can this patch be applied? > > Now "sed -e 's/if status != 0/if status == 0/' sanity.bbclass" is needed in my test script to ensure Yocto can work on our build server. > > > Best Regards, > > Zhenhua Zhenhua, I apologize for the huge delay (vacation, day job, ...). Mark and I worked on this and he sent: commit c126729b29822d3602c9c4fd9016cc79b6057fc5 Author: Mark Hatle <mark.hatle@windriver.com> Date: Mon Jul 15 15:10:26 2013 -0500 sanity.bbclass: Update gcc sanity check which seems like the right solution. // Randy > > >> -----Original Message----- >> From: Luo Zhenhua-B19537 >> Sent: Thursday, June 27, 2013 12:04 PM >> To: 'Randy MacLeod' >> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527; Hatle, >> Mark >> Subject: RE: [OE-core] [oe-core][patch v2] sanity.bbclass: correct the >> gcc_arch check logic >> >> Randy, >> >> Thanks for the details. >> >> Following is my trial result, FYI. >> >> [b19537@busy ~]$ lsb_release -a >> LSB Version: :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics- >> 4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0- >> amd64:printing-4.0-ia32:printing-4.0-noarch >> Distributor ID: CentOS >> Description: CentOS release 5.9 (Final) >> Release: 5.9 >> Codename: Final >> [b19537@busy ~]$ >> [b19537@busy ~]$ gcc -v >> Using built-in specs. >> Target: x86_64-redhat-linux >> Configured with: ../configure --prefix=/usr --mandir=/usr/share/man -- >> infodir=/usr/share/info --enable-shared --enable-threads=posix --enable- >> checking=release --with-system-zlib --enable-__cxa_atexit --disable- >> libunwind-exceptions --enable-libgcj-multifile --enable- >> languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk -- >> disable-dssi --disable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2- >> gcj-1.4.2.0/jre --with-cpu=generic --host=x86_64-redhat-linux Thread >> model: posix gcc version 4.1.2 20080704 (Red Hat 4.1.2-54) [b19537@busy >> ~]$ [b19537@busy ~]$ cat gcc_test_new.c int main (){ volatile int atomic >> = 2; __sync_bool_compare_and_swap (&atomic, 2, 3); return 0;} >> [b19537@busy ~]$ [b19537@busy ~]$ gcc -o gcc_test_new gcc_test_new.c >> [b19537@busy ~]$ echo $? >> 0 >> [b19537@busy ~]$ gcc -march=native -o gcc_test_new gcc_test_new.c >> gcc_test_new.c:1: error: bad value (native) for -march= switch >> gcc_test_new.c:1: error: bad value (native) for -mtune= switch >> [b19537@busy ~]$ echo $? >> 1 >> [b19537@busy ~]$ >> [b19537@busy ~]$ gcc -march=x86-64 -o gcc_test_new gcc_test_new.c >> [b19537@busy ~]$ echo $? >> 0 >> [b19537@busy ~]$ >> >> >> Best Regards, >> >> Zhenhua >> >> >>> -----Original Message----- >>> From: Randy MacLeod [mailto:randy.macleod@windriver.com] >>> Sent: Thursday, June 27, 2013 6:17 AM >>> To: Luo Zhenhua-B19537 >>> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527; >>> Hatle, Mark >>> Subject: Re: [OE-core] [oe-core][patch v2] sanity.bbclass: correct the >>> gcc_arch check logic >>> >>> On 13-06-19 11:28 PM, Luo Zhenhua-B19537 wrote: >>>> Ping. >>>> >>>>> -----Original Message----- >>>>> From: Luo Zhenhua-B19537 >>>>> Sent: Tuesday, June 18, 2013 9:26 PM >>>>> To: 'Richard Purdie'; Randy MacLeod >>>>> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527 >>>>> Subject: RE: [OE-core] [oe-core][patch v2] sanity.bbclass: correct >>>>> the gcc_arch check logic >>>>> >>>>> Hi Randy, >>>>> >>>>> During the test on my machine with gcc-4.1.2, if -march=native is >>>>> not supported by host gcc, a non-zero value(256) returns, otherwise >>>>> 0 >>> returns. >>>>> >>>>> [LOG] >>>>> status is 256 >>>>> result is gcc_test.c:1: error: bad value (native) for -march= >>>>> switch >>>>> gcc_test.c:1: error: bad value (native) for -mtune= switch >>>>> >>>>> Please confirm if this is same as your result. >>> >>> Yes it's essentially the same. >>> >>> Mark decided that the previous test program that checked for the >>> existence of: >>> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 >>> would be better done as a check for: >>> __sync_bool_compare_and_swap >>> I believe he got the idea from looking at glib's configure script. >>> >>> I'm working on properly checking on which value to give to march: >>> native,i686,x86-64. More tomorrow. >>> >>> // Randy >>> >>> Test results and prelim code if you are interested. >>> >>> >>> Here's how that test behaves with the old toolchain: >>> >>> ### What's the host setup? >>> >>> $ gcc --version >>> gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54) Copyright (C) 2006 Free >>> Software Foundation, Inc. >>> This is free software; see the source for copying conditions. There >>> is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A >>> PARTICULAR PURPOSE. >>> >>> $ head -1 /etc/issue >>> CentOS release 5.9 (Final) >>> >>> >>> ### Old test and results: All options fail, returning a status of 1. >>> >>> $ gcc -o /tmp/jj /tmp/gcc-jj.c >>> /tmp/gcc-jj.c: In function ‘main’: >>> /tmp/gcc-jj.c:1: error: ‘__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4’ >>> undeclared (first use in this function) >>> /tmp/gcc-jj.c:1: error: (Each undeclared identifier is reported only >>> once >>> /tmp/gcc-jj.c:1: error: for each function it appears in.) >>> >>> $ echo $? >>> 1 >>> >>> >>> $ gcc -march=native -o /tmp/jj /tmp/gcc-jj.c >>> /tmp/gcc-jj.c:1: error: bad value (native) for -march= switch >>> /tmp/gcc-jj.c:1: error: bad value (native) for -mtune= switch $ echo $? >>> 1 >>> >>> $ gcc -march=i686 -o /tmp/jj /tmp/gcc-jj.c >>> /tmp/gcc-jj.c: In function ‘main’: >>> /tmp/gcc-jj.c:1: error: ‘__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4’ >>> undeclared (first use in this function) >>> /tmp/gcc-jj.c:1: error: (Each undeclared identifier is reported only >>> once >>> /tmp/gcc-jj.c:1: error: for each function it appears in.) $ echo $? >>> 1 >>> >>> >>> >>> >>> ### New test and results: -march=`mangle uname -m` works. >>> >>> $ cat /tmp/gcc_test.c >>> int main (){ volatile int atomic = 2; __sync_bool_compare_and_swap >>> (&atomic, 2, 3); return 0;} >>> >>> >>> $ gcc -o /tmp/jj /tmp/gcc_test.c >>> /tmp/ccEVX7IX.o: In function `main': >>> gcc_test.c:(.text+0x2f): undefined reference to >>> `__sync_bool_compare_and_swap_4' >>> collect2: ld returned 1 exit status >>> $ echo $? >>> 1 >>> >>> $ gcc -march=native -o /tmp/jj /tmp/gcc_test.c >>> /tmp/gcc_test.c:1: error: bad value (native) for -march= switch >>> /tmp/gcc_test.c:1: error: bad value (native) for -mtune= switch $ echo >>> $? >>> 1 >>> >>> $ uname -m >>> i686 >>> >>> $ gcc -march=i686 -o /tmp/jj /tmp/gcc_test.c >>> rmacleod@yow-lpggp1 .../wrs/b/snty $ echo $? >>> 0 >>> >>> So you see that -march=native isn't useful for gcc-4.1.2 but >>> -march=`munged uname -m` is. >>> >>> >>> I'm in the middle of writing a more complete test but my lack of >>> python development is showing: >>> >>> >>> -# Checks if necessary to add option march to host gcc >>> +# Checks if necessary to add march option to host gcc >>> def check_gcc_march(sanity_data): >>> - result = False >>> + result = "" >>> >>> # Check if -march not in BUILD_CFLAGS >>> if sanity_data.getVar("BUILD_CFLAGS",True).find("-march") < 0: >>> @@ -293,12 +293,22 @@ def check_gcc_march(sanity_data): >>> # Check if GCC could work without march >>> status,result = oe.utils.getstatusoutput("${BUILD_PREFIX}gcc >>> gcc_test.c -o gcc_test") >>> if status != 0: >>> - # Check if GCC could work with march >>> + # Check if GCC could work with march=native >>> status,result = >>> oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native gcc_test.c >>> -o >>> gcc_test") >>> - if status != 0: >>> - result = True >>> + if status == 0: >>> + result = "native" >>> else: >>> - result = False >>> + # Check if GCC could work with march=i686 >>> + status,result = >>> oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=x86-64 gcc_test.c >>> -o >>> gcc_test") >>> + if status == 0: >>> + result = "x86-64" >>> + else: >>> + # Check if GCC could work with march=i686 >>> + status,result = >>> oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=i686 gcc_test.c -o >>> gcc_test") >>> + if status == 0: >>> + result = "i686" >>> + else: >>> + result = "none" >>> >>> >>> ... >>> >>> - if check_gcc_march(d): >>> - status.addresult("Your gcc version is older than 4.5, please >>> add the following param to local.conf\n \ >>> - BUILD_CFLAGS_append = \" -march=native\"\n") >>> + gcc_march_option = check_gcc_march(d) >>> + if gcc_march_option != "": >>> + if gcc_march_option == "none": >>> + status.addresult("Your gcc version is too old.\n \ >>> + else: >>> + status.addresult("Your gcc version is older than 4.5, >>> please add the following param to local.conf\n \ >>> + BUILD_CFLAGS_append = \" -march=%s\"\n", >>> gcc_march_option) >>> >>> >>> >>> I'll clean this up to actually work and probably use ${BUILD_ARCH} >>> instead of i686/x86-64. >>> >>> More tomorrow. >>> >>> // Randy >>> >>>>> >>>>> >>>>> Best Regards, >>>>> >>>>> Zhenhua >>>>> >>>>> >>>>>> -----Original Message----- >>>>>> From: Richard Purdie [mailto:richard.purdie@linuxfoundation.org] >>>>>> Sent: Tuesday, June 18, 2013 9:04 PM >>>>>> To: Luo Zhenhua-B19537; Randy MacLeod >>>>>> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527 >>>>>> Subject: Re: [OE-core] [oe-core][patch v2] sanity.bbclass: correct >>> the >>>>>> gcc_arch check logic >>>>>> >>>>>> On Tue, 2013-06-18 at 21:08 +0800, Zhenhua Luo wrote: >>>>>>> The gcc arch check result is incorrect when gcc version is older >>>>>>> than >>>>>> 4.5. >>>>>>> Sanity checker requests user to add "-march=native" into >>>>>>> BUILD_CFLAGS even if the flag is not supported by host gcc. >>>>>>> >>>>>>> The status is 0 when -march=native is supported by host gcc, so >>>>>>> set result to True, otherwise set result to False. >>>>>>> >>>>>>> Signed-off-by: Zhenhua Luo <zhenhua.luo@freescale.com> >>>>>>> --- >>>>>>> meta/classes/sanity.bbclass | 2 +- >>>>>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>>>>> >>>>>>> diff --git a/meta/classes/sanity.bbclass >>>>>>> b/meta/classes/sanity.bbclass index 3b9934b..ee09679 100644 >>>>>>> --- a/meta/classes/sanity.bbclass >>>>>>> +++ b/meta/classes/sanity.bbclass >>>>>>> @@ -325,7 +325,7 @@ def check_gcc_march(sanity_data): >>>>>>> if status != 0: >>>>>>> # Check if GCC could work with march >>>>>>> status,result = >>>>>> oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native >>>>>> gcc_test.c -o >>>>>> gcc_test") >>>>>>> - if status != 0: >>>>>>> + if status == 0: >>>>>>> result = True >>>>>>> else: >>>>>>> result = False >>>>>> >>>>>> Can you and Randy please sort out what the correct value is here >>> please. >>>>>> This appears to directly revert >>>>>> >>> http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=ad276d7d89190c57a >>>>>> 152 >>>>>> 867d7278ee18f784ff2c >>>>>> >>>>>> Cheers, >>>>>> >>>>>> Richard >>>>>> >>>>>> >>>> >>> >>> >>> -- >>> # Randy MacLeod. SMTS, Linux, Wind River >>> Direct: 613.963.1350 > -- # Randy MacLeod. SMTS, Linux, Wind River Direct: 613.963.1350 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [patch v2] sanity.bbclass: correct the gcc_arch check logic 2013-07-23 17:24 ` Randy MacLeod @ 2013-07-24 2:15 ` Luo Zhenhua-B19537 0 siblings, 0 replies; 11+ messages in thread From: Luo Zhenhua-B19537 @ 2013-07-24 2:15 UTC (permalink / raw) To: Randy MacLeod Cc: Yu Zongchun-B40527, openembedded-core@lists.openembedded.org Randy, Thanks for the update. Best Regards, Zhenhua > -----Original Message----- > From: Randy MacLeod [mailto:randy.macleod@windriver.com] > Sent: Wednesday, July 24, 2013 1:25 AM > To: Luo Zhenhua-B19537 > Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527; Hatle, > Mark > Subject: Re: [OE-core] [oe-core][patch v2] sanity.bbclass: correct the > gcc_arch check logic > > On 13-07-05 04:23 AM, Luo Zhenhua-B19537 wrote: > > Hi Randy, > > > > Any update? Can this patch be applied? > > > > Now "sed -e 's/if status != 0/if status == 0/' sanity.bbclass" is > needed in my test script to ensure Yocto can work on our build server. > > > > > > Best Regards, > > > > Zhenhua > > Zhenhua, > > I apologize for the huge delay (vacation, day job, ...). > > Mark and I worked on this and he sent: > > commit c126729b29822d3602c9c4fd9016cc79b6057fc5 > Author: Mark Hatle <mark.hatle@windriver.com> > Date: Mon Jul 15 15:10:26 2013 -0500 > > sanity.bbclass: Update gcc sanity check > > which seems like the right solution. > > // Randy > > > > > >> -----Original Message----- > >> From: Luo Zhenhua-B19537 > >> Sent: Thursday, June 27, 2013 12:04 PM > >> To: 'Randy MacLeod' > >> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527; > >> Hatle, Mark > >> Subject: RE: [OE-core] [oe-core][patch v2] sanity.bbclass: correct > >> the gcc_arch check logic > >> > >> Randy, > >> > >> Thanks for the details. > >> > >> Following is my trial result, FYI. > >> > >> [b19537@busy ~]$ lsb_release -a > >> LSB Version: :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics- > >> 4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0- > >> amd64:printing-4.0-ia32:printing-4.0-noarch > >> Distributor ID: CentOS > >> Description: CentOS release 5.9 (Final) > >> Release: 5.9 > >> Codename: Final > >> [b19537@busy ~]$ > >> [b19537@busy ~]$ gcc -v > >> Using built-in specs. > >> Target: x86_64-redhat-linux > >> Configured with: ../configure --prefix=/usr --mandir=/usr/share/man > >> -- infodir=/usr/share/info --enable-shared --enable-threads=posix > >> --enable- checking=release --with-system-zlib --enable-__cxa_atexit > >> --disable- libunwind-exceptions --enable-libgcj-multifile --enable- > >> languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk > >> -- disable-dssi --disable-plugin > >> --with-java-home=/usr/lib/jvm/java-1.4.2- > >> gcj-1.4.2.0/jre --with-cpu=generic --host=x86_64-redhat-linux Thread > >> model: posix gcc version 4.1.2 20080704 (Red Hat 4.1.2-54) > >> [b19537@busy ~]$ [b19537@busy ~]$ cat gcc_test_new.c int main (){ > >> volatile int atomic = 2; __sync_bool_compare_and_swap (&atomic, 2, > >> 3); return 0;} [b19537@busy ~]$ [b19537@busy ~]$ gcc -o gcc_test_new > >> gcc_test_new.c [b19537@busy ~]$ echo $? > >> 0 > >> [b19537@busy ~]$ gcc -march=native -o gcc_test_new gcc_test_new.c > >> gcc_test_new.c:1: error: bad value (native) for -march= switch > >> gcc_test_new.c:1: error: bad value (native) for -mtune= switch > >> [b19537@busy ~]$ echo $? > >> 1 > >> [b19537@busy ~]$ > >> [b19537@busy ~]$ gcc -march=x86-64 -o gcc_test_new gcc_test_new.c > >> [b19537@busy ~]$ echo $? > >> 0 > >> [b19537@busy ~]$ > >> > >> > >> Best Regards, > >> > >> Zhenhua > >> > >> > >>> -----Original Message----- > >>> From: Randy MacLeod [mailto:randy.macleod@windriver.com] > >>> Sent: Thursday, June 27, 2013 6:17 AM > >>> To: Luo Zhenhua-B19537 > >>> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527; > >>> Hatle, Mark > >>> Subject: Re: [OE-core] [oe-core][patch v2] sanity.bbclass: correct > >>> the gcc_arch check logic > >>> > >>> On 13-06-19 11:28 PM, Luo Zhenhua-B19537 wrote: > >>>> Ping. > >>>> > >>>>> -----Original Message----- > >>>>> From: Luo Zhenhua-B19537 > >>>>> Sent: Tuesday, June 18, 2013 9:26 PM > >>>>> To: 'Richard Purdie'; Randy MacLeod > >>>>> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527 > >>>>> Subject: RE: [OE-core] [oe-core][patch v2] sanity.bbclass: correct > >>>>> the gcc_arch check logic > >>>>> > >>>>> Hi Randy, > >>>>> > >>>>> During the test on my machine with gcc-4.1.2, if -march=native is > >>>>> not supported by host gcc, a non-zero value(256) returns, > >>>>> otherwise 0 > >>> returns. > >>>>> > >>>>> [LOG] > >>>>> status is 256 > >>>>> result is gcc_test.c:1: error: bad value (native) for -march= > >>>>> switch > >>>>> gcc_test.c:1: error: bad value (native) for -mtune= switch > >>>>> > >>>>> Please confirm if this is same as your result. > >>> > >>> Yes it's essentially the same. > >>> > >>> Mark decided that the previous test program that checked for the > >>> existence of: > >>> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 > >>> would be better done as a check for: > >>> __sync_bool_compare_and_swap > >>> I believe he got the idea from looking at glib's configure script. > >>> > >>> I'm working on properly checking on which value to give to march: > >>> native,i686,x86-64. More tomorrow. > >>> > >>> // Randy > >>> > >>> Test results and prelim code if you are interested. > >>> > >>> > >>> Here's how that test behaves with the old toolchain: > >>> > >>> ### What's the host setup? > >>> > >>> $ gcc --version > >>> gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54) Copyright (C) 2006 Free > >>> Software Foundation, Inc. > >>> This is free software; see the source for copying conditions. There > >>> is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A > >>> PARTICULAR PURPOSE. > >>> > >>> $ head -1 /etc/issue > >>> CentOS release 5.9 (Final) > >>> > >>> > >>> ### Old test and results: All options fail, returning a status of 1. > >>> > >>> $ gcc -o /tmp/jj /tmp/gcc-jj.c > >>> /tmp/gcc-jj.c: In function ‘main’: > >>> /tmp/gcc-jj.c:1: error: ‘__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4’ > >>> undeclared (first use in this function) > >>> /tmp/gcc-jj.c:1: error: (Each undeclared identifier is reported only > >>> once > >>> /tmp/gcc-jj.c:1: error: for each function it appears in.) > >>> > >>> $ echo $? > >>> 1 > >>> > >>> > >>> $ gcc -march=native -o /tmp/jj /tmp/gcc-jj.c > >>> /tmp/gcc-jj.c:1: error: bad value (native) for -march= switch > >>> /tmp/gcc-jj.c:1: error: bad value (native) for -mtune= switch $ echo > $? > >>> 1 > >>> > >>> $ gcc -march=i686 -o /tmp/jj /tmp/gcc-jj.c > >>> /tmp/gcc-jj.c: In function ‘main’: > >>> /tmp/gcc-jj.c:1: error: ‘__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4’ > >>> undeclared (first use in this function) > >>> /tmp/gcc-jj.c:1: error: (Each undeclared identifier is reported only > >>> once > >>> /tmp/gcc-jj.c:1: error: for each function it appears in.) $ echo $? > >>> 1 > >>> > >>> > >>> > >>> > >>> ### New test and results: -march=`mangle uname -m` works. > >>> > >>> $ cat /tmp/gcc_test.c > >>> int main (){ volatile int atomic = 2; __sync_bool_compare_and_swap > >>> (&atomic, 2, 3); return 0;} > >>> > >>> > >>> $ gcc -o /tmp/jj /tmp/gcc_test.c > >>> /tmp/ccEVX7IX.o: In function `main': > >>> gcc_test.c:(.text+0x2f): undefined reference to > >>> `__sync_bool_compare_and_swap_4' > >>> collect2: ld returned 1 exit status > >>> $ echo $? > >>> 1 > >>> > >>> $ gcc -march=native -o /tmp/jj /tmp/gcc_test.c > >>> /tmp/gcc_test.c:1: error: bad value (native) for -march= switch > >>> /tmp/gcc_test.c:1: error: bad value (native) for -mtune= switch $ > >>> echo $? > >>> 1 > >>> > >>> $ uname -m > >>> i686 > >>> > >>> $ gcc -march=i686 -o /tmp/jj /tmp/gcc_test.c > >>> rmacleod@yow-lpggp1 .../wrs/b/snty $ echo $? > >>> 0 > >>> > >>> So you see that -march=native isn't useful for gcc-4.1.2 but > >>> -march=`munged uname -m` is. > >>> > >>> > >>> I'm in the middle of writing a more complete test but my lack of > >>> python development is showing: > >>> > >>> > >>> -# Checks if necessary to add option march to host gcc > >>> +# Checks if necessary to add march option to host gcc > >>> def check_gcc_march(sanity_data): > >>> - result = False > >>> + result = "" > >>> > >>> # Check if -march not in BUILD_CFLAGS > >>> if sanity_data.getVar("BUILD_CFLAGS",True).find("-march") < 0: > >>> @@ -293,12 +293,22 @@ def check_gcc_march(sanity_data): > >>> # Check if GCC could work without march > >>> status,result = > >>> oe.utils.getstatusoutput("${BUILD_PREFIX}gcc > >>> gcc_test.c -o gcc_test") > >>> if status != 0: > >>> - # Check if GCC could work with march > >>> + # Check if GCC could work with march=native > >>> status,result = > >>> oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native > >>> gcc_test.c -o > >>> gcc_test") > >>> - if status != 0: > >>> - result = True > >>> + if status == 0: > >>> + result = "native" > >>> else: > >>> - result = False > >>> + # Check if GCC could work with march=i686 > >>> + status,result = > >>> oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=x86-64 > >>> gcc_test.c -o > >>> gcc_test") > >>> + if status == 0: > >>> + result = "x86-64" > >>> + else: > >>> + # Check if GCC could work with march=i686 > >>> + status,result = > >>> oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=i686 gcc_test.c > >>> -o > >>> gcc_test") > >>> + if status == 0: > >>> + result = "i686" > >>> + else: > >>> + result = "none" > >>> > >>> > >>> ... > >>> > >>> - if check_gcc_march(d): > >>> - status.addresult("Your gcc version is older than 4.5, please > >>> add the following param to local.conf\n \ > >>> - BUILD_CFLAGS_append = \" -march=native\"\n") > >>> + gcc_march_option = check_gcc_march(d) > >>> + if gcc_march_option != "": > >>> + if gcc_march_option == "none": > >>> + status.addresult("Your gcc version is too old.\n \ > >>> + else: > >>> + status.addresult("Your gcc version is older than 4.5, > >>> please add the following param to local.conf\n \ > >>> + BUILD_CFLAGS_append = \" -march=%s\"\n", > >>> gcc_march_option) > >>> > >>> > >>> > >>> I'll clean this up to actually work and probably use ${BUILD_ARCH} > >>> instead of i686/x86-64. > >>> > >>> More tomorrow. > >>> > >>> // Randy > >>> > >>>>> > >>>>> > >>>>> Best Regards, > >>>>> > >>>>> Zhenhua > >>>>> > >>>>> > >>>>>> -----Original Message----- > >>>>>> From: Richard Purdie [mailto:richard.purdie@linuxfoundation.org] > >>>>>> Sent: Tuesday, June 18, 2013 9:04 PM > >>>>>> To: Luo Zhenhua-B19537; Randy MacLeod > >>>>>> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527 > >>>>>> Subject: Re: [OE-core] [oe-core][patch v2] sanity.bbclass: > >>>>>> correct > >>> the > >>>>>> gcc_arch check logic > >>>>>> > >>>>>> On Tue, 2013-06-18 at 21:08 +0800, Zhenhua Luo wrote: > >>>>>>> The gcc arch check result is incorrect when gcc version is older > >>>>>>> than > >>>>>> 4.5. > >>>>>>> Sanity checker requests user to add "-march=native" into > >>>>>>> BUILD_CFLAGS even if the flag is not supported by host gcc. > >>>>>>> > >>>>>>> The status is 0 when -march=native is supported by host gcc, so > >>>>>>> set result to True, otherwise set result to False. > >>>>>>> > >>>>>>> Signed-off-by: Zhenhua Luo <zhenhua.luo@freescale.com> > >>>>>>> --- > >>>>>>> meta/classes/sanity.bbclass | 2 +- > >>>>>>> 1 file changed, 1 insertion(+), 1 deletion(-) > >>>>>>> > >>>>>>> diff --git a/meta/classes/sanity.bbclass > >>>>>>> b/meta/classes/sanity.bbclass index 3b9934b..ee09679 100644 > >>>>>>> --- a/meta/classes/sanity.bbclass > >>>>>>> +++ b/meta/classes/sanity.bbclass > >>>>>>> @@ -325,7 +325,7 @@ def check_gcc_march(sanity_data): > >>>>>>> if status != 0: > >>>>>>> # Check if GCC could work with march > >>>>>>> status,result = > >>>>>> oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native > >>>>>> gcc_test.c -o > >>>>>> gcc_test") > >>>>>>> - if status != 0: > >>>>>>> + if status == 0: > >>>>>>> result = True > >>>>>>> else: > >>>>>>> result = False > >>>>>> > >>>>>> Can you and Randy please sort out what the correct value is here > >>> please. > >>>>>> This appears to directly revert > >>>>>> > >>> http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=ad276d7d89190c5 > >>> 7a > >>>>>> 152 > >>>>>> 867d7278ee18f784ff2c > >>>>>> > >>>>>> Cheers, > >>>>>> > >>>>>> Richard > >>>>>> > >>>>>> > >>>> > >>> > >>> > >>> -- > >>> # Randy MacLeod. SMTS, Linux, Wind River > >>> Direct: 613.963.1350 > > > > > -- > # Randy MacLeod. SMTS, Linux, Wind River > Direct: 613.963.1350 ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2013-07-24 2:16 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-06-18 13:08 [patch v2] sanity.bbclass: correct the gcc_arch check logic Zhenhua Luo 2013-06-18 13:04 ` Richard Purdie 2013-06-18 13:26 ` Luo Zhenhua-B19537 2013-06-20 3:28 ` Luo Zhenhua-B19537 2013-06-21 17:37 ` Randy MacLeod 2013-06-25 21:56 ` Randy MacLeod 2013-06-26 22:16 ` Randy MacLeod 2013-06-27 4:03 ` Luo Zhenhua-B19537 2013-07-05 8:23 ` Luo Zhenhua-B19537 2013-07-23 17:24 ` Randy MacLeod 2013-07-24 2:15 ` Luo Zhenhua-B19537
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox