# 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"
  - "//cc_template/..."
  - "//lifetime_analysis/..."
default_linux_task: &default_linux_task
  platform: ubuntu2004
  shell_commands:
    - "sudo apt -y update && sudo apt -y install 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
