|
31 | 31 | from ..interpreterbase import Disabler, disablerIfNotFound |
32 | 32 | from ..interpreterbase import FeatureNew, FeatureDeprecated, FeatureBroken, FeatureNewKwargs |
33 | 33 | from ..interpreterbase import ObjectHolder, ContextManagerObject |
34 | | -from ..interpreterbase import stringifyUserArguments, resolve_second_level_holders |
| 34 | +from ..interpreterbase import stringifyUserArguments |
35 | 35 | from ..modules import ExtensionModule, ModuleObject, MutableModuleObject, NewExtensionModule, NotFoundExtensionModule |
36 | 36 | from ..optinterpreter import optname_regex |
37 | 37 |
|
@@ -681,7 +681,6 @@ def func_files(self, node: mparser.FunctionNode, args: T.Tuple[T.List[str]], kwa |
681 | 681 | KwargInfo('version', (str, NoneType)), |
682 | 682 | KwargInfo('objects', ContainerTypeInfo(list, build.ExtractedObjects), listify=True, default=[], since='1.1.0'), |
683 | 683 | ) |
684 | | - @noSecondLevelHolderResolving |
685 | 684 | def func_declare_dependency(self, node: mparser.BaseNode, args: T.List[TYPE_var], |
686 | 685 | kwargs: kwtypes.FuncDeclareDependency) -> dependencies.Dependency: |
687 | 686 | deps = kwargs['dependencies'] |
@@ -1906,15 +1905,12 @@ def func_jar(self, node: mparser.BaseNode, |
1906 | 1905 | @permittedKwargs(known_build_target_kwargs) |
1907 | 1906 | @typed_pos_args('build_target', str, varargs=SOURCES_VARARGS) |
1908 | 1907 | @typed_kwargs('build_target', *BUILD_TARGET_KWS, allow_unknown=True) |
1909 | | - @noSecondLevelHolderResolving |
1910 | 1908 | def func_build_target(self, node: mparser.BaseNode, |
1911 | 1909 | args: T.Tuple[str, SourcesVarargsType], |
1912 | 1910 | kwargs: kwtypes.BuildTarget |
1913 | 1911 | ) -> T.Union[build.Executable, build.StaticLibrary, build.SharedLibrary, |
1914 | 1912 | build.SharedModule, build.BothLibraries, build.Jar]: |
1915 | 1913 | target_type = kwargs['target_type'] |
1916 | | - if target_type not in {'both_libraries', 'library'}: |
1917 | | - args, kwargs = resolve_second_level_holders(args, kwargs) |
1918 | 1914 |
|
1919 | 1915 | if target_type == 'executable': |
1920 | 1916 | return self.build_target(node, args, kwargs, build.Executable) |
@@ -2176,13 +2172,19 @@ def func_run_target(self, node: mparser.FunctionNode, args: T.Tuple[str], |
2176 | 2172 | @FeatureNew('alias_target', '0.52.0') |
2177 | 2173 | @typed_pos_args('alias_target', str, varargs=(build.Target, build.BothLibraries), min_varargs=1) |
2178 | 2174 | @noKwargs |
2179 | | - @noSecondLevelHolderResolving |
2180 | 2175 | def func_alias_target(self, node: mparser.BaseNode, args: T.Tuple[str, T.List[T.Union[build.Target, build.BothLibraries]]], |
2181 | 2176 | kwargs: TYPE_kwargs) -> build.AliasTarget: |
2182 | 2177 | name, deps = args |
2183 | 2178 | if any(isinstance(d, build.RunTarget) for d in deps): |
2184 | 2179 | FeatureNew.single_use('alias_target that depends on run_targets', '0.60.0', self.subproject) |
2185 | | - tg = build.AliasTarget(name, deps, self.subdir, self.subproject, self.environment) |
| 2180 | + real_deps: T.List[build.Target] = [] |
| 2181 | + for d in deps: |
| 2182 | + if isinstance(d, build.BothLibraries): |
| 2183 | + real_deps.append(d.shared) |
| 2184 | + real_deps.append(d.static) |
| 2185 | + else: |
| 2186 | + real_deps.append(d) |
| 2187 | + tg = build.AliasTarget(name, real_deps, self.subdir, self.subproject, self.environment) |
2186 | 2188 | self.add_target(name, tg) |
2187 | 2189 | return tg |
2188 | 2190 |
|
@@ -3286,16 +3288,18 @@ def build_both_libraries(self, node: mparser.BaseNode, args: T.Tuple[str, Source |
3286 | 3288 | # Keep only compilers used for linking |
3287 | 3289 | static_lib.compilers = {k: v for k, v in static_lib.compilers.items() if k in compilers.clink_langs} |
3288 | 3290 |
|
| 3291 | + # Cross reference them to implement as_shared() and as_static() methods. |
| 3292 | + shared_lib.set_static(static_lib) |
| 3293 | + static_lib.set_shared(shared_lib) |
| 3294 | + |
3289 | 3295 | return build.BothLibraries(shared_lib, static_lib, preferred_library) |
3290 | 3296 |
|
3291 | 3297 | def build_library(self, node: mparser.BaseNode, args: T.Tuple[str, SourcesVarargsType], kwargs: kwtypes.Library): |
3292 | 3298 | default_library = self.coredata.get_option(OptionKey('default_library', subproject=self.subproject)) |
3293 | 3299 | assert isinstance(default_library, str), 'for mypy' |
3294 | 3300 | if default_library == 'shared': |
3295 | | - args, kwargs = resolve_second_level_holders(args, kwargs) |
3296 | 3301 | return self.build_target(node, args, T.cast('kwtypes.StaticLibrary', kwargs), build.SharedLibrary) |
3297 | 3302 | elif default_library == 'static': |
3298 | | - args, kwargs = resolve_second_level_holders(args, kwargs) |
3299 | 3303 | return self.build_target(node, args, T.cast('kwtypes.SharedLibrary', kwargs), build.StaticLibrary) |
3300 | 3304 | elif default_library == 'both': |
3301 | 3305 | return self.build_both_libraries(node, args, kwargs) |
|
0 commit comments