meson.build 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. project('tryrun', 'c')
  2. # Complex to exercise all code paths.
  3. if meson.is_cross_build()
  4. if meson.has_exe_wrapper()
  5. cc = meson.get_compiler('c', native : false)
  6. else
  7. cc = meson.get_compiler('c', native : true)
  8. endif
  9. else
  10. cc = meson.get_compiler('c')
  11. endif
  12. ok_code = '''#include<stdio.h>
  13. int main(int argc, char **argv) {
  14. printf("%s\n", "stdout");
  15. fprintf(stderr, "%s\n", "stderr");
  16. return 0;
  17. }
  18. '''
  19. error_code = '''int main(int argc, char **argv) {
  20. return 1;
  21. }
  22. '''
  23. no_compile_code = '''int main(int argc, char **argv) {
  24. '''
  25. ok = cc.run(ok_code, name : 'should succeed')
  26. err = cc.run(error_code, name : 'should fail')
  27. noc = cc.run(no_compile_code, name : 'does not compile')
  28. if noc.compiled()
  29. error('Compilation fail test failed.')
  30. else
  31. message('Fail detected properly.')
  32. endif
  33. if ok.compiled()
  34. message('Compilation worked.')
  35. else
  36. error('Compilation did not work.')
  37. endif
  38. if ok.returncode() == 0
  39. message('Return code ok.')
  40. else
  41. error('Return code fail')
  42. endif
  43. if err.returncode() == 1
  44. message('Bad return code ok.')
  45. else
  46. error('Bad return code fail.')
  47. endif
  48. if ok.stdout().strip() == 'stdout'
  49. message('Stdout ok.')
  50. else
  51. message('Bad stdout.')
  52. endif
  53. if ok.stderr().strip() == 'stderr'
  54. message('Stderr ok.')
  55. else
  56. message('Bad stderr.')
  57. endif