Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
scripts/archive-source.sh | 3 +-
scripts/make-release | 3 +-
subprojects/.gitignore | 1 +
.../packagefiles/winapi-0.3-rs/meson.build | 46 +++++++++++++++++++
subprojects/winapi-0.3-rs.wrap | 10 ++++
5 files changed, 61 insertions(+), 2 deletions(-)
create mode 100644 subprojects/packagefiles/winapi-0.3-rs/meson.build
create mode 100644 subprojects/winapi-0.3-rs.wrap
diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh
index 4caf6078f1ac..99d0d898d010 100755
--- a/scripts/archive-source.sh
+++ b/scripts/archive-source.sh
@@ -32,7 +32,8 @@ subprojects="keycodemapdb libvfio-user berkeley-softfloat-3
libc-0.2-rs proc-macro2-1-rs
proc-macro-error-1-rs proc-macro-error-attr-1-rs quote-1-rs
syn-2-rs thiserror-1-rs thiserror-impl-1-rs unicode-ident-1-rs
- winapi-i686-pc-windows-gnu-0.4-rs winapi-x86_64-pc-windows-gnu-0.4-rs"
+ winapi-0.3-rs winapi-i686-pc-windows-gnu-0.4-rs
+ winapi-x86_64-pc-windows-gnu-0.4-rs"
sub_deinit=""
function cleanup() {
diff --git a/scripts/make-release b/scripts/make-release
index eb8b2446ad3a..c53dfa0a7f4f 100755
--- a/scripts/make-release
+++ b/scripts/make-release
@@ -45,7 +45,8 @@ SUBPROJECTS="libvfio-user keycodemapdb berkeley-softfloat-3
libc-0.2-rs proc-macro2-1-rs
proc-macro-error-1-rs proc-macro-error-attr-1-rs quote-1-rs
syn-2-rs thiserror-1-rs thiserror-impl-1-rs unicode-ident-1-rs
- winapi-i686-pc-windows-gnu-0.4-rs winapi-x86_64-pc-windows-gnu-0.4-rs"
+ winapi-0.3-rs winapi-i686-pc-windows-gnu-0.4-rs
+ winapi-x86_64-pc-windows-gnu-0.4-rs"
src="$1"
version="$2"
diff --git a/subprojects/.gitignore b/subprojects/.gitignore
index ed51f2012e2c..c42adaa928ec 100644
--- a/subprojects/.gitignore
+++ b/subprojects/.gitignore
@@ -22,5 +22,6 @@
/thiserror-1.0.65
/thiserror-impl-1.0.65
/unicode-ident-1.0.12
+/winapi-0.3.9
/winapi-i686-pc-windows-gnu-0.4.0
/winapi-x86_64-pc-windows-gnu-0.4.0
diff --git a/subprojects/packagefiles/winapi-0.3-rs/meson.build b/subprojects/packagefiles/winapi-0.3-rs/meson.build
new file mode 100644
index 000000000000..e2cee17ec2d5
--- /dev/null
+++ b/subprojects/packagefiles/winapi-0.3-rs/meson.build
@@ -0,0 +1,46 @@
+project('winapi-0.3-rs', 'rust',
+ meson_version: '>=1.5.0',
+ version: '0.3.9',
+ license: 'MIT OR Apache-2.0'
+)
+
+if host_machine.cpu_family() == 'x86_64'
+ winapi_arch = 'winapi-x86_64-pc-windows-gnu-0.4-rs'
+elif host_machine.cpu_family() == 'x86'
+ winapi_arch = 'winapi-i686-pc-windows-gnu-0.4-rs'
+else
+ error('Unsupported CPU family for winapi: ' + host_machine.cpu_family())
+endif
+
+subproject(winapi_arch, required: true)
+winapi_arch_dep = dependency(winapi_arch)
+
+winapi_features = [
+ '--cfg', 'feature="errhandlingapi"',
+ '--cfg', 'feature="sysinfoapi"',
+ '--cfg', 'feature="excpt"',
+ '--cfg', 'feature="minwinbase"',
+ '--cfg', 'feature="ntstatus"',
+ '--cfg', 'feature="winnt"',
+ '--cfg', 'feature="basetsd"',
+ '--cfg', 'feature="ktmtypes"',
+ '--cfg', 'feature="minwindef"',
+ '--cfg', 'feature="ntdef"',
+ '--cfg', 'feature="guiddef"',
+ '--cfg', 'feature="vcruntime"'
+]
+
+lib = static_library(
+ 'winapi',
+ 'src/lib.rs',
+ override_options : ['rust_std=2021'],
+ rust_abi : 'rust',
+ rust_args: ['--cap-lints', 'allow'] + winapi_features,
+ dependencies: [winapi_arch_dep]
+)
+
+dep = declare_dependency(
+ link_with: lib,
+)
+
+meson.override_dependency('winapi-0.3-rs', dep)
diff --git a/subprojects/winapi-0.3-rs.wrap b/subprojects/winapi-0.3-rs.wrap
new file mode 100644
index 000000000000..49a5954ec225
--- /dev/null
+++ b/subprojects/winapi-0.3-rs.wrap
@@ -0,0 +1,10 @@
+[wrap-file]
+directory = winapi-0.3.9
+source_url = https://crates.io/api/v1/crates/winapi/0.3.9/download
+source_filename = winapi-0.3.9.tar.gz
+source_hash = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
+#method = cargo
+patch_directory = winapi-0.3-rs
+
+# bump this version number on every change to meson.build or the patches:
+# v2
--
2.34.1