summaryrefslogtreecommitdiff
path: root/mesonbuild/compilers/swift.py
diff options
context:
space:
mode:
authorMarco Rebhan <me@dblsaiko.net>2025-02-25 21:26:32 +0100
committerJussi Pakkanen <jpakkane@gmail.com>2025-03-01 12:37:46 +0200
commitb1b49a237b24d3fd772853c7db85035d28bc32ef (patch)
tree96a0ed7522948ed3d8f39b72006d880cd2576483 /mesonbuild/compilers/swift.py
parentbe6540e6fdcf1ee88939a74521caa3813b039199 (diff)
downloadmeson-b1b49a237b24d3fd772853c7db85035d28bc32ef.tar.gz
swift: Add swift_std compiler option
Diffstat (limited to 'mesonbuild/compilers/swift.py')
-rw-r--r--mesonbuild/compilers/swift.py29
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