Editor terrain integration #939
| name: Build pipeline | ||
| on: | ||
| workflow_dispatch: | ||
| inputs: | ||
| build_type_release: | ||
| description: 'Release CMake build type' | ||
| required: true | ||
| default: 'Release' | ||
| build_type_debug: | ||
| description: 'Debug CMake build type' | ||
| required: true | ||
| default: 'Debug' | ||
| build_use_cache: | ||
| description: 'Whether to use the vcpkg cache or not' | ||
| type: boolean | ||
| required: false | ||
| default: true | ||
| push: | ||
| branches: | ||
| - '*' | ||
| pull_request: | ||
| branches: [master, opengl] | ||
| env: | ||
| # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) | ||
| BUILD_TYPE_DEBUG: ${{ github.event.inputs.build_type_debug }} | ||
| BUILD_TYPE_RELEASE: ${{ github.event.inputs.build_type_release }} | ||
| USE_CACHE: ${{ github.event.inputs.build_use_cache == true || github.event.inputs.build_use_cache == null }} | ||
| RUN_TESTS: true | ||
| jobs: | ||
| windows-build: | ||
| runs-on: windows-latest | ||
| name: Build on Windows | ||
| # Run both builds in parallel and don't cancel if one fails | ||
| strategy: | ||
| matrix: | ||
| build-type: [Debug, Release] | ||
| fail-fast: false | ||
| steps: | ||
| - name: Checkout repository | ||
| uses: actions/checkout@v4 | ||
| - name: Restore swiftshader repository cache | ||
| uses: actions/cache/restore@v3 | ||
| id: swiftshadercache-restore | ||
| with: | ||
| path: ${{ github.workspace }}/swiftshader/build/Windows | ||
| key: ${{ runner.os }} | ||
| - name: Checkout swiftshader repository | ||
| uses: actions/checkout@v4 | ||
| if: steps.swiftshadercache-restore.outputs.cache-hit != 'true' | ||
| with: | ||
| repository: google/swiftshader | ||
| path: swiftshader | ||
| - name: Setup Vcpkg | ||
| uses: friendlyanon/setup-vcpkg@v1 | ||
| # Committish: The commit sha of the vcpkg repo, same as in vcpkg.json | ||
| with: | ||
| committish: f75c836a67777a86a2c1116a28b179827f028b66 | ||
| cache: ${{ env.USE_CACHE }} | ||
| # This doesn't work when the Visual Studio C++ CLI was set up first (maybe needs a setup with 2019 version) | ||
| - name: Install Vulkan SDK | ||
| uses: humbletim/install-vulkan-sdk@v1.2 | ||
| with: | ||
| version: 1.4.309.0 | ||
| cache: true | ||
| - name: Delete MSVC tool version | ||
| shell: pwsh | ||
| # Add additional scripting steps here | ||
| run: | | ||
| cd 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build' | ||
| Get-ChildItem -Recurse * | ||
| Remove-Item * -Include 'Microsoft.VCToolsVersion.v143.default.props','Microsoft.VCToolsVersion.v143.default.txt' -Force | Out-Null | ||
| Get-ChildItem -Recurse * | ||
| - name: Setup Microsoft Visual C++ CLI | ||
| uses: ilammy/msvc-dev-cmd@v1 | ||
| - name: Setup Ninja | ||
| uses: ashutoshvarma/setup-ninja@master | ||
| with: | ||
| # ninja version to download. Default: 1.10.0 | ||
| version: 1.10.0 | ||
| - name: Run scripts | ||
| shell: pwsh | ||
| # Add additional scripting steps here | ||
| run: | | ||
| cd ${{ github.workspace }} | ||
| ${{ github.workspace }}/vcpkg/vcpkg install --clean-after-build --triplet=x64-windows | ||
| Remove-Item –path vcpkg_installed –recurse | ||
| - name: Build swiftshader | ||
| uses: ashutoshvarma/action-cmake-build@master | ||
| if: steps.swiftshadercache-restore.outputs.cache-hit != 'true' | ||
| with: | ||
| build-dir: ${{ github.workspace }}/swiftshader/build | ||
| source-dir: ${{ github.workspace }}/swiftshader | ||
| cc: "cl" | ||
| cxx: "cl" | ||
| configure-options: -G Ninja -DSWIFTSHADER_BUILD_TESTS=OFF -DSWIFTSHADER_ENABLE_ASTC=OFF -DCMAKE_POLICY_VERSION_MINIMUM=3.5 | ||
| parallel: 16 | ||
| build-type: MinSizeRel | ||
| - name: Save swiftshader respository cache | ||
| id: swiftshadercache-save | ||
| uses: actions/cache/save@v3 | ||
| with: | ||
| path: ${{ github.workspace }}/swiftshader/build/Windows | ||
| key: ${{ steps.swiftshadercache-restore.outputs.cache-primary-key }} | ||
| - name: Build ${{ matrix.build-type }} configuration with CMake | ||
| uses: ashutoshvarma/action-cmake-build@master | ||
| with: | ||
| build-dir: ${{ github.workspace }}/build/${{ matrix.build-type }} | ||
| source-dir: ${{ github.workspace }} | ||
| cc: "cl" | ||
| cxx: "cl" | ||
| configure-options: -DCMAKE_TOOLCHAIN_FILE='${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake' | ||
| -DATLAS_DEMO=ON -DATLAS_TESTS=OFF -DATLAS_EDITOR=ON -G Ninja | ||
| parallel: 16 | ||
| build-type: ${{ matrix.build-type }} | ||
| - name: Build ${{ matrix.build-type }} test configuration with CMake | ||
| uses: ashutoshvarma/action-cmake-build@master | ||
| if: ${{ env.RUN_TESTS }} == true | ||
|
Check warning on line 134 in .github/workflows/build.yml
|
||
| with: | ||
| build-dir: ${{ github.workspace }}/tests/${{ matrix.build-type }} | ||
| source-dir: ${{ github.workspace }} | ||
| cc: "cl" | ||
| cxx: "cl" | ||
| configure-options: -DCMAKE_TOOLCHAIN_FILE='${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake' | ||
| -DATLAS_TESTS=ON -DATLAS_BINDLESS=OFF -DATLAS_EDITOR=OFF -DATLAS_HEADLESS=ON -G Ninja | ||
| parallel: 16 | ||
| build-type: ${{ matrix.build-type }} | ||
| - name: Run tests | ||
| shell: pwsh | ||
| if: ${{ env.RUN_TESTS }} == true | ||
|
Check warning on line 147 in .github/workflows/build.yml
|
||
| # Add additional scripting steps here | ||
| run: | | ||
| Copy-Item -Path "${{ github.workspace }}\swiftshader\build\Windows\*.*" -Destination "${{ github.workspace }}/bin/tests/${{ matrix.build-type }}" | ||
| Copy-Item -Path "${{ github.workspace }}\VULKAN_SDK\Bin\VkLayer_khronos_validation.*" -Destination "${{ github.workspace }}/bin/tests/${{ matrix.build-type }}" | ||
| cd ${{ github.workspace }}/bin/tests/${{ matrix.build-type }} | ||
| set VK_LOADER_LAYERS_ENABLE=*validation | ||
| set VK_ADD_LAYER_PATH=${{ github.workspace }}\VULKAN_SDK\Bin\ | ||
| .\AtlasEngineTests.exe | ||
| env: | ||
| VK_ICD_FILENAMES: ${{ github.workspace }}/bin/${{ matrix.build-type }}/vk_swiftshader_icd.json | ||
| VK_ADD_LAYER_PATH: ${{ github.workspace }}\VULKAN_SDK\Bin\;${{ github.workspace }}/bin/tests/${{ matrix.build-type }} | ||
| VK_LOADER_LAYERS_ENABLE: '*validation' | ||
| - name: Upload artifact | ||
| if: ${{ matrix.build-type == 'Release' }} | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: Atlas Engine Windows ${{ matrix.build-type }} | ||
| path: | | ||
| data | ||
| README.md | ||
| LICENSE.md | ||
| THIRDPARTY.md | ||
| ${{ github.workspace }}/bin/**/AtlasEngineDemo.exe | ||
| ${{ github.workspace }}/bin/**/AtlasEngineEditor.exe | ||
| ${{ github.workspace }}/bin/**/*.dll | ||
| !${{ github.workspace }}/bin/tests | ||
| !**/CMakeFiles | ||
| compression-level: 9 | ||
| linux-build: | ||
| runs-on: ubuntu-24.04 | ||
| name: Build on Linux | ||
| # Run both builds in parallel and don't cancel if one fails | ||
| strategy: | ||
| matrix: | ||
| build-type: [Debug, Release] | ||
| fail-fast: false | ||
| steps: | ||
| - name: Checkout repository | ||
| uses: actions/checkout@v4 | ||
| - name: Restore swiftshader repository cache | ||
| uses: actions/cache/restore@v3 | ||
| id: swiftshadercache-restore | ||
| with: | ||
| path: ${{ github.workspace }}/swiftshader/build/Linux | ||
| key: ${{ runner.os }} | ||
| - name: Checkout swiftshader repository | ||
| uses: actions/checkout@v4 | ||
| if: steps.swiftshadercache-restore.outputs.cache-hit != 'true' | ||
| with: | ||
| repository: google/swiftshader | ||
| path: swiftshader | ||
| - name: Setup Vcpkg | ||
| uses: friendlyanon/setup-vcpkg@v1 | ||
| # Committish: The commit sha of the vcpkg repo, same as in vcpkg.json | ||
| with: | ||
| committish: f75c836a67777a86a2c1116a28b179827f028b66 | ||
| cache: ${{ env.USE_CACHE }} | ||
| - name: Setup Ninja | ||
| uses: ashutoshvarma/setup-ninja@master | ||
| with: | ||
| # ninja version to download. Default: 1.10.0 | ||
| version: 1.10.0 | ||
| - name: Install Vulkan SDK | ||
| uses: humbletim/install-vulkan-sdk@v1.2 | ||
| with: | ||
| version: 1.4.309.0 | ||
| cache: true | ||
| - name: Run scripts | ||
| shell: bash | ||
| # Add additional scripting steps here | ||
| run: | | ||
| sudo apt update | ||
| sudo apt install libgl1-mesa-dev autoconf automake libtool pkg-config libltdl-dev g++-14 gcc-14 -y | ||
| sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 14 | ||
| sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 14 | ||
| cd ${{ github.workspace }} | ||
| ${{ github.workspace }}/vcpkg/vcpkg install --clean-after-build --triplet=x64-linux | ||
| rm -r vcpkg_installed | ||
| - name: Build swiftshader | ||
| uses: ashutoshvarma/action-cmake-build@master | ||
| if: steps.swiftshadercache-restore.outputs.cache-hit != 'true' | ||
| with: | ||
| build-dir: ${{ github.workspace }}/swiftshader/build | ||
| source-dir: ${{ github.workspace }}/swiftshader | ||
| cc: "gcc" | ||
| cxx: "g++" | ||
| configure-options: -G Ninja -DSWIFTSHADER_BUILD_TESTS=OFF -DSWIFTSHADER_ENABLE_ASTC=OFF -DCMAKE_POLICY_VERSION_MINIMUM=3.5 | ||
| parallel: 16 | ||
| build-type: MinSizeRel | ||
| - name: Save swiftshader respository cache | ||
| id: swiftshadercache-save | ||
| uses: actions/cache/save@v3 | ||
| with: | ||
| path: ${{ github.workspace }}/swiftshader/build/Linux | ||
| key: ${{ steps.swiftshadercache-restore.outputs.cache-primary-key }} | ||
| # https://github.com/marketplace/actions/setup-ninja | ||
| - name: Build ${{ matrix.build-type }} configuration with CMake | ||
| uses: ashutoshvarma/action-cmake-build@master | ||
| with: | ||
| build-dir: ${{ github.workspace }}/build/${{ matrix.build-type }} | ||
| source-dir: ${{ github.workspace }} | ||
| cc: "gcc" | ||
| cxx: "g++" | ||
| configure-options: -DCMAKE_TOOLCHAIN_FILE='${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake' | ||
| -DATLAS_DEMO=ON -DATLAS_TESTS=OFF -DATLAS_EDITOR=ON -G Ninja | ||
| parallel: 16 | ||
| build-type: ${{ matrix.build-type }} | ||
| - name: Build ${{ matrix.build-type }} test configuration with CMake | ||
| uses: ashutoshvarma/action-cmake-build@master | ||
| if: ${{ env.RUN_TESTS }} == true | ||
|
Check warning on line 270 in .github/workflows/build.yml
|
||
| with: | ||
| build-dir: ${{ github.workspace }}/tests/${{ matrix.build-type }} | ||
| source-dir: ${{ github.workspace }} | ||
| cc: "gcc" | ||
| cxx: "g++" | ||
| configure-options: -DCMAKE_TOOLCHAIN_FILE='${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake' | ||
| -DATLAS_TESTS=ON -DATLAS_BINDLESS=OFF -DATLAS_EDITOR=OFF -DATLAS_HEADLESS=ON -G Ninja | ||
| parallel: 16 | ||
| build-type: ${{ matrix.build-type }} | ||
| - name: Run tests | ||
| shell: bash | ||
| if: ${{ env.RUN_TESTS }} == true | ||
|
Check warning on line 283 in .github/workflows/build.yml
|
||
| # Add additional scripting steps here | ||
| run: | | ||
| cd ${{ github.workspace }}/bin/tests/${{ matrix.build-type }} | ||
| ./AtlasEngineTests | ||
| env: | ||
| VK_ICD_FILENAMES: ${{ github.workspace }}/swiftshader/build/Linux/vk_swiftshader_icd.json | ||
| VK_ADD_LAYER_PATH: ${{ github.workspace }}/VULKAN_SDK/lib/vulkan/layers/:${{ github.workspace }}/VULKAN_SDK/etc/vulkan/explicit_layer.d/ | ||
| LD_LIBRARY_PATH: ${{ github.workspace }}/VULKAN_SDK/lib/ | ||
| VK_LOADER_LAYERS_ENABLE: '*validation' | ||
| - name: Upload artifact | ||
| if: ${{ matrix.build-type == 'Release' }} | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: Atlas Engine Linux ${{ matrix.build-type }} | ||
| path: | | ||
| data | ||
| README.md | ||
| LICENSE.md | ||
| THIRDPARTY.md | ||
| ${{ github.workspace }}/bin/**/AtlasEngineDemo | ||
| ${{ github.workspace }}/bin/**/AtlasEngineEditor | ||
| ${{ github.workspace }}/bin/**/*.so* | ||
| !${{ github.workspace }}/bin/tests | ||
| !**/CMakeFiles | ||
| compression-level: 9 | ||
| macos-build: | ||
| runs-on: macos-latest | ||
| name: Build on MacOS | ||
| # Run both builds in parallel and don't cancel if one fails | ||
| strategy: | ||
| matrix: | ||
| build-type: [Debug, Release] | ||
| fail-fast: false | ||
| steps: | ||
| - name: Checkout repository | ||
| uses: actions/checkout@v2 | ||
| - name: Restore swiftshader repository cache | ||
| uses: actions/cache/restore@v3 | ||
| id: swiftshadercache-restore | ||
| with: | ||
| path: ${{ github.workspace }}/swiftshader/build/Darwin | ||
| key: ${{ runner.os }} | ||
| - name: Checkout swiftshader repository | ||
| uses: actions/checkout@v4 | ||
| if: steps.swiftshadercache-restore.outputs.cache-hit != 'true' | ||
| with: | ||
| repository: google/swiftshader | ||
| path: swiftshader | ||
| - name: Setup Vcpkg | ||
| uses: friendlyanon/setup-vcpkg@v1 | ||
| # Committish: The commit sha of the vcpkg repo, same as in vcpkg.json | ||
| with: | ||
| committish: f75c836a67777a86a2c1116a28b179827f028b66 | ||
| cache: ${{ env.USE_CACHE }} | ||
| - name: Setup Ninja | ||
| uses: ashutoshvarma/setup-ninja@master | ||
| with: | ||
| # ninja version to download. Default: 1.10.0 | ||
| version: 1.10.0 | ||
| - name: Install Vulkan SDK | ||
| uses: humbletim/install-vulkan-sdk@v1.2 | ||
| with: | ||
| version: 1.4.309.0 | ||
| cache: true | ||
| - name: Run scripts | ||
| shell: bash | ||
| # Add additional scripting steps here | ||
| run: | | ||
| cd ${{ github.workspace }} | ||
| brew install pkg-config | ||
| ${{ github.workspace }}/vcpkg/vcpkg install --clean-after-build --triplet=arm64-osx | ||
| rm -r vcpkg_installed | ||
| - name: Build swiftshader | ||
| uses: ashutoshvarma/action-cmake-build@master | ||
| if: steps.swiftshadercache-restore.outputs.cache-hit != 'true' | ||
| with: | ||
| build-dir: ${{ github.workspace }}/swiftshader/build | ||
| source-dir: ${{ github.workspace }}/swiftshader | ||
| cc: "clang" | ||
| cxx: "clang++" | ||
| configure-options: -G Ninja -DSWIFTSHADER_BUILD_TESTS=OFF -DSWIFTSHADER_ENABLE_ASTC=OFF -DCMAKE_POLICY_VERSION_MINIMUM=3.5 | ||
| parallel: 16 | ||
| build-type: MinSizeRel | ||
| - name: Save swiftshader respository cache | ||
| id: swiftshadercache-save | ||
| uses: actions/cache/save@v3 | ||
| with: | ||
| path: ${{ github.workspace }}/swiftshader/build/Darwin | ||
| key: ${{ steps.swiftshadercache-restore.outputs.cache-primary-key }} | ||
| # https://github.com/marketplace/actions/setup-ninja | ||
| - name: Build ${{ matrix.build-type }} configuration with CMake | ||
| uses: ashutoshvarma/action-cmake-build@master | ||
| with: | ||
| build-dir: ${{ github.workspace }}/build/${{ matrix.build-type }} | ||
| source-dir: ${{ github.workspace }} | ||
| cc: "clang" | ||
| cxx: "clang++" | ||
| configure-options: -DCMAKE_TOOLCHAIN_FILE='${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake' | ||
| -DATLAS_DEMO=ON -DATLAS_TESTS=OFF -DATLAS_EDITOR=ON -DATLAS_BUNDLE=ON -G Ninja | ||
| parallel: 16 | ||
| build-type: ${{ matrix.build-type }} | ||
| - name: Build bundle | ||
| shell: bash | ||
| if: ${{ matrix.build-type == 'Release' }} | ||
| run: | | ||
| cd ${{ github.workspace }}/build/${{ matrix.build-type }} | ||
| cmake --install . --config ${{ matrix.build-type }} | ||
| { | ||
| echo '<?xml version="1.0" encoding="UTF-8"?> | ||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
| <plist version="1.0"> | ||
| <dict> | ||
| <key>com.apple.security.files.downloads.read-write</key> | ||
| <true/> | ||
| <key>com.apple.security.files.documents.read-write</key> | ||
| <true/> | ||
| </dict> | ||
| </plist>' | ||
| } >engine.entitlements | ||
| codesign --force --deep -s - --entitlements engine.entitlements AtlasEngineEditor.app | ||
| codesign --force --deep -s - --entitlements engine.entitlements AtlasEngineDemo.app | ||
| tar -cvf AtlasEngineEditor.tar AtlasEngineEditor.app | ||
| tar -cvf AtlasEngineDemo.tar AtlasEngineDemo.app | ||
| cp AtlasEngineEditor.tar ${{ github.workspace }}/AtlasEngineEditor.tar | ||
| cp AtlasEngineDemo.tar ${{ github.workspace }}/AtlasEngineDemo.tar | ||
| - name: Build ${{ matrix.build-type }} test configuration with CMake | ||
| uses: ashutoshvarma/action-cmake-build@master | ||
| if: ${{ env.RUN_TESTS }} == true | ||
|
Check warning on line 425 in .github/workflows/build.yml
|
||
| with: | ||
| build-dir: ${{ github.workspace }}/tests/${{ matrix.build-type }} | ||
| source-dir: ${{ github.workspace }} | ||
| cc: "clang" | ||
| cxx: "clang++" | ||
| configure-options: -DCMAKE_TOOLCHAIN_FILE='${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake' | ||
| -DATLAS_TESTS=ON -DATLAS_BINDLESS=OFF -DATLAS_EDITOR=OFF -DATLAS_BUNDLE=ON -DATLAS_HEADLESS=ON -G Ninja | ||
| parallel: 16 | ||
| build-type: ${{ matrix.build-type }} | ||
| - name: Run tests | ||
| shell: bash | ||
| if: ${{ env.RUN_TESTS }} == true | ||
|
Check warning on line 438 in .github/workflows/build.yml
|
||
| # Add additional scripting steps here | ||
| run: | | ||
| cd ${{ github.workspace }}/bin/tests/${{ matrix.build-type }} | ||
| ./AtlasEngineTests | ||
| env: | ||
| VK_ICD_FILENAMES: ${{ github.workspace }}/swiftshader/build/Darwin/vk_swiftshader_icd.json | ||
| VK_ADD_LAYER_PATH: ${{ github.workspace }}/VULKAN_SDK/share/vulkan/explicit_layer.d/ | ||
| DYLD_LIBRARY_PATH: ${{ github.workspace }}/VULKAN_SDK/lib/ | ||
| VK_LOADER_LAYERS_ENABLE: '*validation' | ||
| - name: Upload artifact | ||
| uses: actions/upload-artifact@v4 | ||
| if: ${{ matrix.build-type == 'Release' }} | ||
| with: | ||
| name: Atlas Engine MacOS ${{ matrix.build-type }} | ||
| path: | | ||
| README.md | ||
| LICENSE.md | ||
| THIRDPARTY.md | ||
| ${{ github.workspace }}/AtlasEngineDemo.tar | ||
| ${{ github.workspace }}/AtlasEngineEditor.tar | ||
| compression-level: 9 | ||