180d59932Sopenharmony_ciname: Windows
280d59932Sopenharmony_ci
380d59932Sopenharmony_cion: [push, pull_request]
480d59932Sopenharmony_ci
580d59932Sopenharmony_cijobs:
680d59932Sopenharmony_ci  compatibility:
780d59932Sopenharmony_ci    runs-on: windows-latest
880d59932Sopenharmony_ci    strategy:
980d59932Sopenharmony_ci      matrix:
1080d59932Sopenharmony_ci        VER: [v142, v143]
1180d59932Sopenharmony_ci        EXT: [ON, OFF]
1280d59932Sopenharmony_ci        GEN: [Visual Studio 17 2022]
1380d59932Sopenharmony_ci        BIN: [x64, x86]
1480d59932Sopenharmony_ci        STD: [99, 11, 17]
1580d59932Sopenharmony_ci        include:
1680d59932Sopenharmony_ci          - VER: v141
1780d59932Sopenharmony_ci            EXT: OFF
1880d59932Sopenharmony_ci            GEN: Ninja Multi-Config
1980d59932Sopenharmony_ci            BIN: x64
2080d59932Sopenharmony_ci            STD: 89 # /Za
2180d59932Sopenharmony_ci    env:
2280d59932Sopenharmony_ci      NINJA_URL: https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip
2380d59932Sopenharmony_ci      NINJA_ROOT: C:\Tools\Ninja
2480d59932Sopenharmony_ci      VS_ROOT: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise'
2580d59932Sopenharmony_ci      UseMultiToolTask: true # Better parallel MSBuild execution
2680d59932Sopenharmony_ci
2780d59932Sopenharmony_ci    steps:
2880d59932Sopenharmony_ci    - uses: actions/checkout@v2
2980d59932Sopenharmony_ci
3080d59932Sopenharmony_ci    - name: Cache Ninja install
3180d59932Sopenharmony_ci      if: matrix.GEN == 'Ninja Multi-Config'
3280d59932Sopenharmony_ci      id: ninja-install
3380d59932Sopenharmony_ci      uses: actions/cache@v2
3480d59932Sopenharmony_ci      with:
3580d59932Sopenharmony_ci        path: |
3680d59932Sopenharmony_ci          C:\Tools\Ninja
3780d59932Sopenharmony_ci        key: ${{runner.os}}-ninja-${{env.NINJA_URL}}
3880d59932Sopenharmony_ci
3980d59932Sopenharmony_ci    - name: Install Ninja
4080d59932Sopenharmony_ci      if: matrix.GEN == 'Ninja Multi-Config' && steps.ninja-install.outputs.cache-hit != 'true'
4180d59932Sopenharmony_ci      shell: pwsh
4280d59932Sopenharmony_ci      run: |
4380d59932Sopenharmony_ci        Invoke-WebRequest ${env:NINJA_URL} -OutFile ~\Downloads\ninja-win.zip
4480d59932Sopenharmony_ci        Expand-Archive ~\Downloads\ninja-win.zip -DestinationPath ${env:NINJA_ROOT}\
4580d59932Sopenharmony_ci        Remove-Item ~\Downloads\*
4680d59932Sopenharmony_ci
4780d59932Sopenharmony_ci    - name: Configure (MSBuild)
4880d59932Sopenharmony_ci      if: matrix.GEN == 'Visual Studio 17 2022'
4980d59932Sopenharmony_ci      shell: pwsh
5080d59932Sopenharmony_ci      run: |
5180d59932Sopenharmony_ci        $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'}
5280d59932Sopenharmony_ci        $C_FLAGS = '/W4 /WX'
5380d59932Sopenharmony_ci        & cmake `
5480d59932Sopenharmony_ci          -G '${{matrix.GEN}}' `
5580d59932Sopenharmony_ci          -A $BIN `
5680d59932Sopenharmony_ci          -T ${{matrix.VER}} `
5780d59932Sopenharmony_ci          -D BUILD_TESTING=ON `
5880d59932Sopenharmony_ci          -D CMAKE_C_FLAGS="${C_FLAGS}" `
5980d59932Sopenharmony_ci          -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' `
6080d59932Sopenharmony_ci          -S "${env:GITHUB_WORKSPACE}" `
6180d59932Sopenharmony_ci          -B "${env:GITHUB_WORKSPACE}\build"
6280d59932Sopenharmony_ci
6380d59932Sopenharmony_ci    - name: Configure (Ninja Multi-Config)
6480d59932Sopenharmony_ci      if: matrix.GEN == 'Ninja Multi-Config'
6580d59932Sopenharmony_ci      shell: pwsh
6680d59932Sopenharmony_ci      run: |
6780d59932Sopenharmony_ci        $VER = switch ('${{matrix.VER}}') { `
6880d59932Sopenharmony_ci          'v141' {'14.1'} `
6980d59932Sopenharmony_ci          'v142' {'14.2'} `
7080d59932Sopenharmony_ci          'v143' {'14.3'} }
7180d59932Sopenharmony_ci        Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
7280d59932Sopenharmony_ci        Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=${VER}"
7380d59932Sopenharmony_ci        $C_FLAGS = '/W4 /WX'
7480d59932Sopenharmony_ci        & cmake `
7580d59932Sopenharmony_ci          -G '${{matrix.GEN}}' `
7680d59932Sopenharmony_ci          -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" `
7780d59932Sopenharmony_ci          -D BUILD_TESTING=ON `
7880d59932Sopenharmony_ci          -D CMAKE_C_FLAGS="${C_FLAGS}" `
7980d59932Sopenharmony_ci          -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' `
8080d59932Sopenharmony_ci          -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' `
8180d59932Sopenharmony_ci          -S "${env:GITHUB_WORKSPACE}" `
8280d59932Sopenharmony_ci          -B "${env:GITHUB_WORKSPACE}\build"
8380d59932Sopenharmony_ci
8480d59932Sopenharmony_ci    - name: Build (MSBuild)
8580d59932Sopenharmony_ci      if: matrix.GEN == 'Visual Studio 17 2022'
8680d59932Sopenharmony_ci      shell: pwsh
8780d59932Sopenharmony_ci      run: |
8880d59932Sopenharmony_ci        foreach ($Config in 'Release','Debug') { `
8980d59932Sopenharmony_ci          & cmake `
9080d59932Sopenharmony_ci            --build "${env:GITHUB_WORKSPACE}\build" `
9180d59932Sopenharmony_ci            --config ${Config} `
9280d59932Sopenharmony_ci            -- `
9380d59932Sopenharmony_ci            /verbosity:minimal `
9480d59932Sopenharmony_ci            /maxCpuCount `
9580d59932Sopenharmony_ci            /noLogo
9680d59932Sopenharmony_ci        }
9780d59932Sopenharmony_ci
9880d59932Sopenharmony_ci    - name: Build (Ninja)
9980d59932Sopenharmony_ci      if: matrix.GEN == 'Ninja Multi-Config'
10080d59932Sopenharmony_ci      shell: pwsh
10180d59932Sopenharmony_ci      run: |
10280d59932Sopenharmony_ci        $VER = switch ('${{matrix.VER}}') { `
10380d59932Sopenharmony_ci          'v141' {'14.1'} `
10480d59932Sopenharmony_ci          'v142' {'14.2'} `
10580d59932Sopenharmony_ci          'v143' {'14.3'} }
10680d59932Sopenharmony_ci        Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
10780d59932Sopenharmony_ci        Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=${VER}"
10880d59932Sopenharmony_ci        foreach ($Config in 'Release','Debug') { `
10980d59932Sopenharmony_ci          & cmake `
11080d59932Sopenharmony_ci            --build "${env:GITHUB_WORKSPACE}\build" `
11180d59932Sopenharmony_ci            --config ${Config} `
11280d59932Sopenharmony_ci            -- `
11380d59932Sopenharmony_ci            -j ${env:NUMBER_OF_PROCESSORS}
11480d59932Sopenharmony_ci        }
11580d59932Sopenharmony_ci
11680d59932Sopenharmony_ci    - name: Test
11780d59932Sopenharmony_ci      shell: pwsh
11880d59932Sopenharmony_ci      run: |
11980d59932Sopenharmony_ci        foreach ($Config in 'Release','Debug') { `
12080d59932Sopenharmony_ci          & ctest `
12180d59932Sopenharmony_ci            --test-dir "${env:GITHUB_WORKSPACE}\build" `
12280d59932Sopenharmony_ci            --build-config ${Config} `
12380d59932Sopenharmony_ci            --output-on-failure `
12480d59932Sopenharmony_ci            --parallel ${env:NUMBER_OF_PROCESSORS}
12580d59932Sopenharmony_ci        }
12680d59932Sopenharmony_ci
12780d59932Sopenharmony_ci    - name: Install
12880d59932Sopenharmony_ci      shell: pwsh
12980d59932Sopenharmony_ci      run: |
13080d59932Sopenharmony_ci        & cmake `
13180d59932Sopenharmony_ci          --install "${env:GITHUB_WORKSPACE}\build" `
13280d59932Sopenharmony_ci          --prefix "${env:GITHUB_WORKSPACE}\install" `
13380d59932Sopenharmony_ci          --config Release
13480d59932Sopenharmony_ci
13580d59932Sopenharmony_ci    - name: Consume (PkgConfig - bare MSBuild)
13680d59932Sopenharmony_ci      if: matrix.GEN == 'Visual Studio 17 2022'
13780d59932Sopenharmony_ci      shell: pwsh
13880d59932Sopenharmony_ci      run: |
13980d59932Sopenharmony_ci        $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'}
14080d59932Sopenharmony_ci        $C_FLAGS = '/W4 /WX'
14180d59932Sopenharmony_ci        & cmake `
14280d59932Sopenharmony_ci          -G '${{matrix.GEN}}' `
14380d59932Sopenharmony_ci          -A $BIN `
14480d59932Sopenharmony_ci          -T ${{matrix.VER}} `
14580d59932Sopenharmony_ci          -D CMAKE_C_FLAGS="${C_FLAGS}" `
14680d59932Sopenharmony_ci          -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' `
14780d59932Sopenharmony_ci          -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" `
14880d59932Sopenharmony_ci          -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" `
14980d59932Sopenharmony_ci          -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare"
15080d59932Sopenharmony_ci        foreach ($Config in 'Release','Debug') { `
15180d59932Sopenharmony_ci          & cmake `
15280d59932Sopenharmony_ci            --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" `
15380d59932Sopenharmony_ci            --config ${Config} `
15480d59932Sopenharmony_ci            -- `
15580d59932Sopenharmony_ci            /verbosity:minimal `
15680d59932Sopenharmony_ci            /maxCpuCount `
15780d59932Sopenharmony_ci            /noLogo `
15880d59932Sopenharmony_ci        }
15980d59932Sopenharmony_ci
16080d59932Sopenharmony_ci    - name: Consume (PkgConfig - bare Ninja)
16180d59932Sopenharmony_ci      if: matrix.GEN == 'Ninja Multi-Config'
16280d59932Sopenharmony_ci      shell: pwsh
16380d59932Sopenharmony_ci      run: |
16480d59932Sopenharmony_ci        $VER = switch ('${{matrix.VER}}') { `
16580d59932Sopenharmony_ci          'v141' {'14.1'} `
16680d59932Sopenharmony_ci          'v142' {'14.2'} `
16780d59932Sopenharmony_ci          'v143' {'14.3'} }
16880d59932Sopenharmony_ci        Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
16980d59932Sopenharmony_ci        Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=${VER}"
17080d59932Sopenharmony_ci        $C_FLAGS = '/W4 /WX'
17180d59932Sopenharmony_ci        & cmake `
17280d59932Sopenharmony_ci          -G '${{matrix.GEN}}' `
17380d59932Sopenharmony_ci          -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" `
17480d59932Sopenharmony_ci          -D BUILD_TESTING=ON `
17580d59932Sopenharmony_ci          -D CMAKE_C_FLAGS="${C_FLAGS}" `
17680d59932Sopenharmony_ci          -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' `
17780d59932Sopenharmony_ci          -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' `
17880d59932Sopenharmony_ci          -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" `
17980d59932Sopenharmony_ci          -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" `
18080d59932Sopenharmony_ci          -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare"
18180d59932Sopenharmony_ci        foreach ($Config in 'Release','Debug') { `
18280d59932Sopenharmony_ci          & cmake `
18380d59932Sopenharmony_ci            --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" `
18480d59932Sopenharmony_ci            --config ${Config} `
18580d59932Sopenharmony_ci            -- `
18680d59932Sopenharmony_ci            -j ${env:NUMBER_OF_PROCESSORS} `
18780d59932Sopenharmony_ci        }
18880d59932Sopenharmony_ci
18980d59932Sopenharmony_ci    - name: Consume (Emulate SDK presence)
19080d59932Sopenharmony_ci      shell: pwsh
19180d59932Sopenharmony_ci      run: |
19280d59932Sopenharmony_ci        New-Item -Type Directory -Path ${env:GITHUB_WORKSPACE}\install\share\cmake\OpenCL
19380d59932Sopenharmony_ci        New-Item -Type File -Path ${env:GITHUB_WORKSPACE}\install\share\cmake\OpenCL\OpenCLConfig.cmake -Value 'include("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeaders/OpenCLHeadersTargets.cmake")'
19480d59932Sopenharmony_ci
19580d59932Sopenharmony_ci    - name: Consume (PkgConfig - SDK MSBuild)
19680d59932Sopenharmony_ci      if: matrix.GEN == 'Visual Studio 17 2022'
19780d59932Sopenharmony_ci      shell: pwsh
19880d59932Sopenharmony_ci      run: |
19980d59932Sopenharmony_ci        $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'}
20080d59932Sopenharmony_ci        $C_FLAGS = '/W4 /WX'
20180d59932Sopenharmony_ci        & cmake `
20280d59932Sopenharmony_ci          -G '${{matrix.GEN}}' `
20380d59932Sopenharmony_ci          -A $BIN `
20480d59932Sopenharmony_ci          -T ${{matrix.VER}} `
20580d59932Sopenharmony_ci          -D CMAKE_C_FLAGS="${C_FLAGS}" `
20680d59932Sopenharmony_ci          -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' `
20780d59932Sopenharmony_ci          -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" `
20880d59932Sopenharmony_ci          -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" `
20980d59932Sopenharmony_ci          -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk"
21080d59932Sopenharmony_ci        foreach ($Config in 'Release','Debug') { `
21180d59932Sopenharmony_ci          & cmake `
21280d59932Sopenharmony_ci            --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" `
21380d59932Sopenharmony_ci            --config ${Config} `
21480d59932Sopenharmony_ci            -- `
21580d59932Sopenharmony_ci            /verbosity:minimal `
21680d59932Sopenharmony_ci            /maxCpuCount `
21780d59932Sopenharmony_ci            /noLogo `
21880d59932Sopenharmony_ci        }
21980d59932Sopenharmony_ci
22080d59932Sopenharmony_ci    - name: Consume (PkgConfig - SDK Ninja)
22180d59932Sopenharmony_ci      if: matrix.GEN == 'Ninja Multi-Config'
22280d59932Sopenharmony_ci      shell: pwsh
22380d59932Sopenharmony_ci      run: |
22480d59932Sopenharmony_ci        $VER = switch ('${{matrix.VER}}') { `
22580d59932Sopenharmony_ci          'v141' {'14.1'} `
22680d59932Sopenharmony_ci          'v142' {'14.2'} `
22780d59932Sopenharmony_ci          'v143' {'14.3'} }
22880d59932Sopenharmony_ci        Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
22980d59932Sopenharmony_ci        Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=${VER}"
23080d59932Sopenharmony_ci        $C_FLAGS = '/W4 /WX'
23180d59932Sopenharmony_ci        & cmake `
23280d59932Sopenharmony_ci          -G '${{matrix.GEN}}' `
23380d59932Sopenharmony_ci          -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" `
23480d59932Sopenharmony_ci          -D BUILD_TESTING=ON `
23580d59932Sopenharmony_ci          -D CMAKE_C_FLAGS="${C_FLAGS}" `
23680d59932Sopenharmony_ci          -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' `
23780d59932Sopenharmony_ci          -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' `
23880d59932Sopenharmony_ci          -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" `
23980d59932Sopenharmony_ci          -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" `
24080d59932Sopenharmony_ci          -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk"
24180d59932Sopenharmony_ci        foreach ($Config in 'Release','Debug') { `
24280d59932Sopenharmony_ci          & cmake `
24380d59932Sopenharmony_ci            --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" `
24480d59932Sopenharmony_ci            --config ${Config} `
24580d59932Sopenharmony_ci            -- `
24680d59932Sopenharmony_ci            -j ${env:NUMBER_OF_PROCESSORS} `
24780d59932Sopenharmony_ci        }