Merge D feature flag fix branch
This commit is contained in:
commit
519cd40a06
|
@ -2199,6 +2199,11 @@ rule FORTRAN_DEP_HACK
|
|||
# near the end since these are supposed to override everything else.
|
||||
commands += self.escape_extra_args(compiler,
|
||||
target.get_extra_args(compiler.get_language()))
|
||||
|
||||
# D specific additional flags
|
||||
if compiler.language == 'd':
|
||||
commands += compiler.get_feature_args(target.d_features, self.build_to_src)
|
||||
|
||||
# Add source dir and build dir. Project-specific and target-specific
|
||||
# include paths must override per-target compile args, include paths
|
||||
# from external dependencies, internal dependencies, and from
|
||||
|
@ -2292,9 +2297,6 @@ rule FORTRAN_DEP_HACK
|
|||
depelem.write(outfile)
|
||||
commands += compiler.get_module_outdir_args(self.get_target_private_dir(target))
|
||||
|
||||
if compiler.language == 'd':
|
||||
commands += compiler.get_feature_args(target.d_features, self.build_to_src)
|
||||
|
||||
element = NinjaBuildElement(self.all_outputs, rel_obj, compiler_name, rel_src)
|
||||
for d in header_deps:
|
||||
if isinstance(d, File):
|
||||
|
|
|
@ -23,10 +23,14 @@ unittest
|
|||
{
|
||||
writeln ("TEST");
|
||||
import core.stdc.stdlib : exit;
|
||||
import second_unit;
|
||||
|
||||
assert (getFour () > 2);
|
||||
assert (getFour () == 4);
|
||||
|
||||
// this is a regression test for https://github.com/mesonbuild/meson/issues/3337
|
||||
secondModuleTestFunc ();
|
||||
|
||||
// we explicitly terminate here to give the unittest program a different exit
|
||||
// code than the main application has.
|
||||
// (this prevents the regular main() from being executed)
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
project('D Unittests', 'd')
|
||||
|
||||
e = executable('dapp', 'app.d', install : true)
|
||||
e = executable('dapp', ['app.d', 'second_unit.d'], install : true)
|
||||
test('dapp_run', e, should_fail: true)
|
||||
|
||||
e_test = executable('dapp_test', 'app.d',
|
||||
d_args: meson.get_compiler('d').unittest_args())
|
||||
e_test = executable('dapp_test', ['app.d', 'second_unit.d'],
|
||||
d_unittest: true)
|
||||
test('dapp_test', e_test)
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
|
||||
void secondModuleTestFunc ()
|
||||
{
|
||||
import std.stdio : writeln;
|
||||
|
||||
version (unittest)
|
||||
writeln ("Hello!");
|
||||
else
|
||||
assert (0);
|
||||
}
|
|
@ -3,6 +3,8 @@ import std.stdio;
|
|||
import std.array : split;
|
||||
import std.string : strip;
|
||||
|
||||
import extra;
|
||||
|
||||
auto getMenu ()
|
||||
{
|
||||
auto foods = import ("food.txt").strip.split ("\n");
|
||||
|
@ -31,7 +33,12 @@ void main (string[] args)
|
|||
version (With_People) {
|
||||
if (request == "people") {
|
||||
writeln ("People: ", getPeople.join (", "));
|
||||
exit (0);
|
||||
|
||||
// only exit successfully if the second module also had its module version set.
|
||||
// this checks for issue https://github.com/mesonbuild/meson/issues/3337
|
||||
if (secondModulePeopleVersionSet ())
|
||||
exit (0);
|
||||
exit (1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
|
||||
auto secondModulePeopleVersionSet ()
|
||||
{
|
||||
version (With_People) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -6,8 +6,10 @@ project('D Features', 'd')
|
|||
# STRINGS TO PATHS MANUALLY!
|
||||
data_dir = join_paths(meson.current_source_dir(), 'data')
|
||||
|
||||
test_src = ['app.d', 'extra.d']
|
||||
|
||||
e_plain_bcompat = executable('dapp_menu_bcompat',
|
||||
'app.d',
|
||||
test_src,
|
||||
d_import_dirs: [data_dir]
|
||||
)
|
||||
test('dapp_menu_t_fail_bcompat', e_plain_bcompat, should_fail: true)
|
||||
|
@ -18,7 +20,7 @@ test('dapp_menu_t_bcompat', e_plain_bcompat, args: ['menu'])
|
|||
data_dir = include_directories('data')
|
||||
|
||||
e_plain = executable('dapp_menu',
|
||||
'app.d',
|
||||
test_src,
|
||||
d_import_dirs: [data_dir]
|
||||
)
|
||||
test('dapp_menu_t_fail', e_plain, should_fail: true)
|
||||
|
@ -27,7 +29,7 @@ test('dapp_menu_t', e_plain, args: ['menu'])
|
|||
|
||||
# test feature versions and string imports
|
||||
e_versions = executable('dapp_versions',
|
||||
'app.d',
|
||||
test_src,
|
||||
d_import_dirs: [data_dir],
|
||||
d_module_versions: ['No_Menu', 'With_People']
|
||||
)
|
||||
|
@ -36,7 +38,7 @@ test('dapp_versions_t', e_versions, args: ['people'])
|
|||
|
||||
# test everything and unittests
|
||||
e_test = executable('dapp_test',
|
||||
'app.d',
|
||||
test_src,
|
||||
d_import_dirs: [data_dir],
|
||||
d_module_versions: ['No_Menu', 'With_People'],
|
||||
d_unittest: true
|
||||
|
|
Loading…
Reference in New Issue