name: Windows on: push: paths: - "**/workflows/build_windows.yml" - "**/Source/**" - "**/Tests/**" - "**/ThirdParty/**" - "**/CMakeLists.txt" - "**/.gitmodules" - "!**/*.md" - "!**/*.txt" concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true env: BUILD_TYPE: Release jobs: lua: runs-on: windows-latest strategy: fail-fast: false matrix: lua: - { version: "5.1", suffix: "51" } - { version: "5.2", suffix: "52" } - { version: "5.3", suffix: "53" } - { version: "5.4", suffix: "54" } - { version: "5.5", suffix: "55" } steps: - uses: actions/checkout@v6 with: submodules: true - name: Create Build Environments run: | cmake -E make_directory ${{runner.workspace}}/build17 cmake -E make_directory ${{runner.workspace}}/build20 cmake -E make_directory ${{runner.workspace}}/build23 - name: Configure C++17 shell: bash working-directory: ${{runner.workspace}}/build17 run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=17 - name: Build Lua ${{ matrix.lua.version }} (C++17) working-directory: ${{runner.workspace}}/build17 shell: bash run: | cmake --build . --config $BUILD_TYPE --parallel 4 --target \ LuaBridgeTests${{ matrix.lua.suffix }} \ LuaBridgeTests${{ matrix.lua.suffix }}LuaC \ LuaBridgeTests${{ matrix.lua.suffix }}Noexcept \ LuaBridgeTests${{ matrix.lua.suffix }}LuaCNoexcept - name: Test Lua ${{ matrix.lua.version }} (C++17) working-directory: ${{runner.workspace}}/build17 shell: bash run: ctest --parallel 4 -C $BUILD_TYPE -R "LuaBridgeTests${{ matrix.lua.suffix }}" --output-on-failure - name: Configure C++20 shell: bash working-directory: ${{runner.workspace}}/build20 run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=20 - name: Build Lua ${{ matrix.lua.version }} (C++20) working-directory: ${{runner.workspace}}/build20 shell: bash run: | cmake --build . --config $BUILD_TYPE --parallel 4 --target \ LuaBridgeTests${{ matrix.lua.suffix }} \ LuaBridgeTests${{ matrix.lua.suffix }}LuaC \ LuaBridgeTests${{ matrix.lua.suffix }}Noexcept \ LuaBridgeTests${{ matrix.lua.suffix }}LuaCNoexcept - name: Test Lua ${{ matrix.lua.version }} (C++20) working-directory: ${{runner.workspace}}/build20 shell: bash run: ctest --parallel 4 -C $BUILD_TYPE -R "LuaBridgeTests${{ matrix.lua.suffix }}" --output-on-failure - name: Configure C++23 shell: bash working-directory: ${{runner.workspace}}/build23 run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=23 - name: Build Lua ${{ matrix.lua.version }} (C++23) working-directory: ${{runner.workspace}}/build23 shell: bash run: | cmake --build . --config $BUILD_TYPE --parallel 4 --target \ LuaBridgeTests${{ matrix.lua.suffix }} \ LuaBridgeTests${{ matrix.lua.suffix }}LuaC \ LuaBridgeTests${{ matrix.lua.suffix }}Noexcept \ LuaBridgeTests${{ matrix.lua.suffix }}LuaCNoexcept - name: Test Lua ${{ matrix.lua.version }} (C++23) working-directory: ${{runner.workspace}}/build23 shell: bash run: ctest --parallel 4 -C $BUILD_TYPE -R "LuaBridgeTests${{ matrix.lua.suffix }}" --output-on-failure luajit: runs-on: windows-latest steps: - uses: actions/checkout@v6 with: submodules: true - name: Create Build Environments run: | cmake -E make_directory ${{runner.workspace}}/build17 cmake -E make_directory ${{runner.workspace}}/build20 cmake -E make_directory ${{runner.workspace}}/build23 - name: Configure C++17 shell: bash working-directory: ${{runner.workspace}}/build17 run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=17 - name: Build LuaJIT (C++17) working-directory: ${{runner.workspace}}/build17 shell: bash run: | cmake --build . --config $BUILD_TYPE --parallel 4 --target \ LuaBridgeTestsLuaJIT \ LuaBridgeTestsLuaJITNoexcept - name: Test LuaJIT (C++17) working-directory: ${{runner.workspace}}/build17 shell: bash run: ctest --parallel 4 -C $BUILD_TYPE -R "LuaBridgeTestsLuaJIT" --output-on-failure - name: Configure C++20 shell: bash working-directory: ${{runner.workspace}}/build20 run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=20 - name: Build LuaJIT (C++20) working-directory: ${{runner.workspace}}/build20 shell: bash run: | cmake --build . --config $BUILD_TYPE --parallel 4 --target \ LuaBridgeTestsLuaJIT \ LuaBridgeTestsLuaJITNoexcept - name: Test LuaJIT (C++20) working-directory: ${{runner.workspace}}/build20 shell: bash run: ctest --parallel 4 -C $BUILD_TYPE -R "LuaBridgeTestsLuaJIT" --output-on-failure - name: Configure C++23 shell: bash working-directory: ${{runner.workspace}}/build23 run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=23 - name: Build LuaJIT (C++23) working-directory: ${{runner.workspace}}/build23 shell: bash run: | cmake --build . --config $BUILD_TYPE --parallel 4 --target \ LuaBridgeTestsLuaJIT \ LuaBridgeTestsLuaJITNoexcept - name: Test LuaJIT (C++23) working-directory: ${{runner.workspace}}/build23 shell: bash run: ctest --parallel 4 -C $BUILD_TYPE -R "LuaBridgeTestsLuaJIT" --output-on-failure luau: runs-on: windows-latest steps: - uses: actions/checkout@v6 with: submodules: true - name: Create Build Environments run: | cmake -E make_directory ${{runner.workspace}}/build17 cmake -E make_directory ${{runner.workspace}}/build20 cmake -E make_directory ${{runner.workspace}}/build23 - name: Configure C++17 shell: bash working-directory: ${{runner.workspace}}/build17 run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=17 - name: Build Luau (C++17) working-directory: ${{runner.workspace}}/build17 shell: bash run: cmake --build . --config $BUILD_TYPE --parallel 4 --target LuaBridgeTestsLuau - name: Test Luau (C++17) working-directory: ${{runner.workspace}}/build17 shell: bash run: ctest --parallel 4 -C $BUILD_TYPE -R "LuaBridgeTestsLuau" --output-on-failure - name: Configure C++20 shell: bash working-directory: ${{runner.workspace}}/build20 run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=20 - name: Build Luau (C++20) working-directory: ${{runner.workspace}}/build20 shell: bash run: cmake --build . --config $BUILD_TYPE --parallel 4 --target LuaBridgeTestsLuau - name: Test Luau (C++20) working-directory: ${{runner.workspace}}/build20 shell: bash run: ctest --parallel 4 -C $BUILD_TYPE -R "LuaBridgeTestsLuau" --output-on-failure - name: Configure C++23 shell: bash working-directory: ${{runner.workspace}}/build23 run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=23 - name: Build Luau (C++23) working-directory: ${{runner.workspace}}/build23 shell: bash run: cmake --build . --config $BUILD_TYPE --parallel 4 --target LuaBridgeTestsLuau - name: Test Luau (C++23) working-directory: ${{runner.workspace}}/build23 shell: bash run: ctest --parallel 4 -C $BUILD_TYPE -R "LuaBridgeTestsLuau" --output-on-failure ravi: runs-on: windows-latest steps: - uses: actions/checkout@v6 with: submodules: true - name: Create Build Environments run: | cmake -E make_directory ${{runner.workspace}}/build17 cmake -E make_directory ${{runner.workspace}}/build20 cmake -E make_directory ${{runner.workspace}}/build23 - name: Configure C++17 shell: bash working-directory: ${{runner.workspace}}/build17 run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=17 - name: Build Ravi (C++17) working-directory: ${{runner.workspace}}/build17 shell: bash run: cmake --build . --config $BUILD_TYPE --parallel 4 --target LuaBridgeTestsRavi - name: Test Ravi (C++17) working-directory: ${{runner.workspace}}/build17/Tests/Release shell: bash run: | cp ../ravi/Release/libravi.dll . ./LuaBridgeTestsRavi.exe - name: Configure C++20 shell: bash working-directory: ${{runner.workspace}}/build20 run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=20 - name: Build Ravi (C++20) working-directory: ${{runner.workspace}}/build20 shell: bash run: cmake --build . --config $BUILD_TYPE --parallel 4 --target LuaBridgeTestsRavi - name: Test Ravi (C++20) working-directory: ${{runner.workspace}}/build20/Tests/Release shell: bash run: | cp ../ravi/Release/libravi.dll . ./LuaBridgeTestsRavi.exe - name: Configure C++23 shell: bash working-directory: ${{runner.workspace}}/build23 run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=23 - name: Build Ravi (C++23) working-directory: ${{runner.workspace}}/build23 shell: bash run: cmake --build . --config $BUILD_TYPE --parallel 4 --target LuaBridgeTestsRavi - name: Test Ravi (C++23) working-directory: ${{runner.workspace}}/build23/Tests/Release shell: bash run: | cp ../ravi/Release/libravi.dll . ./LuaBridgeTestsRavi.exe