Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'helix-term/build.rs')
-rw-r--r--helix-term/build.rs144
1 files changed, 0 insertions, 144 deletions
diff --git a/helix-term/build.rs b/helix-term/build.rs
index 60a64659..b47dae8e 100644
--- a/helix-term/build.rs
+++ b/helix-term/build.rs
@@ -6,148 +6,4 @@ fn main() {
build_grammars(Some(std::env::var("TARGET").unwrap()))
.expect("Failed to compile tree-sitter grammars");
}
-
- #[cfg(windows)]
- windows_rc::link_icon_in_windows_exe("../contrib/helix-256p.ico");
-}
-
-#[cfg(windows)]
-mod windows_rc {
- use std::io::prelude::Write;
- use std::{env, io, path::Path, path::PathBuf, process};
-
- pub(crate) fn link_icon_in_windows_exe(icon_path: &str) {
- let rc_exe = find_rc_exe().expect("Windows SDK is to be installed along with MSVC");
-
- let output = env::var("OUT_DIR").expect("Env var OUT_DIR should have been set by compiler");
- let output_dir = PathBuf::from(output);
-
- let rc_path = output_dir.join("resource.rc");
- write_resource_file(&rc_path, icon_path).unwrap();
-
- let resource_file = PathBuf::from(&output_dir).join("resource.lib");
- compile_with_toolkit_msvc(rc_exe, resource_file, rc_path);
-
- println!("cargo:rustc-link-search=native={}", output_dir.display());
- println!("cargo:rustc-link-lib=dylib=resource");
- }
-
- fn compile_with_toolkit_msvc(rc_exe: PathBuf, output: PathBuf, input: PathBuf) {
- let mut command = process::Command::new(rc_exe);
- let command = command.arg(format!(
- "/I{}",
- env::var("CARGO_MANIFEST_DIR")
- .expect("CARGO_MANIFEST_DIR should have been set by Cargo")
- ));
-
- let status = command
- .arg(format!("/fo{}", output.display()))
- .arg(format!("{}", input.display()))
- .output()
- .unwrap();
-
- println!(
- "RC Output:\n{}\n------",
- String::from_utf8_lossy(&status.stdout)
- );
- println!(
- "RC Error:\n{}\n------",
- String::from_utf8_lossy(&status.stderr)
- );
- }
-
- fn find_rc_exe() -> io::Result<PathBuf> {
- let find_reg_key = process::Command::new("reg")
- .arg("query")
- .arg(r"HKLM\SOFTWARE\Microsoft\Windows Kits\Installed Roots")
- .arg("/reg:32")
- .arg("/v")
- .arg("KitsRoot10")
- .output();
-
- match find_reg_key {
- Err(find_reg_key) => Err(io::Error::new(
- io::ErrorKind::Other,
- format!("Failed to run registry query: {}", find_reg_key),
- )),
- Ok(find_reg_key) => {
- if find_reg_key.status.code().unwrap() != 0 {
- Err(io::Error::new(
- io::ErrorKind::Other,
- "Can not find Windows SDK",
- ))
- } else {
- let lines = String::from_utf8(find_reg_key.stdout)
- .expect("Should be able to parse the output");
- let mut lines: Vec<&str> = lines.lines().collect();
- let mut rc_exe_paths: Vec<PathBuf> = Vec::new();
- lines.reverse();
- for line in lines {
- if line.trim().starts_with("KitsRoot") {
- let kit: String = line
- .chars()
- .skip(line.find("REG_SZ").unwrap() + 6)
- .skip_while(|c| c.is_whitespace())
- .collect();
-
- let p = PathBuf::from(&kit);
- let rc = if cfg!(target_arch = "x86_64") {
- p.join(r"bin\x64\rc.exe")
- } else {
- p.join(r"bin\x86\rc.exe")
- };
-
- if rc.exists() {
- println!("{:?}", rc);
- rc_exe_paths.push(rc.to_owned());
- }
-
- if let Ok(bin) = p.join("bin").read_dir() {
- for e in bin.filter_map(|e| e.ok()) {
- let p = if cfg!(target_arch = "x86_64") {
- e.path().join(r"x64\rc.exe")
- } else {
- e.path().join(r"x86\rc.exe")
- };
- if p.exists() {
- println!("{:?}", p);
- rc_exe_paths.push(p.to_owned());
- }
- }
- }
- }
- }
- if rc_exe_paths.is_empty() {
- return Err(io::Error::new(
- io::ErrorKind::Other,
- "Can not find Windows SDK",
- ));
- }
-
- println!("{:?}", rc_exe_paths);
- let rc_path = rc_exe_paths.pop().unwrap();
-
- let rc_exe = if !rc_path.exists() {
- if cfg!(target_arch = "x86_64") {
- PathBuf::from(rc_path.parent().unwrap()).join(r"bin\x64\rc.exe")
- } else {
- PathBuf::from(rc_path.parent().unwrap()).join(r"bin\x86\rc.exe")
- }
- } else {
- rc_path
- };
-
- println!("Selected RC path: '{}'", rc_exe.display());
- Ok(rc_exe)
- }
- }
- }
- }
-
- fn write_resource_file(rc_path: &Path, icon_path: &str) -> io::Result<()> {
- let mut f = std::fs::File::create(rc_path)?;
- writeln!(f, "{} ICON \"{}\"", 1, icon_path)?;
-
- Ok(())
- }
}