project('test-d-run-checks', 'd') dc = meson.get_compiler('d') run_sizeof = dc.run('int main() { return (void*).sizeof; }') if run_sizeof.returncode() == 8 run_versions = ['Is64bits'] elif run_sizeof.returncode() == 4 run_versions = ['Is32bits'] endif run_sizeof_exe = executable('run_sizeof', 'test_sizeof.d', d_module_versions: run_versions, ) test('test D compiler run', run_sizeof_exe) sizeof_sizeof = dc.sizeof('void*') if sizeof_sizeof == 8 run_versions = ['Is64bits'] elif sizeof_sizeof == 4 run_versions = ['Is32bits'] endif sizeof_sizeof_exe = executable('sizeof_sizeof', 'test_sizeof.d', d_module_versions: run_versions, ) test('test D compiler sizeof', sizeof_sizeof_exe) if not dc.has_header('std.stdio') error('Could not find std.stdio import') endif if dc.has_header('not_a_d_module') error('has_header inconsistent result') endif # same checks as C/C++ alignments (D has same alignment requirements as C) # These tests should return the same value on all # platforms. If (and when) they don't, fix 'em up. if dc.alignment('char') != 1 error('Alignment of char misdetected.') endif dbl_alignment = dc.alignment('double') if dbl_alignment == 8 or dbl_alignment == 4 message('Alignment of double ok.') else error('Alignment of double misdetected.') endif