# Part of the Crubit project, under the Apache License v2.0 with LLVM
# Exceptions. See /LICENSE for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

---
default_linux_targets: &default_linux_targets
  # TODO(b/234804076): Make the whole repo buildable/testable with //...
  # Target below is only a rudimentary smoke test.
  - "//rs_bindings_from_cc:rs_bindings_from_cc_impl"
  - "//rs_bindings_from_cc:importer_test"
  - "//rs_bindings_from_cc:cc_collect_instantiations_test"
  - "//rs_bindings_from_cc:collect_instantiations_test"
  - "//rs_bindings_from_cc:bazel_types_test"
  - "//rs_bindings_from_cc:cmdline_test"
  - "//rs_bindings_from_cc:rs_ir_test"
  - "//support/cc_template/..."
  - "//lifetime_analysis/..."
  # This target currently builds but crashes due to not being able to find librustc_driver.
  # error while loading shared libraries: librustc_driver-9f7af4bb25b7b8ba.so: cannot open shared object file: No such file or directory
  - "//cc_bindings_from_rs:cc_bindings_from_rs"
default_linux_task: &default_linux_task
  platform: ubuntu2004
  shell_commands:
    - "sudo apt -y update && sudo apt -y install clang lld"
  build_flags:
    - "--repo_env=CC=clang"
  build_targets: *default_linux_targets
  test_targets: *default_linux_targets
tasks:
  ubuntu2004:
    name: Stable Bazel Version With Clang and LLD
    <<: *default_linux_task
  ubuntu2004_rolling:
    name: Rolling Bazel Version With Clang and LLD
    bazel: "rolling"
    <<: *default_linux_task
