aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/backend/backends.py
diff options
context:
space:
mode:
authorJonas Lundholm Bertelsen <drixi.b@gmail.com>2021-01-20 21:51:56 +0100
committerJonas Lundholm Bertelsen <drixi.b@gmail.com>2021-01-21 14:46:20 +0100
commit2636eebd64221909157d93509ac72a5990f85060 (patch)
tree3203d4e74b27e0407587e65f748cd2f7486c2901 /mesonbuild/backend/backends.py
parentea34a92632a0622bd140ec8160dd721e1f6ba040 (diff)
downloadmeson-2636eebd64221909157d93509ac72a5990f85060.zip
meson-2636eebd64221909157d93509ac72a5990f85060.tar.gz
meson-2636eebd64221909157d93509ac72a5990f85060.tar.bz2
Unity build reverts to normal for fortran fix
The `determine_ext_objs` function did not take into account that fortran (and d) does not support unity builds. This caused failures in some cases.
Diffstat (limited to 'mesonbuild/backend/backends.py')
-rw-r--r--mesonbuild/backend/backends.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 31ea1dd..8143941 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -45,6 +45,11 @@ if T.TYPE_CHECKING:
InstallType = T.List[T.Tuple[str, str, T.Optional['FileMode']]]
InstallSubdirsType = T.List[T.Tuple[str, str, T.Optional['FileMode'], T.Tuple[T.Set[str], T.Set[str]]]]
+# Languages that can mix with C or C++ but don't support unity builds yet
+# because the syntax we use for unity builds is specific to C/++/ObjC/++.
+# Assembly files cannot be unitified and neither can LLVM IR files
+LANGS_CANT_UNITY = ('d', 'fortran')
+
class TestProtocol(enum.Enum):
EXITCODE = 0
@@ -637,6 +642,9 @@ class Backend:
unity_size = self.get_option_for_target(OptionKey('unity_size'), extobj.target)
for comp, srcs in compsrcs.items():
+ if comp.language in LANGS_CANT_UNITY:
+ sources += srcs
+ continue
for i in range(len(srcs) // unity_size + 1):
osrc = self.get_unity_source_file(extobj.target,
comp.get_default_suffix(), i)