2
0
Эх сурвалжийг харах

Build: Fix container build path for swift

Stuart Carnie 3 долоо хоног өмнө
parent
commit
ad74ed68c1

+ 1 - 0
platform/ios/detect.py

@@ -25,6 +25,7 @@ def get_opts():
 
     return [
         ("vulkan_sdk_path", "Path to the Vulkan SDK", ""),
+        ("SWIFT_FRONTEND", "Path to the swift-frontend binary", ""),
         # APPLE_TOOLCHAIN_PATH Example: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
         (("APPLE_TOOLCHAIN_PATH", "IOS_TOOLCHAIN_PATH"), "Path to the Apple toolchain", ""),
         (("APPLE_SDK_PATH", "IOS_SDK_PATH"), "Path to the iOS SDK", ""),

+ 1 - 0
platform/macos/detect.py

@@ -29,6 +29,7 @@ def get_opts():
 
     return [
         ("osxcross_sdk", "OSXCross SDK version", "darwin16"),
+        ("SWIFT_FRONTEND", "Path to the swift-frontend binary", ""),
         ("MACOS_SDK_PATH", "Path to the macOS SDK", ""),
         ("vulkan_sdk_path", "Path to the Vulkan SDK", ""),
         EnumVariable("macports_clang", "Build using Clang from MacPorts", "no", ["no", "5.0", "devel"], ignorecase=2),

+ 1 - 0
platform/visionos/detect.py

@@ -24,6 +24,7 @@ def get_opts():
     from SCons.Variables import BoolVariable
 
     return [
+        ("SWIFT_FRONTEND", "Path to the swift-frontend binary", ""),
         # APPLE_TOOLCHAIN_PATH Example: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
         ("APPLE_TOOLCHAIN_PATH", "Path to the Apple toolchain", ""),
         (("APPLE_SDK_PATH", "VISIONOS_SDK_PATH"), "Path to the visionOS SDK", ""),

+ 18 - 1
platform_methods.py

@@ -270,7 +270,16 @@ def setup_swift_builder(env, apple_platform, sdk_path, current_path, bridging_he
 
     env["ALL_SWIFT_FILES"] = all_swift_files
     env["CURRENT_PATH"] = current_path
-    frontend_path = "$APPLE_TOOLCHAIN_PATH/usr/bin/swift-frontend"
+    if "SWIFT_FRONTEND" in env and env["SWIFT_FRONTEND"] != "":
+        frontend_path = env["SWIFT_FRONTEND"]
+    elif "osxcross" not in env:
+        frontend_path = "$APPLE_TOOLCHAIN_PATH/usr/bin/swift-frontend"
+    else:
+        frontend_path = None
+
+    if frontend_path is None:
+        raise Exception("Swift frontend path is not set. Please set SWIFT_FRONTEND.")
+
     bridging_header_path = current_path + "/" + bridging_header_filename
     env["SWIFTC"] = frontend_path + " -frontend -c"  # Swift compiler
     env["SWIFTCFLAGS"] = [
@@ -290,6 +299,14 @@ def setup_swift_builder(env, apple_platform, sdk_path, current_path, bridging_he
         "-I./",  # Pass the current directory as the header root so bridging headers can include files from any point of the hierarchy
     ]
 
+    if "osxcross" in env:
+        env.Append(
+            SWIFTCFLAGS=[
+                "-resource-dir",
+                "/root/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift",
+            ]
+        )
+
     if env["debug_symbols"]:
         env.Append(SWIFTCFLAGS=["-g"])