# Copyright 2016 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

if (current_cpu == "arm" || current_cpu == "arm64") {
  declare_args() {
    # Version of the ARM processor when compiling on ARM. Ignored on non-ARM
    # platforms.
    if (current_cpu == "arm") {
      arm_version = 7
    } else if(current_cpu == "arm64") {
      arm_version = 8
    } else {
      assert(false, "Unconfigured arm version")
    }

    # The ARM floating point mode. This is either the string "hard", "soft", or
    # "softfp". An empty string means to use the default one for the
    # arm_version.
    arm_float_abi = ""

    # The ARM variant-specific tuning mode. This will be a string like "armv6"
    # or "cortex-a15". An empty string means to use the default for the
    # arm_version.
    arm_tune = ""

    # Whether to use the neon FPU instruction set or not.
    arm_use_neon = true

    # Whether to enable optional NEON code paths.
    arm_optionally_use_neon = false
  }

  assert(arm_float_abi == "" || arm_float_abi == "hard" ||
         arm_float_abi == "soft" || arm_float_abi == "softfp")

  if (arm_version == 6) {
    arm_arch = "armv6"
    if (arm_tune != "") {
      arm_tune = ""
    }
    if (arm_float_abi == "") {
      arm_float_abi = "softfp"
    }
    arm_fpu = "vfp"

    # Thumb is a reduced instruction set available on some ARM processors that
    # has increased code density.
    arm_use_thumb = false
  } else if (arm_version == 7) {
    arm_arch = "armv7-a"
    if (arm_tune == "") {
      arm_tune = "generic-armv7-a"
    }

    if (arm_float_abi == "") {
      arm_float_abi = "softfp"
    }

    arm_use_thumb = true

    if (arm_use_neon) {
      arm_fpu = "neon"
    } else {
      arm_fpu = "vfpv3-d16"
    }
  }
}
