From dd48537ad7284971c6276e60cc1a9e8b147937fb Mon Sep 17 00:00:00 2001 From: Daniel Paoliello Date: Mon, 3 Jun 2024 10:07:45 -0700 Subject: [PATCH] Add support for Windows ARM64 --- .cargo/config.toml | 3 + .gitignore | 1 + BuildInstructions.md | 26 ++++++ CHANGELOG.md | 3 + Cargo.lock | 1 + build-windows-modules.sh | 1 + build.sh | 46 +++++++--- ci/buildserver-build.sh | 5 +- dist-assets/binaries | 2 +- dist-assets/windows/installer.nsh | 10 +-- gui/tasks/distribution.js | 73 ++++++++++++--- mullvad-daemon/src/exception_logging/win.rs | 59 +++++++++++- talpid-core/build.rs | 12 ++- talpid-openvpn-plugin/Cargo.toml | 8 ++ test/scripts/test-utils.sh | 2 +- windows/driverlogic/driverlogic.sln | 10 +++ windows/driverlogic/driverlogic.vcxproj | 79 ++++++++++++++++ windows/libshared/libshared.sln | 10 +++ .../libshared/src/libshared/libshared.vcxproj | 81 +++++++++++++++++ windows/libwfp | 2 +- windows/windows-libraries | 2 +- windows/winfw/extras.sln | 18 ++++ windows/winfw/src/extras/cli/cli.vcxproj | 79 ++++++++++++++++ windows/winfw/src/winfw/winfw.vcxproj | 89 +++++++++++++++++++ windows/winfw/winfw.sln | 14 +++ 25 files changed, 593 insertions(+), 43 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index ba321231fc56..b58e89798b5a 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -3,3 +3,6 @@ rustflags = ["-Ctarget-feature=+crt-static"] [target.i686-pc-windows-msvc] rustflags = ["-Ctarget-feature=+crt-static"] + +[target.aarch64-pc-windows-msvc] +rustflags = ["-Ctarget-feature=+crt-static"] diff --git a/.gitignore b/.gitignore index 7b5284edfebe..e4ec60fcf0b3 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,7 @@ /dist-assets/openvpn.exe /dist-assets/aarch64-apple-darwin/ /dist-assets/x86_64-apple-darwin/ +/dist-assets/aarch64-pc-windows-msvc/ /windows/version.h /windows/**/bin/ /windows/**/*.user diff --git a/BuildInstructions.md b/BuildInstructions.md index 186ec1081019..0ba1bf5165f6 100644 --- a/BuildInstructions.md +++ b/BuildInstructions.md @@ -110,6 +110,21 @@ The host has to have the following installed: [Git for Windows]: https://git-scm.com/download/win +### Experimental: Cross-compiling for ARM64 + +By default, the app will build for the host platform. It is also possible to cross-compile the app +for ARM64 on x64. This requires: + +- The ARM64 MSVC tools added to Visual Studio. + +- `clang` (either directly from llvm.org or as part of Visual Studio) on the `PATH`. + +- The `AArch64` target added to Rust: + +```bash +rustup target add aarch64-pc-windows-msvc +``` + ## macOS The host has to have the following installed: @@ -146,6 +161,17 @@ variable to `aarch64-unknown-linux-gnu`: TARGETS="aarch64-unknown-linux-gnu" ./build.sh ``` +### Experimental: Windows + +ARM64 Windows is not yet fully working or supported. + +To cross-compile for ARM64 rather than the current architecture, set the `TARGETS` environment +variable to `aarch64-pc-windows-msvc`: + +```bash +TARGETS="aarch64-pc-windows-msvc" ./build.sh +``` + ## Notes on building on ARM64 Linux hosts Due to inability to build the management interface proto files on ARM64 (see diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e9914fec26c..fa4738297cbe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,9 @@ Line wrap the file at 100 chars. Th - Add DAITA (Defence against AI-guided Traffic Analysis) setting for Linux and macOS. - Add `--json` flag to `mullvad status` CLI. +#### Windows +- Add experimental support for Windows ARM64. + ### Changed - Ignore obfuscation protocol constraints when the obfuscation mode is set to auto. diff --git a/Cargo.lock b/Cargo.lock index f7cbefd713ae..b45747d08ea4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3988,6 +3988,7 @@ dependencies = [ "tonic", "tonic-build", "tower", + "winapi", "windows-sys 0.52.0", "winres", ] diff --git a/build-windows-modules.sh b/build-windows-modules.sh index 82070a95479c..d97dc3066e9f 100755 --- a/build-windows-modules.sh +++ b/build-windows-modules.sh @@ -68,6 +68,7 @@ function get_solution_output_path { case $build_target in "x86") echo "$solution_root/bin/Win32-$build_mode";; "x64") echo "$solution_root/bin/x64-$build_mode";; + "ARM64") echo "$solution_root/bin/ARM64-$build_mode";; *) echo "Unknown build target: $build_target" exit 1 diff --git a/build.sh b/build.sh index a3cbb50e3154..4203865a23fe 100755 --- a/build.sh +++ b/build.sh @@ -285,21 +285,43 @@ function build { sign_win "$destination" fi done + + if [[ "$current_target" == "aarch64-pc-windows-msvc" ]]; then + # TODO: We still ship x64 OpenVPN with ARM64, so we need an x64 talpid-openvpn-plugin + # to include in the package. + log_info "Workaround: building x64 talpid-openvpn-plugin" + cargo build --target x86_64-pc-windows-msvc "${CARGO_ARGS[@]}" -p talpid-openvpn-plugin --lib + cp "$CARGO_TARGET_DIR/x86_64-pc-windows-msvc/$RUST_BUILD_MODE/talpid_openvpn_plugin.dll" "dist-assets/aarch64-pc-windows-msvc/talpid_openvpn_plugin.dll" + if [[ "$SIGN" == "true" ]]; then + sign_win "dist-assets/talpid_openvpn_plugin.dll" + fi + fi } if [[ "$(uname -s)" == "MINGW"* ]]; then - log_header "Building C++ code in $CPP_BUILD_MODE mode" - CPP_BUILD_MODES=$CPP_BUILD_MODE IS_RELEASE=$IS_RELEASE ./build-windows-modules.sh - - if [[ "$SIGN" == "true" ]]; then - CPP_BINARIES=( - "windows/winfw/bin/x64-$CPP_BUILD_MODE/winfw.dll" - "windows/driverlogic/bin/x64-$CPP_BUILD_MODE/driverlogic.exe" - # The nsis plugin is always built in 32 bit release mode - windows/nsis-plugins/bin/Win32-Release/*.dll - ) - sign_win "${CPP_BINARIES[@]}" - fi + for t in "${TARGETS[@]:-"x86_64-pc-windows-msvc"}"; do + case $t in + x86_64-pc-windows-msvc) CPP_BUILD_TARGET=x64;; + aarch64-pc-windows-msvc) CPP_BUILD_TARGET=ARM64;; + *) + log_error "Unknown Windows target: $t" + exit 1 + ;; + esac + + log_header "Building C++ code in $CPP_BUILD_MODE mode for $CPP_BUILD_TARGET" + CPP_BUILD_MODES=$CPP_BUILD_MODE CPP_BUILD_TARGETS=$CPP_BUILD_TARGET IS_RELEASE=$IS_RELEASE ./build-windows-modules.sh + + if [[ "$SIGN" == "true" ]]; then + CPP_BINARIES=( + "windows/winfw/bin/$CPP_BUILD_TARGET-$CPP_BUILD_MODE/winfw.dll" + "windows/driverlogic/bin/$CPP_BUILD_TARGET-$CPP_BUILD_MODE/driverlogic.exe" + # The nsis plugin is always built in 32 bit release mode + windows/nsis-plugins/bin/Win32-Release/*.dll + ) + sign_win "${CPP_BINARIES[@]}" + fi + done fi for t in "${TARGETS[@]:-""}"; do diff --git a/ci/buildserver-build.sh b/ci/buildserver-build.sh index 09941da9bfb2..584e0dd2ba0f 100755 --- a/ci/buildserver-build.sh +++ b/ci/buildserver-build.sh @@ -204,6 +204,9 @@ function build_ref { case "$(uname -s)" in MINGW*|MSYS_NT*) + echo "Building ARM64 installers" + target=aarch64-pc-windows-msvc artifact_dir=$artifact_dir build "${build_args[@]}" || return 1 + echo "Packaging all PDB files..." find ./windows/ \ ./target/release/mullvad-daemon.pdb \ @@ -222,7 +225,7 @@ function build_ref { # Pipes all matching names and their new name to mv pushd "$artifact_dir" for original_file in MullvadVPN-*-dev-*{.deb,.rpm,.exe,.pkg}; do - new_file=$(echo "$original_file" | sed -nE "s/^(MullvadVPN-.*-dev-.*)(_amd64\.deb|_x86_64\.rpm|_arm64\.deb|_aarch64\.rpm|\.exe|\.pkg)$/\1$version_suffix\2/p") + new_file=$(echo "$original_file" | sed -nE "s/^(MullvadVPN-.*-dev-.*)(_amd64\.deb|_x86_64\.rpm|_arm64\.deb|_aarch64\.rpm|_x64\.exe|_arm64\.exe|\.pkg)$/\1$version_suffix\2/p") mv "$original_file" "$new_file" done popd diff --git a/dist-assets/binaries b/dist-assets/binaries index b0c37cecd9b6..049d5d3bc0c8 160000 --- a/dist-assets/binaries +++ b/dist-assets/binaries @@ -1 +1 @@ -Subproject commit b0c37cecd9b671d2480a7dc9636da93d76e2b14c +Subproject commit 049d5d3bc0c86c29c20f2073460186a83c1d7094 diff --git a/dist-assets/windows/installer.nsh b/dist-assets/windows/installer.nsh index 440c9a9e96e8..1d146563b406 100644 --- a/dist-assets/windows/installer.nsh +++ b/dist-assets/windows/installer.nsh @@ -86,7 +86,7 @@ !macro ExtractDriverlogic SetOutPath "$PLUGINSDIR" - File "${BUILD_RESOURCES_DIR}\..\windows\driverlogic\bin\x64-$%CPP_BUILD_MODE%\driverlogic.exe" + File "${BUILD_RESOURCES_DIR}\..\windows\driverlogic\bin\$%CPP_BUILD_TARGET%-$%CPP_BUILD_MODE%\driverlogic.exe" !macroend @@ -100,8 +100,8 @@ !macro ExtractWireGuard SetOutPath "$PLUGINSDIR" - File "${BUILD_RESOURCES_DIR}\binaries\x86_64-pc-windows-msvc\wintun\wintun.dll" - File "${BUILD_RESOURCES_DIR}\binaries\x86_64-pc-windows-msvc\wireguard-nt\mullvad-wireguard.dll" + File "${BUILD_RESOURCES_DIR}\binaries\$%TARGET_TRIPLE%\wintun\wintun.dll" + File "${BUILD_RESOURCES_DIR}\binaries\$%TARGET_TRIPLE%\wireguard-nt\mullvad-wireguard.dll" !macroend @@ -115,8 +115,8 @@ !macro ExtractMullvadSetup SetOutPath "$PLUGINSDIR" - File "${BUILD_RESOURCES_DIR}\mullvad-setup.exe" - File "${BUILD_RESOURCES_DIR}\..\windows\winfw\bin\x64-$%CPP_BUILD_MODE%\winfw.dll" + File "${BUILD_RESOURCES_DIR}\$%SETUP_SUBDIR%\mullvad-setup.exe" + File "${BUILD_RESOURCES_DIR}\..\windows\winfw\bin\$%CPP_BUILD_TARGET%-$%CPP_BUILD_MODE%\winfw.dll" !macroend diff --git a/gui/tasks/distribution.js b/gui/tasks/distribution.js index 3f8773ed35ce..a7f7c29d6d75 100644 --- a/gui/tasks/distribution.js +++ b/gui/tasks/distribution.js @@ -132,26 +132,30 @@ const config = { target: [ { target: 'nsis', - arch: ['x64'], + arch: getWindowsTargetArch(), }, ], - artifactName: 'MullvadVPN-${version}.${ext}', + artifactName: 'MullvadVPN-${version}_${arch}.${ext}', publisherName: 'Mullvad VPN AB', extraResources: [ - { from: distAssets('mullvad.exe'), to: '.' }, - { from: distAssets('mullvad-problem-report.exe'), to: '.' }, - { from: distAssets('mullvad-daemon.exe'), to: '.' }, - { from: distAssets('talpid_openvpn_plugin.dll'), to: '.' }, + { from: distAssets(path.join(getWindowsDistSubdir(), 'mullvad.exe')), to: '.' }, + { from: distAssets(path.join(getWindowsDistSubdir(), 'mullvad-problem-report.exe')), to: '.' }, + { from: distAssets(path.join(getWindowsDistSubdir(), 'mullvad-daemon.exe')), to: '.' }, + { from: distAssets(path.join(getWindowsDistSubdir(), 'talpid_openvpn_plugin.dll')), to: '.' }, { - from: root(path.join('windows', 'winfw', 'bin', 'x64-${env.CPP_BUILD_MODE}', 'winfw.dll')), + from: root(path.join('windows', 'winfw', 'bin', getWindowsTargetArch() + '-${env.CPP_BUILD_MODE}', 'winfw.dll')), to: '.', }, + // TODO: OpenVPN does not have an ARM64 build yet. { from: distAssets('binaries/x86_64-pc-windows-msvc/openvpn.exe'), to: '.' }, - { from: distAssets('binaries/x86_64-pc-windows-msvc/apisocks5.exe'), to: '.' }, - { from: distAssets('binaries/x86_64-pc-windows-msvc/wintun/wintun.dll'), to: '.' }, - { from: distAssets('binaries/x86_64-pc-windows-msvc/split-tunnel/mullvad-split-tunnel.sys'), to: '.' }, + { from: distAssets(path.join('binaries', getWindowsTargetSubdir(), 'apisocks5.exe')), to: '.' }, + { from: distAssets(path.join('binaries', getWindowsTargetSubdir(), 'wintun/wintun.dll')), to: '.' }, + { + from: distAssets(path.join('binaries', getWindowsTargetSubdir(), 'split-tunnel/mullvad-split-tunnel.sys')), + to: '.' + }, { - from: distAssets('binaries/x86_64-pc-windows-msvc/wireguard-nt/mullvad-wireguard.dll'), + from: distAssets(path.join('binaries', getWindowsTargetSubdir(), 'wireguard-nt/mullvad-wireguard.dll')), to: '.', }, { from: distAssets('maybenot_machines'), to: '.' }, @@ -250,6 +254,19 @@ function packWin() { asarUnpack: ['build/assets/images/menubar-icons/win32/lock-*.ico'], beforeBuild: (options) => { process.env.CPP_BUILD_MODE = release ? 'Release' : 'Debug'; + process.env.CPP_BUILD_TARGET = options.arch; + switch (options.arch) { + case 'x64': + process.env.TARGET_TRIPLE = 'x86_64-pc-windows-msvc'; + process.env.SETUP_SUBDIR = '.'; + break; + case 'arm64': + process.env.TARGET_TRIPLE = 'aarch64-pc-windows-msvc'; + process.env.SETUP_SUBDIR = 'aarch64-pc-windows-msvc'; + break; + default: + throw new Error(`Invalid or unknown target (only one may be specified)`); + } return true; }, afterAllArtifactBuild: (buildResult) => { @@ -392,8 +409,38 @@ function root(relativePath) { return path.join(path.resolve(__dirname, '../../'), relativePath); } +function getWindowsDistSubdir() { + if (targets === 'aarch64-pc-windows-msvc') { + return targets; + } else { + return ''; + } +} + +function getWindowsTargetArch() { + if (targets && process.platform === 'win32') { + if (targets === 'aarch64-pc-windows-msvc') { + return 'arm64'; + } + throw new Error(`Invalid or unknown target (only one may be specified)`); + } + // Use host architecture (we assume this is x64 since building on Arm64 isn't supported). + return 'x64'; +} + +function getWindowsTargetSubdir() { + if (targets && process.platform === 'win32') { + if (targets === 'aarch64-pc-windows-msvc') { + return targets; + } + throw new Error(`Invalid or unknown target (only one may be specified)`); + } + // Use host architecture (we assume this is x64 since building on Arm64 isn't supported). + return 'x86_64-pc-windows-msvc'; +} + function getLinuxTargetArch() { - if (targets) { + if (targets && process.platform === 'linux') { if (targets === 'aarch64-unknown-linux-gnu') { return 'arm64'; } @@ -404,7 +451,7 @@ function getLinuxTargetArch() { } function getLinuxTargetSubdir() { - if (targets) { + if (targets && process.platform === 'linux') { if (targets === 'aarch64-unknown-linux-gnu') { return targets; } diff --git a/mullvad-daemon/src/exception_logging/win.rs b/mullvad-daemon/src/exception_logging/win.rs index b33a188a3297..485b921fc6e2 100644 --- a/mullvad-daemon/src/exception_logging/win.rs +++ b/mullvad-daemon/src/exception_logging/win.rs @@ -10,10 +10,7 @@ use std::{ }; use talpid_types::ErrorExt; use talpid_windows::process::{ModuleEntry, ProcessSnapshot}; -use winapi::{ - um::winnt::{CONTEXT_CONTROL, CONTEXT_INTEGER, CONTEXT_SEGMENTS}, - vc::excpt::EXCEPTION_EXECUTE_HANDLER, -}; +use winapi::vc::excpt::EXCEPTION_EXECUTE_HANDLER; use windows_sys::Win32::{ Foundation::{BOOL, HANDLE}, System::{ @@ -219,7 +216,61 @@ unsafe extern "system" fn logging_exception_filter(info: *const EXCEPTION_POINTE EXCEPTION_EXECUTE_HANDLER } +#[cfg(target_arch = "aarch64")] +fn get_context_info(context: &CONTEXT) -> String { + use winapi::um::winnt::{CONTEXT_CONTROL, CONTEXT_FLOATING_POINT, CONTEXT_INTEGER}; + + let mut context_str = "Context:\n".to_string(); + + if context.ContextFlags & CONTEXT_CONTROL != 0 { + writeln!( + &mut context_str, + "\n\tFp: {:#x?}\n \ + \tLr: {:#x?}\n \ + \tSp: {:#x?}\n \ + \tPc: {:#x?}\n \ + \tCpsr: {:#x?}", + unsafe { context.Anonymous.Anonymous.Fp }, + unsafe { context.Anonymous.Anonymous.Lr }, + context.Sp, + context.Pc, + context.Cpsr + ) + .unwrap(); + } + + if context.ContextFlags & CONTEXT_INTEGER != 0 { + context_str.push('\n'); + for x in 0..=28 { + writeln!(&mut context_str, "\tX{}: {:#x?}", x, unsafe { + context.Anonymous.X[x] + }) + .unwrap(); + } + } + if context.ContextFlags & CONTEXT_FLOATING_POINT != 0 { + writeln!( + &mut context_str, + "\n\tFpcr: {:#x?}\n \ + \tFpsr: {:#x?}", + context.Fpcr, context.Fpsr + ) + .unwrap(); + for q in 0..=31 { + writeln!(&mut context_str, "\tQ{}: {:#x?}", q, unsafe { + context.V[q].B + }) + .unwrap(); + } + } + + context_str +} + +#[cfg(any(target_arch = "x86", target_arch = "x86_64"))] fn get_context_info(context: &CONTEXT) -> String { + use winapi::um::winnt::{CONTEXT_CONTROL, CONTEXT_INTEGER, CONTEXT_SEGMENTS}; + let mut context_str = "Context:\n".to_string(); if context.ContextFlags & CONTEXT_CONTROL != 0 { diff --git a/talpid-core/build.rs b/talpid-core/build.rs index 0f3d5bd10ca9..65f7a9125e55 100644 --- a/talpid-core/build.rs +++ b/talpid-core/build.rs @@ -8,13 +8,17 @@ mod win { manifest_dir().join(build_dir).join(target_platform_dir()) } - fn target_platform_dir() -> PathBuf { - let target = env::var("TARGET").expect("TARGET env var not set"); + pub fn target() -> String { + env::var("TARGET").expect("TARGET env var not set") + } + fn target_platform_dir() -> PathBuf { + let target = target(); let target_dir = match target.as_str() { "i686-pc-windows-msvc" => format!("Win32-{}", get_build_mode()), "x86_64-pc-windows-msvc" => format!("x64-{}", get_build_mode()), - _ => panic!("uncrecognized target: {}", target), + "aarch64-pc-windows-msvc" => format!("ARM64-{}", get_build_mode()), + _ => panic!("unrecognized target: {}", target), }; target_dir.into() } @@ -52,7 +56,7 @@ fn main() { const WINFW_DIR_VAR: &str = "WINFW_LIB_DIR"; declare_library(WINFW_DIR_VAR, WINFW_BUILD_DIR, "winfw"); - let lib_dir = manifest_dir().join("../build/lib/x86_64-pc-windows-msvc"); + let lib_dir = manifest_dir().join("../build/lib").join(target()); println!("cargo::rustc-link-search={}", &lib_dir.display()); } diff --git a/talpid-openvpn-plugin/Cargo.toml b/talpid-openvpn-plugin/Cargo.toml index 972190f03cef..6c397ed6c441 100644 --- a/talpid-openvpn-plugin/Cargo.toml +++ b/talpid-openvpn-plugin/Cargo.toml @@ -41,9 +41,17 @@ features = [ "Win32_System_SystemServices", ] +[target.'cfg(windows)'.dependencies] +# parity-tokio-ipc has an implicit dependency on winapi's winerror feature. +winapi = { version = "0.3", features = ["winerror"] } + [package.metadata.winres] ProductName = "Mullvad VPN" CompanyName = "Mullvad VPN AB" LegalCopyright = "(c) 2024 Mullvad VPN AB" InternalName = "talpid-openvpn-plugin" OriginalFilename = "talpid_openvpn_plugin.dll" + +# TODO: Remove this once ARM64 Windows no longer requires x64 talpid_openvpn_plugin +[features] +api-override = [] diff --git a/test/scripts/test-utils.sh b/test/scripts/test-utils.sh index c73c79e52a55..a51f0c3043e0 100755 --- a/test/scripts/test-utils.sh +++ b/test/scripts/test-utils.sh @@ -110,7 +110,7 @@ function get_app_filename { echo "MullvadVPN-${version}_x86_64.rpm" ;; windows*) - echo "MullvadVPN-${version}.exe" + echo "MullvadVPN-${version}_x64.exe" ;; macos*) echo "MullvadVPN-${version}.pkg" diff --git a/windows/driverlogic/driverlogic.sln b/windows/driverlogic/driverlogic.sln index 7dc44fecd930..f6a68e84212a 100644 --- a/windows/driverlogic/driverlogic.sln +++ b/windows/driverlogic/driverlogic.sln @@ -12,16 +12,26 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcommon", "..\windows-lib EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM64 = Debug|ARM64 Debug|x64 = Debug|x64 + Release|ARM64 = Release|ARM64 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7E04821E-A6EE-4481-8204-6D127E6A8E5E}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {7E04821E-A6EE-4481-8204-6D127E6A8E5E}.Debug|ARM64.Build.0 = Debug|ARM64 {7E04821E-A6EE-4481-8204-6D127E6A8E5E}.Debug|x64.ActiveCfg = Debug|x64 {7E04821E-A6EE-4481-8204-6D127E6A8E5E}.Debug|x64.Build.0 = Debug|x64 + {7E04821E-A6EE-4481-8204-6D127E6A8E5E}.Release|ARM64.ActiveCfg = Release|ARM64 + {7E04821E-A6EE-4481-8204-6D127E6A8E5E}.Release|ARM64.Build.0 = Release|ARM64 {7E04821E-A6EE-4481-8204-6D127E6A8E5E}.Release|x64.ActiveCfg = Release|x64 {7E04821E-A6EE-4481-8204-6D127E6A8E5E}.Release|x64.Build.0 = Release|x64 + {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|ARM64.Build.0 = Debug|ARM64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|x64.ActiveCfg = Debug|x64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|x64.Build.0 = Debug|x64 + {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|ARM64.ActiveCfg = Release|ARM64 + {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|ARM64.Build.0 = Release|ARM64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x64.ActiveCfg = Release|x64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x64.Build.0 = Release|x64 EndGlobalSection diff --git a/windows/driverlogic/driverlogic.vcxproj b/windows/driverlogic/driverlogic.vcxproj index c68d0568ab82..3284e729ebf1 100644 --- a/windows/driverlogic/driverlogic.vcxproj +++ b/windows/driverlogic/driverlogic.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug x64 + + Release + ARM64 + Release x64 @@ -24,6 +32,12 @@ v143 Unicode + + Application + true + v143 + Unicode + Application false @@ -31,6 +45,13 @@ true Unicode + + Application + false + v143 + true + Unicode + @@ -39,20 +60,36 @@ + + + + + + true $(SolutionDir)bin\$(Platform)-$(Configuration)\ $(SolutionDir)bin\temp\$(Platform)-$(Configuration)\$(ProjectName)\ + + true + $(SolutionDir)bin\$(Platform)-$(Configuration)\ + $(SolutionDir)bin\temp\$(Platform)-$(Configuration)\$(ProjectName)\ + false $(SolutionDir)bin\$(Platform)-$(Configuration)\ $(SolutionDir)bin\temp\$(Platform)-$(Configuration)\$(ProjectName)\ + + false + $(SolutionDir)bin\$(Platform)-$(Configuration)\ + $(SolutionDir)bin\temp\$(Platform)-$(Configuration)\$(ProjectName)\ + Create @@ -72,6 +109,25 @@ $(SolutionDir)bin\$(Platform)-$(Configuration)\ + + + Create + Level4 + Disabled + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(ProjectDir)../../dist-assets/binaries/x86_64-pc-windows-msvc/;$(ProjectDir)../windows-libraries/src/;$(ProjectDir)../ + stdcpp20 + MultiThreadedDebug + + + Console + true + newdev.lib;setupapi.lib;libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)bin\$(Platform)-$(Configuration)\ + + Create @@ -95,6 +151,29 @@ $(SolutionDir)bin\$(Platform)-$(Configuration)\ + + + Create + Level4 + MaxSpeed + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + $(ProjectDir)../../dist-assets/binaries/x86_64-pc-windows-msvc/;$(ProjectDir)../windows-libraries/src/;$(ProjectDir)../ + MultiThreaded + + + Console + true + true + true + newdev.lib;setupapi.lib;libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)bin\$(Platform)-$(Configuration)\ + + diff --git a/windows/libshared/libshared.sln b/windows/libshared/libshared.sln index 7892bbf0859c..f9650a1a1deb 100644 --- a/windows/libshared/libshared.sln +++ b/windows/libshared/libshared.sln @@ -11,28 +11,38 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcommon", "..\windows-lib EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM64 = Debug|ARM64 Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 + Release|ARM64 = Release|ARM64 Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|ARM64.Build.0 = Debug|ARM64 {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x64.ActiveCfg = Debug|x64 {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x64.Build.0 = Debug|x64 {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x64.Deploy.0 = Debug|x64 {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x86.ActiveCfg = Debug|Win32 {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x86.Build.0 = Debug|Win32 {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x86.Deploy.0 = Debug|Win32 + {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|ARM64.ActiveCfg = Release|ARM64 + {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|ARM64.Build.0 = Release|ARM64 {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x64.ActiveCfg = Release|x64 {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x64.Build.0 = Release|x64 {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x64.Deploy.0 = Release|x64 {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x86.ActiveCfg = Release|Win32 {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x86.Build.0 = Release|Win32 {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x86.Deploy.0 = Release|Win32 + {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|ARM64.Build.0 = Debug|ARM64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|x64.ActiveCfg = Debug|x64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|x64.Build.0 = Debug|x64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|x86.ActiveCfg = Debug|Win32 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|x86.Build.0 = Debug|Win32 + {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|ARM64.ActiveCfg = Release|ARM64 + {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|ARM64.Build.0 = Release|ARM64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x64.ActiveCfg = Release|x64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x64.Build.0 = Release|x64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x86.ActiveCfg = Release|Win32 diff --git a/windows/libshared/src/libshared/libshared.vcxproj b/windows/libshared/src/libshared/libshared.vcxproj index edd3ca210777..356a718cfe8d 100644 --- a/windows/libshared/src/libshared/libshared.vcxproj +++ b/windows/libshared/src/libshared/libshared.vcxproj @@ -1,10 +1,18 @@  + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -46,6 +54,12 @@ v143 Unicode + + StaticLibrary + true + v143 + Unicode + StaticLibrary false @@ -53,6 +67,13 @@ true Unicode + + StaticLibrary + false + v143 + true + Unicode + @@ -67,15 +88,26 @@ + + + + + + true $(SolutionDir)bin\$(Platform)-$(Configuration)\ $(SolutionDir)bin\temp\$(Platform)-$(Configuration)\$(ProjectName)\ + + true + $(SolutionDir)bin\$(Platform)-$(Configuration)\ + $(SolutionDir)bin\temp\$(Platform)-$(Configuration)\$(ProjectName)\ + true $(SolutionDir)bin\$(Platform)-$(Configuration)\ @@ -91,6 +123,11 @@ $(SolutionDir)bin\$(Platform)-$(Configuration)\ $(SolutionDir)bin\temp\$(Platform)-$(Configuration)\$(ProjectName)\ + + false + $(SolutionDir)bin\$(Platform)-$(Configuration)\ + $(SolutionDir)bin\temp\$(Platform)-$(Configuration)\$(ProjectName)\ + Use @@ -110,6 +147,25 @@ kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + Use + Level4 + Disabled + true + _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + $(ProjectDir)../;$(ProjectDir)../../../windows-libraries/src/ + MultiThreadedDebug + stdcpp20 + + + Windows + true + $(SolutionDir)bin\$(Platform)-$(Configuration)\ + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + Use @@ -175,6 +231,29 @@ kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + Use + Level4 + MaxSpeed + true + true + true + NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + $(ProjectDir)../;$(ProjectDir)../../../windows-libraries/src/ + MultiThreaded + stdcpp20 + + + Windows + true + true + true + $(SolutionDir)bin\$(Platform)-$(Configuration)\ + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + @@ -191,7 +270,9 @@ Create Create Create + Create Create + Create diff --git a/windows/libwfp b/windows/libwfp index 3ea5ca1163a0..64ad7063efa9 160000 --- a/windows/libwfp +++ b/windows/libwfp @@ -1 +1 @@ -Subproject commit 3ea5ca1163a005dd9dbe51167e9a1176574cc348 +Subproject commit 64ad7063efa93f35101cc258002be0a9906ddd3a diff --git a/windows/windows-libraries b/windows/windows-libraries index f5114c49bd98..2a95aa81a2f0 160000 --- a/windows/windows-libraries +++ b/windows/windows-libraries @@ -1 +1 @@ -Subproject commit f5114c49bd9845533f193b57d55f27a5fbb47ef0 +Subproject commit 2a95aa81a2f06f90de79243b99de6395213d0979 diff --git a/windows/winfw/extras.sln b/windows/winfw/extras.sln index 09fa5842f31f..c67cc9ff18a0 100644 --- a/windows/winfw/extras.sln +++ b/windows/winfw/extras.sln @@ -25,40 +25,58 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winfw", "src\winfw\winfw.vc EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM64 = Debug|ARM64 Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 + Release|ARM64 = Release|ARM64 Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {242A58CA-8E54-4170-A8C5-6F91CC4F7DB2}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {242A58CA-8E54-4170-A8C5-6F91CC4F7DB2}.Debug|ARM64.Build.0 = Debug|ARM64 {242A58CA-8E54-4170-A8C5-6F91CC4F7DB2}.Debug|x64.ActiveCfg = Debug|x64 {242A58CA-8E54-4170-A8C5-6F91CC4F7DB2}.Debug|x64.Build.0 = Debug|x64 {242A58CA-8E54-4170-A8C5-6F91CC4F7DB2}.Debug|x86.ActiveCfg = Debug|Win32 {242A58CA-8E54-4170-A8C5-6F91CC4F7DB2}.Debug|x86.Build.0 = Debug|Win32 + {242A58CA-8E54-4170-A8C5-6F91CC4F7DB2}.Release|ARM64.ActiveCfg = Release|ARM64 + {242A58CA-8E54-4170-A8C5-6F91CC4F7DB2}.Release|ARM64.Build.0 = Release|ARM64 {242A58CA-8E54-4170-A8C5-6F91CC4F7DB2}.Release|x64.ActiveCfg = Release|x64 {242A58CA-8E54-4170-A8C5-6F91CC4F7DB2}.Release|x64.Build.0 = Release|x64 {242A58CA-8E54-4170-A8C5-6F91CC4F7DB2}.Release|x86.ActiveCfg = Release|Win32 {242A58CA-8E54-4170-A8C5-6F91CC4F7DB2}.Release|x86.Build.0 = Release|Win32 + {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|ARM64.Build.0 = Debug|ARM64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|x64.ActiveCfg = Debug|x64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|x64.Build.0 = Debug|x64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|x86.ActiveCfg = Debug|Win32 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|x86.Build.0 = Debug|Win32 + {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|ARM64.ActiveCfg = Release|ARM64 + {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|ARM64.Build.0 = Release|ARM64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x64.ActiveCfg = Release|x64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x64.Build.0 = Release|x64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x86.ActiveCfg = Release|Win32 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x86.Build.0 = Release|Win32 + {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Debug|ARM64.Build.0 = Debug|ARM64 {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Debug|x64.ActiveCfg = Debug|x64 {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Debug|x64.Build.0 = Debug|x64 {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Debug|x86.ActiveCfg = Debug|Win32 {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Debug|x86.Build.0 = Debug|Win32 + {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Release|ARM64.ActiveCfg = Release|ARM64 + {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Release|ARM64.Build.0 = Release|ARM64 {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Release|x64.ActiveCfg = Release|x64 {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Release|x64.Build.0 = Release|x64 {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Release|x86.ActiveCfg = Release|Win32 {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Release|x86.Build.0 = Release|Win32 + {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Debug|ARM64.Build.0 = Debug|ARM64 {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Debug|x64.ActiveCfg = Debug|x64 {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Debug|x64.Build.0 = Debug|x64 {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Debug|x86.ActiveCfg = Debug|Win32 {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Debug|x86.Build.0 = Debug|Win32 + {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Release|ARM64.ActiveCfg = Release|ARM64 + {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Release|ARM64.Build.0 = Release|ARM64 {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Release|x64.ActiveCfg = Release|x64 {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Release|x64.Build.0 = Release|x64 {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Release|x86.ActiveCfg = Release|Win32 diff --git a/windows/winfw/src/extras/cli/cli.vcxproj b/windows/winfw/src/extras/cli/cli.vcxproj index 856d2cc0617c..2b930faead8c 100644 --- a/windows/winfw/src/extras/cli/cli.vcxproj +++ b/windows/winfw/src/extras/cli/cli.vcxproj @@ -1,10 +1,18 @@  + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +53,12 @@ v143 Unicode + + Application + true + v143 + Unicode + Application false @@ -52,6 +66,13 @@ true Unicode + + Application + false + v143 + true + Unicode + @@ -66,9 +87,15 @@ + + + + + + true @@ -80,6 +107,11 @@ $(SolutionDir)\bin\temp\$(Platform)-$(Configuration)\$(ProjectName)\ $(SolutionDir)\bin\$(Platform)-$(Configuration)\ + + true + $(SolutionDir)\bin\temp\$(Platform)-$(Configuration)\$(ProjectName)\ + $(SolutionDir)\bin\$(Platform)-$(Configuration)\ + false $(SolutionDir)\bin\$(Platform)-$(Configuration)\ @@ -90,6 +122,11 @@ $(SolutionDir)\bin\temp\$(Platform)-$(Configuration)\$(ProjectName)\ $(SolutionDir)\bin\$(Platform)-$(Configuration)\ + + false + $(SolutionDir)\bin\temp\$(Platform)-$(Configuration)\$(ProjectName)\ + $(SolutionDir)\bin\$(Platform)-$(Configuration)\ + Use @@ -126,6 +163,24 @@ winfw.lib;libcommon.lib;libwfp.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + Use + Level4 + Disabled + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + $(ProjectDir)..\;$(ProjectDir)..\..\;$(ProjectDir)..\..\..\..\libwfp\src\;$(ProjectDir)..\..\..\..\windows-libraries\src\;$(ProjectDir)..\..\..\..\libshared\src\ + MultiThreadedDebug + stdcpp20 + + + Console + true + $(SolutionDir)/bin/$(Platform)-$(Configuration) + winfw.lib;libcommon.lib;libwfp.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + Use @@ -170,6 +225,28 @@ winfw.lib;libcommon.lib;libwfp.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + Use + Level4 + MaxSpeed + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + $(ProjectDir)..\;$(ProjectDir)..\..\;$(ProjectDir)..\..\..\..\libwfp\src\;$(ProjectDir)..\..\..\..\windows-libraries\src\;$(ProjectDir)..\..\..\..\libshared\src\ + MultiThreaded + stdcpp20 + + + Console + true + true + true + $(SolutionDir)/bin/$(Platform)-$(Configuration) + winfw.lib;libcommon.lib;libwfp.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + @@ -219,7 +296,9 @@ Create Create Create + Create Create + Create diff --git a/windows/winfw/src/winfw/winfw.vcxproj b/windows/winfw/src/winfw/winfw.vcxproj index 9a97e92afa31..7893d19fec51 100644 --- a/windows/winfw/src/winfw/winfw.vcxproj +++ b/windows/winfw/src/winfw/winfw.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -47,7 +55,9 @@ Create Create Create + Create Create + Create @@ -119,6 +129,12 @@ v143 Unicode + + DynamicLibrary + true + v143 + Unicode + DynamicLibrary false @@ -126,6 +142,13 @@ true Unicode + + DynamicLibrary + false + v143 + true + Unicode + @@ -140,9 +163,15 @@ + + + + + + true @@ -154,6 +183,11 @@ $(SolutionDir)\bin\$(Platform)-$(Configuration)\ $(SolutionDir)\bin\temp\$(Platform)-$(Configuration)\$(ProjectName)\ + + true + $(SolutionDir)\bin\$(Platform)-$(Configuration)\ + $(SolutionDir)\bin\temp\$(Platform)-$(Configuration)\$(ProjectName)\ + false $(SolutionDir)\bin\$(Platform)-$(Configuration)\ @@ -164,6 +198,11 @@ $(SolutionDir)\bin\$(Platform)-$(Configuration)\ $(SolutionDir)\bin\temp\$(Platform)-$(Configuration)\$(ProjectName)\ + + false + $(SolutionDir)\bin\$(Platform)-$(Configuration)\ + $(SolutionDir)\bin\temp\$(Platform)-$(Configuration)\$(ProjectName)\ + Use @@ -210,6 +249,29 @@ cargo run -q --bin mullvad-version version.h > $(ProjectDir)..\..\..\version.h + + + Use + Level4 + Disabled + true + _DEBUG;WINFW_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + MultiThreadedDebug + stdcpp20 + $(ProjectDir)..\..\..\libshared\src\;$(ProjectDir)..\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir)..\..\..\libwfp\src\ + $(IntDir)%(RelativeDir)/ + + + Windows + true + libwfp.lib;libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)/bin/$(Platform)-$(Configuration) + winfw.def + + + cargo run -q --bin mullvad-version version.h > $(ProjectDir)..\..\..\version.h + + Use @@ -264,6 +326,33 @@ cargo run -q --bin mullvad-version version.h > $(ProjectDir)..\..\..\version.h + + + Use + Level4 + MaxSpeed + true + true + true + NDEBUG;WINFW_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + MultiThreaded + stdcpp20 + $(ProjectDir)..\..\..\libshared\src\;$(ProjectDir)..\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir)..\..\..\libwfp\src\ + $(IntDir)%(RelativeDir)/ + + + Windows + true + true + true + libwfp.lib;libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)/bin/$(Platform)-$(Configuration) + winfw.def + + + cargo run -q --bin mullvad-version version.h > $(ProjectDir)..\..\..\version.h + + diff --git a/windows/winfw/winfw.sln b/windows/winfw/winfw.sln index 06591d5778c4..664f0fb46752 100644 --- a/windows/winfw/winfw.sln +++ b/windows/winfw/winfw.sln @@ -18,32 +18,46 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libwfp", "..\libwfp\src\lib EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM64 = Debug|ARM64 Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 + Release|ARM64 = Release|ARM64 Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Debug|ARM64.Build.0 = Debug|ARM64 {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Debug|x64.ActiveCfg = Debug|x64 {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Debug|x64.Build.0 = Debug|x64 {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Debug|x86.ActiveCfg = Debug|Win32 {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Debug|x86.Build.0 = Debug|Win32 + {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Release|ARM64.ActiveCfg = Release|ARM64 + {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Release|ARM64.Build.0 = Release|ARM64 {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Release|x64.ActiveCfg = Release|x64 {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Release|x64.Build.0 = Release|x64 {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Release|x86.ActiveCfg = Release|Win32 {801E7DEB-2BD0-4E60-9E4B-74A5CA12ADCB}.Release|x86.Build.0 = Release|Win32 + {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|ARM64.Build.0 = Debug|ARM64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|x64.ActiveCfg = Debug|x64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|x64.Build.0 = Debug|x64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|x86.ActiveCfg = Debug|Win32 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|x86.Build.0 = Debug|Win32 + {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|ARM64.ActiveCfg = Release|ARM64 + {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|ARM64.Build.0 = Release|ARM64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x64.ActiveCfg = Release|x64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x64.Build.0 = Release|x64 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x86.ActiveCfg = Release|Win32 {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x86.Build.0 = Release|Win32 + {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Debug|ARM64.Build.0 = Debug|ARM64 {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Debug|x64.ActiveCfg = Debug|x64 {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Debug|x64.Build.0 = Debug|x64 {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Debug|x86.ActiveCfg = Debug|Win32 {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Debug|x86.Build.0 = Debug|Win32 + {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Release|ARM64.ActiveCfg = Release|ARM64 + {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Release|ARM64.Build.0 = Release|ARM64 {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Release|x64.ActiveCfg = Release|x64 {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Release|x64.Build.0 = Release|x64 {2164E6D9-6023-4932-A08F-7A5C15E2CA0B}.Release|x86.ActiveCfg = Release|Win32