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.
75 lines
1.8 KiB
75 lines
1.8 KiB
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')) |
|
|
|
# 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
|
|
|