From 41cc70e573d3797b6cbd32af29c3c329ea23d3db Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Tue, 7 Dec 2021 14:40:28 +0000 Subject: [PATCH 1/9] ARM64: initial port --- License.txt | 2 +- build/VStudio/After.props | 13 + build/VStudio/Directory.Build.props | 35 +++ build/VStudio/dotnet/winfsp.net.csproj | 1 - .../CustomActions/CustomActions.vcxproj | 6 - build/VStudio/installer/Product.wxs | 257 +++++++++++++++--- build/VStudio/installer/winfsp_msi.wixproj | 2 +- build/VStudio/testing/fsbench.vcxproj | 90 +++++- build/VStudio/testing/fscrash.vcxproj | 86 +++++- build/VStudio/testing/memfs.vcxproj | 89 +++++- build/VStudio/testing/winfsp-tests.vcxproj | 92 ++++++- build/VStudio/tools/fsptool.vcxproj | 92 ++++++- build/VStudio/tools/launchctl.vcxproj | 98 ++++++- build/VStudio/tools/launcher.vcxproj | 100 ++++++- build/VStudio/version.properties | 31 +-- build/VStudio/winfsp.sln | 82 ++++++ build/VStudio/winfsp_dll.vcxproj | 196 ++++++++++--- build/VStudio/winfsp_sys.vcxproj | 161 ++++++++--- build/VStudio/winfsp_sys.vcxproj.filters | 3 + doc/WinFsp-on-ARM64.asciidoc | 37 +++ inc/winfsp/fsctl.h | 16 ++ inc/winfsp/launch.h | 5 +- inc/winfsp/winfsp.h | 21 +- opt/fsext/lib/winfsp-a64.lib | Bin 0 -> 4672 bytes src/dll/mount.c | 21 +- src/dotnet/Interop.cs | 64 ++++- src/shared/ku/posix.c | 21 +- src/sys/device.c | 6 +- src/sys/devtimer.c | 124 +++++++++ src/sys/driver.c | 9 +- src/sys/driver.h | 15 + tools/build.bat | 7 +- tools/impdef.bat | 2 + tst/airfs/airfs.sln | 6 + tst/airfs/airfs.vcxproj | 79 +++++- tst/memfs-fuse/memfs-fuse.sln | 6 + tst/memfs-fuse/memfs-fuse.vcxproj | 81 ++++++ tst/memfs-fuse3/memfs-fuse3.sln | 6 + tst/memfs-fuse3/memfs-fuse3.vcxproj | 81 ++++++ tst/notifyfs/notifyfs.sln | 6 + tst/notifyfs/notifyfs.vcxproj | 75 +++++ tst/passthrough-cpp/passthrough-cpp.sln | 6 + tst/passthrough-cpp/passthrough-cpp.vcxproj | 77 ++++++ tst/passthrough-fuse/passthrough-fuse.sln | 6 + tst/passthrough-fuse/passthrough-fuse.vcxproj | 81 ++++++ tst/passthrough-fuse3/passthrough-fuse3.sln | 6 + .../passthrough-fuse3.vcxproj | 81 ++++++ tst/passthrough/passthrough.sln | 6 + tst/passthrough/passthrough.vcxproj | 79 ++++++ 49 files changed, 2151 insertions(+), 315 deletions(-) create mode 100644 build/VStudio/After.props create mode 100644 build/VStudio/Directory.Build.props create mode 100644 doc/WinFsp-on-ARM64.asciidoc create mode 100644 opt/fsext/lib/winfsp-a64.lib create mode 100644 src/sys/devtimer.c diff --git a/License.txt b/License.txt index 01afcd10..372164f9 100644 --- a/License.txt +++ b/License.txt @@ -6,7 +6,7 @@ permissions to Free/Libre and Open Source Software ("FLOSS") without requiring that such software is covered by the GPLv3. 1. Permission to link with a platform specific version of the WinFsp DLL - (one of: winfsp-x64.dll, winfsp-x86.dll, winfsp-msil.dll). + (one of: winfsp-a64.dll, winfsp-x64.dll, winfsp-x86.dll, winfsp-msil.dll). 2. Permission to distribute unmodified binary releases of the WinFsp installer (as released by the WinFsp project). diff --git a/build/VStudio/After.props b/build/VStudio/After.props new file mode 100644 index 00000000..26b870e2 --- /dev/null +++ b/build/VStudio/After.props @@ -0,0 +1,13 @@ + + + + x64 + x86 + a64 + + + + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ + + diff --git a/build/VStudio/Directory.Build.props b/build/VStudio/Directory.Build.props new file mode 100644 index 00000000..41a6f74e --- /dev/null +++ b/build/VStudio/Directory.Build.props @@ -0,0 +1,35 @@ + + + + + + + NTDDI_VERSION=0x06010000;_WIN32_WINNT=0x0601;MyProductName=$(MyProductName);MyProductFileName=$(MyProductFileName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas);MyFullVersion=$(MyFullVersion);MyFspFsctlDeviceClassGuid=$(MyFspFsctlDeviceClassGuid);MyFspFsvrtDeviceClassGuid=$(MyFspFsvrtDeviceClassGuid) + + + MyProductName=$(MyProductName);MyProductFileName=$(MyProductFileName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas);MyFullVersion=$(MyFullVersion)MyFspFsctlDeviceClassGuid=$(MyFspFsctlDeviceClassGuid);MyFspFsvrtDeviceClassGuid=$(MyFspFsvrtDeviceClassGuid) + + + + + 4996 + + + + + true + + + + + DebugFull + + + + false + + + + $(MsbuildThisFileDirectory)\After.props + + \ No newline at end of file diff --git a/build/VStudio/dotnet/winfsp.net.csproj b/build/VStudio/dotnet/winfsp.net.csproj index 006d4522..2a2dafcb 100644 --- a/build/VStudio/dotnet/winfsp.net.csproj +++ b/build/VStudio/dotnet/winfsp.net.csproj @@ -1,6 +1,5 @@  - Debug diff --git a/build/VStudio/installer/CustomActions/CustomActions.vcxproj b/build/VStudio/installer/CustomActions/CustomActions.vcxproj index 2cf785db..a89c2577 100644 --- a/build/VStudio/installer/CustomActions/CustomActions.vcxproj +++ b/build/VStudio/installer/CustomActions/CustomActions.vcxproj @@ -1,6 +1,5 @@  - Debug @@ -43,13 +42,9 @@ <_ProjectFileVersion>14.0.25123.0 - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ true - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ false @@ -57,7 +52,6 @@ Disabled $(WIX)sdk\VS2015\inc;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_WINDOWS;_USRDLL;CUSTOMACTIONTEST_EXPORTS;%(PreprocessorDefinitions) - true Default MultiThreaded NotUsing diff --git a/build/VStudio/installer/Product.wxs b/build/VStudio/installer/Product.wxs index a7a17729..7bcead3c 100644 --- a/build/VStudio/installer/Product.wxs +++ b/build/VStudio/installer/Product.wxs @@ -22,6 +22,15 @@ DowngradeErrorMessage="A newer version of $(var.MyProductName) is already installed." /> + + + + $(var.MyProductName).Launcher Software\$(var.MyProductName)\Services Software\$(var.MyProductName) @@ -62,6 +71,9 @@ + + + @@ -69,24 +81,46 @@ - - - - VersionNT64 + + + + - - - VersionNT64 + + + + + + + + + + + + + + + + + + + + + - - - NOT VersionNT64 + + + - - - NOT VersionNT64 + + + + + + + @@ -106,52 +140,90 @@ --> - - - + + + - VersionNT64 + - - - VersionNT64 + + + + + + + + + + + + + + + + + + + + + + + - - - NOT VersionNT64 + + + - - + + + + + + - NOT VersionNT64 + + + + @@ -159,6 +231,9 @@ + + + @@ -173,6 +248,32 @@ + + + + + + + + + + + + + + @@ -304,6 +408,16 @@ + + + + + + - VersionNT64 + @@ -321,7 +435,17 @@ Name="fuse.pc" Source="..\build\$(var.Configuration)\fuse-x86.pc" KeyPath="yes" /> - NOT VersionNT64 + + + + + + + @@ -331,7 +455,7 @@ Name="fuse3.pc" Source="..\build\$(var.Configuration)\fuse3-x64.pc" KeyPath="yes" /> - VersionNT64 + @@ -341,7 +465,7 @@ Name="fuse3.pc" Source="..\build\$(var.Configuration)\fuse3-x86.pc" KeyPath="yes" /> - NOT VersionNT64 + @@ -378,6 +502,9 @@ + + + @@ -588,36 +715,54 @@ + + + + + + + + + + + + + + + + + + @@ -627,18 +772,31 @@ + - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -659,10 +817,13 @@ + + + @@ -676,10 +837,12 @@ + + @@ -735,16 +898,22 @@ + - + - + + + + + + diff --git a/build/VStudio/installer/winfsp_msi.wixproj b/build/VStudio/installer/winfsp_msi.wixproj index 2b08a239..17028fea 100644 --- a/build/VStudio/installer/winfsp_msi.wixproj +++ b/build/VStudio/installer/winfsp_msi.wixproj @@ -1,6 +1,6 @@  - + Debug x86 diff --git a/build/VStudio/testing/fsbench.vcxproj b/build/VStudio/testing/fsbench.vcxproj index d5f80b4b..ac57702a 100644 --- a/build/VStudio/testing/fsbench.vcxproj +++ b/build/VStudio/testing/fsbench.vcxproj @@ -1,11 +1,18 @@  - + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +52,12 @@ $(DefaultPlatformToolset) Unicode + + Application + true + $(DefaultPlatformToolset) + Unicode + Application false @@ -52,6 +65,13 @@ true Unicode + + Application + false + $(DefaultPlatformToolset) + true + Unicode + @@ -66,33 +86,39 @@ + + + + + + true - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) true - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) + + + true + $(ProjectName)-$(MyProductFileArch) false - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) false - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) + + + false + $(ProjectName)-$(MyProductFileArch) @@ -124,6 +150,21 @@ Console + + + + + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreaded + ..\..\..\ext + + + Console + + Level3 @@ -162,6 +203,25 @@ true + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreaded + ..\..\..\ext + + + Console + true + true + + TurnOffAllWarnings @@ -169,9 +229,13 @@ TurnOffAllWarnings false TurnOffAllWarnings + TurnOffAllWarnings false + false TurnOffAllWarnings + TurnOffAllWarnings false + false diff --git a/build/VStudio/testing/fscrash.vcxproj b/build/VStudio/testing/fscrash.vcxproj index 4dc87eb7..f50f5f94 100644 --- a/build/VStudio/testing/fscrash.vcxproj +++ b/build/VStudio/testing/fscrash.vcxproj @@ -1,11 +1,18 @@  - + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +52,12 @@ $(DefaultPlatformToolset) Unicode + + Application + true + $(DefaultPlatformToolset) + Unicode + Application false @@ -52,6 +65,13 @@ true Unicode + + Application + false + $(DefaultPlatformToolset) + true + Unicode + @@ -66,33 +86,39 @@ + + + + + + true - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) true - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) + + + true + $(ProjectName)-$(MyProductFileArch) false - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) false - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) + + + false + $(ProjectName)-$(MyProductFileArch) @@ -124,6 +150,21 @@ Console + + + + + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreaded + ..\..\..\tst\memfs;..\..\..\inc + + + Console + + Level3 @@ -162,6 +203,25 @@ true + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreaded + ..\..\..\tst\memfs;..\..\..\inc + + + Console + true + true + + diff --git a/build/VStudio/testing/memfs.vcxproj b/build/VStudio/testing/memfs.vcxproj index 5574fc4b..86c3b047 100644 --- a/build/VStudio/testing/memfs.vcxproj +++ b/build/VStudio/testing/memfs.vcxproj @@ -1,11 +1,18 @@  - + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -46,6 +53,12 @@ $(DefaultPlatformToolset) Unicode + + Application + true + $(DefaultPlatformToolset) + Unicode + Application false @@ -53,6 +66,13 @@ true Unicode + + Application + false + $(DefaultPlatformToolset) + true + Unicode + @@ -67,33 +87,39 @@ + + + + + + true - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) true - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) + + + true + $(ProjectName)-$(MyProductFileArch) false - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) false - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) + + + false + $(ProjectName)-$(MyProductFileArch) @@ -127,6 +153,22 @@ $(OutDir)$(TargetName).public.pdb + + + + + Level3 + Disabled + MEMFS_STANDALONE;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + ..\..\..\src;..\..\..\inc + MultiThreaded + + + Console + $(OutDir)$(TargetName).public.pdb + + Level3 @@ -169,6 +211,27 @@ /PDBALTPATH:$(TargetName).pdb %(AdditionalOptions) + + + Level3 + + + MaxSpeed + true + true + MEMFS_STANDALONE;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + ..\..\..\src;..\..\..\inc + MultiThreaded + + + Console + true + true + $(OutDir)$(TargetName).public.pdb + /PDBALTPATH:$(TargetName).pdb %(AdditionalOptions) + + {4a7c0b21-9e10-4c81-92de-1493efcf24eb} diff --git a/build/VStudio/testing/winfsp-tests.vcxproj b/build/VStudio/testing/winfsp-tests.vcxproj index 6db59b59..17d26ec5 100644 --- a/build/VStudio/testing/winfsp-tests.vcxproj +++ b/build/VStudio/testing/winfsp-tests.vcxproj @@ -1,11 +1,18 @@  - + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +52,12 @@ $(DefaultPlatformToolset) Unicode + + Application + true + $(DefaultPlatformToolset) + Unicode + Application false @@ -52,6 +65,13 @@ true Unicode + + Application + false + $(DefaultPlatformToolset) + true + Unicode + @@ -66,33 +86,39 @@ + + + + + + true - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) true - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) + + + true + $(ProjectName)-$(MyProductFileArch) false - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) false - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) + + + false + $(ProjectName)-$(MyProductFileArch) @@ -126,6 +152,22 @@ ntdll.lib;netapi32.lib;dbghelp.lib;%(AdditionalDependencies) + + + + + Level3 + Disabled + __func__=__FUNCTION__;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + ..\..\..\tst\memfs;..\..\..\src;..\..\..\inc;..\..\..\ext + MultiThreaded + + + Console + ntdll.lib;netapi32.lib;dbghelp.lib;%(AdditionalDependencies) + + Level3 @@ -166,16 +208,40 @@ ntdll.lib;netapi32.lib;dbghelp.lib;%(AdditionalDependencies) + + + Level3 + + + MaxSpeed + true + true + __func__=__FUNCTION__;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + ..\..\..\tst\memfs;..\..\..\src;..\..\..\inc;..\..\..\ext + MultiThreaded + + + Console + true + true + ntdll.lib;netapi32.lib;dbghelp.lib;%(AdditionalDependencies) + + false false false + false false + false TurnOffAllWarnings TurnOffAllWarnings TurnOffAllWarnings + TurnOffAllWarnings TurnOffAllWarnings + TurnOffAllWarnings diff --git a/build/VStudio/tools/fsptool.vcxproj b/build/VStudio/tools/fsptool.vcxproj index 71e5b5b8..bdd4f0b6 100644 --- a/build/VStudio/tools/fsptool.vcxproj +++ b/build/VStudio/tools/fsptool.vcxproj @@ -1,11 +1,18 @@  - + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +52,12 @@ $(DefaultPlatformToolset) Unicode + + Application + true + $(DefaultPlatformToolset) + Unicode + Application false @@ -52,6 +65,13 @@ true Unicode + + Application + false + $(DefaultPlatformToolset) + true + Unicode + @@ -66,33 +86,39 @@ + + + + + + true - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) true - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) + + + true + $(ProjectName)-$(MyProductFileArch) false - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) false - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) + + + false + $(ProjectName)-$(MyProductFileArch) @@ -130,6 +156,24 @@ $(OutDir)$(TargetName).public.pdb + + + + + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ..\..\..\src;..\..\..\inc + Default + MultiThreaded + false + + + Console + true + $(OutDir)$(TargetName).public.pdb + + Level3 @@ -174,6 +218,28 @@ /PDBALTPATH:$(TargetName).pdb %(AdditionalOptions) + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ..\..\..\src;..\..\..\inc + MultiThreaded + false + + + Console + true + true + true + $(OutDir)$(TargetName).public.pdb + /PDBALTPATH:$(TargetName).pdb %(AdditionalOptions) + + {4a7c0b21-9e10-4c81-92de-1493efcf24eb} diff --git a/build/VStudio/tools/launchctl.vcxproj b/build/VStudio/tools/launchctl.vcxproj index 39849310..fddc00d7 100644 --- a/build/VStudio/tools/launchctl.vcxproj +++ b/build/VStudio/tools/launchctl.vcxproj @@ -1,11 +1,18 @@  - + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +52,12 @@ $(DefaultPlatformToolset) Unicode + + Application + true + $(DefaultPlatformToolset) + Unicode + Application false @@ -52,6 +65,13 @@ true Unicode + + Application + false + $(DefaultPlatformToolset) + true + Unicode + @@ -66,33 +86,39 @@ + + + + + + true - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) true - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) + + + true + $(ProjectName)-$(MyProductFileArch) false - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) false - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) + + + false + $(ProjectName)-$(MyProductFileArch) @@ -134,6 +160,26 @@ $(OutDir)$(TargetName).public.pdb + + + + + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ..\..\..\src;..\..\..\inc + false + Default + MultiThreaded + + + + + Console + true + $(OutDir)$(TargetName).public.pdb + + Level3 @@ -182,6 +228,30 @@ /PDBALTPATH:$(TargetName).pdb %(AdditionalOptions) + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ..\..\..\src;..\..\..\inc + false + MultiThreaded + + + + + Console + true + true + true + $(OutDir)$(TargetName).public.pdb + /PDBALTPATH:$(TargetName).pdb %(AdditionalOptions) + + @@ -190,7 +260,9 @@ _UNICODE;UNICODE;%(PreprocessorDefinitions) _UNICODE;UNICODE;%(PreprocessorDefinitions) _UNICODE;UNICODE;%(PreprocessorDefinitions) + _UNICODE;UNICODE;%(PreprocessorDefinitions) _UNICODE;UNICODE;%(PreprocessorDefinitions) + _UNICODE;UNICODE;%(PreprocessorDefinitions) diff --git a/build/VStudio/tools/launcher.vcxproj b/build/VStudio/tools/launcher.vcxproj index 10f09877..04e12870 100644 --- a/build/VStudio/tools/launcher.vcxproj +++ b/build/VStudio/tools/launcher.vcxproj @@ -1,11 +1,18 @@  - + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +52,12 @@ $(DefaultPlatformToolset) Unicode + + Application + true + $(DefaultPlatformToolset) + Unicode + Application false @@ -52,6 +65,13 @@ true Unicode + + Application + false + $(DefaultPlatformToolset) + true + Unicode + @@ -66,33 +86,39 @@ + + + + + + true - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) true - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) + + + true + $(ProjectName)-$(MyProductFileArch) false - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) false - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(ProjectName)-$(PlatformTarget) + $(ProjectName)-$(MyProductFileArch) + + + false + $(ProjectName)-$(MyProductFileArch) @@ -136,6 +162,27 @@ $(OutDir)$(TargetName).public.pdb + + + + + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ..\..\..\src;..\..\..\inc + Default + false + MultiThreaded + + + + + Console + true + %(AdditionalDependencies);rpcrt4.lib;userenv.lib + $(OutDir)$(TargetName).public.pdb + + Level3 @@ -186,6 +233,31 @@ /PDBALTPATH:$(TargetName).pdb %(AdditionalOptions) + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ..\..\..\src;..\..\..\inc + false + MultiThreaded + + + + + Console + true + true + true + %(AdditionalDependencies);rpcrt4.lib;userenv.lib + $(OutDir)$(TargetName).public.pdb + /PDBALTPATH:$(TargetName).pdb %(AdditionalOptions) + + @@ -200,7 +272,9 @@ _UNICODE;UNICODE;%(PreprocessorDefinitions) _UNICODE;UNICODE;%(PreprocessorDefinitions) _UNICODE;UNICODE;%(PreprocessorDefinitions) + _UNICODE;UNICODE;%(PreprocessorDefinitions) _UNICODE;UNICODE;%(PreprocessorDefinitions) + _UNICODE;UNICODE;%(PreprocessorDefinitions) diff --git a/build/VStudio/version.properties b/build/VStudio/version.properties index a664c831..d78be063 100644 --- a/build/VStudio/version.properties +++ b/build/VStudio/version.properties @@ -17,9 +17,9 @@ Navimatics LLC 2015-$([System.DateTime]::Now.ToString(`yyyy`)) Bill Zissimopoulos - 1.10 + 1.11 - 2022 Beta4 + 2022+ARM64 Beta1 Beta $(MyCanonicalVersion).$(MyBuildNumber) @@ -33,31 +33,4 @@ { 0x6f9d25fa, 0x6dee, 0x4a9d, { 0x80, 0xf5, 0xe9, 0x8e, 0x14, 0xf3, 0x5e, 0x54 } } { 0xb48171c3, 0xdd50, 0x4852, { 0x83, 0xa3, 0x34, 0x4c, 0x50, 0xd9, 0x3b, 0x17 } } - - - - NTDDI_VERSION=0x06010000;_WIN32_WINNT=0x0601;MyProductName=$(MyProductName);MyProductFileName=$(MyProductFileName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas);MyFullVersion=$(MyFullVersion);MyFspFsctlDeviceClassGuid=$(MyFspFsctlDeviceClassGuid);MyFspFsvrtDeviceClassGuid=$(MyFspFsvrtDeviceClassGuid) - - - MyProductName=$(MyProductName);MyProductFileName=$(MyProductFileName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas);MyFullVersion=$(MyFullVersion)MyFspFsctlDeviceClassGuid=$(MyFspFsctlDeviceClassGuid);MyFspFsvrtDeviceClassGuid=$(MyFspFsvrtDeviceClassGuid) - - - - - 4996 - - - - - true - - - - - DebugFull - - - - false - \ No newline at end of file diff --git a/build/VStudio/winfsp.sln b/build/VStudio/winfsp.sln index 288f222c..6ab3735d 100644 --- a/build/VStudio/winfsp.sln +++ b/build/VStudio/winfsp.sln @@ -60,168 +60,250 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fsptool", "tools\fsptool.vc EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM64 = Debug|ARM64 Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 + Installer.Debug|ARM64 = Installer.Debug|ARM64 Installer.Debug|x64 = Installer.Debug|x64 Installer.Debug|x86 = Installer.Debug|x86 + Installer.Release|ARM64 = Installer.Release|ARM64 Installer.Release|x64 = Installer.Release|x64 Installer.Release|x86 = Installer.Release|x86 + Release|ARM64 = Release|ARM64 Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Debug|ARM64.Build.0 = Debug|ARM64 {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Debug|x64.ActiveCfg = Debug|x64 {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Debug|x64.Build.0 = Debug|x64 {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Debug|x86.ActiveCfg = Debug|Win32 {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Debug|x86.Build.0 = Debug|Win32 + {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Installer.Debug|ARM64.ActiveCfg = Debug|ARM64 {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Installer.Debug|x64.ActiveCfg = Debug|x64 {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Installer.Debug|x86.ActiveCfg = Debug|Win32 + {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Installer.Release|ARM64.ActiveCfg = Release|ARM64 {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Installer.Release|x64.ActiveCfg = Release|x64 {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Installer.Release|x86.ActiveCfg = Release|Win32 + {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Release|ARM64.ActiveCfg = Release|ARM64 + {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Release|ARM64.Build.0 = Release|ARM64 {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Release|x64.ActiveCfg = Release|x64 {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Release|x64.Build.0 = Release|x64 {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Release|x86.ActiveCfg = Release|Win32 {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Release|x86.Build.0 = Release|Win32 + {C85C26BA-8C22-4D30-83DA-46C3548E6332}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C85C26BA-8C22-4D30-83DA-46C3548E6332}.Debug|ARM64.Build.0 = Debug|ARM64 {C85C26BA-8C22-4D30-83DA-46C3548E6332}.Debug|x64.ActiveCfg = Debug|x64 {C85C26BA-8C22-4D30-83DA-46C3548E6332}.Debug|x64.Build.0 = Debug|x64 {C85C26BA-8C22-4D30-83DA-46C3548E6332}.Debug|x86.ActiveCfg = Debug|Win32 {C85C26BA-8C22-4D30-83DA-46C3548E6332}.Debug|x86.Build.0 = Debug|Win32 + {C85C26BA-8C22-4D30-83DA-46C3548E6332}.Installer.Debug|ARM64.ActiveCfg = Debug|ARM64 {C85C26BA-8C22-4D30-83DA-46C3548E6332}.Installer.Debug|x64.ActiveCfg = Debug|x64 {C85C26BA-8C22-4D30-83DA-46C3548E6332}.Installer.Debug|x86.ActiveCfg = Debug|Win32 + {C85C26BA-8C22-4D30-83DA-46C3548E6332}.Installer.Release|ARM64.ActiveCfg = Release|ARM64 {C85C26BA-8C22-4D30-83DA-46C3548E6332}.Installer.Release|x64.ActiveCfg = Release|x64 {C85C26BA-8C22-4D30-83DA-46C3548E6332}.Installer.Release|x86.ActiveCfg = Release|Win32 + {C85C26BA-8C22-4D30-83DA-46C3548E6332}.Release|ARM64.ActiveCfg = Release|ARM64 + {C85C26BA-8C22-4D30-83DA-46C3548E6332}.Release|ARM64.Build.0 = Release|ARM64 {C85C26BA-8C22-4D30-83DA-46C3548E6332}.Release|x64.ActiveCfg = Release|x64 {C85C26BA-8C22-4D30-83DA-46C3548E6332}.Release|x64.Build.0 = Release|x64 {C85C26BA-8C22-4D30-83DA-46C3548E6332}.Release|x86.ActiveCfg = Release|Win32 {C85C26BA-8C22-4D30-83DA-46C3548E6332}.Release|x86.Build.0 = Release|Win32 + {262DF8CC-E7A8-4460-A22C-683CBA322C32}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {262DF8CC-E7A8-4460-A22C-683CBA322C32}.Debug|ARM64.Build.0 = Debug|ARM64 {262DF8CC-E7A8-4460-A22C-683CBA322C32}.Debug|x64.ActiveCfg = Debug|x64 {262DF8CC-E7A8-4460-A22C-683CBA322C32}.Debug|x64.Build.0 = Debug|x64 {262DF8CC-E7A8-4460-A22C-683CBA322C32}.Debug|x86.ActiveCfg = Debug|Win32 {262DF8CC-E7A8-4460-A22C-683CBA322C32}.Debug|x86.Build.0 = Debug|Win32 + {262DF8CC-E7A8-4460-A22C-683CBA322C32}.Installer.Debug|ARM64.ActiveCfg = Debug|ARM64 {262DF8CC-E7A8-4460-A22C-683CBA322C32}.Installer.Debug|x64.ActiveCfg = Debug|x64 {262DF8CC-E7A8-4460-A22C-683CBA322C32}.Installer.Debug|x86.ActiveCfg = Debug|Win32 + {262DF8CC-E7A8-4460-A22C-683CBA322C32}.Installer.Release|ARM64.ActiveCfg = Release|ARM64 {262DF8CC-E7A8-4460-A22C-683CBA322C32}.Installer.Release|x64.ActiveCfg = Release|x64 {262DF8CC-E7A8-4460-A22C-683CBA322C32}.Installer.Release|x86.ActiveCfg = Release|Win32 + {262DF8CC-E7A8-4460-A22C-683CBA322C32}.Release|ARM64.ActiveCfg = Release|ARM64 + {262DF8CC-E7A8-4460-A22C-683CBA322C32}.Release|ARM64.Build.0 = Release|ARM64 {262DF8CC-E7A8-4460-A22C-683CBA322C32}.Release|x64.ActiveCfg = Release|x64 {262DF8CC-E7A8-4460-A22C-683CBA322C32}.Release|x64.Build.0 = Release|x64 {262DF8CC-E7A8-4460-A22C-683CBA322C32}.Release|x86.ActiveCfg = Release|Win32 {262DF8CC-E7A8-4460-A22C-683CBA322C32}.Release|x86.Build.0 = Release|Win32 + {AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Debug|ARM64.Build.0 = Debug|ARM64 {AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Debug|x64.ActiveCfg = Debug|x64 {AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Debug|x64.Build.0 = Debug|x64 {AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Debug|x86.ActiveCfg = Debug|Win32 {AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Debug|x86.Build.0 = Debug|Win32 + {AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Installer.Debug|ARM64.ActiveCfg = Debug|ARM64 {AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Installer.Debug|x64.ActiveCfg = Debug|x64 {AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Installer.Debug|x86.ActiveCfg = Debug|Win32 + {AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Installer.Release|ARM64.ActiveCfg = Release|ARM64 {AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Installer.Release|x64.ActiveCfg = Release|x64 {AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Installer.Release|x86.ActiveCfg = Release|Win32 + {AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Release|ARM64.ActiveCfg = Release|ARM64 + {AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Release|ARM64.Build.0 = Release|ARM64 {AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Release|x64.ActiveCfg = Release|x64 {AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Release|x64.Build.0 = Release|x64 {AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Release|x86.ActiveCfg = Release|Win32 {AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Release|x86.Build.0 = Release|Win32 + {D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Debug|ARM64.ActiveCfg = Debug|x86 {D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Debug|x64.ActiveCfg = Debug|x86 {D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Debug|x86.ActiveCfg = Debug|x86 + {D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Debug|ARM64.ActiveCfg = Release|x86 + {D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Debug|ARM64.Build.0 = Release|x86 {D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Debug|x64.ActiveCfg = Release|x86 {D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Debug|x64.Build.0 = Release|x86 {D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Debug|x86.ActiveCfg = Debug|x86 {D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Debug|x86.Build.0 = Debug|x86 + {D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Release|ARM64.ActiveCfg = Release|x86 + {D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Release|ARM64.Build.0 = Release|x86 {D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Release|x64.ActiveCfg = Release|x86 {D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Release|x64.Build.0 = Release|x86 {D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Release|x86.ActiveCfg = Release|x86 {D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Release|x86.Build.0 = Release|x86 + {D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Release|ARM64.ActiveCfg = Release|x86 {D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Release|x64.ActiveCfg = Release|x86 {D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Release|x86.ActiveCfg = Release|x86 + {95C223E6-B5F1-4FD0-9376-41CDBC824445}.Debug|ARM64.ActiveCfg = Debug|Win32 {95C223E6-B5F1-4FD0-9376-41CDBC824445}.Debug|x64.ActiveCfg = Debug|Win32 {95C223E6-B5F1-4FD0-9376-41CDBC824445}.Debug|x86.ActiveCfg = Debug|Win32 + {95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Debug|ARM64.ActiveCfg = Debug|Win32 + {95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Debug|ARM64.Build.0 = Debug|Win32 {95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Debug|x64.ActiveCfg = Release|Win32 {95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Debug|x64.Build.0 = Release|Win32 {95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Debug|x86.ActiveCfg = Debug|Win32 {95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Debug|x86.Build.0 = Debug|Win32 + {95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Release|ARM64.ActiveCfg = Release|Win32 + {95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Release|ARM64.Build.0 = Release|Win32 {95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Release|x64.ActiveCfg = Release|Win32 {95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Release|x64.Build.0 = Release|Win32 {95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Release|x86.ActiveCfg = Release|Win32 {95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Release|x86.Build.0 = Release|Win32 + {95C223E6-B5F1-4FD0-9376-41CDBC824445}.Release|ARM64.ActiveCfg = Release|Win32 {95C223E6-B5F1-4FD0-9376-41CDBC824445}.Release|x64.ActiveCfg = Release|Win32 {95C223E6-B5F1-4FD0-9376-41CDBC824445}.Release|x86.ActiveCfg = Release|Win32 + {10757011-749D-4954-873B-AE38D8145472}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {10757011-749D-4954-873B-AE38D8145472}.Debug|ARM64.Build.0 = Debug|ARM64 {10757011-749D-4954-873B-AE38D8145472}.Debug|x64.ActiveCfg = Debug|x64 {10757011-749D-4954-873B-AE38D8145472}.Debug|x64.Build.0 = Debug|x64 {10757011-749D-4954-873B-AE38D8145472}.Debug|x86.ActiveCfg = Debug|Win32 {10757011-749D-4954-873B-AE38D8145472}.Debug|x86.Build.0 = Debug|Win32 + {10757011-749D-4954-873B-AE38D8145472}.Installer.Debug|ARM64.ActiveCfg = Debug|ARM64 {10757011-749D-4954-873B-AE38D8145472}.Installer.Debug|x64.ActiveCfg = Debug|x64 {10757011-749D-4954-873B-AE38D8145472}.Installer.Debug|x86.ActiveCfg = Debug|Win32 + {10757011-749D-4954-873B-AE38D8145472}.Installer.Release|ARM64.ActiveCfg = Release|ARM64 {10757011-749D-4954-873B-AE38D8145472}.Installer.Release|x64.ActiveCfg = Release|x64 {10757011-749D-4954-873B-AE38D8145472}.Installer.Release|x86.ActiveCfg = Release|Win32 + {10757011-749D-4954-873B-AE38D8145472}.Release|ARM64.ActiveCfg = Release|ARM64 + {10757011-749D-4954-873B-AE38D8145472}.Release|ARM64.Build.0 = Release|ARM64 {10757011-749D-4954-873B-AE38D8145472}.Release|x64.ActiveCfg = Release|x64 {10757011-749D-4954-873B-AE38D8145472}.Release|x64.Build.0 = Release|x64 {10757011-749D-4954-873B-AE38D8145472}.Release|x86.ActiveCfg = Release|Win32 {10757011-749D-4954-873B-AE38D8145472}.Release|x86.Build.0 = Release|Win32 + {C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Debug|ARM64.Build.0 = Debug|ARM64 {C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Debug|x64.ActiveCfg = Debug|x64 {C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Debug|x64.Build.0 = Debug|x64 {C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Debug|x86.ActiveCfg = Debug|Win32 {C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Debug|x86.Build.0 = Debug|Win32 + {C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Installer.Debug|ARM64.ActiveCfg = Debug|ARM64 {C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Installer.Debug|x64.ActiveCfg = Debug|x64 {C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Installer.Debug|x86.ActiveCfg = Debug|Win32 + {C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Installer.Release|ARM64.ActiveCfg = Release|ARM64 {C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Installer.Release|x64.ActiveCfg = Release|x64 {C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Installer.Release|x86.ActiveCfg = Release|Win32 + {C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Release|ARM64.ActiveCfg = Release|ARM64 + {C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Release|ARM64.Build.0 = Release|ARM64 {C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Release|x64.ActiveCfg = Release|x64 {C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Release|x64.Build.0 = Release|x64 {C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Release|x86.ActiveCfg = Release|Win32 {C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Release|x86.Build.0 = Release|Win32 + {94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Debug|ARM64.Build.0 = Debug|Any CPU {94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Debug|x64.ActiveCfg = Debug|Any CPU {94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Debug|x64.Build.0 = Debug|Any CPU {94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Debug|x86.ActiveCfg = Debug|Any CPU {94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Debug|x86.Build.0 = Debug|Any CPU + {94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Installer.Debug|ARM64.ActiveCfg = Debug|Any CPU {94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Installer.Debug|x64.ActiveCfg = Debug|Any CPU {94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Installer.Debug|x86.ActiveCfg = Debug|Any CPU + {94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Installer.Release|ARM64.ActiveCfg = Release|Any CPU {94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Installer.Release|x64.ActiveCfg = Release|Any CPU {94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Installer.Release|x86.ActiveCfg = Release|Any CPU + {94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Release|ARM64.ActiveCfg = Release|Any CPU + {94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Release|ARM64.Build.0 = Release|Any CPU {94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Release|x64.ActiveCfg = Release|Any CPU {94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Release|x64.Build.0 = Release|Any CPU {94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Release|x86.ActiveCfg = Release|Any CPU {94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Release|x86.Build.0 = Release|Any CPU + {4920E350-D496-4652-AE98-6C4208AEC1D8}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {4920E350-D496-4652-AE98-6C4208AEC1D8}.Debug|ARM64.Build.0 = Debug|Any CPU {4920E350-D496-4652-AE98-6C4208AEC1D8}.Debug|x64.ActiveCfg = Debug|Any CPU {4920E350-D496-4652-AE98-6C4208AEC1D8}.Debug|x64.Build.0 = Debug|Any CPU {4920E350-D496-4652-AE98-6C4208AEC1D8}.Debug|x86.ActiveCfg = Debug|Any CPU {4920E350-D496-4652-AE98-6C4208AEC1D8}.Debug|x86.Build.0 = Debug|Any CPU + {4920E350-D496-4652-AE98-6C4208AEC1D8}.Installer.Debug|ARM64.ActiveCfg = Debug|Any CPU {4920E350-D496-4652-AE98-6C4208AEC1D8}.Installer.Debug|x64.ActiveCfg = Debug|Any CPU {4920E350-D496-4652-AE98-6C4208AEC1D8}.Installer.Debug|x86.ActiveCfg = Debug|Any CPU + {4920E350-D496-4652-AE98-6C4208AEC1D8}.Installer.Release|ARM64.ActiveCfg = Release|Any CPU {4920E350-D496-4652-AE98-6C4208AEC1D8}.Installer.Release|x64.ActiveCfg = Release|Any CPU {4920E350-D496-4652-AE98-6C4208AEC1D8}.Installer.Release|x86.ActiveCfg = Release|Any CPU + {4920E350-D496-4652-AE98-6C4208AEC1D8}.Release|ARM64.ActiveCfg = Release|Any CPU + {4920E350-D496-4652-AE98-6C4208AEC1D8}.Release|ARM64.Build.0 = Release|Any CPU {4920E350-D496-4652-AE98-6C4208AEC1D8}.Release|x64.ActiveCfg = Release|Any CPU {4920E350-D496-4652-AE98-6C4208AEC1D8}.Release|x64.Build.0 = Release|Any CPU {4920E350-D496-4652-AE98-6C4208AEC1D8}.Release|x86.ActiveCfg = Release|Any CPU {4920E350-D496-4652-AE98-6C4208AEC1D8}.Release|x86.Build.0 = Release|Any CPU + {6CDF9411-B852-4EAC-822D-8F930675F17B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6CDF9411-B852-4EAC-822D-8F930675F17B}.Debug|ARM64.Build.0 = Debug|ARM64 {6CDF9411-B852-4EAC-822D-8F930675F17B}.Debug|x64.ActiveCfg = Debug|x64 {6CDF9411-B852-4EAC-822D-8F930675F17B}.Debug|x64.Build.0 = Debug|x64 {6CDF9411-B852-4EAC-822D-8F930675F17B}.Debug|x86.ActiveCfg = Debug|Win32 {6CDF9411-B852-4EAC-822D-8F930675F17B}.Debug|x86.Build.0 = Debug|Win32 + {6CDF9411-B852-4EAC-822D-8F930675F17B}.Installer.Debug|ARM64.ActiveCfg = Debug|ARM64 {6CDF9411-B852-4EAC-822D-8F930675F17B}.Installer.Debug|x64.ActiveCfg = Debug|x64 {6CDF9411-B852-4EAC-822D-8F930675F17B}.Installer.Debug|x86.ActiveCfg = Debug|Win32 + {6CDF9411-B852-4EAC-822D-8F930675F17B}.Installer.Release|ARM64.ActiveCfg = Release|ARM64 {6CDF9411-B852-4EAC-822D-8F930675F17B}.Installer.Release|x64.ActiveCfg = Release|x64 {6CDF9411-B852-4EAC-822D-8F930675F17B}.Installer.Release|x86.ActiveCfg = Release|Win32 + {6CDF9411-B852-4EAC-822D-8F930675F17B}.Release|ARM64.ActiveCfg = Release|ARM64 + {6CDF9411-B852-4EAC-822D-8F930675F17B}.Release|ARM64.Build.0 = Release|ARM64 {6CDF9411-B852-4EAC-822D-8F930675F17B}.Release|x64.ActiveCfg = Release|x64 {6CDF9411-B852-4EAC-822D-8F930675F17B}.Release|x64.Build.0 = Release|x64 {6CDF9411-B852-4EAC-822D-8F930675F17B}.Release|x86.ActiveCfg = Release|Win32 {6CDF9411-B852-4EAC-822D-8F930675F17B}.Release|x86.Build.0 = Release|Win32 + {264A5D09-126F-4760-A3F1-4B3B95C925AA}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {264A5D09-126F-4760-A3F1-4B3B95C925AA}.Debug|ARM64.Build.0 = Debug|ARM64 {264A5D09-126F-4760-A3F1-4B3B95C925AA}.Debug|x64.ActiveCfg = Debug|x64 {264A5D09-126F-4760-A3F1-4B3B95C925AA}.Debug|x64.Build.0 = Debug|x64 {264A5D09-126F-4760-A3F1-4B3B95C925AA}.Debug|x86.ActiveCfg = Debug|Win32 {264A5D09-126F-4760-A3F1-4B3B95C925AA}.Debug|x86.Build.0 = Debug|Win32 + {264A5D09-126F-4760-A3F1-4B3B95C925AA}.Installer.Debug|ARM64.ActiveCfg = Debug|ARM64 {264A5D09-126F-4760-A3F1-4B3B95C925AA}.Installer.Debug|x64.ActiveCfg = Debug|x64 {264A5D09-126F-4760-A3F1-4B3B95C925AA}.Installer.Debug|x86.ActiveCfg = Debug|Win32 + {264A5D09-126F-4760-A3F1-4B3B95C925AA}.Installer.Release|ARM64.ActiveCfg = Release|ARM64 {264A5D09-126F-4760-A3F1-4B3B95C925AA}.Installer.Release|x64.ActiveCfg = Release|x64 {264A5D09-126F-4760-A3F1-4B3B95C925AA}.Installer.Release|x86.ActiveCfg = Release|Win32 + {264A5D09-126F-4760-A3F1-4B3B95C925AA}.Release|ARM64.ActiveCfg = Release|ARM64 + {264A5D09-126F-4760-A3F1-4B3B95C925AA}.Release|ARM64.Build.0 = Release|ARM64 {264A5D09-126F-4760-A3F1-4B3B95C925AA}.Release|x64.ActiveCfg = Release|x64 {264A5D09-126F-4760-A3F1-4B3B95C925AA}.Release|x64.Build.0 = Release|x64 {264A5D09-126F-4760-A3F1-4B3B95C925AA}.Release|x86.ActiveCfg = Release|Win32 {264A5D09-126F-4760-A3F1-4B3B95C925AA}.Release|x86.Build.0 = Release|Win32 + {1E997BEC-1642-4A5C-B252-852DA094E11E}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1E997BEC-1642-4A5C-B252-852DA094E11E}.Debug|ARM64.Build.0 = Debug|ARM64 {1E997BEC-1642-4A5C-B252-852DA094E11E}.Debug|x64.ActiveCfg = Debug|x64 {1E997BEC-1642-4A5C-B252-852DA094E11E}.Debug|x64.Build.0 = Debug|x64 {1E997BEC-1642-4A5C-B252-852DA094E11E}.Debug|x86.ActiveCfg = Debug|Win32 {1E997BEC-1642-4A5C-B252-852DA094E11E}.Debug|x86.Build.0 = Debug|Win32 + {1E997BEC-1642-4A5C-B252-852DA094E11E}.Installer.Debug|ARM64.ActiveCfg = Debug|ARM64 {1E997BEC-1642-4A5C-B252-852DA094E11E}.Installer.Debug|x64.ActiveCfg = Debug|x64 {1E997BEC-1642-4A5C-B252-852DA094E11E}.Installer.Debug|x86.ActiveCfg = Debug|Win32 + {1E997BEC-1642-4A5C-B252-852DA094E11E}.Installer.Release|ARM64.ActiveCfg = Release|ARM64 {1E997BEC-1642-4A5C-B252-852DA094E11E}.Installer.Release|x64.ActiveCfg = Release|x64 {1E997BEC-1642-4A5C-B252-852DA094E11E}.Installer.Release|x86.ActiveCfg = Release|Win32 + {1E997BEC-1642-4A5C-B252-852DA094E11E}.Release|ARM64.ActiveCfg = Release|ARM64 + {1E997BEC-1642-4A5C-B252-852DA094E11E}.Release|ARM64.Build.0 = Release|ARM64 {1E997BEC-1642-4A5C-B252-852DA094E11E}.Release|x64.ActiveCfg = Release|x64 {1E997BEC-1642-4A5C-B252-852DA094E11E}.Release|x64.Build.0 = Release|x64 {1E997BEC-1642-4A5C-B252-852DA094E11E}.Release|x86.ActiveCfg = Release|Win32 diff --git a/build/VStudio/winfsp_dll.vcxproj b/build/VStudio/winfsp_dll.vcxproj index cbd12cfd..f5220d97 100644 --- a/build/VStudio/winfsp_dll.vcxproj +++ b/build/VStudio/winfsp_dll.vcxproj @@ -1,11 +1,18 @@  - + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -71,49 +78,69 @@ Document - echo arch=$(PlatformTarget) >$(OutDir)fuse-$(PlatformTarget).pc -copy /b $(OutDir)fuse-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse-$(PlatformTarget).pc >nul - Writing fuse-$(PlatformTarget).pc - $(OutDir)fuse-$(PlatformTarget).pc + echo arch=$(MyProductFileArch) >$(OutDir)fuse-$(MyProductFileArch).pc +copy /b $(OutDir)fuse-$(MyProductFileArch).pc + %(FullPath) $(OutDir)fuse-$(MyProductFileArch).pc >nul + Writing fuse-$(MyProductFileArch).pc + $(OutDir)fuse-$(MyProductFileArch).pc false - echo arch=$(PlatformTarget) >$(OutDir)fuse-$(PlatformTarget).pc -copy /b $(OutDir)fuse-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse-$(PlatformTarget).pc >nul - Writing fuse-$(PlatformTarget).pc - $(OutDir)fuse-$(PlatformTarget).pc + echo arch=$(MyProductFileArch) >$(OutDir)fuse-$(MyProductFileArch).pc +copy /b $(OutDir)fuse-$(MyProductFileArch).pc + %(FullPath) $(OutDir)fuse-$(MyProductFileArch).pc >nul + Writing fuse-$(MyProductFileArch).pc + $(OutDir)fuse-$(MyProductFileArch).pc false - echo arch=$(PlatformTarget) >$(OutDir)fuse-$(PlatformTarget).pc -copy /b $(OutDir)fuse-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse-$(PlatformTarget).pc >nul - Writing fuse-$(PlatformTarget).pc - $(OutDir)fuse-$(PlatformTarget).pc + echo arch=$(MyProductFileArch) >$(OutDir)fuse-$(MyProductFileArch).pc +copy /b $(OutDir)fuse-$(MyProductFileArch).pc + %(FullPath) $(OutDir)fuse-$(MyProductFileArch).pc >nul + echo arch=$(MyProductFileArch) >$(OutDir)fuse-$(MyProductFileArch).pc +copy /b $(OutDir)fuse-$(MyProductFileArch).pc + %(FullPath) $(OutDir)fuse-$(MyProductFileArch).pc >nul + Writing fuse-$(MyProductFileArch).pc + Writing fuse-$(MyProductFileArch).pc + $(OutDir)fuse-$(MyProductFileArch).pc + $(OutDir)fuse-$(MyProductFileArch).pc false - echo arch=$(PlatformTarget) >$(OutDir)fuse-$(PlatformTarget).pc -copy /b $(OutDir)fuse-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse-$(PlatformTarget).pc >nul - Writing fuse-$(PlatformTarget).pc - $(OutDir)fuse-$(PlatformTarget).pc + false + echo arch=$(MyProductFileArch) >$(OutDir)fuse-$(MyProductFileArch).pc +copy /b $(OutDir)fuse-$(MyProductFileArch).pc + %(FullPath) $(OutDir)fuse-$(MyProductFileArch).pc >nul + echo arch=$(MyProductFileArch) >$(OutDir)fuse-$(MyProductFileArch).pc +copy /b $(OutDir)fuse-$(MyProductFileArch).pc + %(FullPath) $(OutDir)fuse-$(MyProductFileArch).pc >nul + Writing fuse-$(MyProductFileArch).pc + Writing fuse-$(MyProductFileArch).pc + $(OutDir)fuse-$(MyProductFileArch).pc + $(OutDir)fuse-$(MyProductFileArch).pc false + false Document - echo arch=$(PlatformTarget) >$(OutDir)fuse3-$(PlatformTarget).pc -copy /b $(OutDir)fuse3-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse3-$(PlatformTarget).pc >nul - echo arch=$(PlatformTarget) >$(OutDir)fuse3-$(PlatformTarget).pc -copy /b $(OutDir)fuse3-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse3-$(PlatformTarget).pc >nul - echo arch=$(PlatformTarget) >$(OutDir)fuse3-$(PlatformTarget).pc -copy /b $(OutDir)fuse3-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse3-$(PlatformTarget).pc >nul - echo arch=$(PlatformTarget) >$(OutDir)fuse3-$(PlatformTarget).pc -copy /b $(OutDir)fuse3-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse3-$(PlatformTarget).pc >nul - Writing fuse3-$(PlatformTarget).pc - Writing fuse3-$(PlatformTarget).pc - Writing fuse3-$(PlatformTarget).pc - Writing fuse3-$(PlatformTarget).pc - $(OutDir)fuse3-$(PlatformTarget).pc - $(OutDir)fuse3-$(PlatformTarget).pc - $(OutDir)fuse3-$(PlatformTarget).pc - $(OutDir)fuse3-$(PlatformTarget).pc + echo arch=$(MyProductFileArch) >$(OutDir)fuse3-$(MyProductFileArch).pc +copy /b $(OutDir)fuse3-$(MyProductFileArch).pc + %(FullPath) $(OutDir)fuse3-$(MyProductFileArch).pc >nul + echo arch=$(MyProductFileArch) >$(OutDir)fuse3-$(MyProductFileArch).pc +copy /b $(OutDir)fuse3-$(MyProductFileArch).pc + %(FullPath) $(OutDir)fuse3-$(MyProductFileArch).pc >nul + echo arch=$(MyProductFileArch) >$(OutDir)fuse3-$(MyProductFileArch).pc +copy /b $(OutDir)fuse3-$(MyProductFileArch).pc + %(FullPath) $(OutDir)fuse3-$(MyProductFileArch).pc >nul + echo arch=$(MyProductFileArch) >$(OutDir)fuse3-$(MyProductFileArch).pc +copy /b $(OutDir)fuse3-$(MyProductFileArch).pc + %(FullPath) $(OutDir)fuse3-$(MyProductFileArch).pc >nul + echo arch=$(MyProductFileArch) >$(OutDir)fuse3-$(MyProductFileArch).pc +copy /b $(OutDir)fuse3-$(MyProductFileArch).pc + %(FullPath) $(OutDir)fuse3-$(MyProductFileArch).pc >nul + echo arch=$(MyProductFileArch) >$(OutDir)fuse3-$(MyProductFileArch).pc +copy /b $(OutDir)fuse3-$(MyProductFileArch).pc + %(FullPath) $(OutDir)fuse3-$(MyProductFileArch).pc >nul + Writing fuse3-$(MyProductFileArch).pc + Writing fuse3-$(MyProductFileArch).pc + Writing fuse3-$(MyProductFileArch).pc + Writing fuse3-$(MyProductFileArch).pc + Writing fuse3-$(MyProductFileArch).pc + Writing fuse3-$(MyProductFileArch).pc + $(OutDir)fuse3-$(MyProductFileArch).pc + $(OutDir)fuse3-$(MyProductFileArch).pc + $(OutDir)fuse3-$(MyProductFileArch).pc + $(OutDir)fuse3-$(MyProductFileArch).pc + $(OutDir)fuse3-$(MyProductFileArch).pc + $(OutDir)fuse3-$(MyProductFileArch).pc false false false + false false + false @@ -123,7 +150,9 @@ copy /b $(OutDir)fuse3-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse3-$(Platf _UNICODE;UNICODE;%(PreprocessorDefinitions) _UNICODE;UNICODE;%(PreprocessorDefinitions) _UNICODE;UNICODE;%(PreprocessorDefinitions) + _UNICODE;UNICODE;%(PreprocessorDefinitions) _UNICODE;UNICODE;%(PreprocessorDefinitions) + _UNICODE;UNICODE;%(PreprocessorDefinitions) @@ -153,6 +182,12 @@ copy /b $(OutDir)fuse3-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse3-$(Platf $(DefaultPlatformToolset) Unicode + + DynamicLibrary + true + $(DefaultPlatformToolset) + Unicode + DynamicLibrary false @@ -160,6 +195,13 @@ copy /b $(OutDir)fuse3-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse3-$(Platf true Unicode + + DynamicLibrary + false + $(DefaultPlatformToolset) + true + Unicode + @@ -174,33 +216,39 @@ copy /b $(OutDir)fuse3-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse3-$(Platf + + + + + + true - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(MyProductFileName)-$(PlatformTarget) + $(MyProductFileName)-$(MyProductFileArch) true - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(MyProductFileName)-$(PlatformTarget) + $(MyProductFileName)-$(MyProductFileArch) + + + true + $(MyProductFileName)-$(MyProductFileArch) false - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(MyProductFileName)-$(PlatformTarget) + $(MyProductFileName)-$(MyProductFileArch) false - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(MyProductFileName)-$(PlatformTarget) + $(MyProductFileName)-$(MyProductFileArch) + + + false + $(MyProductFileName)-$(MyProductFileArch) @@ -256,6 +304,33 @@ copy /b $(OutDir)fuse3-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse3-$(Platf $(OutDir)$(TargetFileName).public.pdb + + + + + Level3 + Disabled + _DEBUG;_WINDOWS;_USRDLL;WINFSPDLL_EXPORTS;%(PreprocessorDefinitions) + + + ..\..\src;..\..\inc + MultiThreaded + Default + false + + + + + Windows + $(OutDir)$(TargetFileName).pdb + true + $(OutDir)$(TargetFileName).map + true + ..\..\src\dll\library.def + %(AdditionalDependencies);rpcrt4.lib;credui.lib;secur32.lib;version.lib;netapi32.lib;wldap32.lib + $(OutDir)$(TargetFileName).public.pdb + + Level3 @@ -318,6 +393,37 @@ copy /b $(OutDir)fuse3-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse3-$(Platf /PDBALTPATH:$(TargetFileName).pdb %(AdditionalOptions) + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_WINDOWS;_USRDLL;WINFSPDLL_EXPORTS;%(PreprocessorDefinitions) + + + ..\..\src;..\..\inc + MultiThreaded + false + + + + + Windows + true + true + $(OutDir)$(TargetFileName).pdb + true + $(OutDir)$(TargetFileName).map + true + ..\..\src\dll\library.def + %(AdditionalDependencies);rpcrt4.lib;credui.lib;secur32.lib;version.lib;netapi32.lib;wldap32.lib + $(OutDir)$(TargetFileName).public.pdb + /PDBALTPATH:$(TargetFileName).pdb %(AdditionalOptions) + + diff --git a/build/VStudio/winfsp_sys.vcxproj b/build/VStudio/winfsp_sys.vcxproj index c681fbe4..ba561078 100644 --- a/build/VStudio/winfsp_sys.vcxproj +++ b/build/VStudio/winfsp_sys.vcxproj @@ -1,11 +1,18 @@  - + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -55,6 +62,14 @@ Driver WDM + + Windows10 + true + $(DDK_LIB_PATH)\BufferOverflowFastFailK.lib + WindowsKernelModeDriver10.0 + Driver + WDM + Windows10 false @@ -63,6 +78,14 @@ Driver WDM + + Windows10 + false + $(DDK_LIB_PATH)\BufferOverflowFastFailK.lib + WindowsKernelModeDriver10.0 + Driver + WDM + @@ -73,30 +96,32 @@ DbgengKernelDebugger - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(MyProductFileName)-$(PlatformTarget) + $(MyProductFileName)-$(MyProductFileArch) false DbgengKernelDebugger - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(MyProductFileName)-$(PlatformTarget) + $(MyProductFileName)-$(MyProductFileArch) false DbgengKernelDebugger - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(MyProductFileName)-$(PlatformTarget) + $(MyProductFileName)-$(MyProductFileArch) + false + + + DbgengKernelDebugger + $(MyProductFileName)-$(MyProductFileArch) false DbgengKernelDebugger - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ - $(MyProductFileName)-$(PlatformTarget) + $(MyProductFileName)-$(MyProductFileArch) + false + + + DbgengKernelDebugger + $(MyProductFileName)-$(MyProductFileArch) false @@ -142,6 +167,20 @@ $(OutDir)$(TargetName)$(TargetExt).lib + + + ..\..\src;..\..\opt\fsext\inc;..\..\inc;%(AdditionalIncludeDirectories) + _WIN64;_ARM64_;ARM64;%(PreprocessorDefinitions) + + + cng.lib;wdmsec.lib;%(AdditionalDependencies) + true + $(OutDir)$(TargetFileName).pdb + $(OutDir)$(TargetFileName).map + $(OutDir)$(TargetFileName).public.pdb + $(OutDir)$(TargetName)$(TargetExt).lib + + ..\..\src;..\..\opt\fsext\inc;..\..\inc;%(AdditionalIncludeDirectories) @@ -157,6 +196,21 @@ $(OutDir)$(TargetName)$(TargetExt).lib + + + ..\..\src;..\..\opt\fsext\inc;..\..\inc;%(AdditionalIncludeDirectories) + _WIN64;_ARM64_;ARM64;%(PreprocessorDefinitions) + + + cng.lib;wdmsec.lib;%(AdditionalDependencies) + true + $(OutDir)$(TargetFileName).pdb + $(OutDir)$(TargetFileName).map + $(OutDir)$(TargetFileName).public.pdb + /PDBALTPATH:$(TargetFileName).pdb %(AdditionalOptions) + $(OutDir)$(TargetName)$(TargetExt).lib + + @@ -180,6 +234,7 @@ + @@ -210,7 +265,9 @@ _X86_=1;i386=1;STD_CALL;%(PreprocessorDefinitions) _X86_=1;i386=1;STD_CALL;%(PreprocessorDefinitions) _WIN64;_AMD64_=1;AMD64;%(PreprocessorDefinitions) + _WIN64;_ARM64_=1;ARM64;%(PreprocessorDefinitions) _WIN64;_AMD64_=1;AMD64;%(PreprocessorDefinitions) + _WIN64;_ARM64_=1;ARM64;%(PreprocessorDefinitions) @@ -218,64 +275,94 @@ Document set DriverFile=$(TargetFileName) set Provider="$(MyCompanyName)" -set CatalogFile=driver-$(PlatformTarget).cat +set CatalogFile=driver-$(MyProductFileArch).cat setlocal EnableDelayedExpansion -if exist $(OutDir)driver-$(PlatformTarget).inf del $(OutDir)driver-$(PlatformTarget).inf +if exist $(OutDir)driver-$(MyProductFileArch).inf del $(OutDir)driver-$(MyProductFileArch).inf for /f "delims=" %%l in (%(FullPath)) do ( set line=%%l - echo !line! >>$(OutDir)driver-$(PlatformTarget).inf + echo !line! >>$(OutDir)driver-$(MyProductFileArch).inf ) -stampinf -d * -v $(MyVersion) -f $(OutDir)driver-$(PlatformTarget).inf +stampinf -d * -v $(MyVersion) -f $(OutDir)driver-$(MyProductFileArch).inf false set DriverFile=$(TargetFileName) set Provider="$(MyCompanyName)" -set CatalogFile=driver-$(PlatformTarget).cat +set CatalogFile=driver-$(MyProductFileArch).cat setlocal EnableDelayedExpansion -if exist $(OutDir)driver-$(PlatformTarget).inf del $(OutDir)driver-$(PlatformTarget).inf +if exist $(OutDir)driver-$(MyProductFileArch).inf del $(OutDir)driver-$(MyProductFileArch).inf for /f "delims=" %%l in (%(FullPath)) do ( set line=%%l - echo !line! >>$(OutDir)driver-$(PlatformTarget).inf + echo !line! >>$(OutDir)driver-$(MyProductFileArch).inf ) -stampinf -d * -v $(MyVersion) -f $(OutDir)driver-$(PlatformTarget).inf +stampinf -d * -v $(MyVersion) -f $(OutDir)driver-$(MyProductFileArch).inf false set DriverFile=$(TargetFileName) set Provider="$(MyCompanyName)" -set CatalogFile=driver-$(PlatformTarget).cat +set CatalogFile=driver-$(MyProductFileArch).cat setlocal EnableDelayedExpansion -if exist $(OutDir)driver-$(PlatformTarget).inf del $(OutDir)driver-$(PlatformTarget).inf +if exist $(OutDir)driver-$(MyProductFileArch).inf del $(OutDir)driver-$(MyProductFileArch).inf for /f "delims=" %%l in (%(FullPath)) do ( set line=%%l - echo !line! >>$(OutDir)driver-$(PlatformTarget).inf + echo !line! >>$(OutDir)driver-$(MyProductFileArch).inf ) -stampinf -d * -v $(MyVersion) -f $(OutDir)driver-$(PlatformTarget).inf +stampinf -d * -v $(MyVersion) -f $(OutDir)driver-$(MyProductFileArch).inf + set DriverFile=$(TargetFileName) +set Provider="$(MyCompanyName)" +set CatalogFile=driver-$(MyProductFileArch).cat + +setlocal EnableDelayedExpansion +if exist $(OutDir)driver-$(MyProductFileArch).inf del $(OutDir)driver-$(MyProductFileArch).inf +for /f "delims=" %%l in (%(FullPath)) do ( + set line=%%l + echo !line! >>$(OutDir)driver-$(MyProductFileArch).inf +) + +stampinf -d * -v $(MyVersion) -f $(OutDir)driver-$(MyProductFileArch).inf false + false set DriverFile=$(TargetFileName) set Provider="$(MyCompanyName)" -set CatalogFile=driver-$(PlatformTarget).cat +set CatalogFile=driver-$(MyProductFileArch).cat setlocal EnableDelayedExpansion -if exist $(OutDir)driver-$(PlatformTarget).inf del $(OutDir)driver-$(PlatformTarget).inf +if exist $(OutDir)driver-$(MyProductFileArch).inf del $(OutDir)driver-$(MyProductFileArch).inf for /f "delims=" %%l in (%(FullPath)) do ( set line=%%l - echo !line! >>$(OutDir)driver-$(PlatformTarget).inf + echo !line! >>$(OutDir)driver-$(MyProductFileArch).inf ) -stampinf -d * -v $(MyVersion) -f $(OutDir)driver-$(PlatformTarget).inf +stampinf -d * -v $(MyVersion) -f $(OutDir)driver-$(MyProductFileArch).inf + set DriverFile=$(TargetFileName) +set Provider="$(MyCompanyName)" +set CatalogFile=driver-$(MyProductFileArch).cat + +setlocal EnableDelayedExpansion +if exist $(OutDir)driver-$(MyProductFileArch).inf del $(OutDir)driver-$(MyProductFileArch).inf +for /f "delims=" %%l in (%(FullPath)) do ( + set line=%%l + echo !line! >>$(OutDir)driver-$(MyProductFileArch).inf +) + +stampinf -d * -v $(MyVersion) -f $(OutDir)driver-$(MyProductFileArch).inf false - Writing driver-$(PlatformTarget).inf - $(OutDir)driver-$(PlatformTarget).inf - Writing driver-$(PlatformTarget).inf - $(OutDir)driver-$(PlatformTarget).inf - Writing driver-$(PlatformTarget).inf - $(OutDir)driver-$(PlatformTarget).inf - Writing driver-$(PlatformTarget).inf - $(OutDir)driver-$(PlatformTarget).inf + false + Writing driver-$(MyProductFileArch).inf + $(OutDir)driver-$(MyProductFileArch).inf + Writing driver-$(MyProductFileArch).inf + $(OutDir)driver-$(MyProductFileArch).inf + Writing driver-$(MyProductFileArch).inf + Writing driver-$(MyProductFileArch).inf + $(OutDir)driver-$(MyProductFileArch).inf + $(OutDir)driver-$(MyProductFileArch).inf + Writing driver-$(MyProductFileArch).inf + Writing driver-$(MyProductFileArch).inf + $(OutDir)driver-$(MyProductFileArch).inf + $(OutDir)driver-$(MyProductFileArch).inf diff --git a/build/VStudio/winfsp_sys.vcxproj.filters b/build/VStudio/winfsp_sys.vcxproj.filters index 7c248ca6..a23ea4f0 100644 --- a/build/VStudio/winfsp_sys.vcxproj.filters +++ b/build/VStudio/winfsp_sys.vcxproj.filters @@ -128,6 +128,9 @@ Source + + Source + diff --git a/doc/WinFsp-on-ARM64.asciidoc b/doc/WinFsp-on-ARM64.asciidoc new file mode 100644 index 00000000..bea37883 --- /dev/null +++ b/doc/WinFsp-on-ARM64.asciidoc @@ -0,0 +1,37 @@ += WinFsp on ARM64 + +This document summarizes the changes made to WinFsp to support Windows on ARM64. With these changes WinFsp runs natively in the ARM64 environment, while maintaining backwards compatibility. + +== Build System + +* Global configuration is now done by the files `Directory.Build.props` and `After.props` located in `build\VStudio`. +* Product configuration (`MyProductName`, etc.) is still done by the file `version.properties` located in `build\VStudio`. Non-product configuration portions of the file have migrated to `Directory.Build.props`. +* Project files under `build\VStudio` have been updated to support ARM64 builds. + +== Include Files + +* The macros `FSP_FSCTL_PRODUCT_FULL_REGKEY` and `FSP_FSCTL_PRODUCT_FILE_ARCH` have been added to header file `inc\winfsp\fsctl.h`: +** `FSP_FSCTL_PRODUCT_FULL_REGKEY`: The full registry path for WinFsp. +** `FSP_FSCTL_PRODUCT_FILE_ARCH`: The expected computer architecture suffix to use for file names (`a64` for ARM64, `x64` for x64, `x86` for x86). + +== File System Driver + +* The `IoInitializeTimer`, `IoStartTimer` and `IoStopTimer` DDI's are missing from Windows on ARM64 (https://social.msdn.microsoft.com/Forums/en-US/e1f4dbbd-a3f1-40a4-8f8b-e12a04b1b074/is-iostarttimer-universal[link]). The same functionality is now implemented within WinFsp in file `src\sys\devtimer.c` + +== Samples + +* The sample project files have been updated to support ARM64 builds. + +== Installer + +* The installer has been retrofitted to support native installation on ARM64, x64 and x86 environments. +* The installer remains a single MSI file that supports all architectures. +** NOTE: The current technique for detecting OS architecture relies on reading the registry value `PROCESSOR_ARCHITECTURE` from key `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment`. This may be fragile and a better technique may be required. +* Files are installed in `\Program Files (x86)\WinFsp` on ARM64 and x64 Windows and `\Program Files` on x86 Windows. +* Registry settings are placed in `HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\WinFsp` on ARM64 and x64 Windows and `HKEY_LOCAL_MACHINE\SOFTWARE\WinFsp` on x86 Windows. +* Files for all architectures are always installed regardless of OS architecture. For example, all of `winfsp-a64.dll`, `winfsp-x64.dll` and `winfsp-x86.dll` are found in the `bin` subdirectory on ARM64, x64 and x86 Windows. +* WinFsp supports x86 file systems on x86 Windows, x86 and x64 file systems on x64 Windows and x86, x64 and ARM64 file systems on ARM64 Windows. + +== License + +* The special exception for FLOSS to GPLv3 has been updated to mention that linking to `winfsp-a64.dll` is also allowed. diff --git a/inc/winfsp/fsctl.h b/inc/winfsp/fsctl.h index 0eec0da7..9bd35a76 100644 --- a/inc/winfsp/fsctl.h +++ b/inc/winfsp/fsctl.h @@ -66,6 +66,22 @@ extern const __declspec(selectany) GUID FspFsvrtDeviceClassGuid = { 0xb48171c3, 0xdd50, 0x4852, { 0x83, 0xa3, 0x34, 0x4c, 0x50, 0xd9, 0x3b, 0x17 } }; #endif +/* locations */ +#define FSP_FSCTL_PRODUCT_REGKEY "Software\\" FSP_FSCTL_PRODUCT_NAME +#define FSP_FSCTL_PRODUCT_REGKEY_WOW64 KEY_WOW64_32KEY +#if defined(_ARM64_) +#define FSP_FSCTL_PRODUCT_FULL_REGKEY "Software\\WOW6432Node\\" FSP_FSCTL_PRODUCT_NAME +#define FSP_FSCTL_PRODUCT_FILE_ARCH "a64" +#elif defined(_AMD64_) +#define FSP_FSCTL_PRODUCT_FULL_REGKEY "Software\\WOW6432Node\\" FSP_FSCTL_PRODUCT_NAME +#define FSP_FSCTL_PRODUCT_FILE_ARCH "x64" +#elif defined(_X86_) +#define FSP_FSCTL_PRODUCT_FULL_REGKEY "Software\\" FSP_FSCTL_PRODUCT_NAME +#define FSP_FSCTL_PRODUCT_FILE_ARCH "x86" +#else +#error unknown architecture +#endif + /* alignment macros */ #define FSP_FSCTL_ALIGN_UP(x, s) (((x) + ((s) - 1L)) & ~((s) - 1L)) #define FSP_FSCTL_DEFAULT_ALIGNMENT 8 diff --git a/inc/winfsp/launch.h b/inc/winfsp/launch.h index 0b29acac..44b50eef 100644 --- a/inc/winfsp/launch.h +++ b/inc/winfsp/launch.h @@ -32,8 +32,9 @@ extern "C" { #endif -#define FSP_LAUNCH_REGKEY "Software\\" FSP_FSCTL_PRODUCT_NAME "\\Services" -#define FSP_LAUNCH_REGKEY_WOW64 KEY_WOW64_32KEY +#define FSP_LAUNCH_REGKEY FSP_FSCTL_PRODUCT_REGKEY "\\Services" +#define FSP_LAUNCH_REGKEY_WOW64 FSP_FSCTL_PRODUCT_REGKEY_WOW64 +#define FSP_LAUNCH_FULL_REGKEY FSP_FSCTL_PRODUCT_FULL_REGKEY "\\Services" #define FSP_LAUNCH_PIPE_NAME "\\\\.\\pipe\\" FSP_FSCTL_PRODUCT_NAME ".{14E7137D-22B4-437A-B0C1-D21D1BDF3767}" #define FSP_LAUNCH_PIPE_BUFFER_SIZE 4096 diff --git a/inc/winfsp/winfsp.h b/inc/winfsp/winfsp.h index 00b4eb89..c72c7c31 100644 --- a/inc/winfsp/winfsp.h +++ b/inc/winfsp/winfsp.h @@ -2126,11 +2126,7 @@ FSP_API NTSTATUS FspVersion(PUINT32 PVersion); static inline NTSTATUS FspLoad(PVOID *PModule) { -#if defined(_WIN64) -#define FSP_DLLNAME FSP_FSCTL_PRODUCT_FILE_NAME "-x64.dll" -#else -#define FSP_DLLNAME FSP_FSCTL_PRODUCT_FILE_NAME "-x86.dll" -#endif +#define FSP_DLLNAME FSP_FSCTL_PRODUCT_FILE_NAME "-" FSP_FSCTL_PRODUCT_FILE_ARCH ".dll" #define FSP_DLLPATH "bin\\" FSP_DLLNAME WINADVAPI @@ -2147,7 +2143,6 @@ NTSTATUS FspLoad(PVOID *PModule) WCHAR PathBuf[MAX_PATH]; DWORD Size; - HKEY RegKey; LONG Result; HMODULE Module; @@ -2157,15 +2152,9 @@ NTSTATUS FspLoad(PVOID *PModule) Module = LoadLibraryW(L"" FSP_DLLNAME); if (0 == Module) { - Result = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\" FSP_FSCTL_PRODUCT_NAME, - 0, KEY_READ | KEY_WOW64_32KEY, &RegKey); - if (ERROR_SUCCESS == Result) - { - Size = sizeof PathBuf - sizeof L"" FSP_DLLPATH + sizeof(WCHAR); - Result = RegGetValueW(RegKey, 0, L"InstallDir", - RRF_RT_REG_SZ, 0, PathBuf, &Size); - RegCloseKey(RegKey); - } + Size = sizeof PathBuf - sizeof L"" FSP_DLLPATH + sizeof(WCHAR); + Result = RegGetValueW(HKEY_LOCAL_MACHINE, L"" FSP_FSCTL_PRODUCT_FULL_REGKEY, L"InstallDir", + RRF_RT_REG_SZ, 0, PathBuf, &Size); if (ERROR_SUCCESS != Result) return STATUS_OBJECT_NAME_NOT_FOUND; @@ -2180,8 +2169,8 @@ NTSTATUS FspLoad(PVOID *PModule) return STATUS_SUCCESS; -#undef FSP_DLLNAME #undef FSP_DLLPATH +#undef FSP_DLLNAME } #ifdef __cplusplus diff --git a/opt/fsext/lib/winfsp-a64.lib b/opt/fsext/lib/winfsp-a64.lib new file mode 100644 index 0000000000000000000000000000000000000000..776bbdf5462d44755203f876487f186ebe3935dc GIT binary patch literal 4672 zcmcInO=ufO6n>KIIF@BgPTNy!P~AYCLTty8l%|BDq;jZ6;ynXXb!)z|UpPb6_&+!xdn2x5skJBd#-q*)T0C*i>U=v{QA;8c$Kbl#~B>>Vg6}OFUp&YjKw%bN7132wA_SlB^NUPW9=BpQLO1(6@@Ih^^ zs$8tq*Ywts)jr-Rb|?RrOcn4y@Bmepw59rS!Q>QxO(U!QNZ7j;!J7IZaG5jc!A3MvMwh|)d> zrAyi;nyqn@1|(*-s%Ea}mZcjl3vJMvtEO&WD`{5K)Z4bfte%<_rNGQBPNx`*x?}+Y zKCi&ceMxVr#v0n}*i~)V%d_j^gi72LK)p0*nsA;H89A{|$DZ$XB`}_Z%j{ZRxM8GF;?v6Mb z{b=~wj%UP}g!z7Cc!n4sp5H~3L_V@z>&sqznf~!zv(8eYt~dY z>ZZ<52bryIBw+T7&7C7LlA-Q1scKhNuO40ShJe>Gd`<^mUxduLNnLH&jiWP^^(ub+ zitT|%NMK)t=`ByL;E@3j35X*el_T^bWVhnjzlLW6c}Dm}y$!Eq@ce#6AvK@Zha*@bwM9 z?&w`JlRxR#cj`tQp8fFe-uI4$uDP;Zqq;2r&Fq?!lt^~X*L2|ZWY@f`-Ox>Z$Iykz5dQ0Up<{dO9n!g$Vw(2?_fMJc6jqX@dWvUU~1i{Vk~3|KaBQ7J}-LW zyWfAjOYZBzkR`Or<1u<)y$tiqf9~8Pm`NVfuOD9&vmlB1)LrudiTDtYc}ez<9mf9; DgjMN| literal 0 HcmV?d00001 diff --git a/src/dll/mount.c b/src/dll/mount.c index 94dea8be..f6b60e6d 100644 --- a/src/dll/mount.c +++ b/src/dll/mount.c @@ -32,24 +32,17 @@ static BOOLEAN FspMountDoNotUseLauncher; static VOID FspMountInitializeFromRegistry(VOID) { - HKEY RegKey; - LONG Result; - DWORD Size; DWORD MountDoNotUseLauncher; + DWORD Size; + LONG Result; MountDoNotUseLauncher = 0; - - Result = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\" FSP_FSCTL_PRODUCT_NAME, - 0, KEY_READ | KEY_WOW64_32KEY, &RegKey); + Size = sizeof MountDoNotUseLauncher; + Result = RegGetValueW(HKEY_LOCAL_MACHINE, L"" FSP_FSCTL_PRODUCT_FULL_REGKEY, + L"MountDoNotUseLauncher", + RRF_RT_REG_DWORD, 0, &MountDoNotUseLauncher, &Size); if (ERROR_SUCCESS == Result) - { - Size = sizeof MountDoNotUseLauncher; - Result = RegGetValueW(RegKey, 0, L"MountDoNotUseLauncher", - RRF_RT_REG_DWORD, 0, &MountDoNotUseLauncher, &Size); - RegCloseKey(RegKey); - } - - FspMountDoNotUseLauncher = !!MountDoNotUseLauncher; + FspMountDoNotUseLauncher = !!MountDoNotUseLauncher; } static BOOL WINAPI FspMountInitialize( diff --git a/src/dotnet/Interop.cs b/src/dotnet/Interop.cs index 797d5b6a..8850a650 100644 --- a/src/dotnet/Interop.cs +++ b/src/dotnet/Interop.cs @@ -1433,18 +1433,30 @@ namespace Fsp.Interop internal static String ProductFileName = "winfsp"; private static IntPtr LoadDll() { - String DllPath = null; - String DllName = 8 == IntPtr.Size ? - ProductFileName + "-x64.dll" : - ProductFileName + "-x86.dll"; - String KeyName = 8 == IntPtr.Size ? - "HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\" + ProductName : - "HKEY_LOCAL_MACHINE\\Software\\" + ProductName; + String RegPath, DllName, DllPath; + SYSTEM_INFO SystemInfo; + GetSystemInfo(out SystemInfo); + switch ((UInt32)SystemInfo.wProcessorArchitecture) + { + case SYSTEM_INFO.PROCESSOR_ARCHITECTURE_ARM64: + RegPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\" + ProductName; + DllName = ProductFileName + "-a64.dll"; + break; + case SYSTEM_INFO.PROCESSOR_ARCHITECTURE_AMD64: + RegPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\" + ProductName; + DllName = ProductFileName + "-x64.dll"; + break; + case SYSTEM_INFO.PROCESSOR_ARCHITECTURE_INTEL: + default: + RegPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\" + ProductName; + DllName = ProductFileName + "-x86.dll"; + break; + } IntPtr Module; Module = LoadLibraryW(DllName); if (IntPtr.Zero == Module) { - DllPath = Microsoft.Win32.Registry.GetValue(KeyName, "InstallDir", null) as String; + DllPath = Microsoft.Win32.Registry.GetValue(RegPath, "InstallDir", null) as String; if (null != DllPath) { DllPath = Path.Combine(DllPath, Path.Combine("bin", DllName)); @@ -1546,6 +1558,39 @@ namespace Fsp.Interop CheckVersion(); } + [StructLayout(LayoutKind.Sequential)] + private struct SYSTEM_INFO + { + internal const UInt32 PROCESSOR_ARCHITECTURE_INTEL = 0; + internal const UInt32 PROCESSOR_ARCHITECTURE_MIPS = 1; + internal const UInt32 PROCESSOR_ARCHITECTURE_ALPHA = 2; + internal const UInt32 PROCESSOR_ARCHITECTURE_PPC = 3; + internal const UInt32 PROCESSOR_ARCHITECTURE_SHX = 4; + internal const UInt32 PROCESSOR_ARCHITECTURE_ARM = 5; + internal const UInt32 PROCESSOR_ARCHITECTURE_IA64 = 6; + internal const UInt32 PROCESSOR_ARCHITECTURE_ALPHA64 = 7; + internal const UInt32 PROCESSOR_ARCHITECTURE_MSIL = 8; + internal const UInt32 PROCESSOR_ARCHITECTURE_AMD64 = 9; + internal const UInt32 PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 = 10; + internal const UInt32 PROCESSOR_ARCHITECTURE_NEUTRAL = 11; + internal const UInt32 PROCESSOR_ARCHITECTURE_ARM64 = 12; + internal const UInt32 PROCESSOR_ARCHITECTURE_ARM32_ON_WIN64 = 13; + internal const UInt32 PROCESSOR_ARCHITECTURE_IA32_ON_ARM64 = 14; + internal const UInt32 PROCESSOR_ARCHITECTURE_UNKNOWN = 0xFFFF; + + internal UInt16 wProcessorArchitecture; + internal UInt16 wReserved; + internal UInt32 dwPageSize; + internal IntPtr lpMinimumApplicationAddress; + internal IntPtr lpMaximumApplicationAddress; + internal IntPtr dwActiveProcessorMask; + internal UInt32 dwNumberOfProcessors; + internal UInt32 dwProcessorType; + internal UInt32 dwAllocationGranularity; + internal UInt16 wProcessorLevel; + internal UInt16 wProcessorRevision; + } + [DllImport("kernel32.dll", CallingConvention = CallingConvention.StdCall, SetLastError = true)] private static extern IntPtr LoadLibraryW( [MarshalAs(UnmanagedType.LPWStr)] String DllName); @@ -1553,6 +1598,9 @@ namespace Fsp.Interop private static extern IntPtr GetProcAddress( IntPtr hModule, [MarshalAs(UnmanagedType.LPStr)] String lpProcName); + [DllImport("kernel32.dll", CallingConvention = CallingConvention.StdCall, SetLastError = false)] + private static extern void GetSystemInfo( + out SYSTEM_INFO SystemInfo); [DllImport("advapi32.dll", CallingConvention = CallingConvention.StdCall)] private static extern UInt32 GetSecurityDescriptorLength(IntPtr SecurityDescriptor); [DllImport("kernel32.dll", CallingConvention = CallingConvention.StdCall, SetLastError = true)] diff --git a/src/shared/ku/posix.c b/src/shared/ku/posix.c index 53fe7463..02f5fa2f 100644 --- a/src/shared/ku/posix.c +++ b/src/shared/ku/posix.c @@ -174,24 +174,17 @@ exit: static VOID FspPosixInitializeFromRegistry(VOID) { - HKEY RegKey; - LONG Result; - DWORD Size; DWORD DistinctPermsForSameOwnerGroup; + DWORD Size; + LONG Result; DistinctPermsForSameOwnerGroup = 0; - - Result = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\" FSP_FSCTL_PRODUCT_NAME, - 0, KEY_READ | KEY_WOW64_32KEY, &RegKey); + Size = sizeof DistinctPermsForSameOwnerGroup; + Result = RegGetValueW(HKEY_LOCAL_MACHINE, L"" FSP_FSCTL_PRODUCT_FULL_REGKEY, + L"DistinctPermsForSameOwnerGroup", + RRF_RT_REG_DWORD, 0, &DistinctPermsForSameOwnerGroup, &Size); if (ERROR_SUCCESS == Result) - { - Size = sizeof DistinctPermsForSameOwnerGroup; - Result = RegGetValueW(RegKey, 0, L"DistinctPermsForSameOwnerGroup", - RRF_RT_REG_DWORD, 0, &DistinctPermsForSameOwnerGroup, &Size); - RegCloseKey(RegKey); - } - - FspDistinctPermsForSameOwnerGroup = !!DistinctPermsForSameOwnerGroup; + FspDistinctPermsForSameOwnerGroup = !!DistinctPermsForSameOwnerGroup; } static BOOL WINAPI FspPosixInitialize( diff --git a/src/sys/device.c b/src/sys/device.c index f946b75b..f2685118 100644 --- a/src/sys/device.c +++ b/src/sys/device.c @@ -442,13 +442,13 @@ static NTSTATUS FspFsvolDeviceInit(PDEVICE_OBJECT DeviceObject) /* initialize our timer routine and start our expiration timer */ #pragma prefast(suppress:28133, "We are a filesystem: we do not have AddDevice") - Result = IoInitializeTimer(DeviceObject, FspFsvolDeviceTimerRoutine, 0); + Result = FspDeviceInitializeTimer(DeviceObject, FspFsvolDeviceTimerRoutine, 0); if (!NT_SUCCESS(Result)) return Result; KeInitializeSpinLock(&FsvolDeviceExtension->ExpirationLock); ExInitializeWorkItem(&FsvolDeviceExtension->ExpirationWorkItem, FspFsvolDeviceExpirationRoutine, DeviceObject); - IoStartTimer(DeviceObject); + FspDeviceStartTimer(DeviceObject); FsvolDeviceExtension->InitDoneTimer = 1; /* initialize the volume information */ @@ -472,7 +472,7 @@ static VOID FspFsvolDeviceFini(PDEVICE_OBJECT DeviceObject) * references our DeviceObject before queueing work items. */ if (FsvolDeviceExtension->InitDoneTimer) - IoStopTimer(DeviceObject); + FspDeviceStopTimer(DeviceObject); /* delete the file system statistics */ if (FsvolDeviceExtension->InitDoneStat) diff --git a/src/sys/devtimer.c b/src/sys/devtimer.c new file mode 100644 index 00000000..86cc6af9 --- /dev/null +++ b/src/sys/devtimer.c @@ -0,0 +1,124 @@ +/** + * @file sys/devtimer.c + * + * @copyright 2015-2021 Bill Zissimopoulos + */ +/* + * This file is part of WinFsp. + * + * You can redistribute it and/or modify it under the terms of the GNU + * General Public License version 3 as published by the Free Software + * Foundation. + * + * Licensees holding a valid commercial license may use this software + * in accordance with the commercial license agreement provided in + * conjunction with the software. The terms and conditions of any such + * commercial license agreement shall govern, supersede, and render + * ineffective any application of the GPLv3 license to this software, + * notwithstanding of any reference thereto in the software or + * associated repository. + */ + +#include + +/* + * IoTimer Emulation. + * + * This is required because IoInitializeTimer and friends is missing from Windows on ARM64. + */ + +static LIST_ENTRY FspDeviceTimerList; +static KSPIN_LOCK FspDeviceTimerLock; +static KDPC FspDeviceTimerDpc; +static KTIMER FspDeviceTimer; + +static KDEFERRED_ROUTINE FspDeviceTimerRoutine; + +NTSTATUS FspDeviceInitializeAllTimers(VOID) +{ + LARGE_INTEGER DueTime; + LONG Period; + + InitializeListHead(&FspDeviceTimerList); + KeInitializeSpinLock(&FspDeviceTimerLock); + + KeInitializeDpc(&FspDeviceTimerDpc, FspDeviceTimerRoutine, 0); + KeInitializeTimerEx(&FspDeviceTimer, SynchronizationTimer); + + DueTime.QuadPart = 1000/*ms*/ * -10000; + Period = 1000/*ms*/; + KeSetTimerEx(&FspDeviceTimer, DueTime, Period, &FspDeviceTimerDpc); + + return STATUS_SUCCESS; +} + +VOID FspDeviceFinalizeAllTimers(VOID) +{ + KeCancelTimer(&FspDeviceTimer); + +#if DBG + KIRQL Irql; + KeAcquireSpinLock(&FspDeviceTimerLock, &Irql); + ASSERT(IsListEmpty(&FspDeviceTimerList)); + KeReleaseSpinLock(&FspDeviceTimerLock, Irql); +#endif +} + +static VOID FspDeviceTimerRoutine( + PKDPC Dpc, + PVOID DeferredContext, + PVOID SystemArgument1, + PVOID SystemArgument2) +{ + FSP_DEVICE_TIMER *Timer; + PLIST_ENTRY ListEntry; + KIRQL Irql; + + KeAcquireSpinLock(&FspDeviceTimerLock, &Irql); + for (ListEntry = FspDeviceTimerList.Flink; + &FspDeviceTimerList != ListEntry; + ListEntry = ListEntry->Flink) + { + Timer = CONTAINING_RECORD(ListEntry, FSP_DEVICE_TIMER, ListEntry); + Timer->TimerRoutine(Timer->DeviceObject, Timer->Context); + } + KeReleaseSpinLock(&FspDeviceTimerLock, Irql); +} + +NTSTATUS FspDeviceInitializeTimer(PDEVICE_OBJECT DeviceObject, + PIO_TIMER_ROUTINE TimerRoutine, PVOID Context) +{ + FSP_DEVICE_EXTENSION *DeviceExtension; + + DeviceExtension = FspDeviceExtension(DeviceObject); + + DeviceExtension->DeviceTimer.TimerRoutine = TimerRoutine; + DeviceExtension->DeviceTimer.DeviceObject = DeviceObject; + DeviceExtension->DeviceTimer.Context = Context; + + return STATUS_SUCCESS; +} + +VOID FspDeviceStartTimer(PDEVICE_OBJECT DeviceObject) +{ + FSP_DEVICE_EXTENSION *DeviceExtension; + KIRQL Irql; + + DeviceExtension = FspDeviceExtension(DeviceObject); + + KeAcquireSpinLock(&FspDeviceTimerLock, &Irql); + InsertTailList(&FspDeviceTimerList, &DeviceExtension->DeviceTimer.ListEntry); + KeReleaseSpinLock(&FspDeviceTimerLock, Irql); +} + +VOID FspDeviceStopTimer(PDEVICE_OBJECT DeviceObject) +{ + FSP_DEVICE_EXTENSION *DeviceExtension; + KIRQL Irql; + + DeviceExtension = FspDeviceExtension(DeviceObject); + + KeAcquireSpinLock(&FspDeviceTimerLock, &Irql); + RemoveEntryList(&DeviceExtension->DeviceTimer.ListEntry); + KeReleaseSpinLock(&FspDeviceTimerLock, Irql); +} diff --git a/src/sys/driver.c b/src/sys/driver.c index d91e2ebb..c1f878ab 100644 --- a/src/sys/driver.c +++ b/src/sys/driver.c @@ -123,7 +123,7 @@ NTSTATUS DriverEntry( DriverObject->FastIoDispatch = &FspFastIoDispatch; BOOLEAN InitDoneGRes = FALSE, InitDoneSilo = FALSE, InitDonePsBuf = FALSE, - InitDoneDevices = FALSE; + InitDoneTimers = FALSE, InitDoneDevices = FALSE; FspDriverObject = DriverObject; FspDriverMultiVersionInitialize(); @@ -141,6 +141,11 @@ NTSTATUS DriverEntry( goto exit; InitDonePsBuf = TRUE; + Result = FspDeviceInitializeAllTimers(); + if (!NT_SUCCESS(Result)) + goto exit; + InitDoneTimers = TRUE; + Result = FspDriverInitializeDevices(); if (!NT_SUCCESS(Result)) goto exit; @@ -153,6 +158,8 @@ exit: { if (InitDoneDevices) FspDriverFinalizeDevices(); + if (InitDoneTimers) + FspDeviceFinalizeAllTimers(); if (InitDonePsBuf) FspProcessBufferFinalize(); if (InitDoneSilo) diff --git a/src/sys/driver.h b/src/sys/driver.h index d164e3a4..f450fb33 100644 --- a/src/sys/driver.h +++ b/src/sys/driver.h @@ -1117,6 +1117,13 @@ enum FspFsvolDeviceEaCacheItemSizeMax = FSP_FSCTL_ALIGN_UP(16384, PAGE_SIZE), }; typedef struct +{ + LIST_ENTRY ListEntry; + PIO_TIMER_ROUTINE TimerRoutine; + PDEVICE_OBJECT DeviceObject; + PVOID Context; +} FSP_DEVICE_TIMER; +typedef struct { PUNICODE_STRING FileName; PVOID Context; @@ -1144,6 +1151,8 @@ typedef struct LONG RefCount; UINT32 Kind; GUID SiloContainerId; + /* IoTimer emulation */ + FSP_DEVICE_TIMER DeviceTimer; } FSP_DEVICE_EXTENSION; typedef struct { @@ -1295,6 +1304,12 @@ NTSTATUS FspDeviceCopyList( VOID FspDeviceDeleteList( PDEVICE_OBJECT *DeviceObjects, ULONG DeviceObjectCount); VOID FspDeviceDeleteAll(VOID); +NTSTATUS FspDeviceInitializeAllTimers(VOID); +VOID FspDeviceFinalizeAllTimers(VOID); +NTSTATUS FspDeviceInitializeTimer(PDEVICE_OBJECT DeviceObject, + PIO_TIMER_ROUTINE TimerRoutine, PVOID Context); +VOID FspDeviceStartTimer(PDEVICE_OBJECT DeviceObject); +VOID FspDeviceStopTimer(PDEVICE_OBJECT DeviceObject); static inline VOID FspDeviceGlobalLock(VOID) { diff --git a/tools/build.bat b/tools/build.bat index e1b661cf..fdd83377 100755 --- a/tools/build.bat +++ b/tools/build.bat @@ -44,12 +44,14 @@ if X%SignedPackage%==X ( if exist "%%d" rmdir /s/q "%%d" ) + devenv winfsp.sln /build "%Configuration%|ARM64" + if errorlevel 1 goto fail devenv winfsp.sln /build "%Configuration%|x64" if errorlevel 1 goto fail devenv winfsp.sln /build "%Configuration%|x86" if errorlevel 1 goto fail - for %%f in (build\%Configuration%\%MyProductFileName%-x64.sys build\%Configuration%\%MyProductFileName%-x86.sys) do ( + for %%f in (build\%Configuration%\%MyProductFileName%-a64.sys build\%Configuration%\%MyProductFileName%-x64.sys build\%Configuration%\%MyProductFileName%-x86.sys) do ( signtool sign /ac %CrossCert% /i %Issuer% /n %Subject% /fd sha1 /t http://timestamp.digicert.com %%f if errorlevel 1 set /a signfail=signfail+1 signtool sign /as /ac %CrossCert% /i %Issuer% /n %Subject% /fd sha256 /tr http://timestamp.digicert.com /td sha256 %%f @@ -69,6 +71,9 @@ if X%SignedPackage%==X ( echo .Set Compress=on >>driver.ddf echo .Set CabinetNameTemplate=driver.cab >>driver.ddf echo .Set DiskDirectory1=. >>driver.ddf + echo .Set DestinationDir=a64 >>driver.ddf + echo driver-a64.inf >>driver.ddf + echo %MyProductFileName%-a64.sys >>driver.ddf echo .Set DestinationDir=x64 >>driver.ddf echo driver-x64.inf >>driver.ddf echo %MyProductFileName%-x64.sys >>driver.ddf diff --git a/tools/impdef.bat b/tools/impdef.bat index a865743e..b5e810c4 100755 --- a/tools/impdef.bat +++ b/tools/impdef.bat @@ -16,6 +16,8 @@ set outarch=%outarch:~-3% set arch=x64 set cdef=/D_AMD64_ +if /i X%outarch%==Xa64 set arch=x64_arm64 +if /i X%outarch%==Xa64 set cdef=/D_ARM64_ if /i X%outarch%==Xx86 set arch=x86 if /i X%outarch%==Xx86 set cdef=/D_X86_ diff --git a/tst/airfs/airfs.sln b/tst/airfs/airfs.sln index 15c9d006..9781c24a 100644 --- a/tst/airfs/airfs.sln +++ b/tst/airfs/airfs.sln @@ -7,16 +7,22 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "airfs", "airfs.vcxproj", "{ 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 + {CA441CE7-C4DE-4B5E-AA72-D4D483413EF0}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {CA441CE7-C4DE-4B5E-AA72-D4D483413EF0}.Debug|ARM64.Build.0 = Debug|ARM64 {CA441CE7-C4DE-4B5E-AA72-D4D483413EF0}.Debug|x64.ActiveCfg = Debug|x64 {CA441CE7-C4DE-4B5E-AA72-D4D483413EF0}.Debug|x64.Build.0 = Debug|x64 {CA441CE7-C4DE-4B5E-AA72-D4D483413EF0}.Debug|x86.ActiveCfg = Debug|Win32 {CA441CE7-C4DE-4B5E-AA72-D4D483413EF0}.Debug|x86.Build.0 = Debug|Win32 + {CA441CE7-C4DE-4B5E-AA72-D4D483413EF0}.Release|ARM64.ActiveCfg = Release|ARM64 + {CA441CE7-C4DE-4B5E-AA72-D4D483413EF0}.Release|ARM64.Build.0 = Release|ARM64 {CA441CE7-C4DE-4B5E-AA72-D4D483413EF0}.Release|x64.ActiveCfg = Release|x64 {CA441CE7-C4DE-4B5E-AA72-D4D483413EF0}.Release|x64.Build.0 = Release|x64 {CA441CE7-C4DE-4B5E-AA72-D4D483413EF0}.Release|x86.ActiveCfg = Release|Win32 diff --git a/tst/airfs/airfs.vcxproj b/tst/airfs/airfs.vcxproj index 3cd9bf9e..a20f275f 100644 --- a/tst/airfs/airfs.vcxproj +++ b/tst/airfs/airfs.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -44,6 +52,12 @@ $(DefaultPlatformToolset) Unicode + + Application + true + $(DefaultPlatformToolset) + Unicode + Application false @@ -51,6 +65,13 @@ true Unicode + + Application + false + $(DefaultPlatformToolset) + true + Unicode + @@ -65,9 +86,15 @@ + + + + + + true @@ -81,6 +108,12 @@ $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ $(ProjectName)-$(PlatformTarget) + + $(ProjectName)-a64 + true + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\a64\ + false $(SolutionDir)build\$(Configuration)\ @@ -93,6 +126,12 @@ $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ $(ProjectName)-$(PlatformTarget) + + $(ProjectName)-a64 + false + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\a64\ + @@ -127,6 +166,23 @@ winfsp-$(PlatformTarget).dll + + + + + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(MSBuildProgramFiles32)\WinFsp\inc + + + Console + true + $(MSBuildProgramFiles32)\WinFsp\lib\winfsp-a64.lib;%(AdditionalDependencies) + winfsp-a64.dll + + Level3 @@ -169,6 +225,27 @@ winfsp-$(PlatformTarget).dll + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(MSBuildProgramFiles32)\WinFsp\inc + + + Console + true + true + true + $(MSBuildProgramFiles32)\WinFsp\lib\winfsp-a64.lib;%(AdditionalDependencies) + winfsp-a64.dll + + @@ -179,4 +256,4 @@ - + \ No newline at end of file diff --git a/tst/memfs-fuse/memfs-fuse.sln b/tst/memfs-fuse/memfs-fuse.sln index b2db2e81..c576ec70 100644 --- a/tst/memfs-fuse/memfs-fuse.sln +++ b/tst/memfs-fuse/memfs-fuse.sln @@ -7,16 +7,22 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "memfs-fuse", "memfs-fuse.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 + {CF538F42-C714-4653-B351-E72FD7B0B217}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {CF538F42-C714-4653-B351-E72FD7B0B217}.Debug|ARM64.Build.0 = Debug|ARM64 {CF538F42-C714-4653-B351-E72FD7B0B217}.Debug|x64.ActiveCfg = Debug|x64 {CF538F42-C714-4653-B351-E72FD7B0B217}.Debug|x64.Build.0 = Debug|x64 {CF538F42-C714-4653-B351-E72FD7B0B217}.Debug|x86.ActiveCfg = Debug|Win32 {CF538F42-C714-4653-B351-E72FD7B0B217}.Debug|x86.Build.0 = Debug|Win32 + {CF538F42-C714-4653-B351-E72FD7B0B217}.Release|ARM64.ActiveCfg = Release|ARM64 + {CF538F42-C714-4653-B351-E72FD7B0B217}.Release|ARM64.Build.0 = Release|ARM64 {CF538F42-C714-4653-B351-E72FD7B0B217}.Release|x64.ActiveCfg = Release|x64 {CF538F42-C714-4653-B351-E72FD7B0B217}.Release|x64.Build.0 = Release|x64 {CF538F42-C714-4653-B351-E72FD7B0B217}.Release|x86.ActiveCfg = Release|Win32 diff --git a/tst/memfs-fuse/memfs-fuse.vcxproj b/tst/memfs-fuse/memfs-fuse.vcxproj index 42210d65..524a2f61 100644 --- a/tst/memfs-fuse/memfs-fuse.vcxproj +++ b/tst/memfs-fuse/memfs-fuse.vcxproj @@ -1,10 +1,18 @@  + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -44,6 +52,12 @@ $(DefaultPlatformToolset) Unicode + + Application + true + $(DefaultPlatformToolset) + Unicode + Application false @@ -51,6 +65,13 @@ true Unicode + + Application + false + $(DefaultPlatformToolset) + true + Unicode + @@ -65,9 +86,15 @@ + + + + + + true @@ -81,6 +108,12 @@ $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ $(ProjectName)-$(PlatformTarget) + + $(ProjectName)-a64 + true + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\a64\ + false $(SolutionDir)build\$(Configuration)\ @@ -93,6 +126,12 @@ $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ $(ProjectName)-$(PlatformTarget) + + $(ProjectName)-a64 + false + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\a64\ + @@ -131,6 +170,25 @@ winfsp-$(PlatformTarget).dll + + + + + Level3 + Disabled + FSP_FUSE_USE_STAT_EX;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(MSBuildProgramFiles32)\WinFsp\inc\fuse;$(MSBuildProgramFiles32)\WinFsp\inc + MultiThreadedDebug + 4018 + + + Console + true + $(MSBuildProgramFiles32)\WinFsp\lib\winfsp-a64.lib;%(AdditionalDependencies) + winfsp-a64.dll + + Level3 @@ -177,6 +235,29 @@ winfsp-$(PlatformTarget).dll + + + Level3 + + + MaxSpeed + true + true + FSP_FUSE_USE_STAT_EX;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(MSBuildProgramFiles32)\WinFsp\inc\fuse;$(MSBuildProgramFiles32)\WinFsp\inc + MultiThreaded + 4018 + + + Console + true + true + true + $(MSBuildProgramFiles32)\WinFsp\lib\winfsp-a64.lib;%(AdditionalDependencies) + winfsp-a64.dll + + diff --git a/tst/memfs-fuse3/memfs-fuse3.sln b/tst/memfs-fuse3/memfs-fuse3.sln index 9e3b6efa..3dfb1301 100644 --- a/tst/memfs-fuse3/memfs-fuse3.sln +++ b/tst/memfs-fuse3/memfs-fuse3.sln @@ -7,16 +7,22 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "memfs-fuse3", "memfs-fuse3. 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 + {CF538F42-C714-4653-B351-E72FD7B0B217}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {CF538F42-C714-4653-B351-E72FD7B0B217}.Debug|ARM64.Build.0 = Debug|ARM64 {CF538F42-C714-4653-B351-E72FD7B0B217}.Debug|x64.ActiveCfg = Debug|x64 {CF538F42-C714-4653-B351-E72FD7B0B217}.Debug|x64.Build.0 = Debug|x64 {CF538F42-C714-4653-B351-E72FD7B0B217}.Debug|x86.ActiveCfg = Debug|Win32 {CF538F42-C714-4653-B351-E72FD7B0B217}.Debug|x86.Build.0 = Debug|Win32 + {CF538F42-C714-4653-B351-E72FD7B0B217}.Release|ARM64.ActiveCfg = Release|ARM64 + {CF538F42-C714-4653-B351-E72FD7B0B217}.Release|ARM64.Build.0 = Release|ARM64 {CF538F42-C714-4653-B351-E72FD7B0B217}.Release|x64.ActiveCfg = Release|x64 {CF538F42-C714-4653-B351-E72FD7B0B217}.Release|x64.Build.0 = Release|x64 {CF538F42-C714-4653-B351-E72FD7B0B217}.Release|x86.ActiveCfg = Release|Win32 diff --git a/tst/memfs-fuse3/memfs-fuse3.vcxproj b/tst/memfs-fuse3/memfs-fuse3.vcxproj index ca26671f..c59df75e 100644 --- a/tst/memfs-fuse3/memfs-fuse3.vcxproj +++ b/tst/memfs-fuse3/memfs-fuse3.vcxproj @@ -1,10 +1,18 @@  + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -44,6 +52,12 @@ $(DefaultPlatformToolset) Unicode + + Application + true + $(DefaultPlatformToolset) + Unicode + Application false @@ -51,6 +65,13 @@ true Unicode + + Application + false + $(DefaultPlatformToolset) + true + Unicode + @@ -65,9 +86,15 @@ + + + + + + true @@ -81,6 +108,12 @@ $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ $(ProjectName)-$(PlatformTarget) + + $(ProjectName)-a64 + true + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\a64\ + false $(SolutionDir)build\$(Configuration)\ @@ -93,6 +126,12 @@ $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ $(ProjectName)-$(PlatformTarget) + + $(ProjectName)-a64 + false + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\a64\ + @@ -131,6 +170,25 @@ winfsp-$(PlatformTarget).dll + + + + + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(MSBuildProgramFiles32)\WinFsp\inc\fuse3;$(MSBuildProgramFiles32)\WinFsp\inc + MultiThreadedDebug + 4018 + + + Console + true + $(MSBuildProgramFiles32)\WinFsp\lib\winfsp-a64.lib;%(AdditionalDependencies) + winfsp-a64.dll + + Level3 @@ -177,6 +235,29 @@ winfsp-$(PlatformTarget).dll + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(MSBuildProgramFiles32)\WinFsp\inc\fuse3;$(MSBuildProgramFiles32)\WinFsp\inc + MultiThreaded + 4018 + + + Console + true + true + true + $(MSBuildProgramFiles32)\WinFsp\lib\winfsp-a64.lib;%(AdditionalDependencies) + winfsp-a64.dll + + diff --git a/tst/notifyfs/notifyfs.sln b/tst/notifyfs/notifyfs.sln index 10a7118d..6c936c6f 100644 --- a/tst/notifyfs/notifyfs.sln +++ b/tst/notifyfs/notifyfs.sln @@ -7,16 +7,22 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "notifyfs", "notifyfs.vcxpro 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 + {4BA1DED0-4268-408A-A4E2-8E1A6D55A99C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4BA1DED0-4268-408A-A4E2-8E1A6D55A99C}.Debug|ARM64.Build.0 = Debug|ARM64 {4BA1DED0-4268-408A-A4E2-8E1A6D55A99C}.Debug|x64.ActiveCfg = Debug|x64 {4BA1DED0-4268-408A-A4E2-8E1A6D55A99C}.Debug|x64.Build.0 = Debug|x64 {4BA1DED0-4268-408A-A4E2-8E1A6D55A99C}.Debug|x86.ActiveCfg = Debug|Win32 {4BA1DED0-4268-408A-A4E2-8E1A6D55A99C}.Debug|x86.Build.0 = Debug|Win32 + {4BA1DED0-4268-408A-A4E2-8E1A6D55A99C}.Release|ARM64.ActiveCfg = Release|ARM64 + {4BA1DED0-4268-408A-A4E2-8E1A6D55A99C}.Release|ARM64.Build.0 = Release|ARM64 {4BA1DED0-4268-408A-A4E2-8E1A6D55A99C}.Release|x64.ActiveCfg = Release|x64 {4BA1DED0-4268-408A-A4E2-8E1A6D55A99C}.Release|x64.Build.0 = Release|x64 {4BA1DED0-4268-408A-A4E2-8E1A6D55A99C}.Release|x86.ActiveCfg = Release|Win32 diff --git a/tst/notifyfs/notifyfs.vcxproj b/tst/notifyfs/notifyfs.vcxproj index fdf7e0c3..51d627e2 100644 --- a/tst/notifyfs/notifyfs.vcxproj +++ b/tst/notifyfs/notifyfs.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +53,12 @@ $(DefaultPlatformToolset) Unicode + + Application + true + $(DefaultPlatformToolset) + Unicode + Application false @@ -52,6 +66,13 @@ true Unicode + + Application + false + $(DefaultPlatformToolset) + true + Unicode + @@ -66,9 +87,15 @@ + + + + + + true @@ -88,12 +115,24 @@ $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ $(ProjectName)-$(PlatformTarget) + + $(ProjectName)-a64 + true + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\a64\ + false $(SolutionDir)build\$(Configuration)\ $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ $(ProjectName)-$(PlatformTarget) + + $(ProjectName)-a64 + false + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\a64\ + Level3 @@ -146,6 +185,22 @@ winfsp-$(PlatformTarget).dll + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(MSBuildProgramFiles32)\WinFsp\inc + MultiThreaded + + + Console + true + $(MSBuildProgramFiles32)\WinFsp\lib\winfsp-a64.lib;%(AdditionalDependencies) + winfsp-a64.dll + + Level3 @@ -166,6 +221,26 @@ winfsp-$(PlatformTarget).dll + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(MSBuildProgramFiles32)\WinFsp\inc + MultiThreaded + + + Console + true + true + true + $(MSBuildProgramFiles32)\WinFsp\lib\winfsp-a64.lib;%(AdditionalDependencies) + winfsp-a64.dll + + diff --git a/tst/passthrough-cpp/passthrough-cpp.sln b/tst/passthrough-cpp/passthrough-cpp.sln index aad02bd1..c40785e6 100644 --- a/tst/passthrough-cpp/passthrough-cpp.sln +++ b/tst/passthrough-cpp/passthrough-cpp.sln @@ -7,16 +7,22 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "passthrough-cpp", "passthro 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 + {E8A4060D-E6A4-42CC-9BCA-DC82E6EDB2C5}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {E8A4060D-E6A4-42CC-9BCA-DC82E6EDB2C5}.Debug|ARM64.Build.0 = Debug|ARM64 {E8A4060D-E6A4-42CC-9BCA-DC82E6EDB2C5}.Debug|x64.ActiveCfg = Debug|x64 {E8A4060D-E6A4-42CC-9BCA-DC82E6EDB2C5}.Debug|x64.Build.0 = Debug|x64 {E8A4060D-E6A4-42CC-9BCA-DC82E6EDB2C5}.Debug|x86.ActiveCfg = Debug|Win32 {E8A4060D-E6A4-42CC-9BCA-DC82E6EDB2C5}.Debug|x86.Build.0 = Debug|Win32 + {E8A4060D-E6A4-42CC-9BCA-DC82E6EDB2C5}.Release|ARM64.ActiveCfg = Release|ARM64 + {E8A4060D-E6A4-42CC-9BCA-DC82E6EDB2C5}.Release|ARM64.Build.0 = Release|ARM64 {E8A4060D-E6A4-42CC-9BCA-DC82E6EDB2C5}.Release|x64.ActiveCfg = Release|x64 {E8A4060D-E6A4-42CC-9BCA-DC82E6EDB2C5}.Release|x64.Build.0 = Release|x64 {E8A4060D-E6A4-42CC-9BCA-DC82E6EDB2C5}.Release|x86.ActiveCfg = Release|Win32 diff --git a/tst/passthrough-cpp/passthrough-cpp.vcxproj b/tst/passthrough-cpp/passthrough-cpp.vcxproj index f12b6b48..56273314 100644 --- a/tst/passthrough-cpp/passthrough-cpp.vcxproj +++ b/tst/passthrough-cpp/passthrough-cpp.vcxproj @@ -1,10 +1,18 @@  + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -44,6 +52,12 @@ $(DefaultPlatformToolset) Unicode + + Application + true + $(DefaultPlatformToolset) + Unicode + Application false @@ -51,6 +65,13 @@ true Unicode + + Application + false + $(DefaultPlatformToolset) + true + Unicode + @@ -65,9 +86,15 @@ + + + + + + true @@ -81,6 +108,12 @@ $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ $(ProjectName)-$(PlatformTarget) + + $(ProjectName)-a64 + true + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ + false $(SolutionDir)build\$(Configuration)\ @@ -93,6 +126,12 @@ $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ $(ProjectName)-$(PlatformTarget) + + $(ProjectName)-a64 + false + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ + @@ -127,6 +166,23 @@ winfsp-$(PlatformTarget).dll + + + + + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(MSBuildProgramFiles32)\WinFsp\inc + + + Console + true + $(MSBuildProgramFiles32)\WinFsp\lib\winfsp-a64.lib;%(AdditionalDependencies) + winfsp-a64.dll + + Level3 @@ -169,6 +225,27 @@ winfsp-$(PlatformTarget).dll + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(MSBuildProgramFiles32)\WinFsp\inc + + + Console + true + true + true + $(MSBuildProgramFiles32)\WinFsp\lib\winfsp-a64.lib;%(AdditionalDependencies) + winfsp-a64.dll + + diff --git a/tst/passthrough-fuse/passthrough-fuse.sln b/tst/passthrough-fuse/passthrough-fuse.sln index 148df5cf..aee6f3cd 100644 --- a/tst/passthrough-fuse/passthrough-fuse.sln +++ b/tst/passthrough-fuse/passthrough-fuse.sln @@ -7,16 +7,22 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "passthrough-fuse", "passthr 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 + {C753851C-142F-4AAD-B2F7-CBF905C2A600}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C753851C-142F-4AAD-B2F7-CBF905C2A600}.Debug|ARM64.Build.0 = Debug|ARM64 {C753851C-142F-4AAD-B2F7-CBF905C2A600}.Debug|x64.ActiveCfg = Debug|x64 {C753851C-142F-4AAD-B2F7-CBF905C2A600}.Debug|x64.Build.0 = Debug|x64 {C753851C-142F-4AAD-B2F7-CBF905C2A600}.Debug|x86.ActiveCfg = Debug|Win32 {C753851C-142F-4AAD-B2F7-CBF905C2A600}.Debug|x86.Build.0 = Debug|Win32 + {C753851C-142F-4AAD-B2F7-CBF905C2A600}.Release|ARM64.ActiveCfg = Release|ARM64 + {C753851C-142F-4AAD-B2F7-CBF905C2A600}.Release|ARM64.Build.0 = Release|ARM64 {C753851C-142F-4AAD-B2F7-CBF905C2A600}.Release|x64.ActiveCfg = Release|x64 {C753851C-142F-4AAD-B2F7-CBF905C2A600}.Release|x64.Build.0 = Release|x64 {C753851C-142F-4AAD-B2F7-CBF905C2A600}.Release|x86.ActiveCfg = Release|Win32 diff --git a/tst/passthrough-fuse/passthrough-fuse.vcxproj b/tst/passthrough-fuse/passthrough-fuse.vcxproj index 4ddff1b2..ed613303 100644 --- a/tst/passthrough-fuse/passthrough-fuse.vcxproj +++ b/tst/passthrough-fuse/passthrough-fuse.vcxproj @@ -1,10 +1,18 @@  + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -44,6 +52,12 @@ $(DefaultPlatformToolset) Unicode + + Application + true + $(DefaultPlatformToolset) + Unicode + Application false @@ -51,6 +65,13 @@ true Unicode + + Application + false + $(DefaultPlatformToolset) + true + Unicode + @@ -65,9 +86,15 @@ + + + + + + true @@ -81,6 +108,12 @@ $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ $(ProjectName)-$(PlatformTarget) + + $(ProjectName)-a64 + true + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\a64\ + false $(SolutionDir)build\$(Configuration)\ @@ -93,6 +126,12 @@ $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ $(ProjectName)-$(PlatformTarget) + + $(ProjectName)-a64 + false + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\a64\ + @@ -131,6 +170,25 @@ winfsp-$(PlatformTarget).dll + + + + + Level3 + Disabled + FSP_FUSE_USE_STAT_EX;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(MSBuildProgramFiles32)\WinFsp\inc\fuse;$(MSBuildProgramFiles32)\WinFsp\inc + MultiThreaded + 4996 + + + Console + true + $(MSBuildProgramFiles32)\WinFsp\lib\winfsp-a64.lib;%(AdditionalDependencies) + winfsp-a64.dll + + Level3 @@ -177,6 +235,29 @@ winfsp-$(PlatformTarget).dll + + + Level3 + + + MaxSpeed + true + true + FSP_FUSE_USE_STAT_EX;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(MSBuildProgramFiles32)\WinFsp\inc\fuse;$(MSBuildProgramFiles32)\WinFsp\inc + MultiThreaded + 4996 + + + Console + true + true + true + $(MSBuildProgramFiles32)\WinFsp\lib\winfsp-a64.lib;%(AdditionalDependencies) + winfsp-a64.dll + + diff --git a/tst/passthrough-fuse3/passthrough-fuse3.sln b/tst/passthrough-fuse3/passthrough-fuse3.sln index d562ff36..36b1e2ce 100644 --- a/tst/passthrough-fuse3/passthrough-fuse3.sln +++ b/tst/passthrough-fuse3/passthrough-fuse3.sln @@ -7,16 +7,22 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "passthrough-fuse3", "passth 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 + {5E99498C-D30C-48EF-A04A-7977C0305FAC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {5E99498C-D30C-48EF-A04A-7977C0305FAC}.Debug|ARM64.Build.0 = Debug|ARM64 {5E99498C-D30C-48EF-A04A-7977C0305FAC}.Debug|x64.ActiveCfg = Debug|x64 {5E99498C-D30C-48EF-A04A-7977C0305FAC}.Debug|x64.Build.0 = Debug|x64 {5E99498C-D30C-48EF-A04A-7977C0305FAC}.Debug|x86.ActiveCfg = Debug|Win32 {5E99498C-D30C-48EF-A04A-7977C0305FAC}.Debug|x86.Build.0 = Debug|Win32 + {5E99498C-D30C-48EF-A04A-7977C0305FAC}.Release|ARM64.ActiveCfg = Release|ARM64 + {5E99498C-D30C-48EF-A04A-7977C0305FAC}.Release|ARM64.Build.0 = Release|ARM64 {5E99498C-D30C-48EF-A04A-7977C0305FAC}.Release|x64.ActiveCfg = Release|x64 {5E99498C-D30C-48EF-A04A-7977C0305FAC}.Release|x64.Build.0 = Release|x64 {5E99498C-D30C-48EF-A04A-7977C0305FAC}.Release|x86.ActiveCfg = Release|Win32 diff --git a/tst/passthrough-fuse3/passthrough-fuse3.vcxproj b/tst/passthrough-fuse3/passthrough-fuse3.vcxproj index cacaa69e..47c2affb 100644 --- a/tst/passthrough-fuse3/passthrough-fuse3.vcxproj +++ b/tst/passthrough-fuse3/passthrough-fuse3.vcxproj @@ -1,10 +1,18 @@  + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -44,6 +52,12 @@ $(DefaultPlatformToolset) Unicode + + Application + true + $(DefaultPlatformToolset) + Unicode + Application false @@ -51,6 +65,13 @@ true Unicode + + Application + false + $(DefaultPlatformToolset) + true + Unicode + @@ -65,9 +86,15 @@ + + + + + + true @@ -81,6 +108,12 @@ $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ $(ProjectName)-$(PlatformTarget) + + $(ProjectName)-a64 + true + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\a64\ + false $(SolutionDir)build\$(Configuration)\ @@ -93,6 +126,12 @@ $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ $(ProjectName)-$(PlatformTarget) + + $(ProjectName)-a64 + false + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\a64\ + @@ -131,6 +170,25 @@ winfsp-$(PlatformTarget).dll + + + + + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(MSBuildProgramFiles32)\WinFsp\inc\fuse3;$(MSBuildProgramFiles32)\WinFsp\inc + MultiThreaded + 4996 + + + Console + true + $(MSBuildProgramFiles32)\WinFsp\lib\winfsp-a64.lib;%(AdditionalDependencies) + winfsp-a64.dll + + Level3 @@ -177,6 +235,29 @@ winfsp-$(PlatformTarget).dll + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(MSBuildProgramFiles32)\WinFsp\inc\fuse3;$(MSBuildProgramFiles32)\WinFsp\inc + MultiThreaded + 4996 + + + Console + true + true + true + $(MSBuildProgramFiles32)\WinFsp\lib\winfsp-a64.lib;%(AdditionalDependencies) + winfsp-a64.dll + + diff --git a/tst/passthrough/passthrough.sln b/tst/passthrough/passthrough.sln index 427b76fa..68f4c279 100644 --- a/tst/passthrough/passthrough.sln +++ b/tst/passthrough/passthrough.sln @@ -7,16 +7,22 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "passthrough", "passthrough. 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 + {9E0E5997-7316-4818-A130-00B3AF1AD354}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {9E0E5997-7316-4818-A130-00B3AF1AD354}.Debug|ARM64.Build.0 = Debug|ARM64 {9E0E5997-7316-4818-A130-00B3AF1AD354}.Debug|x64.ActiveCfg = Debug|x64 {9E0E5997-7316-4818-A130-00B3AF1AD354}.Debug|x64.Build.0 = Debug|x64 {9E0E5997-7316-4818-A130-00B3AF1AD354}.Debug|x86.ActiveCfg = Debug|Win32 {9E0E5997-7316-4818-A130-00B3AF1AD354}.Debug|x86.Build.0 = Debug|Win32 + {9E0E5997-7316-4818-A130-00B3AF1AD354}.Release|ARM64.ActiveCfg = Release|ARM64 + {9E0E5997-7316-4818-A130-00B3AF1AD354}.Release|ARM64.Build.0 = Release|ARM64 {9E0E5997-7316-4818-A130-00B3AF1AD354}.Release|x64.ActiveCfg = Release|x64 {9E0E5997-7316-4818-A130-00B3AF1AD354}.Release|x64.Build.0 = Release|x64 {9E0E5997-7316-4818-A130-00B3AF1AD354}.Release|x86.ActiveCfg = Release|Win32 diff --git a/tst/passthrough/passthrough.vcxproj b/tst/passthrough/passthrough.vcxproj index 1ea9c8f5..70dd16e3 100644 --- a/tst/passthrough/passthrough.vcxproj +++ b/tst/passthrough/passthrough.vcxproj @@ -1,10 +1,18 @@  + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -47,6 +55,12 @@ $(DefaultPlatformToolset) Unicode + + Application + true + $(DefaultPlatformToolset) + Unicode + Application false @@ -54,6 +68,13 @@ true Unicode + + Application + false + $(DefaultPlatformToolset) + true + Unicode + @@ -68,9 +89,15 @@ + + + + + + true @@ -84,6 +111,12 @@ $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ $(ProjectName)-$(PlatformTarget) + + $(ProjectName)-a64 + true + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\a64\ + false $(SolutionDir)build\$(Configuration)\ @@ -96,6 +129,12 @@ $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\ $(ProjectName)-$(PlatformTarget) + + $(ProjectName)-a64 + false + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\a64\ + @@ -132,6 +171,24 @@ winfsp-$(PlatformTarget).dll + + + + + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(MSBuildProgramFiles32)\WinFsp\inc + MultiThreaded + + + Console + true + $(MSBuildProgramFiles32)\WinFsp\lib\winfsp-a64.lib;%(AdditionalDependencies) + winfsp-a64.dll + + Level3 @@ -176,6 +233,28 @@ winfsp-$(PlatformTarget).dll + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(MSBuildProgramFiles32)\WinFsp\inc + MultiThreaded + + + Console + true + true + true + $(MSBuildProgramFiles32)\WinFsp\lib\winfsp-a64.lib;%(AdditionalDependencies) + winfsp-a64.dll + + From 6ab1ed3b7ff6b781054b6382316ed3fc3c8d7b96 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Thu, 16 Dec 2021 11:30:09 +0000 Subject: [PATCH 2/9] tools: remove-all-arm64 Add script to remove ARM64 project configurations for builds on VS2015 --- tools/gensrc/remove-all-arm64.bat | 16 ++++++++++++++++ tools/gensrc/remove-vcxproj-config.ps1 | 20 ++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 tools/gensrc/remove-all-arm64.bat create mode 100644 tools/gensrc/remove-vcxproj-config.ps1 diff --git a/tools/gensrc/remove-all-arm64.bat b/tools/gensrc/remove-all-arm64.bat new file mode 100644 index 00000000..fde5b062 --- /dev/null +++ b/tools/gensrc/remove-all-arm64.bat @@ -0,0 +1,16 @@ +@echo off + +setlocal +setlocal EnableDelayedExpansion + +cd %~dp0..\.. +for /r %%f in (*.vcxproj) do ( + echo %%f + powershell -NoProfile -ExecutionPolicy Bypass -Command "& '%~dp0remove-vcxproj-config.ps1' -Path '%%f' -ProjectConfiguration '|ARM64' +) + +for /r %%f in (*.sln) do ( + echo %%f + findstr /V /C:"|ARM64" "%%f" > "%%f.new" + move /Y "%%f.new" "%%f" >nul +) diff --git a/tools/gensrc/remove-vcxproj-config.ps1 b/tools/gensrc/remove-vcxproj-config.ps1 new file mode 100644 index 00000000..d5d69e38 --- /dev/null +++ b/tools/gensrc/remove-vcxproj-config.ps1 @@ -0,0 +1,20 @@ +param ( + [Parameter(Mandatory)][string]$Path, + [Parameter(Mandatory)][string[]]$ProjectConfiguration +) + +$file = Get-Item $Path + +$xmlob = New-Object xml +$xmlob.PreserveWhitespace = $true +$xmlob.Load($file.FullName) + +$xmlns = @{"msbuild" = "http://schemas.microsoft.com/developer/msbuild/2003"} +$configs = Select-Xml -Xml $xmlob -Namespace $xmlns ` + -XPath "//msbuild:ProjectConfiguration[contains(@Include,'$ProjectConfiguration')]" +foreach ($config in $configs) { + $child = $config.Node + [void]$child.ParentNode.RemoveChild($child) +} + +$xmlob.Save($file.FullName) From 5a44f4a233ab2ccb6b9b0e17b2971044860d067e Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Thu, 16 Dec 2021 11:35:38 +0000 Subject: [PATCH 3/9] appveyor: use VS2015 to build post-ARM64 --- appveyor.yml | 2 ++ tools/build.bat | 20 ++++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index f3353fa6..c539ab4d 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -46,6 +46,8 @@ build_script: #- C:\cygwin64\bin\bash --login -c "make -C '%CD%\opt\cygfuse' dist" #- C:\cygwin\setup-x86.exe -qnNd -P cygport #- C:\cygwin\bin\bash --login -c "make -C '%CD%\opt\cygfuse' dist" +# remove ARM64 project configurations to build in VS2015 +- tools\gensrc\remove-all-arm64.bat # build winfsp - tools\build.bat %CONFIGURATION% diff --git a/tools/build.bat b/tools/build.bat index fdd83377..9fbe474d 100755 --- a/tools/build.bat +++ b/tools/build.bat @@ -24,6 +24,13 @@ if X%~nx0==Xbuild-choco.bat ( goto :choco ) +set BuildArm64=yes +if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2015" ( + echo WARNING: APPVEYOR BUILD ON UNSUPPORTED VERSION OF VISUAL STUDIO. + echo: + set BuildArm64=no +) + call "%~dp0vcvarsall.bat" x64 if not X%SignedPackage%==X ( @@ -44,12 +51,21 @@ if X%SignedPackage%==X ( if exist "%%d" rmdir /s/q "%%d" ) - devenv winfsp.sln /build "%Configuration%|ARM64" - if errorlevel 1 goto fail + if X%BuildArm64%==Xyes ( + devenv winfsp.sln /build "%Configuration%|ARM64" + if errorlevel 1 goto fail + ) devenv winfsp.sln /build "%Configuration%|x64" if errorlevel 1 goto fail devenv winfsp.sln /build "%Configuration%|x86" if errorlevel 1 goto fail + if X%BuildArm64%==Xno ( + echo: + echo WARNING: APPVEYOR BUILD ON UNSUPPORTED VERSION OF VISUAL STUDIO. + echo WARNING: ARM64 BUILD PRODUCTS ARE COPIES OF X64 BUILD PRODUCTS. + echo: + copy build\%Configuration%\*-x64.* build\%Configuration%\*-a64.* >nul + ) for %%f in (build\%Configuration%\%MyProductFileName%-a64.sys build\%Configuration%\%MyProductFileName%-x64.sys build\%Configuration%\%MyProductFileName%-x86.sys) do ( signtool sign /ac %CrossCert% /i %Issuer% /n %Subject% /fd sha1 /t http://timestamp.digicert.com %%f From 8f0b80f46c169eaaaed434aaa4fc9040e11b8c66 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Thu, 16 Dec 2021 14:18:52 +0000 Subject: [PATCH 4/9] build: VStudio: build.common.props --- build/VStudio/{After.props => build.aftercpp.props} | 0 build/VStudio/{Directory.Build.props => build.common.props} | 2 +- build/VStudio/dotnet/winfsp.net.csproj | 1 + build/VStudio/installer/CustomActions/CustomActions.vcxproj | 1 + build/VStudio/installer/winfsp_msi.wixproj | 2 +- build/VStudio/testing/fsbench.vcxproj | 1 + build/VStudio/testing/fscrash.vcxproj | 1 + build/VStudio/testing/memfs-dotnet.csproj | 1 + build/VStudio/testing/memfs.vcxproj | 1 + build/VStudio/testing/winfsp-tests.vcxproj | 1 + build/VStudio/tools/fsptool.vcxproj | 1 + build/VStudio/tools/launchctl.vcxproj | 1 + build/VStudio/tools/launcher.vcxproj | 1 + build/VStudio/winfsp_dll.vcxproj | 1 + build/VStudio/winfsp_sys.vcxproj | 1 + 15 files changed, 14 insertions(+), 2 deletions(-) rename build/VStudio/{After.props => build.aftercpp.props} (100%) rename build/VStudio/{Directory.Build.props => build.common.props} (93%) diff --git a/build/VStudio/After.props b/build/VStudio/build.aftercpp.props similarity index 100% rename from build/VStudio/After.props rename to build/VStudio/build.aftercpp.props diff --git a/build/VStudio/Directory.Build.props b/build/VStudio/build.common.props similarity index 93% rename from build/VStudio/Directory.Build.props rename to build/VStudio/build.common.props index 41a6f74e..ac15491b 100644 --- a/build/VStudio/Directory.Build.props +++ b/build/VStudio/build.common.props @@ -30,6 +30,6 @@ - $(MsbuildThisFileDirectory)\After.props + $(MsbuildThisFileDirectory)\build.aftercpp.props \ No newline at end of file diff --git a/build/VStudio/dotnet/winfsp.net.csproj b/build/VStudio/dotnet/winfsp.net.csproj index 2a2dafcb..614e83ec 100644 --- a/build/VStudio/dotnet/winfsp.net.csproj +++ b/build/VStudio/dotnet/winfsp.net.csproj @@ -1,5 +1,6 @@  + Debug diff --git a/build/VStudio/installer/CustomActions/CustomActions.vcxproj b/build/VStudio/installer/CustomActions/CustomActions.vcxproj index a89c2577..c4dde6e8 100644 --- a/build/VStudio/installer/CustomActions/CustomActions.vcxproj +++ b/build/VStudio/installer/CustomActions/CustomActions.vcxproj @@ -1,5 +1,6 @@  + Debug diff --git a/build/VStudio/installer/winfsp_msi.wixproj b/build/VStudio/installer/winfsp_msi.wixproj index 17028fea..16103805 100644 --- a/build/VStudio/installer/winfsp_msi.wixproj +++ b/build/VStudio/installer/winfsp_msi.wixproj @@ -1,6 +1,6 @@  - + Debug x86 diff --git a/build/VStudio/testing/fsbench.vcxproj b/build/VStudio/testing/fsbench.vcxproj index ac57702a..d9413ed6 100644 --- a/build/VStudio/testing/fsbench.vcxproj +++ b/build/VStudio/testing/fsbench.vcxproj @@ -1,5 +1,6 @@  + Debug diff --git a/build/VStudio/testing/fscrash.vcxproj b/build/VStudio/testing/fscrash.vcxproj index f50f5f94..42fa2f45 100644 --- a/build/VStudio/testing/fscrash.vcxproj +++ b/build/VStudio/testing/fscrash.vcxproj @@ -1,5 +1,6 @@  + Debug diff --git a/build/VStudio/testing/memfs-dotnet.csproj b/build/VStudio/testing/memfs-dotnet.csproj index 1ccb65e5..5bbe4851 100644 --- a/build/VStudio/testing/memfs-dotnet.csproj +++ b/build/VStudio/testing/memfs-dotnet.csproj @@ -1,5 +1,6 @@  + Debug diff --git a/build/VStudio/testing/memfs.vcxproj b/build/VStudio/testing/memfs.vcxproj index 86c3b047..6d71cca9 100644 --- a/build/VStudio/testing/memfs.vcxproj +++ b/build/VStudio/testing/memfs.vcxproj @@ -1,5 +1,6 @@  + Debug diff --git a/build/VStudio/testing/winfsp-tests.vcxproj b/build/VStudio/testing/winfsp-tests.vcxproj index 17d26ec5..fe32bd47 100644 --- a/build/VStudio/testing/winfsp-tests.vcxproj +++ b/build/VStudio/testing/winfsp-tests.vcxproj @@ -1,5 +1,6 @@  + Debug diff --git a/build/VStudio/tools/fsptool.vcxproj b/build/VStudio/tools/fsptool.vcxproj index bdd4f0b6..bd117a6f 100644 --- a/build/VStudio/tools/fsptool.vcxproj +++ b/build/VStudio/tools/fsptool.vcxproj @@ -1,5 +1,6 @@  + Debug diff --git a/build/VStudio/tools/launchctl.vcxproj b/build/VStudio/tools/launchctl.vcxproj index fddc00d7..f86b1f20 100644 --- a/build/VStudio/tools/launchctl.vcxproj +++ b/build/VStudio/tools/launchctl.vcxproj @@ -1,5 +1,6 @@  + Debug diff --git a/build/VStudio/tools/launcher.vcxproj b/build/VStudio/tools/launcher.vcxproj index 04e12870..275fdb64 100644 --- a/build/VStudio/tools/launcher.vcxproj +++ b/build/VStudio/tools/launcher.vcxproj @@ -1,5 +1,6 @@  + Debug diff --git a/build/VStudio/winfsp_dll.vcxproj b/build/VStudio/winfsp_dll.vcxproj index f5220d97..c4b1b90b 100644 --- a/build/VStudio/winfsp_dll.vcxproj +++ b/build/VStudio/winfsp_dll.vcxproj @@ -1,5 +1,6 @@  + Debug diff --git a/build/VStudio/winfsp_sys.vcxproj b/build/VStudio/winfsp_sys.vcxproj index ba561078..dad7f4dc 100644 --- a/build/VStudio/winfsp_sys.vcxproj +++ b/build/VStudio/winfsp_sys.vcxproj @@ -1,5 +1,6 @@  + Debug From 3b19b125b762a9c710f208d17a72ec42f42a7e29 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Thu, 16 Dec 2021 14:31:44 +0000 Subject: [PATCH 5/9] build: VStudio: build.common.props --- build/VStudio/dotnet/winfsp.net.csproj | 2 +- build/VStudio/installer/CustomActions/CustomActions.vcxproj | 2 +- build/VStudio/installer/winfsp_msi.wixproj | 2 +- build/VStudio/testing/fsbench.vcxproj | 2 +- build/VStudio/testing/fscrash.vcxproj | 2 +- build/VStudio/testing/memfs-dotnet.csproj | 2 +- build/VStudio/testing/memfs.vcxproj | 2 +- build/VStudio/testing/winfsp-tests.vcxproj | 2 +- build/VStudio/tools/fsptool.vcxproj | 2 +- build/VStudio/tools/launchctl.vcxproj | 2 +- build/VStudio/tools/launcher.vcxproj | 2 +- build/VStudio/winfsp_dll.vcxproj | 2 +- build/VStudio/winfsp_sys.vcxproj | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/build/VStudio/dotnet/winfsp.net.csproj b/build/VStudio/dotnet/winfsp.net.csproj index 614e83ec..52b5eebf 100644 --- a/build/VStudio/dotnet/winfsp.net.csproj +++ b/build/VStudio/dotnet/winfsp.net.csproj @@ -1,6 +1,6 @@  - + Debug diff --git a/build/VStudio/installer/CustomActions/CustomActions.vcxproj b/build/VStudio/installer/CustomActions/CustomActions.vcxproj index c4dde6e8..10ba2c8f 100644 --- a/build/VStudio/installer/CustomActions/CustomActions.vcxproj +++ b/build/VStudio/installer/CustomActions/CustomActions.vcxproj @@ -1,6 +1,6 @@  - + Debug diff --git a/build/VStudio/installer/winfsp_msi.wixproj b/build/VStudio/installer/winfsp_msi.wixproj index 16103805..638f8a5d 100644 --- a/build/VStudio/installer/winfsp_msi.wixproj +++ b/build/VStudio/installer/winfsp_msi.wixproj @@ -1,6 +1,6 @@  - + Debug x86 diff --git a/build/VStudio/testing/fsbench.vcxproj b/build/VStudio/testing/fsbench.vcxproj index d9413ed6..0b2c67de 100644 --- a/build/VStudio/testing/fsbench.vcxproj +++ b/build/VStudio/testing/fsbench.vcxproj @@ -1,6 +1,6 @@  - + Debug diff --git a/build/VStudio/testing/fscrash.vcxproj b/build/VStudio/testing/fscrash.vcxproj index 42fa2f45..121bfa3b 100644 --- a/build/VStudio/testing/fscrash.vcxproj +++ b/build/VStudio/testing/fscrash.vcxproj @@ -1,6 +1,6 @@  - + Debug diff --git a/build/VStudio/testing/memfs-dotnet.csproj b/build/VStudio/testing/memfs-dotnet.csproj index 5bbe4851..a198c347 100644 --- a/build/VStudio/testing/memfs-dotnet.csproj +++ b/build/VStudio/testing/memfs-dotnet.csproj @@ -1,6 +1,6 @@  - + Debug diff --git a/build/VStudio/testing/memfs.vcxproj b/build/VStudio/testing/memfs.vcxproj index 6d71cca9..96e31350 100644 --- a/build/VStudio/testing/memfs.vcxproj +++ b/build/VStudio/testing/memfs.vcxproj @@ -1,6 +1,6 @@  - + Debug diff --git a/build/VStudio/testing/winfsp-tests.vcxproj b/build/VStudio/testing/winfsp-tests.vcxproj index fe32bd47..5a9ccea8 100644 --- a/build/VStudio/testing/winfsp-tests.vcxproj +++ b/build/VStudio/testing/winfsp-tests.vcxproj @@ -1,6 +1,6 @@  - + Debug diff --git a/build/VStudio/tools/fsptool.vcxproj b/build/VStudio/tools/fsptool.vcxproj index bd117a6f..c33e9865 100644 --- a/build/VStudio/tools/fsptool.vcxproj +++ b/build/VStudio/tools/fsptool.vcxproj @@ -1,6 +1,6 @@  - + Debug diff --git a/build/VStudio/tools/launchctl.vcxproj b/build/VStudio/tools/launchctl.vcxproj index f86b1f20..9fa39fcd 100644 --- a/build/VStudio/tools/launchctl.vcxproj +++ b/build/VStudio/tools/launchctl.vcxproj @@ -1,6 +1,6 @@  - + Debug diff --git a/build/VStudio/tools/launcher.vcxproj b/build/VStudio/tools/launcher.vcxproj index 275fdb64..4f8e925b 100644 --- a/build/VStudio/tools/launcher.vcxproj +++ b/build/VStudio/tools/launcher.vcxproj @@ -1,6 +1,6 @@  - + Debug diff --git a/build/VStudio/winfsp_dll.vcxproj b/build/VStudio/winfsp_dll.vcxproj index c4b1b90b..0831b781 100644 --- a/build/VStudio/winfsp_dll.vcxproj +++ b/build/VStudio/winfsp_dll.vcxproj @@ -1,6 +1,6 @@  - + Debug diff --git a/build/VStudio/winfsp_sys.vcxproj b/build/VStudio/winfsp_sys.vcxproj index dad7f4dc..513bdb25 100644 --- a/build/VStudio/winfsp_sys.vcxproj +++ b/build/VStudio/winfsp_sys.vcxproj @@ -1,6 +1,6 @@  - + Debug From 3bcb025389baa9aec7b97bdad9c2b458e1e6488f Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Thu, 16 Dec 2021 15:39:29 +0000 Subject: [PATCH 6/9] build: VStudio: build.common.props --- build/VStudio/build.aftercpp.props | 13 ------------- build/VStudio/build.common.props | 5 ----- .../installer/CustomActions/CustomActions.vcxproj | 4 ++++ build/VStudio/testing/fsbench.vcxproj | 12 ++++++++++++ build/VStudio/testing/fscrash.vcxproj | 12 ++++++++++++ build/VStudio/testing/memfs.vcxproj | 12 ++++++++++++ build/VStudio/testing/winfsp-tests.vcxproj | 12 ++++++++++++ build/VStudio/tools/fsptool.vcxproj | 12 ++++++++++++ build/VStudio/tools/launchctl.vcxproj | 12 ++++++++++++ build/VStudio/tools/launcher.vcxproj | 12 ++++++++++++ build/VStudio/version.properties | 4 ++++ build/VStudio/winfsp_dll.vcxproj | 12 ++++++++++++ build/VStudio/winfsp_sys.vcxproj | 12 ++++++++++++ 13 files changed, 116 insertions(+), 18 deletions(-) delete mode 100644 build/VStudio/build.aftercpp.props diff --git a/build/VStudio/build.aftercpp.props b/build/VStudio/build.aftercpp.props deleted file mode 100644 index 26b870e2..00000000 --- a/build/VStudio/build.aftercpp.props +++ /dev/null @@ -1,13 +0,0 @@ - - - - x64 - x86 - a64 - - - - $(SolutionDir)build\$(Configuration)\ - $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ - - diff --git a/build/VStudio/build.common.props b/build/VStudio/build.common.props index ac15491b..a8d792ca 100644 --- a/build/VStudio/build.common.props +++ b/build/VStudio/build.common.props @@ -1,7 +1,6 @@  - NTDDI_VERSION=0x06010000;_WIN32_WINNT=0x0601;MyProductName=$(MyProductName);MyProductFileName=$(MyProductFileName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas);MyFullVersion=$(MyFullVersion);MyFspFsctlDeviceClassGuid=$(MyFspFsctlDeviceClassGuid);MyFspFsvrtDeviceClassGuid=$(MyFspFsvrtDeviceClassGuid) @@ -28,8 +27,4 @@ false - - - $(MsbuildThisFileDirectory)\build.aftercpp.props - \ No newline at end of file diff --git a/build/VStudio/installer/CustomActions/CustomActions.vcxproj b/build/VStudio/installer/CustomActions/CustomActions.vcxproj index 10ba2c8f..0e43db04 100644 --- a/build/VStudio/installer/CustomActions/CustomActions.vcxproj +++ b/build/VStudio/installer/CustomActions/CustomActions.vcxproj @@ -44,9 +44,13 @@ true + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ diff --git a/build/VStudio/testing/fsbench.vcxproj b/build/VStudio/testing/fsbench.vcxproj index 0b2c67de..699f16fd 100644 --- a/build/VStudio/testing/fsbench.vcxproj +++ b/build/VStudio/testing/fsbench.vcxproj @@ -100,26 +100,38 @@ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ diff --git a/build/VStudio/testing/fscrash.vcxproj b/build/VStudio/testing/fscrash.vcxproj index 121bfa3b..87874269 100644 --- a/build/VStudio/testing/fscrash.vcxproj +++ b/build/VStudio/testing/fscrash.vcxproj @@ -100,26 +100,38 @@ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ diff --git a/build/VStudio/testing/memfs.vcxproj b/build/VStudio/testing/memfs.vcxproj index 96e31350..a946259b 100644 --- a/build/VStudio/testing/memfs.vcxproj +++ b/build/VStudio/testing/memfs.vcxproj @@ -101,26 +101,38 @@ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ diff --git a/build/VStudio/testing/winfsp-tests.vcxproj b/build/VStudio/testing/winfsp-tests.vcxproj index 5a9ccea8..c2dda800 100644 --- a/build/VStudio/testing/winfsp-tests.vcxproj +++ b/build/VStudio/testing/winfsp-tests.vcxproj @@ -100,26 +100,38 @@ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ diff --git a/build/VStudio/tools/fsptool.vcxproj b/build/VStudio/tools/fsptool.vcxproj index c33e9865..d08be9bf 100644 --- a/build/VStudio/tools/fsptool.vcxproj +++ b/build/VStudio/tools/fsptool.vcxproj @@ -100,26 +100,38 @@ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ diff --git a/build/VStudio/tools/launchctl.vcxproj b/build/VStudio/tools/launchctl.vcxproj index 9fa39fcd..d3dd95da 100644 --- a/build/VStudio/tools/launchctl.vcxproj +++ b/build/VStudio/tools/launchctl.vcxproj @@ -100,26 +100,38 @@ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ diff --git a/build/VStudio/tools/launcher.vcxproj b/build/VStudio/tools/launcher.vcxproj index 4f8e925b..d23b9dbc 100644 --- a/build/VStudio/tools/launcher.vcxproj +++ b/build/VStudio/tools/launcher.vcxproj @@ -100,26 +100,38 @@ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ true $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(ProjectName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ diff --git a/build/VStudio/version.properties b/build/VStudio/version.properties index d78be063..e85358d3 100644 --- a/build/VStudio/version.properties +++ b/build/VStudio/version.properties @@ -29,6 +29,10 @@ $(MyCanonicalVersion.Substring(0,$(MyVersion.IndexOf('.')))).0 $(MyAssemblyPolicyVersion).0.0 + a64 + x64 + x86 + { 0x6f9d25fa, 0x6dee, 0x4a9d, { 0x80, 0xf5, 0xe9, 0x8e, 0x14, 0xf3, 0x5e, 0x54 } } { 0xb48171c3, 0xdd50, 0x4852, { 0x83, 0xa3, 0x34, 0x4c, 0x50, 0xd9, 0x3b, 0x17 } } diff --git a/build/VStudio/winfsp_dll.vcxproj b/build/VStudio/winfsp_dll.vcxproj index 0831b781..3148b26a 100644 --- a/build/VStudio/winfsp_dll.vcxproj +++ b/build/VStudio/winfsp_dll.vcxproj @@ -230,26 +230,38 @@ copy /b $(OutDir)fuse3-$(MyProductFileArch).pc + %(FullPath) $(OutDir)fuse3-$(My true $(MyProductFileName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ true $(MyProductFileName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ true $(MyProductFileName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(MyProductFileName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(MyProductFileName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ false $(MyProductFileName)-$(MyProductFileArch) + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ diff --git a/build/VStudio/winfsp_sys.vcxproj b/build/VStudio/winfsp_sys.vcxproj index 513bdb25..3092efa0 100644 --- a/build/VStudio/winfsp_sys.vcxproj +++ b/build/VStudio/winfsp_sys.vcxproj @@ -99,31 +99,43 @@ DbgengKernelDebugger $(MyProductFileName)-$(MyProductFileArch) false + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ DbgengKernelDebugger $(MyProductFileName)-$(MyProductFileArch) false + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ DbgengKernelDebugger $(MyProductFileName)-$(MyProductFileArch) false + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ DbgengKernelDebugger $(MyProductFileName)-$(MyProductFileArch) false + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ DbgengKernelDebugger $(MyProductFileName)-$(MyProductFileArch) false + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ DbgengKernelDebugger $(MyProductFileName)-$(MyProductFileArch) false + $(SolutionDir)build\$(Configuration)\ + $(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(MyProductFileArch)\ From b2681ff9c8b6c3743fe146640ac505fd27ee2498 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Thu, 16 Dec 2021 16:06:27 +0000 Subject: [PATCH 7/9] tools: remove-build-arm64 --- appveyor.yml | 2 +- .../{remove-all-arm64.bat => remove-build-arm64.bat} | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) rename tools/gensrc/{remove-all-arm64.bat => remove-build-arm64.bat} (86%) diff --git a/appveyor.yml b/appveyor.yml index c539ab4d..b935b3e2 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -47,7 +47,7 @@ build_script: #- C:\cygwin\setup-x86.exe -qnNd -P cygport #- C:\cygwin\bin\bash --login -c "make -C '%CD%\opt\cygfuse' dist" # remove ARM64 project configurations to build in VS2015 -- tools\gensrc\remove-all-arm64.bat +- tools\gensrc\remove-build-arm64.bat # build winfsp - tools\build.bat %CONFIGURATION% diff --git a/tools/gensrc/remove-all-arm64.bat b/tools/gensrc/remove-build-arm64.bat similarity index 86% rename from tools/gensrc/remove-all-arm64.bat rename to tools/gensrc/remove-build-arm64.bat index fde5b062..aaefa3a3 100644 --- a/tools/gensrc/remove-all-arm64.bat +++ b/tools/gensrc/remove-build-arm64.bat @@ -3,7 +3,12 @@ setlocal setlocal EnableDelayedExpansion -cd %~dp0..\.. +if "%1"=="" ( + cd %~dp0..\.. +) else ( + cd "%1" +) + for /r %%f in (*.vcxproj) do ( echo %%f powershell -NoProfile -ExecutionPolicy Bypass -Command "& '%~dp0remove-vcxproj-config.ps1' -Path '%%f' -ProjectConfiguration '|ARM64' From c4cc444b80b79f0d422c3d2bd4957527ae2af584 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Thu, 16 Dec 2021 21:41:31 +0000 Subject: [PATCH 8/9] doc: WinFsp on ARM64 --- doc/WinFsp-on-ARM64.asciidoc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/WinFsp-on-ARM64.asciidoc b/doc/WinFsp-on-ARM64.asciidoc index bea37883..56fee125 100644 --- a/doc/WinFsp-on-ARM64.asciidoc +++ b/doc/WinFsp-on-ARM64.asciidoc @@ -4,8 +4,10 @@ This document summarizes the changes made to WinFsp to support Windows on ARM64. == Build System -* Global configuration is now done by the files `Directory.Build.props` and `After.props` located in `build\VStudio`. -* Product configuration (`MyProductName`, etc.) is still done by the file `version.properties` located in `build\VStudio`. Non-product configuration portions of the file have migrated to `Directory.Build.props`. +* Visual Studio 2019 or later is required to build WinFsp. Visual Studio 2015 builds are no longer possible because of lack of ARM64 support. +** The script `tools\gensrc\remove-build-arm64.bat` can be used to remove the ARM64 configuration from the project files. This allows WinFsp to be built with Visual Studio 2015, but without ARM64 support. This is a hack to support AppVeyor builds on Server 2012 images that have only Visual Studio 2015 installed. +* Build configuration is now done by the file `build.common.props` located in `build\VStudio`. +* Product configuration (`MyProductName`, etc.) is still done by the file `version.properties` located in `build\VStudio`. Non-product configuration portions of the file have migrated to `build.common.props`, which includes `version.properties`. * Project files under `build\VStudio` have been updated to support ARM64 builds. == Include Files From defa57fd94da418c7d0b256cbe7498d5b8b70a39 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Fri, 17 Dec 2021 00:03:37 +0000 Subject: [PATCH 9/9] build: fix broken version info --- build/VStudio/build.common.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/VStudio/build.common.props b/build/VStudio/build.common.props index a8d792ca..1a54bd29 100644 --- a/build/VStudio/build.common.props +++ b/build/VStudio/build.common.props @@ -6,7 +6,7 @@ NTDDI_VERSION=0x06010000;_WIN32_WINNT=0x0601;MyProductName=$(MyProductName);MyProductFileName=$(MyProductFileName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas);MyFullVersion=$(MyFullVersion);MyFspFsctlDeviceClassGuid=$(MyFspFsctlDeviceClassGuid);MyFspFsvrtDeviceClassGuid=$(MyFspFsvrtDeviceClassGuid) - MyProductName=$(MyProductName);MyProductFileName=$(MyProductFileName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas);MyFullVersion=$(MyFullVersion)MyFspFsctlDeviceClassGuid=$(MyFspFsctlDeviceClassGuid);MyFspFsvrtDeviceClassGuid=$(MyFspFsvrtDeviceClassGuid) + MyProductName=$(MyProductName);MyProductFileName=$(MyProductFileName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas);MyFullVersion=$(MyFullVersion);MyFspFsctlDeviceClassGuid=$(MyFspFsctlDeviceClassGuid);MyFspFsvrtDeviceClassGuid=$(MyFspFsvrtDeviceClassGuid)