aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2016-11-11 09:07:04 +0530
committerJussi Pakkanen <jpakkane@gmail.com>2016-11-12 11:37:14 -0500
commit45996b0f92cf9fa56c6bcbd47d1d5035a95d36df (patch)
tree4553d632e13d17efb21c718f3fafe8620d687b92
parent434bb03743c06f222c5d285e53744155f159e7bd (diff)
downloadmeson-45996b0f92cf9fa56c6bcbd47d1d5035a95d36df.zip
meson-45996b0f92cf9fa56c6bcbd47d1d5035a95d36df.tar.gz
meson-45996b0f92cf9fa56c6bcbd47d1d5035a95d36df.tar.bz2
vala: Fix compiled object extraction
Fixes #791
-rw-r--r--mesonbuild/backend/backends.py3
-rw-r--r--test cases/vala/6 static library/installed_files.txt1
-rw-r--r--test cases/vala/6 static library/meson.build6
3 files changed, 10 insertions, 0 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 2861bb6..d799616 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -271,6 +271,9 @@ class Backend():
def object_filename_from_source(self, target, source):
if isinstance(source, mesonlib.File):
source = source.fname
+ # foo.vala files compile down to foo.c and then foo.c.o, not foo.vala.o
+ if source.endswith('.vala'):
+ source = os.path.join(self.get_target_private_dir(target), source[:-5] + '.c')
return source.replace('/', '_').replace('\\', '_') + '.' + self.environment.get_object_suffix()
def determine_ext_objs(self, extobj, proj_dir_to_build_root):
diff --git a/test cases/vala/6 static library/installed_files.txt b/test cases/vala/6 static library/installed_files.txt
new file mode 100644
index 0000000..f464bc0
--- /dev/null
+++ b/test cases/vala/6 static library/installed_files.txt
@@ -0,0 +1 @@
+usr/lib/libextractedlib.a
diff --git a/test cases/vala/6 static library/meson.build b/test cases/vala/6 static library/meson.build
index ae8eeb9..c74bdf8 100644
--- a/test cases/vala/6 static library/meson.build
+++ b/test cases/vala/6 static library/meson.build
@@ -3,6 +3,12 @@ project('valastatic', 'vala', 'c')
valadeps = [dependency('glib-2.0'), dependency('gobject-2.0')]
l = static_library('valalib', 'mylib.vala', dependencies : valadeps)
+# NOTE: This static library is not usable from Vala because it does not carry
+# forward the .vapi and .h files generated by Valac to the next BuildTarget.
+# Will have to be fixed with https://github.com/mesonbuild/meson/issues/891
+m = static_library('extractedlib',
+ objects : l.extract_all_objects(),
+ install : true)
e = executable('valaprog', 'prog.vala',
link_with : l,