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" |