15db71995Sopenharmony_ci# Copyright (c) 2021-2023 Valve Corporation
25db71995Sopenharmony_ci# Copyright (c) 2021-2023 LunarG, Inc.
35db71995Sopenharmony_ci
45db71995Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
55db71995Sopenharmony_ci# you may not use this file except in compliance with the License.
65db71995Sopenharmony_ci# You may obtain a copy of the License at
75db71995Sopenharmony_ci#
85db71995Sopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
95db71995Sopenharmony_ci#
105db71995Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
115db71995Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
125db71995Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135db71995Sopenharmony_ci# See the License for the specific language governing permissions and
145db71995Sopenharmony_ci# limitations under the License.
155db71995Sopenharmony_ci#
165db71995Sopenharmony_ci# Author: Lenny Komow <lenny@lunarg.com>
175db71995Sopenharmony_ci# Author: Charles Giessen <charles@lunarg.com>
185db71995Sopenharmony_ci
195db71995Sopenharmony_ciname: CI Build
205db71995Sopenharmony_ci
215db71995Sopenharmony_ci# https://docs.github.com/en/actions/using-jobs/using-concurrency
225db71995Sopenharmony_ciconcurrency:
235db71995Sopenharmony_ci  # github.head_ref is only defined on pull_request
245db71995Sopenharmony_ci  # Fallback to the run ID, which is guaranteed to be both unique and defined for the run.
255db71995Sopenharmony_ci  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id  }}
265db71995Sopenharmony_ci  cancel-in-progress: true
275db71995Sopenharmony_ci
285db71995Sopenharmony_cion:
295db71995Sopenharmony_ci  push:
305db71995Sopenharmony_ci  pull_request:
315db71995Sopenharmony_ci    branches:
325db71995Sopenharmony_ci    - main
335db71995Sopenharmony_ci
345db71995Sopenharmony_cipermissions: read-all
355db71995Sopenharmony_ci
365db71995Sopenharmony_cijobs:
375db71995Sopenharmony_ci    linux:
385db71995Sopenharmony_ci        runs-on: ${{matrix.os}}
395db71995Sopenharmony_ci        strategy:
405db71995Sopenharmony_ci            matrix:
415db71995Sopenharmony_ci                compiler: [ {cc: gcc, cxx: g++}, {cc: clang, cxx: clang++} ]
425db71995Sopenharmony_ci                config: [ Debug, Release ]
435db71995Sopenharmony_ci                os: [ ubuntu-20.04, ubuntu-22.04 ]
445db71995Sopenharmony_ci        steps:
455db71995Sopenharmony_ci            - uses: actions/checkout@v4
465db71995Sopenharmony_ci            - uses: actions/setup-python@v5
475db71995Sopenharmony_ci              with:
485db71995Sopenharmony_ci                python-version: '3.7'
495db71995Sopenharmony_ci            - name: Test CMake min
505db71995Sopenharmony_ci              # NOTE: The main users who benefit from an older CMake version
515db71995Sopenharmony_ci              # are linux users stuck on older LTS releases. It's idiomatic best
525db71995Sopenharmony_ci              # practice to try and support them so they don't have to install
535db71995Sopenharmony_ci              # the CMake tarball. Ideally the minimum we use matches what the default
545db71995Sopenharmony_ci              # package provided by Ubuntu via APT.
555db71995Sopenharmony_ci              if: ${{ matrix.os == 'ubuntu-20.04' }}
565db71995Sopenharmony_ci              uses: lukka/get-cmake@latest
575db71995Sopenharmony_ci              with:
585db71995Sopenharmony_ci                cmakeVersion: 3.17.2
595db71995Sopenharmony_ci            - run: sudo apt update
605db71995Sopenharmony_ci            - run: sudo apt install --yes --no-install-recommends libwayland-dev libxrandr-dev
615db71995Sopenharmony_ci            - run: |
625db71995Sopenharmony_ci                cmake -S. -B build \
635db71995Sopenharmony_ci                -D CMAKE_BUILD_TYPE=${{ matrix.config }} \
645db71995Sopenharmony_ci                -D BUILD_TESTS=ON \
655db71995Sopenharmony_ci                -D UPDATE_DEPS=ON \
665db71995Sopenharmony_ci                -D LOADER_ENABLE_ADDRESS_SANITIZER=ON \
675db71995Sopenharmony_ci                -D BUILD_WERROR=ON \
685db71995Sopenharmony_ci                -D CMAKE_CXX_COMPILER=${{ matrix.compiler.cxx }} \
695db71995Sopenharmony_ci                -D CMAKE_C_COMPILER=${{ matrix.compiler.cc }}
705db71995Sopenharmony_ci            - run: cmake --build build
715db71995Sopenharmony_ci            - run: ctest --output-on-failure --test-dir build/
725db71995Sopenharmony_ci            - run: cmake --install build --prefix /tmp
735db71995Sopenharmony_ci
745db71995Sopenharmony_ci    codegen:
755db71995Sopenharmony_ci      runs-on: ubuntu-latest
765db71995Sopenharmony_ci      steps:
775db71995Sopenharmony_ci        - uses: actions/checkout@v4
785db71995Sopenharmony_ci        - run: scripts/update_deps.py --dir ext --no-build
795db71995Sopenharmony_ci        - run: scripts/generate_source.py --verify ext/Vulkan-Headers/registry/
805db71995Sopenharmony_ci
815db71995Sopenharmony_ci    linux-no-asm:
825db71995Sopenharmony_ci        runs-on: ubuntu-22.04
835db71995Sopenharmony_ci        steps:
845db71995Sopenharmony_ci            - uses: actions/checkout@v4
855db71995Sopenharmony_ci            - run: sudo apt update
865db71995Sopenharmony_ci            - run: sudo apt install --yes --no-install-recommends libwayland-dev libxrandr-dev
875db71995Sopenharmony_ci            - run: |
885db71995Sopenharmony_ci                cmake -S. -B build \
895db71995Sopenharmony_ci                -D CMAKE_BUILD_TYPE=Release \
905db71995Sopenharmony_ci                -D BUILD_TESTS=ON \
915db71995Sopenharmony_ci                -D UPDATE_DEPS=ON \
925db71995Sopenharmony_ci                -D BUILD_WERROR=ON \
935db71995Sopenharmony_ci                -D USE_GAS=OFF \
945db71995Sopenharmony_ci                -D CMAKE_C_COMPILER=clang \
955db71995Sopenharmony_ci                -D CMAKE_CXX_COMPILER=clang++
965db71995Sopenharmony_ci            - run: cmake --build build
975db71995Sopenharmony_ci            - run: cmake --install build --prefix /tmp
985db71995Sopenharmony_ci            - run: ctest --output-on-failure -E UnknownFunction --test-dir build/
995db71995Sopenharmony_ci
1005db71995Sopenharmony_ci    linux-32:
1015db71995Sopenharmony_ci        runs-on: ubuntu-22.04
1025db71995Sopenharmony_ci        strategy:
1035db71995Sopenharmony_ci            matrix:
1045db71995Sopenharmony_ci                config: [ Debug, Release ]
1055db71995Sopenharmony_ci        steps:
1065db71995Sopenharmony_ci            - uses: actions/checkout@v4
1075db71995Sopenharmony_ci            - uses: actions/setup-python@v5
1085db71995Sopenharmony_ci              with:
1095db71995Sopenharmony_ci                python-version: '3.7'
1105db71995Sopenharmony_ci            - uses: lukka/get-cmake@latest
1115db71995Sopenharmony_ci              with:
1125db71995Sopenharmony_ci                cmakeVersion: 3.17.2
1135db71995Sopenharmony_ci            - name: Enable 32 bit
1145db71995Sopenharmony_ci              run: sudo dpkg --add-architecture i386
1155db71995Sopenharmony_ci            - run: sudo apt-get update
1165db71995Sopenharmony_ci            - run: |
1175db71995Sopenharmony_ci                sudo apt install --yes --no-install-recommends \
1185db71995Sopenharmony_ci                gcc-multilib g++-multilib libc6:i386 libc6-dev-i386 libgcc-s1:i386 \
1195db71995Sopenharmony_ci                libwayland-dev:i386 libxrandr-dev:i386
1205db71995Sopenharmony_ci            - run: |
1215db71995Sopenharmony_ci                cmake -S. -B build \
1225db71995Sopenharmony_ci                -D CMAKE_BUILD_TYPE=${{matrix.config}} \
1235db71995Sopenharmony_ci                -D BUILD_TESTS=ON \
1245db71995Sopenharmony_ci                -D UPDATE_DEPS=ON \
1255db71995Sopenharmony_ci                -D BUILD_WERROR=ON \
1265db71995Sopenharmony_ci                -D SYSCONFDIR=/etc/not_vulkan \
1275db71995Sopenharmony_ci                -G Ninja
1285db71995Sopenharmony_ci              env:
1295db71995Sopenharmony_ci                CFLAGS: -m32
1305db71995Sopenharmony_ci                CXXFLAGS: -m32
1315db71995Sopenharmony_ci                LDFLAGS: -m32
1325db71995Sopenharmony_ci                ASFLAGS: --32
1335db71995Sopenharmony_ci            - run: cmake --build build
1345db71995Sopenharmony_ci            - run: cmake --install build --prefix /tmp
1355db71995Sopenharmony_ci            - run: ctest --output-on-failure
1365db71995Sopenharmony_ci              working-directory: build/
1375db71995Sopenharmony_ci
1385db71995Sopenharmony_ci    linux-32-no-asm:
1395db71995Sopenharmony_ci        runs-on: ubuntu-22.04
1405db71995Sopenharmony_ci        steps:
1415db71995Sopenharmony_ci            - uses: actions/checkout@v4
1425db71995Sopenharmony_ci            - uses: actions/setup-python@v5
1435db71995Sopenharmony_ci              with:
1445db71995Sopenharmony_ci                python-version: '3.7'
1455db71995Sopenharmony_ci            - uses: lukka/get-cmake@latest
1465db71995Sopenharmony_ci              with:
1475db71995Sopenharmony_ci                cmakeVersion: 3.17.2
1485db71995Sopenharmony_ci            - name: Enable 32 bit
1495db71995Sopenharmony_ci              run: sudo dpkg --add-architecture i386
1505db71995Sopenharmony_ci            - run: sudo apt-get update
1515db71995Sopenharmony_ci            - run: |
1525db71995Sopenharmony_ci                sudo apt install --yes --no-install-recommends \
1535db71995Sopenharmony_ci                gcc-multilib g++-multilib libc6:i386 libc6-dev-i386 libgcc-s1:i386 \
1545db71995Sopenharmony_ci                libwayland-dev:i386 libxrandr-dev:i386
1555db71995Sopenharmony_ci            - run: |
1565db71995Sopenharmony_ci                cmake -S. -B build \
1575db71995Sopenharmony_ci                -D CMAKE_BUILD_TYPE=Release \
1585db71995Sopenharmony_ci                -D BUILD_TESTS=ON \
1595db71995Sopenharmony_ci                -D UPDATE_DEPS=ON \
1605db71995Sopenharmony_ci                -D BUILD_WERROR=ON \
1615db71995Sopenharmony_ci                -D USE_GAS=OFF \
1625db71995Sopenharmony_ci                -G Ninja
1635db71995Sopenharmony_ci              env:
1645db71995Sopenharmony_ci                CFLAGS: -m32
1655db71995Sopenharmony_ci                CXXFLAGS: -m32
1665db71995Sopenharmony_ci                LDFLAGS: -m32
1675db71995Sopenharmony_ci                ASFLAGS: --32
1685db71995Sopenharmony_ci            - run: cmake --build build
1695db71995Sopenharmony_ci            - run: ctest --output-on-failure -E UnknownFunction
1705db71995Sopenharmony_ci              working-directory: build/
1715db71995Sopenharmony_ci
1725db71995Sopenharmony_ci    windows_vs:
1735db71995Sopenharmony_ci        runs-on: windows-latest
1745db71995Sopenharmony_ci        strategy:
1755db71995Sopenharmony_ci            matrix:
1765db71995Sopenharmony_ci                arch: [ Win32, x64 ]
1775db71995Sopenharmony_ci                config: [ Debug, Release ]
1785db71995Sopenharmony_ci        steps:
1795db71995Sopenharmony_ci            - uses: actions/checkout@v4
1805db71995Sopenharmony_ci            - run: |
1815db71995Sopenharmony_ci                cmake -S. -B build `
1825db71995Sopenharmony_ci                -D BUILD_TESTS=ON `
1835db71995Sopenharmony_ci                -D UPDATE_DEPS=ON `
1845db71995Sopenharmony_ci                -D CMAKE_BUILD_TYPE=${{matrix.config}} `
1855db71995Sopenharmony_ci                -A ${{ matrix.arch }} `
1865db71995Sopenharmony_ci                -D BUILD_WERROR=ON
1875db71995Sopenharmony_ci            - run: cmake --build build/ --config ${{matrix.config}}
1885db71995Sopenharmony_ci            - run: cmake --install build --prefix build/install --config ${{matrix.config}}
1895db71995Sopenharmony_ci            - run: ctest --output-on-failure -C ${{matrix.config}} --test-dir build/
1905db71995Sopenharmony_ci
1915db71995Sopenharmony_ci    windows_vs-no-asm:
1925db71995Sopenharmony_ci        runs-on: windows-latest
1935db71995Sopenharmony_ci        strategy:
1945db71995Sopenharmony_ci            matrix:
1955db71995Sopenharmony_ci                arch: [ Win32, x64 ]
1965db71995Sopenharmony_ci        steps:
1975db71995Sopenharmony_ci            - uses: actions/checkout@v4
1985db71995Sopenharmony_ci            - run: |
1995db71995Sopenharmony_ci                cmake -S. -B build `
2005db71995Sopenharmony_ci                -D BUILD_TESTS=ON `
2015db71995Sopenharmony_ci                -D UPDATE_DEPS=ON `
2025db71995Sopenharmony_ci                -D USE_MASM=OFF `
2035db71995Sopenharmony_ci                -D CMAKE_BUILD_TYPE=Release `
2045db71995Sopenharmony_ci                -A ${{ matrix.arch }} `
2055db71995Sopenharmony_ci                -D BUILD_WERROR=ON
2065db71995Sopenharmony_ci            - run: cmake --build build/ --config Release
2075db71995Sopenharmony_ci            - run: ctest --output-on-failure -C Release -E UnknownFunction --test-dir build/
2085db71995Sopenharmony_ci
2095db71995Sopenharmony_ci    # Test both clang and clang-cl (Chromium project uses clang-cl)
2105db71995Sopenharmony_ci    windows_clang:
2115db71995Sopenharmony_ci      runs-on: windows-2022
2125db71995Sopenharmony_ci      strategy:
2135db71995Sopenharmony_ci        matrix:
2145db71995Sopenharmony_ci            compiler: [ clang, clang-cl ]
2155db71995Sopenharmony_ci            config: [ Debug, Release ]
2165db71995Sopenharmony_ci      steps:
2175db71995Sopenharmony_ci          - uses: actions/checkout@v4
2185db71995Sopenharmony_ci          - uses: ilammy/msvc-dev-cmd@v1
2195db71995Sopenharmony_ci          - run: |
2205db71995Sopenharmony_ci              cmake -S. -B build `
2215db71995Sopenharmony_ci              -D CMAKE_C_COMPILER=${{matrix.compiler}} `
2225db71995Sopenharmony_ci              -D CMAKE_CXX_COMPILER=${{matrix.compiler}} `
2235db71995Sopenharmony_ci              -D UPDATE_DEPS=ON `
2245db71995Sopenharmony_ci              -D CMAKE_BUILD_TYPE=${{matrix.config}} `
2255db71995Sopenharmony_ci              -D BUILD_WERROR=ON `
2265db71995Sopenharmony_ci              -D BUILD_TESTS=ON `
2275db71995Sopenharmony_ci              -G Ninja
2285db71995Sopenharmony_ci          - run: cmake --build build/
2295db71995Sopenharmony_ci          - run: ctest --output-on-failure --test-dir build/
2305db71995Sopenharmony_ci          - run: cmake --install build --prefix build/install
2315db71995Sopenharmony_ci
2325db71995Sopenharmony_ci    mac:
2335db71995Sopenharmony_ci        runs-on: macos-11
2345db71995Sopenharmony_ci        strategy:
2355db71995Sopenharmony_ci            matrix:
2365db71995Sopenharmony_ci                config: [ Debug, Release ]
2375db71995Sopenharmony_ci                static_build: [ APPLE_STATIC_LOADER=ON, APPLE_STATIC_LOADER=OFF ]
2385db71995Sopenharmony_ci        steps:
2395db71995Sopenharmony_ci            - uses: actions/checkout@v4
2405db71995Sopenharmony_ci            - uses: actions/setup-python@v5
2415db71995Sopenharmony_ci              with:
2425db71995Sopenharmony_ci                python-version: '3.7'
2435db71995Sopenharmony_ci            - uses: lukka/get-cmake@latest
2445db71995Sopenharmony_ci            - run: |
2455db71995Sopenharmony_ci                cmake -S. -B build \
2465db71995Sopenharmony_ci                -D CMAKE_BUILD_TYPE=${{matrix.config}} \
2475db71995Sopenharmony_ci                -D ${{matrix.static_build}} \
2485db71995Sopenharmony_ci                -D BUILD_TESTS=ON \
2495db71995Sopenharmony_ci                -D UPDATE_DEPS=ON \
2505db71995Sopenharmony_ci                -D BUILD_WERROR=ON \
2515db71995Sopenharmony_ci                -D LOADER_ENABLE_ADDRESS_SANITIZER=ON \
2525db71995Sopenharmony_ci                -G Ninja
2535db71995Sopenharmony_ci              env:
2545db71995Sopenharmony_ci                # Prevents regression of KhronosGroup/Vulkan-Loader/issues/1332
2555db71995Sopenharmony_ci                LDFLAGS: -Wl,-fatal_warnings
2565db71995Sopenharmony_ci            - run: cmake --build build
2575db71995Sopenharmony_ci            - run: cmake --install build --prefix /tmp
2585db71995Sopenharmony_ci            - run: ctest --output-on-failure --test-dir build/
2595db71995Sopenharmony_ci
2605db71995Sopenharmony_ci    apple-cross-compile:
2615db71995Sopenharmony_ci      name: ${{ matrix.CMAKE_SYSTEM_NAME }}
2625db71995Sopenharmony_ci      runs-on: macos-12
2635db71995Sopenharmony_ci      strategy:
2645db71995Sopenharmony_ci          matrix:
2655db71995Sopenharmony_ci            CMAKE_SYSTEM_NAME: [ iOS, tvOS ]
2665db71995Sopenharmony_ci      steps:
2675db71995Sopenharmony_ci          - uses: actions/checkout@v4
2685db71995Sopenharmony_ci          - uses: actions/setup-python@v5
2695db71995Sopenharmony_ci            with:
2705db71995Sopenharmony_ci              python-version: '3.7'
2715db71995Sopenharmony_ci          - uses: lukka/get-cmake@latest
2725db71995Sopenharmony_ci          - run: |
2735db71995Sopenharmony_ci              cmake -S . -B build \
2745db71995Sopenharmony_ci              -D CMAKE_SYSTEM_NAME=${{ matrix.CMAKE_SYSTEM_NAME }} \
2755db71995Sopenharmony_ci              "-D CMAKE_OSX_ARCHITECTURES=arm64;x86_64" \
2765db71995Sopenharmony_ci              -D CMAKE_BUILD_TYPE=Debug \
2775db71995Sopenharmony_ci              -D UPDATE_DEPS=ON \
2785db71995Sopenharmony_ci              -D BUILD_WERROR=ON \
2795db71995Sopenharmony_ci              -G Ninja
2805db71995Sopenharmony_ci            env:
2815db71995Sopenharmony_ci              LDFLAGS: -Wl,-fatal_warnings
2825db71995Sopenharmony_ci          - run: cmake --build build
2835db71995Sopenharmony_ci          - run: cmake --install build --prefix /tmp
2845db71995Sopenharmony_ci          - name: Verify Universal Binary
2855db71995Sopenharmony_ci            run: |
2865db71995Sopenharmony_ci              vtool -show-build /tmp/lib/libvulkan.dylib | grep 'architecture x86_64'
2875db71995Sopenharmony_ci              vtool -show-build /tmp/lib/libvulkan.dylib | grep 'architecture arm64'
2885db71995Sopenharmony_ci
2895db71995Sopenharmony_ci    # Building a universal binary disables assembly automatically
2905db71995Sopenharmony_ci    # Furthermore the Vulkan SDK ships universal binaries
2915db71995Sopenharmony_ci    mac-univeral:
2925db71995Sopenharmony_ci        name: "Universal Binary Testing (STATIC ${{ matrix.static }}) w/ ${{ matrix.generator }}"
2935db71995Sopenharmony_ci        runs-on: macos-latest
2945db71995Sopenharmony_ci        strategy:
2955db71995Sopenharmony_ci            matrix:
2965db71995Sopenharmony_ci                static: [ 'ON', 'OFF' ]
2975db71995Sopenharmony_ci                generator: [ Ninja, Xcode ]
2985db71995Sopenharmony_ci        steps:
2995db71995Sopenharmony_ci            - uses: actions/checkout@v4
3005db71995Sopenharmony_ci            - uses: actions/setup-python@v5
3015db71995Sopenharmony_ci              with:
3025db71995Sopenharmony_ci                python-version: '3.7'
3035db71995Sopenharmony_ci            - uses: lukka/get-cmake@latest
3045db71995Sopenharmony_ci            - run: |
3055db71995Sopenharmony_ci                cmake -S. -B build \
3065db71995Sopenharmony_ci                -D CMAKE_BUILD_TYPE=Release \
3075db71995Sopenharmony_ci                -D APPLE_STATIC_LOADER=${{matrix.static}} \
3085db71995Sopenharmony_ci                "-D CMAKE_OSX_ARCHITECTURES=arm64;x86_64" \
3095db71995Sopenharmony_ci                -D BUILD_TESTS=ON \
3105db71995Sopenharmony_ci                -D UPDATE_DEPS=ON \
3115db71995Sopenharmony_ci                -D BUILD_WERROR=ON \
3125db71995Sopenharmony_ci                -G ${{ matrix.generator }}
3135db71995Sopenharmony_ci              env:
3145db71995Sopenharmony_ci                LDFLAGS: -Wl,-fatal_warnings
3155db71995Sopenharmony_ci            - run: cmake --build build --config Release
3165db71995Sopenharmony_ci            - run: ctest --output-on-failure --build-config Release -E UnknownFunction --test-dir build/
3175db71995Sopenharmony_ci            - run: cmake --install build --config Release --prefix /tmp
3185db71995Sopenharmony_ci            - name: Verify Universal Binary
3195db71995Sopenharmony_ci              if: ${{ matrix.static == 'OFF' }}
3205db71995Sopenharmony_ci              run: |
3215db71995Sopenharmony_ci                vtool -show-build /tmp/lib/libvulkan.dylib | grep 'architecture x86_64'
3225db71995Sopenharmony_ci                vtool -show-build /tmp/lib/libvulkan.dylib | grep 'architecture arm64'
3235db71995Sopenharmony_ci
3245db71995Sopenharmony_ci    chromium:
3255db71995Sopenharmony_ci      runs-on: ubuntu-latest
3265db71995Sopenharmony_ci      steps:
3275db71995Sopenharmony_ci        - uses: actions/checkout@v4
3285db71995Sopenharmony_ci        - run: scripts/gn/gn.py
3295db71995Sopenharmony_ci
3305db71995Sopenharmony_ci    mingw:
3315db71995Sopenharmony_ci      runs-on: windows-2022
3325db71995Sopenharmony_ci      defaults:
3335db71995Sopenharmony_ci        run:
3345db71995Sopenharmony_ci          shell: bash
3355db71995Sopenharmony_ci      steps:
3365db71995Sopenharmony_ci        - uses: actions/checkout@v4
3375db71995Sopenharmony_ci        - uses: actions/setup-python@v5
3385db71995Sopenharmony_ci          with:
3395db71995Sopenharmony_ci            python-version: '3.8'
3405db71995Sopenharmony_ci        - uses: lukka/get-cmake@latest
3415db71995Sopenharmony_ci        - name: Setup uasm
3425db71995Sopenharmony_ci          run: |
3435db71995Sopenharmony_ci            C:/msys64/usr/bin/pacman -Sy --noconfirm --needed mingw-w64-x86_64-uasm
3445db71995Sopenharmony_ci            printf '%s\n' 'C:/msys64/mingw64/bin' >> $GITHUB_PATH
3455db71995Sopenharmony_ci        - name: UASM Check
3465db71995Sopenharmony_ci          run: uasm -?
3475db71995Sopenharmony_ci        - run: |
3485db71995Sopenharmony_ci            cmake -S. -B build \
3495db71995Sopenharmony_ci            -D UPDATE_DEPS=ON \
3505db71995Sopenharmony_ci            -D CMAKE_BUILD_TYPE=Release \
3515db71995Sopenharmony_ci            -D BUILD_WERROR=ON \
3525db71995Sopenharmony_ci            -G Ninja
3535db71995Sopenharmony_ci        - run: cmake --build build
3545db71995Sopenharmony_ci        - run: cmake --install build --prefix /tmp
3555db71995Sopenharmony_ci
3565db71995Sopenharmony_ci    mingw-no-asm:
3575db71995Sopenharmony_ci      runs-on: windows-2022
3585db71995Sopenharmony_ci      defaults:
3595db71995Sopenharmony_ci        run:
3605db71995Sopenharmony_ci          shell: bash
3615db71995Sopenharmony_ci      steps:
3625db71995Sopenharmony_ci        - uses: actions/checkout@v4
3635db71995Sopenharmony_ci        - uses: actions/setup-python@v5
3645db71995Sopenharmony_ci          with:
3655db71995Sopenharmony_ci            python-version: '3.8'
3665db71995Sopenharmony_ci        - uses: lukka/get-cmake@latest
3675db71995Sopenharmony_ci        # Make sure this doesn't fail even without explicitly setting '-D USE_MASM=OFF' and without uasm
3685db71995Sopenharmony_ci        - run: |
3695db71995Sopenharmony_ci            cmake -S. -B build \
3705db71995Sopenharmony_ci            -D UPDATE_DEPS=ON \
3715db71995Sopenharmony_ci            -D CMAKE_BUILD_TYPE=Release \
3725db71995Sopenharmony_ci            -D BUILD_WERROR=ON \
3735db71995Sopenharmony_ci            -G Ninja
3745db71995Sopenharmony_ci        - run: cmake --build build
3755db71995Sopenharmony_ci        - run: cmake --install build --prefix /tmp
3765db71995Sopenharmony_ci
3775db71995Sopenharmony_ci    mingw-no-asm-explicit:
3785db71995Sopenharmony_ci      runs-on: windows-2022
3795db71995Sopenharmony_ci      defaults:
3805db71995Sopenharmony_ci        run:
3815db71995Sopenharmony_ci          shell: bash
3825db71995Sopenharmony_ci      steps:
3835db71995Sopenharmony_ci        - uses: actions/checkout@v4
3845db71995Sopenharmony_ci        - uses: lukka/get-cmake@latest
3855db71995Sopenharmony_ci        - run: |
3865db71995Sopenharmony_ci            cmake -S. -B build \
3875db71995Sopenharmony_ci            -D UPDATE_DEPS=ON \
3885db71995Sopenharmony_ci            -D CMAKE_BUILD_TYPE=Release \
3895db71995Sopenharmony_ci            -D BUILD_WERROR=ON \
3905db71995Sopenharmony_ci            -D USE_MASM=OFF \
3915db71995Sopenharmony_ci            -G Ninja
3925db71995Sopenharmony_ci        - run: cmake --build build
3935db71995Sopenharmony_ci        - run: cmake --install build --prefix /tmp
394