diff options
| -rw-r--r-- | dev_tools/src/verify.rs | 4 | ||||
| -rw-r--r-- | examples/example-combine-pathf-dispatch-tree/build.rs | 2 | ||||
| -rw-r--r-- | examples/example-pathfinder/build.rs | 2 | ||||
| -rw-r--r-- | mingling_core/src/builds.rs | 8 | ||||
| -rw-r--r-- | mingling_core/src/builds/pathf.rs | 43 | ||||
| -rw-r--r-- | mingling_core/src/lib.rs | 50 | ||||
| -rw-r--r-- | mling/build.rs | 2 |
7 files changed, 54 insertions, 57 deletions
diff --git a/dev_tools/src/verify.rs b/dev_tools/src/verify.rs index 834e408..36283d3 100644 --- a/dev_tools/src/verify.rs +++ b/dev_tools/src/verify.rs @@ -278,8 +278,8 @@ pub fn generate_main_rs(block: &CodeBlock) -> String { pub fn generate_build_rs(block: &CodeBlock) -> String { let mut output = String::from("#![allow(dead_code)]\n#![allow(unused)]\n"); - if !block.code.contains("use mingling::builds::*;") { - output.push_str("#[allow(unused_imports)]\nuse mingling::builds::*;\n\n"); + if !block.code.contains("use mingling::build::*;") { + output.push_str("#[allow(unused_imports)]\nuse mingling::build::*;\n\n"); } if block.has_main { diff --git a/examples/example-combine-pathf-dispatch-tree/build.rs b/examples/example-combine-pathf-dispatch-tree/build.rs index 4c66258..d909431 100644 --- a/examples/example-combine-pathf-dispatch-tree/build.rs +++ b/examples/example-combine-pathf-dispatch-tree/build.rs @@ -1,3 +1,3 @@ fn main() { - mingling::pathf::analyze_and_build_type_mapping().unwrap(); + mingling::build::analyze_and_build_type_mapping().unwrap(); } diff --git a/examples/example-pathfinder/build.rs b/examples/example-pathfinder/build.rs index 1dcc2fc..e96f978 100644 --- a/examples/example-pathfinder/build.rs +++ b/examples/example-pathfinder/build.rs @@ -1,4 +1,4 @@ -use mingling::builds::analyze_and_build_type_mapping; +use mingling::build::analyze_and_build_type_mapping; fn main() { // --------- IMPORTANT --------- diff --git a/mingling_core/src/builds.rs b/mingling_core/src/builds.rs index 17dc7d2..3c52907 100644 --- a/mingling_core/src/builds.rs +++ b/mingling_core/src/builds.rs @@ -2,8 +2,6 @@ #[cfg(feature = "comp")] pub mod comp; -#[cfg(all(feature = "builds", feature = "pathf"))] -pub use mingling_pathf::analyze_and_build_type_mapping; - -#[cfg(all(feature = "builds", feature = "pathf"))] -pub use mingling_pathf::analyze_and_build_type_mapping_for; +#[doc(hidden)] +#[cfg(feature = "pathf")] +pub mod pathf; diff --git a/mingling_core/src/builds/pathf.rs b/mingling_core/src/builds/pathf.rs new file mode 100644 index 0000000..d8d4698 --- /dev/null +++ b/mingling_core/src/builds/pathf.rs @@ -0,0 +1,43 @@ +pub use mingling_pathf::config::*; +pub use mingling_pathf::module_pathf::*; +pub use mingling_pathf::pattern_analyzer::*; +pub use mingling_pathf::patterns::*; + +use std::path::Path; + +/// Wraps `analyze_and_build_type_mapping_for` with config derived from +/// the crate's feature flags (e.g., `dispatch_tree`). +pub fn analyze_and_build_type_mapping_for( + crate_dir: &Path, + output_dir: &Path, +) -> Result<(), crate::error::MinglingPathfinderError> { + let config = mingling_pathf::config::PathfinderConfig { + use_dispatch_tree: cfg!(feature = "dispatch_tree"), + }; + mingling_pathf::analyze_and_build_type_mapping_for(crate_dir, output_dir, &config) +} + +/// Wraps `analyze_and_build_type_mapping` (build.rs convenience) with config. +pub fn analyze_and_build_type_mapping() -> Result<(), crate::error::MinglingPathfinderError> { + let config = mingling_pathf::config::PathfinderConfig { + use_dispatch_tree: cfg!(feature = "dispatch_tree"), + }; + let crate_dir = + std::env::current_dir().map_err(crate::error::MinglingPathfinderError::IoError)?; + let crate_name = std::env::var("CARGO_PKG_NAME").map_err(|_| { + crate::error::MinglingPathfinderError::IoError(std::io::Error::new( + std::io::ErrorKind::NotFound, + "CARGO_PKG_NAME not set", + )) + })?; + let out_dir = std::env::var("OUT_DIR").map_err(|_| { + crate::error::MinglingPathfinderError::IoError(std::io::Error::new( + std::io::ErrorKind::NotFound, + "OUT_DIR not set", + )) + })?; + let output_dir = Path::new(&out_dir).join(&crate_name); + mingling_pathf::analyze_and_build_type_mapping_for(&crate_dir, &output_dir, &config)?; + println!("cargo:rerun-if-changed=src/"); + Ok(()) +} diff --git a/mingling_core/src/lib.rs b/mingling_core/src/lib.rs index ac6449f..3c2cf9b 100644 --- a/mingling_core/src/lib.rs +++ b/mingling_core/src/lib.rs @@ -61,6 +61,9 @@ pub mod builds; pub mod build { #[cfg(feature = "comp")] pub use crate::builds::comp::*; + + #[cfg(feature = "pathf")] + pub use crate::builds::pathf::*; } /// Provided for framework developers @@ -94,50 +97,3 @@ pub mod core_res { #[cfg(feature = "repl")] pub use crate::program::repl_exec::res::ResREPL; } - -#[cfg(feature = "pathf")] -pub mod pathf { - pub use mingling_pathf::config::*; - pub use mingling_pathf::module_pathf::*; - pub use mingling_pathf::pattern_analyzer::*; - pub use mingling_pathf::patterns::*; - - use std::path::Path; - - /// Wraps `analyze_and_build_type_mapping_for` with config derived from - /// the crate's feature flags (e.g., `dispatch_tree`). - pub fn analyze_and_build_type_mapping_for( - crate_dir: &Path, - output_dir: &Path, - ) -> Result<(), crate::error::MinglingPathfinderError> { - let config = mingling_pathf::config::PathfinderConfig { - use_dispatch_tree: cfg!(feature = "dispatch_tree"), - }; - mingling_pathf::analyze_and_build_type_mapping_for(crate_dir, output_dir, &config) - } - - /// Wraps `analyze_and_build_type_mapping` (build.rs convenience) with config. - pub fn analyze_and_build_type_mapping() -> Result<(), crate::error::MinglingPathfinderError> { - let config = mingling_pathf::config::PathfinderConfig { - use_dispatch_tree: cfg!(feature = "dispatch_tree"), - }; - let crate_dir = - std::env::current_dir().map_err(crate::error::MinglingPathfinderError::IoError)?; - let crate_name = std::env::var("CARGO_PKG_NAME").map_err(|_| { - crate::error::MinglingPathfinderError::IoError(std::io::Error::new( - std::io::ErrorKind::NotFound, - "CARGO_PKG_NAME not set", - )) - })?; - let out_dir = std::env::var("OUT_DIR").map_err(|_| { - crate::error::MinglingPathfinderError::IoError(std::io::Error::new( - std::io::ErrorKind::NotFound, - "OUT_DIR not set", - )) - })?; - let output_dir = Path::new(&out_dir).join(&crate_name); - mingling_pathf::analyze_and_build_type_mapping_for(&crate_dir, &output_dir, &config)?; - println!("cargo:rerun-if-changed=src/"); - Ok(()) - } -} diff --git a/mling/build.rs b/mling/build.rs index b935c64..9a7b503 100644 --- a/mling/build.rs +++ b/mling/build.rs @@ -1,8 +1,8 @@ use std::path::Path; use std::process::Command; +use mingling::build::analyze_and_build_type_mapping; use mingling::build::build_comp_scripts; -use mingling::builds::analyze_and_build_type_mapping; fn main() { build_version_info(); |
