aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/action.yml
diff options
context:
space:
mode:
Diffstat (limited to 'action.yml')
-rw-r--r--action.yml108
1 files changed, 52 insertions, 56 deletions
diff --git a/action.yml b/action.yml
index f3de1ca..21d2e1e 100644
--- a/action.yml
+++ b/action.yml
@@ -34,18 +34,20 @@ runs:
steps:
- id: setup
run: |
- $x64 = '${{ inputs.platform }}' -eq 'x64'
- $cygwin = '${{ inputs.cygwin }}' -eq '1'
- $static_workaround = '${{ inputs.static }}' -eq '1'
+ New-Variable os -Value '${{ runner.os }}' -Option Constant
+
+ New-Variable linux_host -Value ($os -eq 'Linux') -Option Constant
+ New-Variable cygwin_host -Value ('${{ inputs.cygwin }}' -eq '1') -Option Constant
+ New-Variable windows_host -Value ($os -eq 'Windows' -and !$cygwin) -Option Constant
+
+ New-Variable x64 -Value ('${{ inputs.platform }}' -eq 'x64') -Option Constant
+ New-Variable static_workaround -Value ('${{ inputs.static }}' -eq '1') -Option Constant
$prefix32 = 'i686-w64-mingw32'
$prefix64 = 'x86_64-w64-mingw32'
$prefix = if ($x64) { $prefix64 } else { $prefix32 }
- if ('${{ runner.os }}' -eq 'Linux') {
- # -------------------------------------------------------------
- # Ubuntu
- # -------------------------------------------------------------
+ if ($linux_host) {
sudo apt install mingw-w64
# Make the compilers use the POSIX threading model, whatever that
@@ -65,57 +67,51 @@ runs:
"/usr/$prefix64/lib/libpthread.dll.a" `
"/usr/$prefix64/lib/libwinpthread.dll.a"
}
- } elseif ('${{ runner.os }}' -eq 'Windows') {
- if ($cygwin) {
- # -------------------------------------------------------------
- # Cygwin
- # -------------------------------------------------------------
- $cygwin_pkg = if ($x64) { 'mingw64-x86_64-gcc-g++' } else { 'mingw64-i686-gcc-g++' }
- choco.exe install -y --no-progress --source=cygwin $cygwin_pkg
-
- if ($static_workaround) {
- $cygwin_lib = Join-Path C: tools cygwin usr $prefix sys-root mingw lib
- Remove-Item (Join-Path $cygwin_lib 'libpthread.dll.a')
- Remove-Item (Join-Path $cygwin_lib 'libwinpthread.dll.a')
- }
+ } elseif ($cygwin_host) {
+ $cygwin_pkg = if ($x64) { 'mingw64-x86_64-gcc-g++' } else { 'mingw64-i686-gcc-g++' }
+ choco.exe install -y --no-progress --source=cygwin $cygwin_pkg
+
+ if ($static_workaround) {
+ $cygwin_lib = Join-Path C: tools cygwin usr $prefix sys-root mingw lib
+ Remove-Item (Join-Path $cygwin_lib 'libpthread.dll.a')
+ Remove-Item (Join-Path $cygwin_lib 'libwinpthread.dll.a')
+ }
+ } elseif ($windows_host) {
+ $mingw32 = 'mingw32'
+ $mingw64 = 'mingw64'
+ $mingw = if ($x64) { $mingw64 } else { $mingw32 }
+
+ $mingw_install = Join-Path C: ProgramData chocolatey lib mingw tools install
+
+ $mingw32_root = Join-Path $mingw_install $mingw32
+ $mingw64_root = Join-Path $mingw_install $mingw64
+ $mingw_root = Join-Path $mingw_install $mingw
+
+ $mingw32_bin = Join-Path $mingw32_root bin
+ $mingw64_bin = Join-Path $mingw64_root bin
+ $mingw_bin = Join-Path $mingw_root bin
+
+ $mingw_lib = Join-Path $mingw_root $prefix lib
+
+ if ($x64) {
+ # Assuming the 64-bit version is installed. If 32-bit version
+ # is installed, we won't detect that. But it's not _that_
+ # important, and we save a lot of time.
+ choco.exe install -y --no-progress mingw
+ echo $mingw64_bin >> $env:GITHUB_PATH
} else {
- # -------------------------------------------------------------
- # Windows
- # -------------------------------------------------------------
- $mingw32 = 'mingw32'
- $mingw64 = 'mingw64'
- $mingw = if ($x64) { $mingw64 } else { $mingw32 }
-
- $mingw_install = Join-Path C: ProgramData chocolatey lib mingw tools install
-
- $mingw32_root = Join-Path $mingw_install $mingw32
- $mingw64_root = Join-Path $mingw_install $mingw64
- $mingw_root = Join-Path $mingw_install $mingw
-
- $mingw32_bin = Join-Path $mingw32_root bin
- $mingw64_bin = Join-Path $mingw64_root bin
- $mingw_bin = Join-Path $mingw_root bin
-
- $mingw_lib = Join-Path $mingw_root $prefix lib
-
- if ($x64) {
- # Assuming the 64-bit version is installed. If 32-bit
- # version is installed, we won't detect that. But it's not
- # _that_ important, and we save a lot of time.
- choco.exe install -y --no-progress mingw
- echo $mingw64_bin >> $env:GITHUB_PATH
- } else {
- # Assuming the 64-bit version is installed.
- choco.exe uninstall -y --no-progress mingw
- choco.exe install -y --no-progress --x86 mingw
- echo $mingw32_bin >> $env:GITHUB_PATH
- }
-
- if ($static_workaround) {
- Remove-Item (Join-Path $mingw_lib 'libpthread.dll.a')
- Remove-Item (Join-Path $mingw_lib 'libwinpthread.dll.a')
- }
+ # Assuming the 64-bit version is installed.
+ choco.exe uninstall -y --no-progress mingw
+ choco.exe install -y --no-progress --x86 mingw
+ echo $mingw32_bin >> $env:GITHUB_PATH
+ }
+
+ if ($static_workaround) {
+ Remove-Item (Join-Path $mingw_lib 'libpthread.dll.a')
+ Remove-Item (Join-Path $mingw_lib 'libwinpthread.dll.a')
}
+ } else {
+ throw "Sorry, installing MinGW is unsupported on $os"
}
$gcc = $prefix + '-gcc'