Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'xtask/src/flags.rs')
-rw-r--r--xtask/src/flags.rs52
1 files changed, 28 insertions, 24 deletions
diff --git a/xtask/src/flags.rs b/xtask/src/flags.rs
index 700806d178..2fd471b35c 100644
--- a/xtask/src/flags.rs
+++ b/xtask/src/flags.rs
@@ -4,6 +4,25 @@ use std::{fmt, str::FromStr};
use crate::install::{ClientOpt, ProcMacroServerOpt, ServerOpt};
+#[derive(Debug, Clone)]
+pub enum PgoTrainingCrate {
+ // Use RA's own sources for PGO training
+ RustAnalyzer,
+ // Download a Rust crate from `https://github.com/{0}` and use it for PGO training.
+ GitHub(String),
+}
+
+impl FromStr for PgoTrainingCrate {
+ type Err = String;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ match s {
+ "rust-analyzer" => Ok(Self::RustAnalyzer),
+ url => Ok(Self::GitHub(url.to_owned())),
+ }
+ }
+}
+
xflags::xflags! {
src "./src/flags.rs"
@@ -29,6 +48,9 @@ xflags::xflags! {
/// build in release with debug info set to 2.
optional --dev-rel
+
+ /// Apply PGO optimizations
+ optional --pgo pgo: PgoTrainingCrate
}
cmd fuzz-tests {}
@@ -110,17 +132,15 @@ pub enum XtaskCmd {
}
#[derive(Debug)]
-pub struct Tidy {}
-
-#[derive(Debug)]
pub struct Install {
pub client: bool,
pub code_bin: Option<String>,
pub server: bool,
- pub proc_macro_server: bool,
pub mimalloc: bool,
pub jemalloc: bool,
+ pub proc_macro_server: bool,
pub dev_rel: bool,
+ pub pgo: Option<PgoTrainingCrate>,
}
#[derive(Debug)]
@@ -144,25 +164,6 @@ pub struct RustcPush {
}
#[derive(Debug)]
-pub enum PgoTrainingCrate {
- // Use RA's own sources for PGO training
- RustAnalyzer,
- // Download a Rust crate from `https://github.com/{0}` and use it for PGO training.
- GitHub(String),
-}
-
-impl FromStr for PgoTrainingCrate {
- type Err = String;
-
- fn from_str(s: &str) -> Result<Self, Self::Err> {
- match s {
- "rust-analyzer" => Ok(Self::RustAnalyzer),
- url => Ok(Self::GitHub(url.to_owned())),
- }
- }
-}
-
-#[derive(Debug)]
pub struct Dist {
pub mimalloc: bool,
pub jemalloc: bool,
@@ -195,6 +196,9 @@ pub struct Codegen {
pub check: bool,
}
+#[derive(Debug)]
+pub struct Tidy;
+
impl Xtask {
#[allow(dead_code)]
pub fn from_env_or_exit() -> Self {
@@ -324,7 +328,7 @@ impl Install {
} else {
Malloc::System
};
- Some(ServerOpt { malloc, dev_rel: self.dev_rel })
+ Some(ServerOpt { malloc, dev_rel: self.dev_rel, pgo: self.pgo.clone() })
}
pub(crate) fn proc_macro_server(&self) -> Option<ProcMacroServerOpt> {
if !self.proc_macro_server {