diff options
| -rw-r--r-- | meta/classes/sanity.bbclass | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass index 06e95e3562..8cdb06e185 100644 --- a/meta/classes/sanity.bbclass +++ b/meta/classes/sanity.bbclass | |||
| @@ -309,6 +309,31 @@ def check_sanity_validmachine(sanity_data): | |||
| 309 | 309 | ||
| 310 | return messages | 310 | return messages |
| 311 | 311 | ||
| 312 | # Checks if necessary to add option march to host gcc | ||
| 313 | def check_gcc_march(sanity_data): | ||
| 314 | result = False | ||
| 315 | |||
| 316 | # Check if -march not in BUILD_CFLAGS | ||
| 317 | if sanity_data.getVar("BUILD_CFLAGS",True).find("-march") < 0: | ||
| 318 | |||
| 319 | # Construct a test file | ||
| 320 | f = file("gcc_test.c", "w") | ||
| 321 | f.write("int main (){ __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4; return 0;}\n") | ||
| 322 | f.close() | ||
| 323 | import commands | ||
| 324 | |||
| 325 | # Check if GCC could work without march | ||
| 326 | status,result = commands.getstatusoutput("${BUILD_PREFIX}gcc gcc_test.c -o gcc_test") | ||
| 327 | if status != 0: | ||
| 328 | # Check if GCC could work with march | ||
| 329 | status,result = commands.getstatusoutput("${BUILD_PREFIX}gcc -march=native gcc_test.c -o gcc_test") | ||
| 330 | if status == 0: | ||
| 331 | result = True | ||
| 332 | |||
| 333 | os.remove("gcc_test.c") | ||
| 334 | os.remove("gcc_test") | ||
| 335 | |||
| 336 | return result | ||
| 312 | 337 | ||
| 313 | def check_sanity(sanity_data): | 338 | def check_sanity(sanity_data): |
| 314 | import subprocess | 339 | import subprocess |
| @@ -416,6 +441,10 @@ def check_sanity(sanity_data): | |||
| 416 | if not check_app_exists("qemu-arm", sanity_data): | 441 | if not check_app_exists("qemu-arm", sanity_data): |
| 417 | messages = messages + "qemu-native was in ASSUME_PROVIDED but the QEMU binaries (qemu-arm) can't be found in PATH" | 442 | messages = messages + "qemu-native was in ASSUME_PROVIDED but the QEMU binaries (qemu-arm) can't be found in PATH" |
| 418 | 443 | ||
| 444 | if check_gcc_march(sanity_data): | ||
| 445 | messages = messages + "Your gcc version is older than 4.5, please add the following param to local.conf\n \ | ||
| 446 | BUILD_CFLAGS_append = \" -march=native\"\n" | ||
| 447 | |||
| 419 | paths = sanity_data.getVar('PATH', True).split(":") | 448 | paths = sanity_data.getVar('PATH', True).split(":") |
| 420 | if "." in paths or "" in paths: | 449 | if "." in paths or "" in paths: |
| 421 | messages = messages + "PATH contains '.' or '' (empty element), which will break the build, please remove this.\n" | 450 | messages = messages + "PATH contains '.' or '' (empty element), which will break the build, please remove this.\n" |
