diff options
| author | Marco Rebhan <me@dblsaiko.net> | 2025-02-25 21:26:32 +0100 |
|---|---|---|
| committer | Jussi Pakkanen <jpakkane@gmail.com> | 2025-03-01 12:37:46 +0200 |
| commit | b1b49a237b24d3fd772853c7db85035d28bc32ef (patch) | |
| tree | 96a0ed7522948ed3d8f39b72006d880cd2576483 | |
| parent | be6540e6fdcf1ee88939a74521caa3813b039199 (diff) | |
| download | meson-b1b49a237b24d3fd772853c7db85035d28bc32ef.tar.gz | |
swift: Add swift_std compiler option
| -rw-r--r-- | mesonbuild/compilers/swift.py | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/mesonbuild/compilers/swift.py b/mesonbuild/compilers/swift.py index 91c17f0ba..b04ccbd0e 100644 --- a/mesonbuild/compilers/swift.py +++ b/mesonbuild/compilers/swift.py @@ -7,12 +7,14 @@ import re import subprocess, os.path import typing as T -from .. import mlog +from .. import mlog, options from ..mesonlib import EnvironmentException, MesonException, version_compare from .compilers import Compiler, clike_debug_args if T.TYPE_CHECKING: + from .. import build + from ..coredata import MutableKeyedOptionDictType from ..dependencies import Dependency from ..envconfig import MachineInfo from ..environment import Environment @@ -115,6 +117,31 @@ class SwiftCompiler(Compiler): def get_compile_only_args(self) -> T.List[str]: return ['-c'] + def get_options(self) -> MutableKeyedOptionDictType: + opts = super().get_options() + + key = self.form_compileropt_key('std') + opts[key] = options.UserComboOption( + self.make_option_name(key), + 'Swift language version.', + 'none', + # List them with swiftc -frontend -swift-version '' + choices=['none', '4', '4.2', '5', '6']) + + return opts + + def get_option_compile_args(self, target: build.BuildTarget, env: Environment, subproject: T.Optional[str] = None + ) -> T.List[str]: + args: T.List[str] = [] + + std = self.get_compileropt_value('std', env, target, subproject) + assert isinstance(std, str) + + if std != 'none': + args += ['-swift-version', std] + + return args + def get_working_directory_args(self, path: str) -> T.Optional[T.List[str]]: if version_compare(self.version, '<4.2'): return None |
