diff options
| author | Dylan Baker <dylan@pnwbakers.com> | 2021-05-04 11:24:11 -0700 |
|---|---|---|
| committer | Jussi Pakkanen <jpakkane@gmail.com> | 2021-05-19 23:28:17 +0300 |
| commit | 7bd7d1cd732c33c3cb301ba62bf46f00ac8d8a1b (patch) | |
| tree | cfe7d81fcf31fb44755ec1ff22f7478508cb27e8 /mesonbuild | |
| parent | f2ae92368a384cb3cc310f40c2cb43dec5979912 (diff) | |
| download | meson-7bd7d1cd732c33c3cb301ba62bf46f00ac8d8a1b.tar.gz | |
interpreter: Pass unholdered sources into BuildTarget
The build level shouldn't be deal with interpreter objects, by the time
they leave the intpreter they should be in the Meson middle layer
representaiton
Diffstat (limited to 'mesonbuild')
| -rw-r--r-- | mesonbuild/build.py | 6 | ||||
| -rw-r--r-- | mesonbuild/interpreter/interpreter.py | 22 |
2 files changed, 16 insertions, 12 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 06e40f571..a4a4f1916 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -40,7 +40,7 @@ from .linkers import StaticLinker from .interpreterbase import FeatureNew if T.TYPE_CHECKING: - from .interpreter import Test + from .interpreter.interpreter import Test, SourceOutputs from .mesonlib import FileMode, FileOrString from .mesonlib.backend import Backend @@ -589,12 +589,11 @@ class BuildTarget(Target): known_kwargs = known_build_target_kwargs def __init__(self, name: str, subdir: str, subproject: str, for_machine: MachineChoice, - sources: T.List[File], objects, environment: environment.Environment, kwargs): + sources: T.List['SourceOutputs'], objects, environment: environment.Environment, kwargs): super().__init__(name, subdir, subproject, True, for_machine) unity_opt = environment.coredata.get_option(OptionKey('unity')) self.is_unity = unity_opt == 'on' or (unity_opt == 'subprojects' and subproject != '') self.environment = environment - self.sources: T.List[File] = [] self.compilers = OrderedDict() # type: OrderedDict[str, Compiler] self.objects = [] self.external_deps = [] @@ -613,6 +612,7 @@ class BuildTarget(Target): self.need_install = False self.pch = {} self.extra_args: T.Dict[str, T.List['FileOrString']] = {} + self.sources: T.List[File] = [] self.generated: T.Sequence[T.Union[GeneratedList, CustomTarget, CustomTargetIndex]] = [] self.d_features = {} self.pic = False diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index 891f67eff..484db7866 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -68,8 +68,9 @@ if T.TYPE_CHECKING: SourceInputs = T.Union[mesonlib.File, GeneratedListHolder, TargetHolder, CustomTargetIndexHolder, GeneratedObjectsHolder, str] # Input source types passed to the build.Target5 classes - SourceOutputs = T.Union[mesonlib.File, GeneratedListHolder, TargetHolder, - CustomTargetIndexHolder, GeneratedObjectsHolder] + SourceOutputs = T.Union[mesonlib.File, build.GeneratedList, + build.BuildTarget, build.CustomTargetIndex, + build.GeneratedList] def stringifyUserArguments(args, quote=False): if isinstance(args, list): @@ -2705,13 +2706,16 @@ Try setting b_lundef to false instead.'''.format(self.coredata.options[OptionKey for s in sources: if isinstance(s, str): self.validate_within_subproject(self.subdir, s) - s = mesonlib.File.from_source_file(self.environment.source_dir, self.subdir, s) - elif not isinstance(s, (mesonlib.File, GeneratedListHolder, - TargetHolder, CustomTargetIndexHolder, - GeneratedObjectsHolder)): - raise InterpreterException('Source item is {!r} instead of ' - 'string or File-type object'.format(s)) - results.append(s) + results.append(mesonlib.File.from_source_file(self.environment.source_dir, self.subdir, s)) + elif isinstance(s, mesonlib.File): + results.append(s) + elif isinstance(s, (GeneratedListHolder, TargetHolder, + CustomTargetIndexHolder, + GeneratedObjectsHolder)): + results.append(unholder(s)) + else: + raise InterpreterException(f'Source item is {s!r} instead of ' + 'string or File-type object') return results def add_target(self, name, tobj): |
