]> Repositorios git - scryer-prolog.git/commitdiff
build: resolve include_str path during the compilation of libraries.rs instead of...
authorFrancis Fortier <[email protected]>
Thu, 5 Dec 2024 14:10:52 +0000 (09:10 -0500)
committerFrancis Fortier <[email protected]>
Thu, 5 Dec 2024 14:10:52 +0000 (09:10 -0500)
build/main.rs

index a43b9e8650dcfdd4294182997077c62e1c757438..66bcbfccc1d3cb26ad30a103f79a9bbd2e304f5f 100644 (file)
@@ -9,6 +9,7 @@ use std::fs::File;
 use std::io::Write;
 use std::path::Path;
 use std::path::PathBuf;
+use std::path::MAIN_SEPARATOR_STR;
 use std::process::{Command, Stdio};
 
 fn find_prolog_files(path_prefix: &str, current_dir: &Path) -> Vec<(String, PathBuf)> {
@@ -61,33 +62,15 @@ fn main() {
     let constants = find_prolog_files("", &lib_path);
 
     let out_dir = std::env::var("OUT_DIR").unwrap();
-    let out_dir_path: &Path = out_dir.as_ref();
-    let manifest_dir = &std::env::var("CARGO_MANIFEST_DIR").unwrap();
-    let manifest_dir_path: &Path = manifest_dir.as_ref();
-
-    let prefix: PathBuf = if let Ok(diff) = out_dir_path.strip_prefix(manifest_dir_path) {
-        let mut path = PathBuf::from(".");
-        for comp in diff.components() {
-            match comp {
-                std::path::Component::Normal(_) => path.push(".."),
-                std::path::Component::CurDir => (),
-                std::path::Component::Prefix(_)
-                | std::path::Component::RootDir
-                | std::path::Component::ParentDir => {
-                    path = manifest_dir_path.to_path_buf();
-                    break;
-                }
-            }
-        }
-        path
-    } else {
-        manifest_dir_path.to_path_buf()
-    };
 
     writeln!(libraries, "{{").unwrap();
     for (name, lib_path) in constants {
-        let path: PathBuf = prefix.join(lib_path);
-        writeln!(libraries, "m.insert(\"{name}\", include_str!({path:?}));").unwrap();
+        let path = format!("{}{}", MAIN_SEPARATOR_STR, lib_path.display());
+        writeln!(
+            libraries,
+            "m.insert(\"{name}\", include_str!(concat!(env!(\"CARGO_MANIFEST_DIR\"), {path:?})));"
+        )
+        .unwrap();
     }
     writeln!(libraries, "}}").unwrap();