mirror of
https://github.com/fish-shell/fish-shell.git
synced 2025-02-17 23:52:46 +08:00
build.rs: Default variables
So we can build without cmake
This commit is contained in:
parent
9747ab19d1
commit
a5e35abeba
46
build.rs
46
build.rs
|
@ -6,15 +6,7 @@ use std::error::Error;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
for key in ["DOCDIR", "DATADIR", "SYSCONFDIR", "BINDIR", "LOCALEDIR"] {
|
setup_paths();
|
||||||
if let Ok(val) = env::var(key) {
|
|
||||||
// Forward some CMake config
|
|
||||||
if val.is_empty() {
|
|
||||||
panic!("{} is empty!", key);
|
|
||||||
}
|
|
||||||
println!("cargo:rustc-env={key}={val}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let rust_dir = env!("CARGO_MANIFEST_DIR");
|
let rust_dir = env!("CARGO_MANIFEST_DIR");
|
||||||
// Add our default to enable tools that don't go through CMake, like "cargo test" and the
|
// Add our default to enable tools that don't go through CMake, like "cargo test" and the
|
||||||
|
@ -180,3 +172,39 @@ fn have_gettext(target: &Target) -> Result<bool, Box<dyn Error>> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn get_path(name: &str, default: &str, onvar: PathBuf) -> PathBuf {
|
||||||
|
let mut var = PathBuf::from(env::var(name).unwrap_or(default.to_string()));
|
||||||
|
if var.is_relative() {
|
||||||
|
var = onvar.join(var);
|
||||||
|
}
|
||||||
|
var
|
||||||
|
}
|
||||||
|
|
||||||
|
fn setup_paths() {
|
||||||
|
rsconf::rebuild_if_env_changed("PREFIX");
|
||||||
|
rsconf::rebuild_if_env_changed("DATADIR");
|
||||||
|
rsconf::rebuild_if_env_changed("BINDIR");
|
||||||
|
rsconf::rebuild_if_env_changed("SYSCONFDIR");
|
||||||
|
rsconf::rebuild_if_env_changed("LOCALEDIR");
|
||||||
|
rsconf::rebuild_if_env_changed("DOCDIR");
|
||||||
|
let prefix = PathBuf::from(env::var("PREFIX").unwrap_or("/usr/local".to_string()));
|
||||||
|
if prefix.is_relative() {
|
||||||
|
panic!("Can't have relative prefix");
|
||||||
|
}
|
||||||
|
println!("cargo:rustc-env=PREFIX={}", prefix.to_str().unwrap());
|
||||||
|
|
||||||
|
let datadir = get_path("DATADIR", "share/", prefix.clone());
|
||||||
|
println!("cargo:rustc-env=DATADIR={}", datadir.to_str().unwrap());
|
||||||
|
let bindir = get_path("BINDIR", "bin/", prefix.clone());
|
||||||
|
println!("cargo:rustc-env=BINDIR={}", bindir.to_str().unwrap());
|
||||||
|
let sysconfdir = get_path("SYSCONFDIR", "etc/", datadir.clone());
|
||||||
|
println!(
|
||||||
|
"cargo:rustc-env=SYSCONFDIR={}",
|
||||||
|
sysconfdir.to_str().unwrap()
|
||||||
|
);
|
||||||
|
let localedir = get_path("LOCALEDIR", "locale/", datadir.clone());
|
||||||
|
println!("cargo:rustc-env=LOCALEDIR={}", localedir.to_str().unwrap());
|
||||||
|
let docdir = get_path("DOCDIR", "doc/fish", datadir.clone());
|
||||||
|
println!("cargo:rustc-env=DOCDIR={}", docdir.to_str().unwrap());
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user