diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2021-01-23 17:33:38 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-23 17:33:38 +0000 |
commit | 99b9433beacceb91aced217cd4f14115281bf100 (patch) | |
tree | 688ac11dd785b1630cce09e590fd5fffe8e04d22 /mesonbuild/backend/backends.py | |
parent | a24546d7da33baa4fd18bbec2f7b727f8884e234 (diff) | |
parent | d3ae808742d56f298ef480ae54cc0c64af35a34e (diff) | |
download | meson-99b9433beacceb91aced217cd4f14115281bf100.zip meson-99b9433beacceb91aced217cd4f14115281bf100.tar.gz meson-99b9433beacceb91aced217cd4f14115281bf100.tar.bz2 |
Merge pull request #8226 from jonaslb/fortranstatic
Fixes for fortran: Include dirs for link_whole_targets and capital file suffix
Diffstat (limited to 'mesonbuild/backend/backends.py')
-rw-r--r-- | mesonbuild/backend/backends.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index ced1d7d..8143941 100644 --- a/mesonbuild/backend/backends.py +++ b/mesonbuild/backend/backends.py @@ -14,6 +14,7 @@ from collections import OrderedDict from functools import lru_cache +from itertools import chain from pathlib import Path import enum import json @@ -44,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 @@ -636,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) @@ -767,7 +776,7 @@ class Backend: # pkg-config puts the thread flags itself via `Cflags:` # Fortran requires extra include directives. if compiler.language == 'fortran': - for lt in target.link_targets: + for lt in chain(target.link_targets, target.link_whole_targets): priv_dir = self.get_target_private_dir(lt) commands += compiler.get_include_args(priv_dir, False) return commands |