summaryrefslogtreecommitdiffstatshomepage
path: root/.github/actions/common-variables/action.yml
blob: 249feae3c80bec7eda2d229d315dd5f3c173eef9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
name: Set common variables
description: Set common run variables
inputs:
  toolset:
    description: Toolset used
    required: true
runs:
  using: composite
  steps:
    - env:
        ARG_TOOLSET: ${{ inputs.toolset }}
      run: |
        $toolset = (Get-ChildItem env:ARG_TOOLSET).Value

        $host_linux = '${{ runner.os }}' -eq 'Linux'
        $host_windows = '${{ runner.os }}' -eq 'Windows'

        $mingw = $toolset -eq 'mingw' -or ($host_windows -and $toolset -eq 'gcc')

        $target_linux = $host_linux -and !$mingw
        $target_windows = $mingw -or $host_windows

        $target_pe = $target_windows
        $target_elf = $target_linux

        function Set-BoolVar {
            param(
                [Parameter(Mandatory=$true)]
                [string] $name,
                [Parameter(Mandatory=$true)]
                [bool] $value
            )

            $str_value = if ($value) { '1' } else { '' }
            $msg = "$name=$str_value"
            echo $msg
            echo $msg >> $env:GITHUB_ENV
        }

        function Set-StrVar {
            param(
                [Parameter(Mandatory=$true)]
                [string] $name,
                [string] $value
            )

            $msg = "$name=$value"
            echo $msg
            echo $msg >> $env:GITHUB_ENV
        }

        Set-BoolVar 'CI_HOST_LINUX' $host_linux
        Set-BoolVar 'CI_HOST_WINDOWS' $host_windows
        Set-BoolVar 'CI_MINGW' $mingw
        Set-BoolVar 'CI_TARGET_LINUX' $target_linux
        Set-BoolVar 'CI_TARGET_WINDOWS' $target_windows

        Set-BoolVar 'CI_TARGET_PE' $target_pe
        Set-BoolVar 'CI_TARGET_ELF' $target_elf

        $lib_prefix = 'lib'
        $lib_ext = if ($target_windows -and -not $mingw) { '.lib' } else { '.a' }

        $dll_prefix = if ($target_windows -and -not $mingw) { '' } else { 'lib' }
        $dll_ext = if ($target_windows) { '.dll' } else { '.so' }

        $exe_ext = if ($target_pe) { '.exe' } else { '' }

        Set-StrVar 'CI_LIB_PREFIX' $lib_prefix
        Set-StrVar 'CI_LIB_EXT' $lib_ext
        Set-StrVar 'CI_DLL_PREFIX' $dll_prefix
        Set-StrVar 'CI_DLL_EXT' $dll_ext
        Set-StrVar 'CI_EXE_EXT' $exe_ext

        Set-BoolVar 'CI_DLL_IN_BIN' $target_pe
      shell: pwsh