diff options
Diffstat (limited to 'meta/classes/sanity.bbclass')
| -rw-r--r-- | meta/classes/sanity.bbclass | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass index b190eb2347..a505a5dc34 100644 --- a/meta/classes/sanity.bbclass +++ b/meta/classes/sanity.bbclass | |||
| @@ -280,31 +280,42 @@ def check_sanity_validmachine(sanity_data): | |||
| 280 | 280 | ||
| 281 | # Checks if necessary to add option march to host gcc | 281 | # Checks if necessary to add option march to host gcc |
| 282 | def check_gcc_march(sanity_data): | 282 | def check_gcc_march(sanity_data): |
| 283 | result = False | 283 | result = True |
| 284 | message = "" | ||
| 284 | 285 | ||
| 285 | # Check if -march not in BUILD_CFLAGS | 286 | # Check if -march not in BUILD_CFLAGS |
| 286 | if sanity_data.getVar("BUILD_CFLAGS",True).find("-march") < 0: | 287 | if sanity_data.getVar("BUILD_CFLAGS",True).find("-march") < 0: |
| 288 | result = False | ||
| 287 | 289 | ||
| 288 | # Construct a test file | 290 | # Construct a test file |
| 289 | f = open("gcc_test.c", "w") | 291 | f = open("gcc_test.c", "w") |
| 290 | f.write("int main (){ __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4; return 0;}\n") | 292 | f.write("int main (){ volatile int atomic = 2; __sync_bool_compare_and_swap (&atomic, 2, 3); return 0; }\n") |
| 291 | f.close() | 293 | f.close() |
| 292 | 294 | ||
| 293 | # Check if GCC could work without march | 295 | # Check if GCC could work without march |
| 294 | status,result = oe.utils.getstatusoutput("${BUILD_PREFIX}gcc gcc_test.c -o gcc_test") | 296 | if not result: |
| 295 | if status != 0: | 297 | status,res = oe.utils.getstatusoutput("${BUILD_PREFIX}gcc gcc_test.c -o gcc_test") |
| 296 | # Check if GCC could work with march | 298 | if status == 0: |
| 297 | status,result = oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native gcc_test.c -o gcc_test") | 299 | result = True; |
| 298 | if status != 0: | 300 | |
| 299 | result = True | 301 | if not result: |
| 300 | else: | 302 | status,res = oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native gcc_test.c -o gcc_test") |
| 301 | result = False | 303 | if status == 0: |
| 304 | message = "BUILD_CFLAGS_append = \" -march=native\"" | ||
| 305 | result = True; | ||
| 306 | |||
| 307 | if not result: | ||
| 308 | build_arch = sanity_data.getVar('BUILD_ARCH', True) | ||
| 309 | status,res = oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=%s gcc_test.c -o gcc_test" % build_arch) | ||
| 310 | if status == 0: | ||
| 311 | message = "BUILD_CFLAGS_append = \" -march=%s\"" % build_arch | ||
| 312 | result = True; | ||
| 302 | 313 | ||
| 303 | os.remove("gcc_test.c") | 314 | os.remove("gcc_test.c") |
| 304 | if os.path.exists("gcc_test"): | 315 | if os.path.exists("gcc_test"): |
| 305 | os.remove("gcc_test") | 316 | os.remove("gcc_test") |
| 306 | 317 | ||
| 307 | return result | 318 | return (result, message) |
| 308 | 319 | ||
| 309 | # Unpatched versions of make 3.82 are known to be broken. See GNU Savannah Bug 30612. | 320 | # Unpatched versions of make 3.82 are known to be broken. See GNU Savannah Bug 30612. |
| 310 | # Use a modified reproducer from http://savannah.gnu.org/bugs/?30612 to validate. | 321 | # Use a modified reproducer from http://savannah.gnu.org/bugs/?30612 to validate. |
| @@ -506,9 +517,14 @@ def check_sanity_version_change(status, d): | |||
| 506 | if not check_app_exists("qemu-arm", d): | 517 | if not check_app_exists("qemu-arm", d): |
| 507 | status.addresult("qemu-native was in ASSUME_PROVIDED but the QEMU binaries (qemu-arm) can't be found in PATH") | 518 | status.addresult("qemu-native was in ASSUME_PROVIDED but the QEMU binaries (qemu-arm) can't be found in PATH") |
| 508 | 519 | ||
| 509 | if check_gcc_march(d): | 520 | (result, message) = check_gcc_march(d) |
| 521 | if result and message: | ||
| 510 | status.addresult("Your gcc version is older than 4.5, please add the following param to local.conf\n \ | 522 | status.addresult("Your gcc version is older than 4.5, please add the following param to local.conf\n \ |
| 511 | BUILD_CFLAGS_append = \" -march=native\"\n") | 523 | %s\n" % message) |
| 524 | if not result: | ||
| 525 | status.addresult("Your gcc version is older then 4.5 or is not working properly. Please verify you can build") | ||
| 526 | status.addresult(" and link something that uses atomic operations, such as: \n") | ||
| 527 | status.addresult(" __sync_bool_compare_and_swap (&atomic, 2, 3);\n") | ||
| 512 | 528 | ||
| 513 | # Check that TMPDIR isn't on a filesystem with limited filename length (eg. eCryptFS) | 529 | # Check that TMPDIR isn't on a filesystem with limited filename length (eg. eCryptFS) |
| 514 | tmpdir = d.getVar('TMPDIR', True) | 530 | tmpdir = d.getVar('TMPDIR', True) |
