Skip to content

Commit 6ad3303

Browse files
committed
Fix import lib generation under MinGW
1 parent 9cf2de8 commit 6ad3303

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

src/build.rs

+15-12
Original file line numberDiff line numberDiff line change
@@ -147,20 +147,15 @@ fn build_def_file(
147147
// Create the .def output file
148148
let def_file = cargo_util::paths::create(targetdir.join(format!("{name}.def")))?;
149149

150-
write_def_file(name, dll_file, def_file)?;
150+
write_def_file(dll_file, def_file)?;
151151
}
152152

153153
Ok(())
154154
}
155155

156-
fn write_def_file<W: std::io::Write>(
157-
name: &str,
158-
dll_file: object::File,
159-
mut def_file: W,
160-
) -> anyhow::Result<W> {
156+
fn write_def_file<W: std::io::Write>(dll_file: object::File, mut def_file: W) -> anyhow::Result<W> {
161157
use object::read::Object;
162158

163-
writeln!(def_file, "LIBRARY \"{name}.dll\"")?;
164159
writeln!(def_file, "EXPORTS")?;
165160

166161
for export in dll_file.exports()? {
@@ -171,7 +166,7 @@ fn write_def_file<W: std::io::Write>(
171166
Ok(def_file)
172167
}
173168

174-
/// Build import library for windows-gnu
169+
/// Build import library for windows
175170
fn build_implib_file(
176171
ws: &Workspace,
177172
build_targets: &BuildTargets,
@@ -202,22 +197,30 @@ fn build_implib_file(
202197
}
203198
};
204199

205-
let lib_path = build_targets.impl_lib.as_ref().unwrap();
200+
let lib_name = build_targets
201+
.shared_output_file_name()
202+
.unwrap()
203+
.into_string()
204+
.unwrap();
205+
let implib_path = build_targets.impl_lib.as_ref().unwrap();
206206

207-
let lib_file = cargo_util::paths::create(lib_path)?;
208-
write_implib(lib_file, machine_type, flavor, &def_contents)?;
207+
let implib_file = cargo_util::paths::create(implib_path)?;
208+
write_implib(implib_file, lib_name, machine_type, flavor, &def_contents)?;
209209
}
210210

211211
Ok(())
212212
}
213213

214214
fn write_implib<W: std::io::Write + std::io::Seek>(
215215
mut w: W,
216+
lib_name: String,
216217
machine_type: MachineType,
217218
flavor: Flavor,
218219
def_contents: &str,
219220
) -> anyhow::Result<W> {
220-
let module_def = ModuleDef::parse(def_contents, machine_type)?;
221+
let mut module_def = ModuleDef::parse(def_contents, machine_type)?;
222+
module_def.import_name = lib_name;
223+
221224
let import_library = ImportLibrary::from_def(module_def, machine_type, flavor);
222225

223226
import_library.write_to(&mut w)?;

0 commit comments

Comments
 (0)