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);