aboutsummaryrefslogtreecommitdiff
path: root/backends.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-12-27 00:46:00 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2013-12-27 00:46:00 +0200
commita04a10d29cc88e2b19454d8cbe92409543b44c9b (patch)
tree417ce1030233f8c043a49eb3155155ec44fbcf5c /backends.py
parent3500ddb8bb311bd99d2a76c6cd7bfe0788d5ad23 (diff)
downloadmeson-a04a10d29cc88e2b19454d8cbe92409543b44c9b.zip
meson-a04a10d29cc88e2b19454d8cbe92409543b44c9b.tar.gz
meson-a04a10d29cc88e2b19454d8cbe92409543b44c9b.tar.bz2
Handle generated sources in Unity builds.
Diffstat (limited to 'backends.py')
-rw-r--r--backends.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/backends.py b/backends.py
index aab11d9..03bdb86 100644
--- a/backends.py
+++ b/backends.py
@@ -189,11 +189,18 @@ class Backend():
self.generate_pch(target, outfile)
header_deps = gen_other_deps
unity_src = []
+ unity_deps = [] # Generated sources that must be built before compiling a Unity target.
for genlist in target.get_generated_sources():
for src in genlist.get_outfilelist():
if not self.environment.is_header(src):
if is_unity:
- unity_src.append(src)
+ if '/' in src:
+ rel_src = src
+ else:
+ rel_src = os.path.join(self.get_target_private_dir(target), src)
+ unity_deps.append(rel_src)
+ abs_src = os.path.join(self.environment.get_build_dir(), rel_src)
+ unity_src.append(abs_src)
else:
obj_list.append(self.generate_single_compile(target, outfile, src, True))
else:
@@ -224,7 +231,7 @@ class Backend():
raise MesonException('Unknown data type in object list.')
if is_unity:
for src in self.generate_unity_files(target, unity_src):
- obj_list.append(self.generate_single_compile(target, outfile, src, True))
+ obj_list.append(self.generate_single_compile(target, outfile, src, True, unity_deps))
linker = self.determine_linker(target, src_list)
elem = self.generate_link(target, outfile, outname, obj_list, linker)
self.generate_shlib_aliases(target, self.get_target_dir(target), outfile, elem)