diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2016-11-26 12:59:42 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-26 12:59:42 -0500 |
commit | a32716f9fead988df150037b262ccceb24d8dc9e (patch) | |
tree | a9f3e6e674bb05cac9ae5579a1270cec9373900a /mesonbuild/build.py | |
parent | 8652b94c4f87e8582e2e757178dda452a2c0e3be (diff) | |
parent | 864b9b1957bef39b9437b1a73c014e43607b7759 (diff) | |
download | meson-a32716f9fead988df150037b262ccceb24d8dc9e.zip meson-a32716f9fead988df150037b262ccceb24d8dc9e.tar.gz meson-a32716f9fead988df150037b262ccceb24d8dc9e.tar.bz2 |
Merge pull request #1098 from centricular/unity-extract-objects-regression
Only check for unity compat when doing unity builds
Diffstat (limited to 'mesonbuild/build.py')
-rw-r--r-- | mesonbuild/build.py | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 98f05c2..39e215f 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -198,10 +198,11 @@ class ExtractedObjects(): ''' Holds a list of sources for which the objects must be extracted ''' - def __init__(self, target, srclist): + def __init__(self, target, srclist, is_unity): self.target = target self.srclist = srclist - self.check_unity_compatible() + if is_unity: + self.check_unity_compatible() def check_unity_compatible(self): # Figure out if the extracted object list is compatible with a Unity @@ -211,11 +212,9 @@ class ExtractedObjects(): # from each unified source file. # If the list of sources for which we want objects is the same as the # list of sources that go into each unified build, we're good. - self.unity_compatible = False srclist_set = set(self.srclist) # Objects for all the sources are required, so we're compatible if srclist_set == set(self.target.sources): - self.unity_compatible = True return # Check if the srclist is a subset (of the target's sources) that is # going to form a unified source file and a single object @@ -223,7 +222,6 @@ class ExtractedObjects(): self.target.sources) for srcs in compsrcs.values(): if srclist_set == set(srcs): - self.unity_compatible = True return msg = 'Single object files can not be extracted in Unity builds. ' \ 'You can only extract all the object files at once.' @@ -273,6 +271,7 @@ class BuildTarget(): self.subdir = subdir self.subproject = subproject # Can not be calculated from subdir as subproject dirname can be changed per project. self.is_cross = is_cross + self.is_unity = environment.coredata.get_builtin_option('unity') self.environment = environment self.sources = [] self.compilers = {} @@ -458,10 +457,10 @@ class BuildTarget(): if src not in self.sources: raise MesonException('Tried to extract unknown source %s.' % src) obj_src.append(src) - return ExtractedObjects(self, obj_src) + return ExtractedObjects(self, obj_src, self.is_unity) def extract_all_objects(self): - return ExtractedObjects(self, self.sources) + return ExtractedObjects(self, self.sources, self.is_unity) def get_all_link_deps(self): return self.get_transitive_link_deps() |