# 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, ] }