| # Copyright 2013 The Flutter Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| assert(is_mac || is_ios) |
| |
| import("//build/config/darwin/darwin_sdk.gni") |
| |
| config("compiler") { |
| # swiftc -sdk flag. |
| if (is_ios) { |
| _sdk_root = ios_sdk_path |
| if (create_xcode_symlinks) { |
| _sdk_root = rebase_path(ios_sdk_path, root_build_dir) |
| } |
| } else if (is_mac) { |
| _sdk_root = mac_sdk_path |
| if (create_xcode_symlinks) { |
| _sdk_root = rebase_path(mac_sdk_path, root_build_dir) |
| } |
| } else { |
| assert(false, "unsupported platform") |
| } |
| |
| # swiftc -target flag (target triplet). |
| # CPU architecture. |
| if (current_cpu == "x64") { |
| _triplet_cpu = "x86_64" |
| } else if (current_cpu == "arm64") { |
| _triplet_cpu = "arm64" |
| } else { |
| # x86, arm, armv7, etc. |
| assert(false, "unsupported cpu: $current_cpu") |
| } |
| |
| # OS and deployment target. |
| if (is_ios) { |
| _triplet_os = "apple-ios" |
| _deployment_target = ios_deployment_target |
| } else if (is_mac) { |
| _triplet_os = "apple-macos" |
| _deployment_target = mac_deployment_target |
| } |
| |
| # Environment. |
| if (use_ios_simulator) { |
| _triplet_environment = "-simulator" |
| } else { |
| _triplet_environment = "" |
| } |
| _target_triplet = |
| "$_triplet_cpu-$_triplet_os$_deployment_target$_triplet_environment" |
| |
| # swiftc -swift-version flag. |
| # |
| # Swift 6 transition: As of April 2025, no public Flutter framework API is |
| # authored in Swift. Swift 6 is ABI-compatible with Swift 5, but not |
| # source-compatible. If any public API *is* written in Swift, it's possible |
| # we may need to prepare concurrent Swift 5 and 6 builds during a transition |
| # period. |
| _swift_version = "5" |
| |
| # TODO(cbracken): https://github.com/flutter/flutter/issues/167592 |
| # Look up xcode_version in apple_sdk.gni |
| # |
| # This is here so that all files get recompiled after an Xcode update. |
| # (defines are passed via the command line, and build system rebuild things |
| # when their commandline changes). Nothing should ever read this define. |
| #defines = [ "CR_XCODE_VERSION=$xcode_version" ] |
| |
| swiftflags = [ |
| "-sdk", |
| _sdk_root, |
| "-target", |
| _target_triplet, |
| "-swift-version", |
| _swift_version, |
| ] |
| } |