dart-sdk/BUILD.gn
Daco Harkes 550d580d5e [vm/ffi] Fuchsia FFI testing package
This does not include enabling the FFI on Fuchsia. So these tests will
fail without the dependent CL.

This CL adds an `all_positive.dart` test file to be packaged in the
.far file, such that it is easier to run all FFI tests in one go.

We don't run tests on the bots, but we do build this test package on
the bots.

To build the .far files locally:
```
tools/build.py --os=fuchsia -m debug fuchsia_ffi_test_package
tools/build.py --os=fuchsia -m debug -a arm64 fuchsia_ffi_test_package
```

Issue: https://github.com/dart-lang/sdk/issues/44434

Change-Id: Iec418e0c10d77afbf811fb83151664bcc2710b99
Cq-Include-Trybots: luci.dart.try:vm-fuchsia-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175484
Reviewed-by: Liam Appelbe <liama@google.com>
2020-12-10 12:15:17 +00:00

270 lines
6.5 KiB
Plaintext

# Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
# for details. 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/config/gclient_args.gni")
import("sdk_args.gni")
targetting_fuchsia = target_os == "fuchsia"
# This target will be built if no target is specified when invoking ninja.
group("default") {
if (targetting_fuchsia) {
# Fuchsia has run_vm_tests marked testonly.
testonly = true
}
deps = [ ":runtime" ]
if (defined(checkout_llvm) && checkout_llvm) {
deps += [ ":llvm_codegen" ]
}
}
group("most") {
import("runtime/runtime_args.gni")
if (targetting_fuchsia) {
# Fuchsia has run_vm_tests marked testonly.
testonly = true
}
deps = [
":create_sdk",
":dart2js",
":dartanalyzer",
":dartdevc",
":runtime",
":samples",
]
if (dart_target_arch != "arm") {
deps += [ ":analysis_server" ]
}
}
group("runtime") {
import("runtime/runtime_args.gni")
if (targetting_fuchsia) {
# Fuchsia has run_vm_tests marked testonly.
testonly = true
}
deps = [
"runtime/bin:dart",
"runtime/bin:entrypoints_verification_test_extension",
"runtime/bin:ffi_test_dynamic_library",
"runtime/bin:ffi_test_functions",
"runtime/bin:process_test",
"runtime/bin:run_vm_tests",
"runtime/bin:sample_extension",
"runtime/bin:test_extension",
"runtime/vm:kernel_platform_files($host_toolchain)",
"utils/kernel-service:kernel-service",
]
# TODO(bkonyi): this dep causes a segfault on Android XARM_X64 builds.
# See issue #41776.
if (dart_target_arch != "arm") {
deps += [
"utils/dartdev:dartdev",
"utils/dds:dds",
]
}
}
# A separate target and not included in group("runtime"). This way the target\
# "runtime" does not get many executables extra as build output.
group("run_ffi_unit_tests") {
deps = [ "runtime/bin/ffi_unit_test:run_ffi_unit_tests" ]
}
group("runtime_kernel") {
if (targetting_fuchsia) {
# Fuchsia has run_vm_tests marked testonly.
testonly = true
}
deps = [ ":runtime" ]
}
group("runtime_precompiled") {
deps = [
"runtime/bin:dart_precompiled_runtime",
"runtime/bin:process_test",
]
}
group("create_sdk") {
public_deps = [ "sdk:create_sdk" ]
}
group("create_platform_sdk") {
public_deps = [ "sdk:create_platform_sdk" ]
}
group("dart2js") {
deps = [ "utils/compiler:dart2js" ]
}
group("dartanalyzer") {
deps = [ "utils/dartanalyzer" ]
}
group("dartdevc") {
deps = [ "utils/dartdevc" ]
}
group("dartfmt") {
deps = [ "utils/dartfmt" ]
}
group("analysis_server") {
deps = [ "utils/analysis_server" ]
}
group("check_llvm") {
if (defined(checkout_llvm) && checkout_llvm) {
deps = [ "runtime/llvm_codegen/test" ]
}
}
group("llvm_codegen") {
if (defined(checkout_llvm) && checkout_llvm) {
deps = [
"runtime/llvm_codegen/bit",
"runtime/llvm_codegen/codegen",
]
}
}
# This is the target that is built on the dart2js build bots.
# It must depend on anything that is required by the dart2js
# test suites.
group("dart2js_bot") {
deps = [ ":create_sdk" ]
}
group("samples") {
deps = [ "runtime/bin:sample_extension" ]
}
# This rule and the compressed_observatory_archive rule are for the Fuchsia
# bots that pre-build the Observatory. They copy the observatory tar files to
# the root build output directory for convenient access by the Fuchsia buildbot
# scripts.
group("observatory_archive") {
deps = [ "runtime/observatory:copy_observatory_archive" ]
}
group("compressed_observatory_archive") {
deps = [ "runtime/observatory:copy_compressed_observatory_archive" ]
}
if (is_fuchsia) {
import("third_party/fuchsia/sdk/linux/build/component.gni")
import("third_party/fuchsia/sdk/linux/build/package.gni")
template("dart_fuchsia_test_package") {
fuchsia_package(target_name) {
package_name = invoker.package_name
if (is_debug) {
package_name += "_debug"
} else if (is_release) {
package_name += "_release"
} else if (is_product) {
package_name += "_product"
}
testonly = true
deps = invoker.deps
}
}
template("dart_fuchsia_test_component") {
fuchsia_component(target_name) {
testonly = true
data_deps = [ "runtime/bin:dart" ]
if (defined(invoker.data_deps)) {
data_deps += invoker.data_deps
}
manifest = "build/fuchsia/dart.cmx"
library_files = []
if (defined(invoker.library_files)) {
library_files += invoker.library_files
}
resource_files = [
".dart_tool/package_config.json",
"pkg/testing/test/hello_test.dart",
"tools/addlatexhash.dart",
]
resource_dirs = invoker.resource_dirs
resources = []
foreach(file, library_files) {
resources += [
{
path = root_out_dir + "/" + file
dest = "lib/" + file
},
]
}
foreach(file, resource_files) {
resources += [
{
path = file
dest = "data/" + file
},
]
}
resources +=
exec_script("tools/fuchsia/find_resources.py", resource_dirs, "json")
}
}
dart_fuchsia_test_component("fuchsia_test_component") {
resource_dirs = [
"tests/standalone_2",
"pkg/async_helper",
"pkg/expect",
"pkg/meta",
"pkg/native_stack_traces",
"pkg/smith",
"third_party/pkg/args",
"third_party/pkg/async",
"third_party/pkg/charcode",
"third_party/pkg/collection",
"third_party/pkg/convert",
"third_party/pkg/crypto",
"third_party/pkg/http",
"third_party/pkg/http_parser",
"third_party/pkg/path",
"third_party/pkg/pool",
"third_party/pkg/stack_trace",
"third_party/pkg/string_scanner",
"third_party/pkg/typed_data",
]
}
dart_fuchsia_test_package("fuchsia_test_package") {
package_name = "dart_test"
deps = [ ":fuchsia_test_component" ]
}
dart_fuchsia_test_component("fuchsia_ffi_test_component") {
data_deps = [
"runtime/bin:ffi_test_dynamic_library",
"runtime/bin:ffi_test_functions",
]
library_files = [
"libffi_test_dynamic_library.so",
"libffi_test_functions.so",
]
resource_dirs = [
"pkg/expect",
"pkg/meta",
"tests/ffi",
"third_party/pkg/ffi",
]
}
dart_fuchsia_test_package("fuchsia_ffi_test_package") {
package_name = "dart_ffi_test"
deps = [ ":fuchsia_ffi_test_component" ]
}
}