# Copyright 2018 The Hafnium Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import("//build/toolchain/embedded.gni")
import("//build/toolchain/host.gni")

group("root") {
  deps = [
    "//src:hafnium(:aem_v8a_fvp_clang)",
    "//src:hafnium(:hikey_clang)",
    "//src:hafnium(:qemu_aarch64_clang)",
    "//src:hafnium(:rpi4_clang)",
  ]
}

group("test_root") {
  testonly = true

  deps = [
    "//src:unit_tests(:host_fake_clang)",
    "//test/arch(:aem_v8a_fvp_clang)",
    "//test/arch(:qemu_aarch64_clang)",
    "//test/arch(:rpi4_clang)",
    "//test/linux(:aem_v8a_fvp_vm_clang)",
    "//test/linux(:qemu_aarch64_vm_clang)",
    "//test/vmapi(:aem_v8a_fvp_vm_clang)",
    "//test/vmapi(:qemu_aarch64_vm_clang)",
    "//test/vmapi/arch/aarch64/gicv3:gicv3_test(:aem_v8a_fvp_vm_clang)",
    "//test/vmapi/arch/aarch64/gicv3:gicv3_test(:qemu_aarch64_vm_clang)",
  ]
}

# Describe each of the platforms used in this project.

host_toolchain("host_fake") {
  use_platform = true
  heap_pages = 60
  max_cpus = 4
  max_vms = 6
}

aarch64_toolchains("aem_v8a_fvp") {
  cpu = "cortex-a57"
  origin_address = "0x80000000"
  boot_flow = "//src/boot_flow:linux"
  console = "//src/arch/aarch64/pl011"
  gic_version = 3
  gicd_base_address = "0x2f000000"
  gicr_base_address = "0x2f100000"
  heap_pages = 60
  max_cpus = 8
  max_vms = 16
  toolchain_args = {
    pl011_base_address = "0x1c090000"
  }
}

aarch64_toolchains("qemu_aarch64") {
  cpu = "cortex-a57"
  origin_address = "0x40001000"
  boot_flow = "//src/boot_flow:linux"
  console = "//src/arch/aarch64/pl011"
  gic_version = 3
  gicd_base_address = "0x08000000"
  gicr_base_address = "0x080A0000"
  heap_pages = 60
  max_cpus = 8
  max_vms = 16
  toolchain_args = {
    pl011_base_address = "0x09000000"
  }
}

aarch64_toolchains("hikey") {
  cpu = "cortex-a53"
  origin_address = "0x35000000"
  boot_flow = "//src/boot_flow:android"
  console = "//src/arch/aarch64/pl011"
  gic_version = 2
  heap_pages = 60
  max_cpus = 8
  max_vms = 16
  toolchain_args = {
    pl011_base_address = "0xf7113000"  # UART3
  }
}

aarch64_toolchains("rpi4") {
  cpu = "cortex-a72"
  origin_address = "0x80000"
  boot_flow = "//src/boot_flow:linux"
  console = "//project/reference/rpi:mini_uart"
  gic_version = 2
  heap_pages = 60
  max_cpus = 4
  max_vms = 16
  toolchain_args = {
    gpio_base_address = "0xfe200000"
    aux_base_address = "0xfe215000"
    core_freq_mhz = 500
  }
}
