# 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_main"
  - "//rs_bindings_from_cc:importer_test"
  - "//rs_bindings_from_cc:collect_instantiations_test"
  - "//rs_bindings_from_cc:cmdline_test"
  - "//rs_bindings_from_cc:rs_ir_test"
  - "//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: ubuntu2204  
  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:
  ubuntu2204:
    name: Stable Bazel Version With Clang and LLD
    <<: *default_linux_task
  ubuntu2204_rolling:
    name: Rolling Bazel Version With Clang and LLD
    bazel: "rolling"
    <<: *default_linux_task
