The Meson Build System
http://mesonbuild.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.8 KiB
78 lines
1.8 KiB
project('tryrun', 'c', 'cpp') |
|
|
|
# Complex to exercise all code paths. |
|
if meson.is_cross_build() |
|
if meson.can_run_host_binaries() |
|
compilers = [meson.get_compiler('c', native : false), meson.get_compiler('cpp', native : false)] |
|
else |
|
compilers = [meson.get_compiler('c', native : true), meson.get_compiler('cpp', native : true)] |
|
endif |
|
else |
|
compilers = [meson.get_compiler('c'), meson.get_compiler('cpp')] |
|
endif |
|
|
|
ok_code = '''#include<stdio.h> |
|
int main(void) { |
|
printf("%s\n", "stdout"); |
|
fprintf(stderr, "%s\n", "stderr"); |
|
return 0; |
|
} |
|
''' |
|
|
|
error_code = '''int main(void) { |
|
return 1; |
|
} |
|
''' |
|
|
|
no_compile_code = '''int main(void) { |
|
''' |
|
|
|
INPUTS = [ |
|
['String', ok_code, error_code, no_compile_code], |
|
['File', files('ok.c'), files('error.c'), files('no_compile.c')], |
|
] |
|
|
|
foreach cc : compilers |
|
foreach input : INPUTS |
|
type = input[0] |
|
ok = cc.run(input[1], name : type + ' should succeed') |
|
err = cc.run(input[2], name : type + ' should fail') |
|
noc = cc.run(input[3], name : type + ' does not compile') |
|
|
|
if noc.compiled() |
|
error(type + ' compilation fail test failed.') |
|
else |
|
message(type + ' fail detected properly.') |
|
endif |
|
|
|
if ok.compiled() |
|
message(type + ' compilation worked.') |
|
else |
|
error(type + ' compilation did not work.') |
|
endif |
|
|
|
if ok.returncode() == 0 |
|
message(type + ' return code ok.') |
|
else |
|
error(type + ' return code fail') |
|
endif |
|
|
|
if err.returncode() == 1 |
|
message(type + ' bad return code ok.') |
|
else |
|
error(type + ' bad return code fail.') |
|
endif |
|
|
|
if ok.stdout().strip() == 'stdout' |
|
message(type + ' stdout ok.') |
|
else |
|
message(type + ' bad stdout.') |
|
endif |
|
|
|
if ok.stderr().strip() == 'stderr' |
|
message(type + ' stderr ok.') |
|
else |
|
message(type + ' bad stderr.') |
|
endif |
|
endforeach |
|
endforeach
|
|
|