Skip to content

Commit 1bee319

Browse files
fix: correctly deduce crate target directory
1 parent de6622a commit 1bee319

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

crates/wdk-build/src/cargo_make.rs

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ const CARGO_MAKE_CARGO_PROFILE_ENV_VAR: &str = "CARGO_MAKE_CARGO_PROFILE";
5656
const CARGO_MAKE_CRATE_TARGET_TRIPLE_ENV_VAR: &str = "CARGO_MAKE_CRATE_TARGET_TRIPLE";
5757
const CARGO_MAKE_CRATE_CUSTOM_TRIPLE_TARGET_DIRECTORY_ENV_VAR: &str =
5858
"CARGO_MAKE_CRATE_CUSTOM_TRIPLE_TARGET_DIRECTORY";
59+
const CARGO_MAKE_CRATE_TARGET_DIRECTORY_ENV_VAR: &str = "CARGO_MAKE_CRATE_TARGET_DIRECTORY";
5960
const CARGO_MAKE_RUST_DEFAULT_TOOLCHAIN_ENV_VAR: &str = "CARGO_MAKE_RUST_DEFAULT_TOOLCHAIN";
6061
const CARGO_MAKE_CRATE_NAME_ENV_VAR: &str = "CARGO_MAKE_CRATE_NAME";
6162
const CARGO_MAKE_CRATE_FS_NAME_ENV_VAR: &str = "CARGO_MAKE_CRATE_FS_NAME";
@@ -791,8 +792,9 @@ pub fn copy_to_driver_package_folder<P: AsRef<Path>>(path_to_copy: P) -> Result<
791792
///
792793
/// # Panics
793794
///
794-
/// This function will panic if the `CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY`
795-
/// environment variable is not set
795+
/// This function will panic if neither the
796+
/// `CARGO_MAKE_CRATE_TARGET_DIRECTORY` nor the
797+
/// `CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY` environment variables are set.
796798
pub fn load_rust_driver_makefile() -> Result<(), ConfigError> {
797799
load_wdk_build_makefile(RUST_DRIVER_MAKEFILE_NAME)
798800
}
@@ -815,8 +817,9 @@ pub fn load_rust_driver_makefile() -> Result<(), ConfigError> {
815817
///
816818
/// # Panics
817819
///
818-
/// This function will panic if the `CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY`
819-
/// environment variable is not set
820+
/// This function will panic if neither the
821+
/// `CARGO_MAKE_CRATE_TARGET_DIRECTORY` nor the
822+
/// `CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY` environment variables are set.
820823
pub fn load_rust_driver_sample_makefile() -> Result<(), ConfigError> {
821824
load_wdk_build_makefile(RUST_DRIVER_SAMPLE_MAKEFILE_NAME)
822825
}
@@ -845,8 +848,9 @@ pub fn load_rust_driver_sample_makefile() -> Result<(), ConfigError> {
845848
///
846849
/// # Panics
847850
///
848-
/// This function will panic if the `CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY`
849-
/// environment variable is not set
851+
/// This function will panic if neither the
852+
/// `CARGO_MAKE_CRATE_TARGET_DIRECTORY` nor the
853+
/// `CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY` environment variables are set.
850854
#[instrument(level = "trace")]
851855
fn load_wdk_build_makefile<S: AsRef<str> + AsRef<Utf8Path> + AsRef<Path> + fmt::Debug>(
852856
makefile_name: S,
@@ -882,14 +886,17 @@ fn load_wdk_build_makefile<S: AsRef<str> + AsRef<Utf8Path> + AsRef<Path> + fmt::
882886
.join(&makefile_name)
883887
.into_std_path_buf();
884888

885-
let cargo_make_workspace_working_directory =
886-
env::var(CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY_ENV_VAR).unwrap_or_else(|_| {
887-
panic!("{CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY_ENV_VAR} should be set by cargo-make")
888-
});
889-
890-
let destination_path = Path::new(&cargo_make_workspace_working_directory)
891-
.join("target")
892-
.join(&makefile_name);
889+
let destination_path = env::var(CARGO_MAKE_CRATE_TARGET_DIRECTORY_ENV_VAR).map_or_else(
890+
|_| {
891+
let cargo_make_workspace_working_directory =
892+
env::var(CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY_ENV_VAR).unwrap_or_else(|_| {
893+
panic!("Either {CARGO_MAKE_CRATE_TARGET_DIRECTORY_ENV_VAR} or {CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY_ENV_VAR} should be set by cargo-make")
894+
});
895+
Path::new(&cargo_make_workspace_working_directory)
896+
.join("target")
897+
},
898+
PathBuf::from,
899+
).join(&makefile_name);
893900

894901
// Only create a new symlink if the existing one is not already pointing to the
895902
// correct file

0 commit comments

Comments
 (0)