|
1 | 1 | use std::collections::HashSet;
|
2 | 2 | use std::env;
|
3 | 3 | use std::fs;
|
4 |
| -use std::path::{Path, PathBuf}; |
| 4 | +use std::path::PathBuf; |
5 | 5 | use std::process::Command;
|
6 | 6 |
|
7 | 7 | use crate::builder::{Builder, Cargo as CargoCommand, RunConfig, ShouldRun, Step};
|
@@ -683,6 +683,50 @@ impl Step for LldWrapper {
|
683 | 683 | }
|
684 | 684 | }
|
685 | 685 |
|
| 686 | +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] |
| 687 | +pub struct RustAnalyzer { |
| 688 | + pub compiler: Compiler, |
| 689 | + pub target: TargetSelection, |
| 690 | +} |
| 691 | + |
| 692 | +impl Step for RustAnalyzer { |
| 693 | + type Output = Option<PathBuf>; |
| 694 | + const DEFAULT: bool = true; |
| 695 | + const ONLY_HOSTS: bool = false; |
| 696 | + |
| 697 | + fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { |
| 698 | + let builder = run.builder; |
| 699 | + run.path("src/tools/rust-analyzer").default_condition( |
| 700 | + builder.config.extended |
| 701 | + && builder |
| 702 | + .config |
| 703 | + .tools |
| 704 | + .as_ref() |
| 705 | + .map_or(true, |tools| tools.iter().any(|tool| tool == "rust-analyzer")), |
| 706 | + ) |
| 707 | + } |
| 708 | + |
| 709 | + fn make_run(run: RunConfig<'_>) { |
| 710 | + run.builder.ensure(RustAnalyzer { |
| 711 | + compiler: run.builder.compiler(run.builder.top_stage, run.builder.config.build), |
| 712 | + target: run.target, |
| 713 | + }); |
| 714 | + } |
| 715 | + |
| 716 | + fn run(self, builder: &Builder<'_>) -> Option<PathBuf> { |
| 717 | + builder.ensure(ToolBuild { |
| 718 | + compiler: self.compiler, |
| 719 | + target: self.target, |
| 720 | + tool: "rust-analyzer", |
| 721 | + mode: Mode::ToolStd, |
| 722 | + path: "src/tools/rust-analyzer", |
| 723 | + extra_features: vec!["rust-analyzer/in-rust-tree".to_owned()], |
| 724 | + is_optional_tool: false, |
| 725 | + source_type: SourceType::InTree, |
| 726 | + }) |
| 727 | + } |
| 728 | +} |
| 729 | + |
686 | 730 | macro_rules! tool_extended {
|
687 | 731 | (($sel:ident, $builder:ident),
|
688 | 732 | $($name:ident,
|
@@ -780,7 +824,6 @@ tool_extended!((self, builder),
|
780 | 824 | // and this is close enough for now.
|
781 | 825 | RustDemangler, rust_demangler, "src/tools/rust-demangler", "rust-demangler", stable=false, in_tree=true, tool_std=true, {};
|
782 | 826 | Rustfmt, rustfmt, "src/tools/rustfmt", "rustfmt", stable=true, in_tree=true, {};
|
783 |
| - RustAnalyzer, rust_analyzer, "src/tools/rust-analyzer/crates/rust-analyzer", "rust-analyzer", stable=true, submodule="rust-analyzer", {}; |
784 | 827 | );
|
785 | 828 |
|
786 | 829 | impl<'a> Builder<'a> {
|
|
0 commit comments