Permalink
Browse files

ninja: Deduplicate dependent vapis

The Vala compiler does not like being fed the same .vapi multiple times.
  • Loading branch information...
oleavr authored and jpakkane committed May 13, 2017
1 parent 1472f41 commit 9b5df6e442672f8e7d6ead666a766234ccf41277
@@ -20,7 +20,7 @@
from .. import dependencies
from .. import compilers
from ..compilers import CompilerArgs
from ..mesonlib import File, MesonException
from ..mesonlib import File, MesonException, OrderedSet
from ..mesonlib import get_meson_script, get_compiler_for_source, Popen_safe
from .backends import CleanTrees, InstallData
from ..build import InvalidArguments
@@ -976,17 +976,17 @@ def determine_dep_vapis(self, target):
the same name as the BuildTarget and return the path to it relative to
the build directory.
"""
result = []
result = OrderedSet()
for dep in target.link_targets:
for i in dep.sources:
if hasattr(i, 'fname'):
i = i.fname
if i.endswith('vala'):
vapiname = dep.name + '.vapi'
fullname = os.path.join(self.get_target_dir(dep), vapiname)
result.append(fullname)
result.add(fullname)
break
return result
return list(result)
def split_vala_sources(self, t):
"""
@@ -0,0 +1,11 @@
namespace App {
public static int main(string[] args) {
var person = new Person();
print("Favorite beer of \"%s\" is %s\n", person.name, person.favorite_beer.flavor);
var beer = new Beer("tasty");
print("This beer is %s\n", beer.flavor);
return 0;
}
}
@@ -0,0 +1,10 @@
public class Beer : Object {
public string flavor {
get;
construct;
}
public Beer(string flavor) {
Object(flavor: flavor);
}
}
@@ -0,0 +1,15 @@
project('vapi consumed twice', 'vala', 'c')
base_deps = [dependency('glib-2.0'), dependency('gobject-2.0')]
beer = library('beer', 'beer.vala', dependencies : base_deps)
beer_dep = declare_dependency(link_with : beer)
person = library('person', 'person.vala', link_with : beer,
dependencies : base_deps)
person_dep = declare_dependency(link_with : person, dependencies : [beer_dep])
app = executable('app', 'app.vala',
dependencies : base_deps + [person_dep, beer_dep])
test('valavapiconsumedtwicetest', app)
@@ -0,0 +1,16 @@
public class Person : Object {
public string name {
get {
return "Joe Badger";
}
}
public Beer favorite_beer {
get;
construct;
}
public Person() {
Object(favorite_beer: new Beer("smooth"));
}
}

0 comments on commit 9b5df6e

Please sign in to comment.