chromium/build/toolchain/ios/BUILD.gn

# Copyright 2021 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/ios/ios_sdk.gni")
import("//build/toolchain/apple/toolchain.gni")

# Specialisation of the apple_toolchain template to declare the toolchain
# and its tools to build target for iOS platform.
template("ios_toolchain") {
  assert(defined(invoker.toolchain_args),
         "Toolchains must declare toolchain_args")

  apple_toolchain(target_name) {
    forward_variables_from(invoker, "*", [ "toolchain_args" ])

    sdk_developer_dir = ios_sdk_developer_dir
    deployment_target = ios_deployment_target
    target_environment = target_environment
    bin_path = ios_bin_path

    toolchain_args = {
      forward_variables_from(invoker.toolchain_args, "*")
      xcode_build = xcode_build
      current_os = "ios"
    }
  }
}

# Specialisation of the ios_toolchain template to declare the toolchain
# and its tools to build application extension for iOS platform.
template("ios_app_ext_toolchain") {
  assert(defined(invoker.toolchain_args),
         "Toolchains must declare toolchain_args")

  ios_toolchain(target_name) {
    forward_variables_from(invoker, "*", [ "toolchain_args" ])

    toolchain_args = {
      forward_variables_from(invoker.toolchain_args, "*")

      ios_is_app_extension = true

      # Those variables are defined outside of //build and thus only exists
      # when used as part of Chromium. Use build_with_chromium to check if
      # they can be overridden safely. This prevents breaking third-party
      # projects such as WebRTC that only uses //build but not //base.
      if (build_with_chromium) {
        use_partition_alloc = false
        ios_partition_alloc_enabled = false
      }
    }
  }
}

# Specialisation of the ios_toolchain template to declare the toolchain
# and its tools to build application extension for iOS platform.
template("ios_blink_app_ext_toolchain") {
  assert(defined(invoker.toolchain_args),
         "Toolchains must declare toolchain_args")

  ios_toolchain(target_name) {
    forward_variables_from(invoker, "*", [ "toolchain_args" ])

    toolchain_args = {
      forward_variables_from(invoker.toolchain_args, "*")

      ios_is_app_extension = true
    }
  }
}

ios_toolchain("ios_clang_arm64") {
  toolchain_args = {
    current_cpu = "arm64"
  }
}

ios_toolchain("ios_clang_arm64_16_0") {
  toolchain_args = {
    current_cpu = "arm64"
    ios_deployment_target = "16.0"
  }
}

ios_toolchain("ios_clang_x64") {
  toolchain_args = {
    current_cpu = "x64"
  }
}

ios_toolchain("ios_clang_x64_16_0") {
  toolchain_args = {
    current_cpu = "x64"
    ios_deployment_target = "16.0"
  }
}

ios_app_ext_toolchain("ios_clang_arm64_app_ext") {
  toolchain_args = {
    current_cpu = "arm64"
  }
}

ios_blink_app_ext_toolchain("ios_clang_arm64_blink_app_ext") {
  toolchain_args = {
    current_cpu = "arm64"
    use_blink = true
  }
}

ios_blink_app_ext_toolchain("ios_clang_x64_blink_app_ext") {
  toolchain_args = {
    current_cpu = "x64"
    use_blink = true
  }
}

ios_app_ext_toolchain("ios_clang_arm64_app_ext_13_4") {
  toolchain_args = {
    current_cpu = "arm64"
    ios_deployment_target = "13.4"
  }
}

ios_app_ext_toolchain("ios_clang_x64_app_ext") {
  toolchain_args = {
    current_cpu = "x64"
  }
}

ios_app_ext_toolchain("ios_clang_x64_app_ext_13_4") {
  toolchain_args = {
    current_cpu = "x64"
    ios_deployment_target = "13.4"
  }
}

ios_toolchain("ios_clang_arm64_blink") {
  toolchain_args = {
    current_cpu = "arm64"
    use_blink = true
  }
}