{
  "configs": [
    {
      "name": "bazel_default",
      "description": "Default bazel build configuration (usually host)",
      "build_type": "bazel",
      "args": [],
      "env": {}
    },
    {
      "name": "bazel_default_notest",
      "description": "Default bazel build configuration (usually host)",
      "build_type": "bazel",
      "args": [],
      "env": {},
      "driver_options": {
        "@type": "pw.build.proto.BazelDriverOptions",
        "no_test": true
      }
    },
    {
      "name": "k_host_config",
      "description": "Kernel host config",
      "build_type": "bazel",
      "args": [
        "--config=k_host"
      ],
      "env": {}
    }
  ],
  "builds": [
    {
      "name": "all_host",
      "use_config": "bazel_default",
      "targets": [
        "//..."
      ]
    },
    {
      "name": "all_host_cpp20",
      "build_config": {
        "name": "bazel_default_cpp20",
        "description": "Host C++20 build",
        "build_type": "bazel",
        "args": [
          "--//pw_toolchain/cc:cxx_standard=20"
        ]
      },
      "targets": [
        "//..."
      ]
    },
    {
      "name": "docs",
      "use_config": "bazel_default_notest",
      "targets": [
        "//docs"
      ]
    },
    {
      "name": "build_rp2040_tests",
      "build_config": {
        "name": "pico_rp2040",
        "description": "Default Pi Pico build (rp2040)",
        "build_type": "bazel",
        "args": [
          "--config=rp2040"
        ],
        "driver_options": {
          "@type": "pw.build.proto.BazelDriverOptions",
          "no_test": true
        }
      },
      "targets": [
        "//..."
      ]
    },
    {
      "name": "build_rp2350_tests",
      "build_config": {
        "name": "pico_rp2350",
        "description": "Default Pi Pico build (rp2350)",
        "build_type": "bazel",
        "args": [
          "--config=rp2350"
        ],
        "driver_options": {
          "@type": "pw.build.proto.BazelDriverOptions",
          "no_test": true
        }
      },
      "targets": [
        "//..."
      ]
    },
    {
      "name": "lm3s6965evb",
      "build_config": {
        "name": "lm3s6965evb_config",
        "description": "lm3s6965evb build",
        "build_type": "bazel",
        "args": [
          "--config=lm3s6965evb"
        ]
      },
      "targets": [
        "//pw_status/..."
      ]
    },
    {
      "name": "jni",
      "build_config": {
        "name": "jni_config",
        "description": "jni build",
        "build_type": "bazel",
        "args": [
          "--build_tag_filters=jni",
          "--test_tag_filters=jni"
        ]
      },
      "targets": [
        "//..."
      ]
    },
    {
      "name": "rust_nightly",
      "build_config": {
        "name": "rust_nightly_config",
        "description": "Pigweed with Nightly release of Rust",
        "build_type": "bazel",
        "args": [
          "--@rules_rust//rust/toolchain/channel=nightly"
        ]
      },
      "targets": [
        "//..."
      ]
    },
    {
      "name": "googletest",
      "build_config": {
        "name": "googletest_config",
        "description": "Use real Googletest",
        "build_type": "bazel",
        "args": [
          "--config=googletest"
        ]
      },
      "targets": [
        "//..."
      ]
    },
    {
      "name": "clippy",
      "build_config": {
        "name": "clippy_config",
        "description": "Run clippy checks",
        "build_type": "bazel",
        "args": [
          "--aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect",
          "--output_groups=clippy_checks"
        ],
        "driver_options": {
          "@type": "pw.build.proto.BazelDriverOptions",
          "no_test": true
        }
      },
      "targets": [
        "//..."
      ]
    },
    {
      "name": "clippy_nightly",
      "build_config": {
        "name": "clippy_nightly_config",
        "description": "Run clippy checks",
        "build_type": "bazel",
        "args": [
          "--@rules_rust//rust/toolchain/channel=nightly",
          "--aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect",
          "--output_groups=clippy_checks"
        ],
        "driver_options": {
          "@type": "pw.build.proto.BazelDriverOptions",
          "no_test": true
        }
      },
      "targets": [
        "//..."
      ]
    },
    {
      "name": "asan_fuzztest",
      "build_config": {
        "name": "asan_fuzztest_config",
        "description": "ASAN Fuzztest",
        "build_type": "bazel",
        "args": [
          "--config=asan",
          "--config=fuzztest"
        ],
        "driver_options": {
          "@type": "pw.build.proto.BazelDriverOptions",
          "no_test": true
        }
      },
      "targets": [
        "//..."
      ]
    },
    {
      "name": "rpc_callback",
      "build_config": {
        "name": "rpc_callback_config",
        "description": "RPC callback config enabled",
        "build_type": "bazel",
        "args": [
          "--//pw_rpc:config_override=//pw_rpc:completion_request_callback_config_enabled"
        ]
      },
      "targets": [
        "//pw_rpc/..."
      ]
    },
    {
      "name": "grpc",
      "build_config": {
        "name": "grpc_config",
        "description": "GRPC support",
        "build_type": "bazel",
        "args": [
          "--platforms=//pw_grpc:test_platform"
        ]
      },
      "targets": [
        "//pw_grpc/..."
      ]
    },
    {
      "name": "k_host",
      "use_config": "k_host_config",
      "targets": [
        "//pw_kernel/..."
      ]
    },
    {
      "name": "k_doctest",
      "build_config": {
        "name": "k_doctest_config",
        "description": "Kernel doc test config",
        "build_type": "bazel",
        "args": [
          "--config=k_doctest"
        ],
        "env": {}
      },
      "targets": [
        "//pw_kernel/..."
      ]
    },
    {
      "name": "k_qemu_mps2_an505",
      "build_config": {
        "name": "k_qemu_mps2_an505_config",
        "description": "QEMU MPS2 AN505 config",
        "build_type": "bazel",
        "args": [
          "--config=k_qemu_mps2_an505"
        ],
        "env": {}
      },
      "targets": [
        "//pw_kernel/..."
      ]
    },
    {
      "name": "k_qemu_virt_riscv32",
      "build_config": {
        "name": "k_qemu_virt_riscv32_config",
        "description": "QEMU Virt RISC-V32 config",
        "build_type": "bazel",
        "args": [
          "--config=k_qemu_virt_riscv32"
        ],
        "env": {}
      },
      "targets": [
        "//pw_kernel/..."
      ]
    },
    {
      "name": "k_rp2350",
      "build_config": {
        "name": "k_rp2350_config",
        "description": "Kernel RP2350 config",
        "build_type": "bazel",
        "args": [
          "--config=k_rp2350"
        ],
        "env": {},
        "driver_options": {
          "@type": "pw.build.proto.BazelDriverOptions",
          "no_test": true
        }
      },
      "targets": [
        "//pw_kernel/..."
      ]
    },
    {
      "name": "k_lint",
      "build_config": {
        "name": "k_lint_config",
        "description": "Kernel lint config",
        "build_type": "bazel",
        "args": [
          "--config=k_lint"
        ],
        "env": {},
        "driver_options": {
          "@type": "pw.build.proto.BazelDriverOptions",
          "no_test": true
        }
      },
      "targets": [
        "//pw_kernel/..."
      ]
    },
    {
      "name": "clang_tidy",
      "build_config": {
        "name": "clang_tidy_config",
        "description": "Clang-Tidy config",
        "build_type": "bazel",
        "args": [
          "--config=clang-tidy"
        ],
        "env": {},
        "driver_options": {
          "@type": "pw.build.proto.BazelDriverOptions",
          "no_test": true
        }
      },
      "targets": [
        "//..."
      ]
    },
    {
      "name": "asan_build",
      "build_config": {
        "name": "asan_config",
        "description": "ASAN config",
        "build_type": "bazel",
        "args": [
          "--config=asan"
        ],
        "env": {}
      },
      "targets": [
        "//..."
      ]
    },
    {
      "name": "asan_googletest",
      "build_config": {
        "name": "asan_googletest_config",
        "description": "ASAN Googletest config",
        "build_type": "bazel",
        "args": [
          "--config=asan",
          "--config=googletest"
        ],
        "env": {}
      },
      "targets": [
        "//..."
      ]
    },
    {
      "name": "tsan_build",
      "build_config": {
        "name": "tsan_config",
        "description": "TSAN config",
        "build_type": "bazel",
        "args": [
          "--config=tsan"
        ],
        "env": {}
      },
      "targets": [
        "//..."
      ]
    },
    {
      "name": "tsan_googletest",
      "build_config": {
        "name": "tsan_googletest_config",
        "description": "TSAN Googletest config",
        "build_type": "bazel",
        "args": [
          "--config=tsan",
          "--config=googletest"
        ],
        "env": {}
      },
      "targets": [
        "//..."
      ]
    },
    {
      "name": "ubsan_build",
      "build_config": {
        "name": "ubsan_config",
        "description": "UBSAN config",
        "build_type": "bazel",
        "args": [
          "--config=ubsan"
        ],
        "env": {}
      },
      "targets": [
        "//..."
      ]
    },
    {
      "name": "ubsan_googletest",
      "build_config": {
        "name": "ubsan_googletest_config",
        "description": "UBSAN Googletest config",
        "build_type": "bazel",
        "args": [
          "--config=ubsan",
          "--config=googletest"
        ],
        "env": {}
      },
      "targets": [
        "//..."
      ]
    }
  ],
  "tools": [
    {
      "name": "change",
      "description": "Work with Gerrit changes and Git commits.",
      "use_config": "bazel_default",
      "target": "@pigweed//:change",
      "type": "GENERAL"
    },
    {
      "name": "format",
      "description": "Find and fix code formatting issues",
      "use_config": "bazel_default",
      "analyzer_friendly_args": [
        "--check"
      ],
      "target": "@pigweed//:format"
    },
    {
      "name": "pw_presubmit_checks",
      "description": "Run checks that use the pw_presubmit framework",
      "use_config": "bazel_default",
      "target": "@pigweed//:presubmit",
      "type": "ANALYZER"
    },
    {
      "name": "compile_commands_integration_test",
      "description": "Runs integration tests for pw_ide's compile commands generator",
      "use_config": "bazel_default",
      "target": "//pw_ide/bazel:integration_test",
      "type": "ANALYZER"
    },
    {
      "name": "push",
      "description": "Upload the current git branch to Gerrit for review.",
      "use_config": "bazel_default",
      "target": "@pigweed//:push",
      "type": "GENERAL"
    },
    {
      "name": "review",
      "description": "Review the commit at HEAD using Gemini",
      "use_config": "bazel_default",
      "target": "@pigweed//:review",
      "type": "GENERAL"
    }
  ],
  "groups": [
    {
      "name": "presubmit",
      "description": "Quick presubmit for validating code changes locally",
      "analyzers": [
        "format",
        "pw_presubmit_checks"
      ]
    },
    {
      "name": "default",
      "description": "Most common builds/configurations",
      "analyzers": [
        "compile_commands_integration_test"
      ],
      "builds": [
        "all_host",
        "lm3s6965evb",
        "jni",
        "rust_nightly",
        "googletest",
        "clippy",
        "clippy_nightly",
        "asan_fuzztest",
        "rpc_callback",
        "grpc",
        "docs"
      ]
    },
    {
      "name": "kernel",
      "description": "Kernel-related builds/configurations",
      "builds": [
        "k_host",
        "k_doctest",
        "k_qemu_mps2_an505",
        "k_qemu_virt_riscv32",
        "k_rp2350",
        "k_lint"
      ]
    },
    {
      "name": "asan",
      "description": "ASAN-related builds",
      "builds": [
        "asan_build",
        "asan_googletest"
      ]
    },
    {
      "name": "tsan",
      "description": "TSAN-related builds",
      "builds": [
        "tsan_build",
        "tsan_googletest"
      ]
    },
    {
      "name": "ubsan",
      "description": "UBSAN-related builds",
      "builds": [
        "ubsan_build",
        "ubsan_googletest"
      ]
    }
  ]
}
