Skip to content

Commit 43f0aa1

Browse files
committed
Add swift executable support in Xcode.
1 parent cb085f3 commit 43f0aa1

File tree

3 files changed

+14
-7
lines changed

3 files changed

+14
-7
lines changed

mesonbuild/backend/backends.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,12 @@ def is_swift_target(self, target):
423423
return True
424424
return False
425425

426+
def determine_swift_dep_dirs(self, target):
427+
result = []
428+
for l in target.link_targets:
429+
result.append(self.get_target_private_dir_abs(l))
430+
return result
431+
426432
def get_executable_serialisation(self, cmd, workdir=None,
427433
extra_bdeps=None, capture=None,
428434
env: T.Optional[build.EnvironmentVariables] = None):

mesonbuild/backend/ninjabackend.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1716,12 +1716,6 @@ def determine_swift_dep_modules(self, target):
17161716
result.append(self.swift_module_file_name(l))
17171717
return result
17181718

1719-
def determine_swift_dep_dirs(self, target):
1720-
result = []
1721-
for l in target.link_targets:
1722-
result.append(self.get_target_private_dir_abs(l))
1723-
return result
1724-
17251719
def get_swift_link_deps(self, target):
17261720
result = []
17271721
for l in target.link_targets:

mesonbuild/backend/xcodebackend.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
'cpp': 'CPLUSPLUS',
4848
'objc': 'OBJC',
4949
'objcpp': 'OBJCPLUSPLUS',
50+
'swift': 'SWIFT_'
5051
}
5152
OPT2XCODEOPT = {'0': '0',
5253
'g': '0',
@@ -1336,7 +1337,7 @@ def generate_xc_build_configuration(self, objects_dict):
13361337
bt_dict.add_item('buildSettings', settings_dict)
13371338
settings_dict.add_item('ARCHS', '"$(NATIVE_ARCH_ACTUAL)"')
13381339
settings_dict.add_item('ONLY_ACTIVE_ARCH', 'YES')
1339-
settings_dict.add_item('SWIFT_VERSION', '4.0')
1340+
settings_dict.add_item('SWIFT_VERSION', '5.0')
13401341
settings_dict.add_item('SDKROOT', '"macosx"')
13411342
settings_dict.add_item('SYMROOT', '"%s/build"' % self.environment.get_build_dir())
13421343
bt_dict.add_item('name', f'"{buildtype}"')
@@ -1509,6 +1510,12 @@ def generate_single_build_target(self, objects_dict, target_name, target):
15091510
gargs = self.build.global_args[target.for_machine].get(lang, [])
15101511
targs = target.get_extra_args(lang)
15111512
args = warn_args + std_args + pargs + gargs + targs
1513+
if lang == 'swift':
1514+
# For some reason putting Swift module dirs in HEADER_SEARCH_PATHS does not work,
1515+
# but adding -I/path to manual args does work.
1516+
swift_dep_dirs = self.determine_swift_dep_dirs(target)
1517+
for d in swift_dep_dirs:
1518+
args += compiler.get_include_args(d, False)
15121519
if args:
15131520
lang_cargs = cargs
15141521
if compiler and target.implicit_include_directories:

0 commit comments

Comments
 (0)