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.
69 lines
1.8 KiB
69 lines
1.8 KiB
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)
|
|
|