| project('winmain', 'c') |
| |
| # MinGW windres has a bug due to which it doesn't parse args with space properly: |
| # https://github.com/mesonbuild/meson/pull/1346 |
| # https://sourceware.org/bugzilla/show_bug.cgi?id=4933 |
| if ['gcc', 'clang'].contains(meson.get_compiler('c').get_id()) and host_machine.system() == 'windows' |
| # Construct build_to_src and skip this test if it has spaces |
| # because then the -I flag to windres will also have spaces |
| # and we know the test will fail |
| src_parts = meson.source_root().split('/') |
| build_parts = meson.build_root().split('/') |
| |
| # Get the common path (which might just be '/' or 'C:/') |
| common = [] |
| done = false |
| count = 0 |
| if src_parts.length() > build_parts.length() |
| parts = build_parts |
| other = src_parts |
| else |
| parts = src_parts |
| other = build_parts |
| endif |
| foreach part : parts |
| if not done and part == other.get(count) |
| common += [part] |
| else |
| done = true |
| endif |
| count += 1 |
| endforeach |
| |
| # Create path components to go down from the build root to the common path |
| count = 0 |
| rel = build_parts |
| foreach build : build_parts |
| if count < build_parts.length() - common.length() |
| rel += ['..'] |
| endif |
| count += 1 |
| endforeach |
| |
| # Create path components to go up from the common path to the build root |
| count = 0 |
| foreach src : src_parts |
| if count >= common.length() |
| rel += [src] |
| endif |
| count += 1 |
| endforeach |
| |
| build_to_src = '/'.join(rel) |
| |
| if build_to_src.contains(' ') |
| message('build_to_src is: ' + build_to_src) |
| error('MESON_SKIP_TEST build_to_src has spaces') |
| endif |
| # Welcome to the end of this conditional. |
| # We hope you never have to implement something like this. |
| endif |
| |
| subdir('inc') |
| subdir('res') |
| |
| exe = executable('prog', 'prog.c', |
| res, |
| gui_app : true) |
| |
| test('winmain', exe) |