diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 734a7e4..e6628b6 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -417,6 +417,12 @@
                 raise MesonException('Unknown data type in object list.')
         return obj_list
 
+    def is_swift_target(self, target):
+        for s in target.sources:
+            if s.endswith('swift'):
+                return True
+        return False
+
     def get_executable_serialisation(self, cmd, workdir=None,
                                      extra_bdeps=None, capture=None,
                                      env: T.Optional[build.EnvironmentVariables] = None):
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index e8a7d4b..fa07235 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -1701,12 +1701,6 @@
     def target_swift_modulename(self, target):
         return target.name
 
-    def is_swift_target(self, target):
-        for s in target.sources:
-            if s.endswith('swift'):
-                return True
-        return False
-
     def determine_swift_dep_modules(self, target):
         result = []
         for l in target.link_targets:
diff --git a/mesonbuild/backend/xcodebackend.py b/mesonbuild/backend/xcodebackend.py
index 6fc4729..aeaee5c 100644
--- a/mesonbuild/backend/xcodebackend.py
+++ b/mesonbuild/backend/xcodebackend.py
@@ -37,6 +37,7 @@
                 'hxx': 'sourcecode.cpp.h',
                 'hh': 'sourcecode.cpp.hh',
                 'inc': 'sourcecode.c.h',
+                'swift': 'sourcecode.swift',
                 'dylib': 'compiled.mach-o.dylib',
                 'o': 'compiled.mach-o.objfile',
                 's': 'sourcecode.asm',
@@ -1277,6 +1278,7 @@
             bt_dict.add_item('buildSettings', settings_dict)
             settings_dict.add_item('ARCHS', '"$(NATIVE_ARCH_ACTUAL)"')
             settings_dict.add_item('ONLY_ACTIVE_ARCH', 'YES')
+            settings_dict.add_item('SWIFT_VERSION', '4.0')
             settings_dict.add_item('SDKROOT', '"macosx"')
             settings_dict.add_item('SYMROOT', '"%s/build"' % self.environment.get_build_dir())
             bt_dict.add_item('name', f'"{buildtype}"')
@@ -1382,7 +1384,12 @@
             else:
                 product_name = target.get_basename()
             ldargs += target.link_args
-            linker, stdlib_args = self.determine_linker_and_stdlib_args(target)
+            # Swift is special. Again. You can't mix Swift with other languages
+            # in the same target. Thus for Swift we only use 
+            if self.is_swift_target(target):
+                linker, stdlib_args = target.compilers['swift'], []
+            else:
+                linker, stdlib_args = self.determine_linker_and_stdlib_args(target)
             if not isinstance(target, build.StaticLibrary):
                 ldargs += self.build.get_project_link_args(linker, target.subproject, target.for_machine)
                 ldargs += self.build.get_global_link_args(linker, target.for_machine)
diff --git a/test cases/swift/1 exe/prog.swift b/test cases/swift/1 exe/main.swift
similarity index 100%
rename from test cases/swift/1 exe/prog.swift
rename to test cases/swift/1 exe/main.swift
diff --git a/test cases/swift/1 exe/meson.build b/test cases/swift/1 exe/meson.build
index f986e9a..4436a8e 100644
--- a/test cases/swift/1 exe/meson.build
+++ b/test cases/swift/1 exe/meson.build
@@ -1,3 +1,3 @@
 project('swift exe', 'swift')
 
-test('swifttest', executable('swifttest', 'prog.swift'))
+test('swifttest', executable('swifttest', 'main.swift'))
