blob: 537e67f32ad3e27441756c86defbb68dcc73bea7 [file] [log] [blame]
# 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.
import("//build/checkout.gni")
import("//build/components.gni")
import("//build/config/clang/clang.gni")
import("//build/config/sysroot.gni")
import("//build/go/go_test.gni")
import("//build/host.gni")
go_git_dir = ""
if (submodules) {
go_git_link_path_list = read_file(".git", "list lines")
go_git_link_path = go_git_link_path_list[0]
go_git_dir_split = string_split(go_git_link_path)
go_git_dir = go_git_dir_split[1]
} else {
go_git_dir = ".git"
}
if (is_host && current_toolchain == toolchain_variant.base) {
_go_root = "$host_tools_dir/goroot"
compiled_action("makeroot") {
visibility = [ ":makefuchsia" ]
depfile = "$target_gen_dir/$target_name.d"
inputs = [
"${go_git_dir}/HEAD",
"${go_git_dir}/index",
".gitignore",
]
_output = "$target_gen_dir/$target_name.stamp"
outputs = [ _output ]
tool = "makeroot"
args = [
"--source-goroot",
rebase_path(".", root_build_dir),
"--target-goroot",
rebase_path(_go_root, root_build_dir),
"--depfile",
rebase_path(depfile, root_build_dir),
"--stamp-file",
rebase_path(_output, root_build_dir),
]
}
compiled_action("makefuchsia") {
visibility = [ ":go_runtime" ]
deps = [
":makeroot",
"//sdk/lib/fdio",
]
depfile = "$target_gen_dir/$target_name.d"
_output = "$target_gen_dir/$target_name.stamp"
outputs = [ _output ]
tool = "makefuchsia"
args = [
"--cc",
rebase_path("${clang_prefix}/clang", root_build_dir),
"--cxx",
rebase_path("${clang_prefix}/clang++", root_build_dir),
"--gocache",
rebase_path(gocache_dir, root_build_dir),
"--goroot",
rebase_path(_go_root, root_build_dir),
"--goroot-bootstrap",
rebase_path("//prebuilt/third_party/go/${host_platform}", root_build_dir),
"--sysroot",
rebase_path(sysroot, root_build_dir),
"--depfile",
rebase_path(depfile, root_build_dir),
"--stamp-file",
rebase_path(_output, root_build_dir),
]
}
}
group("go_runtime") {
if (is_host) {
public_deps = [ ":makefuchsia(${toolchain_variant.base})" ]
} else {
public_deps = [ ":$target_name(${host_toolchain})" ]
}
}
go_test("go_exec_test") {
gopackages = [ "os/exec" ]
}
go_test("go_net_test") {
gopackages = [ "net" ]
}
go_test("go_os_test") {
gopackages = [ "os" ]
}
go_test("go_pprof_test") {
gopackages = [ "runtime/pprof" ]
}
go_test("go_time_test") {
gopackages = [ "time" ]
}
go_test("go_zx_test") {
gopackages = [ "syscall/zx" ]
}
go_test("go_zxwait_test") {
gopackages = [ "syscall/zx/zxwait" ]
}
fuchsia_component("go-exec-test") {
testonly = true
manifest = "meta/go_exec_test.cml"
deps = [ ":go_exec_test" ]
}
fuchsia_component("go-net-test") {
testonly = true
manifest = "meta/go_net_test.cml"
deps = [ ":go_net_test" ]
}
fuchsia_component("go-os-test") {
testonly = true
manifest = "meta/go_os_test.cml"
deps = [ ":go_os_test" ]
}
fuchsia_component("go-pprof-test") {
testonly = true
manifest = "meta/go_pprof_test.cml"
deps = [ ":go_pprof_test" ]
}
resource("zoneinfo") {
sources = [ rebase_path("lib/time/zoneinfo.zip") ]
outputs = [ "lib/time/{{source_file_part}}" ]
}
resource("time_testdata") {
sources = [
rebase_path("src/time/testdata/2020b_Europe_Berlin"),
rebase_path("src/time/testdata/2021a_America_Nuuk"),
rebase_path("src/time/testdata/2021a_Asia_Gaza"),
rebase_path("src/time/testdata/2021a_Europe_Dublin"),
]
outputs = [ "src/time/testdata/{{source_file_part}}" ]
}
fuchsia_component("go-time-test") {
testonly = true
manifest = "meta/go_time_test.cml"
deps = [
":go_time_test",
":time_testdata",
":zoneinfo",
]
}
fuchsia_component("go-zx-test") {
testonly = true
manifest = "meta/go_zx_test.cml"
deps = [ ":go_zx_test" ]
}
fuchsia_component("go-zxwait-test") {
testonly = true
manifest = "meta/go_zxwait_test.cml"
deps = [ ":go_zxwait_test" ]
}
fuchsia_test_package("go-stdlib-tests") {
test_components = [
":go-exec-test",
":go-net-test",
":go-os-test",
":go-pprof-test",
":go-time-test",
":go-zx-test",
":go-zxwait-test",
]
deps = [ "//src/connectivity/network/netstack:component" ]
test_specs = {
environments = [ emu_env ]
}
}
go_test("go_unsafevalue_test") {
gopackages = [ "syscall/zx/fidl/internal/unsafevalue" ]
# This runs both on target device and as a host test.
# In both cases, it needs to build a go toolchain rather than using a prebuilt because
# it is testing the fidl package, which is implemented in the toolcahin itself.
use_prebuilt_go = false
}
go_test("go_fidl_test") {
gopackages = [ "syscall/zx/fidl" ]
}
go_test("go_extended_fidl_test") {
# N.B. these tests are not in the fidl package to avoid having to rebuild the
# go toolchain while iterating on them.
gopackages = [ "syscall/zx/fidl/fidl_test" ]
# TODO(pascallouis): Currently, while we take a dependency, the output of
# this FIDL rule is not directly used, rather the generated bindings were
# copied and checked in.
#
# Not being able to depend on automated generation is due to where code is
# placed, and how this relates to the tree structure of the toolchain.
# Disabling while fidlgen table generation is pending.
# Use regen-fidl to generate this file.
# deps = [
# "src/syscall/zx/fidl/internal/bindingstest($go_toolchain)",
# ]
}
fuchsia_component("go-unsafevalue-test") {
testonly = true
manifest = "meta/go_unsafevalue_test.cml"
deps = [ ":go_unsafevalue_test" ]
}
fuchsia_component("go-fidl-test") {
testonly = true
manifest = "meta/go_fidl_test.cml"
deps = [ ":go_fidl_test" ]
}
fuchsia_component("go-extended-fidl-test") {
testonly = true
manifest = "meta/go_extended_fidl_test.cml"
deps = [ ":go_extended_fidl_test" ]
}
fuchsia_test_package("go-fidl-tests") {
test_components = [
":go-unsafevalue-test",
":go-extended-fidl-test",
":go-fidl-test",
]
test_specs = {
environments = [ emu_env ]
}
}
group("fidl-tests") {
testonly = true
deps = [ ":go-fidl-tests" ]
if (host_os == "linux") {
deps += [
":go_extended_fidl_test($host_toolchain)",
":go_unsafevalue_test($host_toolchain)",
]
}
}
group("tests") {
testonly = true
deps = [
":fidl-tests",
":go-stdlib-tests",
"makeroot:tests",
]
}