diff --git a/pyo3-build-config/src/impl_.rs b/pyo3-build-config/src/impl_.rs index f0543dc859b..4fa2a49cb1e 100644 --- a/pyo3-build-config/src/impl_.rs +++ b/pyo3-build-config/src/impl_.rs @@ -456,6 +456,28 @@ print("mingw", get_platform().startswith("mingw")) }) } + #[allow(clippy::unnecessary_wraps)] + pub fn fixup_import_libs(&mut self) -> Result<()> { + let target = target_triple_from_env(); + if self.lib_name.is_none() && target.operating_system == OperatingSystem::Windows { + self.lib_name = Some(default_lib_name_windows( + self.version, + self.implementation, + self.abi3, + false, + )); + } + // Auto generate python3.dll import libraries for Windows targets. + #[cfg(feature = "python3-dll-a")] + { + if self.lib_dir.is_none() { + let py_version = if self.abi3 { None } else { Some(self.version) }; + self.lib_dir = self::import_lib::generate_import_lib(&target, py_version)?; + } + } + Ok(()) + } + #[doc(hidden)] /// Serialize the `InterpreterConfig` and print it to the environment for Cargo to pass along /// to dependent packages during build time. diff --git a/pyo3-build-config/src/lib.rs b/pyo3-build-config/src/lib.rs index c227d6a321a..6d20fd8f362 100644 --- a/pyo3-build-config/src/lib.rs +++ b/pyo3-build-config/src/lib.rs @@ -177,7 +177,9 @@ pub mod pyo3_build_script_impl { #[cfg(feature = "resolve-config")] pub fn resolve_interpreter_config() -> Result { if !CONFIG_FILE.is_empty() { - InterpreterConfig::from_reader(Cursor::new(CONFIG_FILE)) + let mut interperter_config = InterpreterConfig::from_reader(Cursor::new(CONFIG_FILE))?; + interperter_config.fixup_import_libs()?; + Ok(interperter_config) } else if let Some(interpreter_config) = make_cross_compile_config()? { // This is a cross compile and need to write the config file. let path = resolve_cross_compile_config_path()