aboutsummaryrefslogtreecommitdiffstats
path: root/meson/test cases/windows/5 resources/meson.build
blob: 27b2fcc7024d5d14759b295c4874b5ccae33f71a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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)