From b83a05f02ac26ff33d1e2573ed17e5f78177bdaf Mon Sep 17 00:00:00 2001 From: Melvin Wang Date: Sun, 12 Jan 2025 14:49:54 -0800 Subject: [PATCH] fix: add missing arm64rt library to linker flags for arm64 kernel-mode builds --- crates/wdk-build/src/lib.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/crates/wdk-build/src/lib.rs b/crates/wdk-build/src/lib.rs index db2e8aa8..acfe4c8e 100644 --- a/crates/wdk-build/src/lib.rs +++ b/crates/wdk-build/src/lib.rs @@ -698,6 +698,12 @@ impl Config { println!("cargo::rustc-link-lib=static=hal"); println!("cargo::rustc-link-lib=static=wmilib"); + // Emit ARM64-specific libraries to link to derived from + // WindowsDriver.arm64.props + if self.cpu_architecture == CPUArchitecture::ARM64 { + println!("cargo::rustc-link-lib=static=arm64rt"); + } + // Linker arguments derived from WindowsDriver.KernelMode.props in Ni(22H2) WDK println!("cargo::rustc-cdylib-link-arg=/DRIVER"); println!("cargo::rustc-cdylib-link-arg=/NODEFAULTLIB"); @@ -717,6 +723,12 @@ impl Config { println!("cargo::rustc-link-lib=static=WdfLdr"); println!("cargo::rustc-link-lib=static=WdfDriverEntry"); + // Emit ARM64-specific libraries to link to derived from + // WindowsDriver.arm64.props + if self.cpu_architecture == CPUArchitecture::ARM64 { + println!("cargo::rustc-link-lib=static=arm64rt"); + } + // Linker arguments derived from WindowsDriver.KernelMode.props in Ni(22H2) WDK println!("cargo::rustc-cdylib-link-arg=/DRIVER"); println!("cargo::rustc-cdylib-link-arg=/NODEFAULTLIB");