diff --git a/azure-pipelines/build-openconsole.yml b/azure-pipelines/build-openconsole.yml
index 62c9126..af05cdb 100644
--- a/azure-pipelines/build-openconsole.yml
+++ b/azure-pipelines/build-openconsole.yml
@@ -1,6 +1,6 @@
steps:
- task: VSBuild@1
- displayName: 'Build OpenConsole'
+ displayName: 'Build OpenConsole x86'
inputs:
solution: 'dep/terminal/OpenConsole.sln'
msbuildArgs: /t:Conhost\winconpty_DLL;Conhost\Host_EXE
@@ -8,9 +8,16 @@ steps:
configuration: '$(BuildConfiguration)'
- task: VSBuild@1
- displayName: 'Build OpenConsole'
+ displayName: 'Build OpenConsole x64'
inputs:
solution: 'dep/terminal/OpenConsole.sln'
msbuildArgs: /t:Conhost\winconpty_DLL;Conhost\Host_EXE
platform: 'x64'
+ configuration: '$(BuildConfiguration)'
+- task: VSBuild@1
+ displayName: 'Build OpenConsole Arm64'
+ inputs:
+ solution: 'dep/terminal/OpenConsole.sln'
+ msbuildArgs: /t:Conhost\winconpty_DLL;Conhost\Host_EXE
+ platform: 'Arm64'
configuration: '$(BuildConfiguration)'
\ No newline at end of file
diff --git a/azure-pipelines/build-winpty.yml b/azure-pipelines/build-winpty.yml
index d90e30b..f703cdd 100644
--- a/azure-pipelines/build-winpty.yml
+++ b/azure-pipelines/build-winpty.yml
@@ -1,17 +1,8 @@
steps:
-# - task: UsePythonVersion@0
-# inputs:
-# versionSpec: 3.6
-# addToPath: true
-# architecture: x64
-
- powershell: azure-pipelines/Set-MSBuildPath.ps1
- script: echo $PATH
displayName: Print PATH
-- script: dep/winpty/vcbuild.bat --msvc-platform Win32 --toolset v142 --gyp-msvs-version 2017
- displayName: Build x86 winpty
-
- script: dep/winpty/vcbuild.bat --msvc-platform x64 --toolset v142 --gyp-msvs-version 2017
- displayName: Build x64 winpty
+ displayName: Build x64 WinPty
diff --git a/azure-pipelines/build.yml b/azure-pipelines/build.yml
index 373f18c..7c0f2d7 100644
--- a/azure-pipelines/build.yml
+++ b/azure-pipelines/build.yml
@@ -45,7 +45,7 @@ jobs:
- Linux
- MacOS
pool:
- vmImage: Ubuntu 16.04
+ vmImage: Ubuntu 18.04
condition: succeededOrFailed()
steps:
- checkout: self
diff --git a/src/OSS.Sign/OSS.Sign.csproj b/src/OSS.Sign/OSS.Sign.csproj
index 6aa2cee..0a65bea 100644
--- a/src/OSS.Sign/OSS.Sign.csproj
+++ b/src/OSS.Sign/OSS.Sign.csproj
@@ -11,20 +11,48 @@
-
+
+
x86
-
+
x86
-
+
x64
-
+
x64
+
+ Arm64
+
+
+ Arm64
+
+
+
+ x86
+
+
+ x86
+
+
+ x64
+
+
+ x64
+
+
+ Arm64
+
+
+ Arm64
+
+
+
+
@@ -58,10 +86,10 @@
-
+
-
+
\ No newline at end of file
diff --git a/src/Pty.Net/Pty.Net.csproj b/src/Pty.Net/Pty.Net.csproj
index 6e4634e..a626aae 100644
--- a/src/Pty.Net/Pty.Net.csproj
+++ b/src/Pty.Net/Pty.Net.csproj
@@ -5,17 +5,29 @@
-
+
+
+ false
+ PreserveNewest
+ os86\
+
+
false
PreserveNewest
os64\
+
+ false
+ PreserveNewest
+ arm64\
+
+
true
build\
@@ -30,13 +42,14 @@
-
+
-
+
+
true
build\x86\os86
@@ -54,6 +67,7 @@
build\x86\os64
+
true
build\x64\os86
@@ -70,6 +84,16 @@
true
build\x64\os64
+
+
+
+ true
+ build\arm64
+
+
+ true
+ build\arm64
+
diff --git a/src/Pty.Net/Pty.Net.targets b/src/Pty.Net/Pty.Net.targets
index b18a96e..6aa8232 100644
--- a/src/Pty.Net/Pty.Net.targets
+++ b/src/Pty.Net/Pty.Net.targets
@@ -1,7 +1,11 @@
-
+
+
diff --git a/src/Pty.Net/Windows/NativeMethods.cs b/src/Pty.Net/Windows/NativeMethods.cs
index f6109eb..d920991 100644
--- a/src/Pty.Net/Windows/NativeMethods.cs
+++ b/src/Pty.Net/Windows/NativeMethods.cs
@@ -78,37 +78,43 @@ internal static extern bool CreateProcess(
internal static int CreatePseudoConsole(Coord coord, IntPtr input, IntPtr output, uint flags, out IntPtr consoleHandle)
{
- if (Environment.Is64BitOperatingSystem)
- {
- return CreatePseudoConsole64(coord, input, output, flags, out consoleHandle);
- }
- else
- {
- return CreatePseudoConsole86(coord, input, output, flags, out consoleHandle);
+ switch (RuntimeInformation.ProcessArchitecture)
+ {
+ case Architecture.Arm64:
+ return CreatePseudoConsoleArm64(coord, input, output, flags, out consoleHandle);
+ case Architecture.X64:
+ return CreatePseudoConsole64(coord, input, output, flags, out consoleHandle);
+ default:
+ return CreatePseudoConsole86(coord, input, output, flags, out consoleHandle);
}
}
internal static int ResizePseudoConsole(SafePseudoConsoleHandle consoleHandle, Coord coord)
{
- if (Environment.Is64BitOperatingSystem)
- {
- return ResizePseudoConsole64(consoleHandle, coord);
- }
- else
- {
- return ResizePseudoConsole86(consoleHandle, coord);
+ switch (RuntimeInformation.ProcessArchitecture)
+ {
+ case Architecture.Arm64:
+ return ResizePseudoConsoleArm64(consoleHandle, coord);
+ case Architecture.X64:
+ return ResizePseudoConsole64(consoleHandle, coord);
+ default:
+ return ResizePseudoConsole86(consoleHandle, coord);
}
}
internal static void ClosePseudoConsole(IntPtr consoleHandle)
{
- if (Environment.Is64BitOperatingSystem)
- {
- ClosePseudoConsole64(consoleHandle);
- }
- else
- {
- ClosePseudoConsole86(consoleHandle);
+ switch (RuntimeInformation.ProcessArchitecture)
+ {
+ case Architecture.Arm64:
+ ClosePseudoConsoleArm64(consoleHandle);
+ break;
+ case Architecture.X64:
+ ClosePseudoConsole64(consoleHandle);
+ break;
+ default:
+ ClosePseudoConsole86(consoleHandle);
+ break;
}
}
@@ -127,6 +133,17 @@ internal static extern bool CreatePipe(
[DllImport("kernel32.dll")]
internal static extern IntPtr GetProcAddress(IntPtr hModule, [MarshalAs(UnmanagedType.LPStr)] string procName);
+ [DllImport("arm64\\conpty.dll", EntryPoint = "CreatePseudoConsole")]
+ [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
+ private static extern int CreatePseudoConsoleArm64(Coord coord, IntPtr input, IntPtr output, uint flags, out IntPtr consoleHandle);
+
+ [DllImport("arm64\\conpty.dll", EntryPoint = "ResizePseudoConsole")]
+ private static extern int ResizePseudoConsoleArm64(SafePseudoConsoleHandle consoleHandle, Coord coord);
+
+ [DllImport("arm64\\conpty.dll", EntryPoint = "ClosePseudoConsole")]
+ [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
+ private static extern void ClosePseudoConsoleArm64(IntPtr consoleHandle);
+
[DllImport("os64\\conpty.dll", EntryPoint = "CreatePseudoConsole")]
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
private static extern int CreatePseudoConsole64(Coord coord, IntPtr input, IntPtr output, uint flags, out IntPtr consoleHandle);