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.
76 lines
1.8 KiB
76 lines
1.8 KiB
5 years ago
|
project('ninja special characters' ,'c')
|
||
|
|
||
|
python = import('python3').find_python()
|
||
|
|
||
|
# Without newlines, this should appear directly in build.ninja.
|
||
|
gen = custom_target('gen',
|
||
|
command : [
|
||
|
python,
|
||
|
files('check_quoting.py'),
|
||
|
'dollar=$',
|
||
|
'colon=:',
|
||
|
'space= ',
|
||
|
'''multi1= ::$$ ::$$''',
|
||
|
'@OUTPUT@'],
|
||
|
output : 'result',
|
||
|
install : true,
|
||
|
install_dir : get_option('datadir'))
|
||
|
|
||
|
# With newlines, this should go through the exe wrapper.
|
||
|
gen2 = custom_target('gen2',
|
||
|
command : [
|
||
|
python,
|
||
|
files('check_quoting.py'),
|
||
|
'''newline=
|
||
|
''',
|
||
|
'dollar=$',
|
||
|
'colon=:',
|
||
|
'space= ',
|
||
|
'''multi2= ::$$
|
||
|
|
||
|
|
||
|
|
||
|
::$$''',
|
||
|
'@OUTPUT@'],
|
||
|
output : 'result2',
|
||
|
install : true,
|
||
|
install_dir : get_option('datadir'))
|
||
6 years ago
|
|
||
|
# Test that we can pass these special characters in compiler arguments
|
||
|
#
|
||
|
# (this part of the test is crafted so we don't try to use these special
|
||
|
# characters in filenames or target names)
|
||
|
#
|
||
|
# TODO: similar tests needed for languages other than C
|
||
|
# TODO: add similar test for quote, doublequote, and hash, carefully
|
||
|
# Re hash, see
|
||
|
# https://docs.microsoft.com/en-us/cpp/build/reference/d-preprocessor-definitions
|
||
|
|
||
|
special = [
|
||
|
['amp', '&'],
|
||
|
['at', '@'],
|
||
|
['backslash', '\\'],
|
||
|
['dollar', '$'],
|
||
|
['gt', '>'],
|
||
|
['lt', '<'],
|
||
|
['slash', '/'],
|
||
|
]
|
||
|
|
||
|
cc = meson.get_compiler('c')
|
||
|
|
||
|
foreach s : special
|
||
|
args = '-DCHAR="@0@"'.format(s[1])
|
||
|
e = executable('arg-string-' + s[0], 'arg-string-test.c', c_args: args)
|
||
|
test('arg-string-' + s[0], e, args: s[1])
|
||
|
|
||
|
args = '-DCHAR=@0@'.format(s[1])
|
||
|
e = executable('arg-unquoted-' + s[0], 'arg-unquoted-test.c', c_args: args)
|
||
|
test('arg-unquoted-' + s[0], e, args: s[1])
|
||
|
endforeach
|
||
|
|
||
|
foreach s : special
|
||
|
args = '-DCHAR=\'@0@\''.format(s[1])
|
||
|
e = executable('arg-char-' + s[0], 'arg-char-test.c', c_args: args)
|
||
|
test('arg-char-' + s[0], e, args: s[1])
|
||
|
endforeach
|