Repository navigation
Small optimizations #3385
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build | |
| on: | |
| push: | |
| branches: [ master ] | |
| paths-ignore: | |
| - 'Docs/**' | |
| - '**.md' | |
| pull_request: | |
| branches: [ master ] | |
| paths-ignore: | |
| - 'Docs/**' | |
| - '**.md' | |
| env: | |
| EMSCRIPTEN_VERSION: 6.0.8 | |
| NODE_VERSION: 24.x | |
| UBUNTU_CLANG_VERSION: clang++-18 | |
| UBUNTU_GCC_VERSION: g++-14 | |
| jobs: | |
| linux-clang: | |
| runs-on: ubuntu-latest | |
| name: Linux Clang | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build_type: [Debug, Release, Distribution] | |
| double_precision: [No, Yes] | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Install Vulkan | |
| run: ${{github.workspace}}/Build/ubuntu24_install_vulkan_sdk.sh | |
| - name: Configure CMake | |
| working-directory: ${{github.workspace}}/Build | |
| run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_CLANG_VERSION}} -DDOUBLE_PRECISION=${{matrix.double_precision}} | |
| - name: Build | |
| run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc) | |
| - name: Test | |
| working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}} | |
| run: ctest --output-on-failure --verbose | |
| linux_clang_tsan: | |
| runs-on: ubuntu-latest | |
| name: Linux Clang Sanitizers | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build_type: [ReleaseASAN, ReleaseUBSAN, ReleaseTSAN] | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Install Vulkan | |
| run: ${{github.workspace}}/Build/ubuntu24_install_vulkan_sdk.sh | |
| - name: Configure CMake | |
| working-directory: ${{github.workspace}}/Build | |
| run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_CLANG_VERSION}} -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON | |
| - name: Build | |
| run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc) | |
| - name: Unit Tests | |
| working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}} | |
| run: ctest --output-on-failure --verbose | |
| - name: Test ConvexVsMesh | |
| working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}} | |
| run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh | |
| - name: Test Ragdoll | |
| working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}} | |
| run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll | |
| linux-clang-so: | |
| runs-on: ubuntu-latest | |
| name: Linux Clang Shared Library | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build_type: [Debug, Release, Distribution] | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Install Vulkan | |
| run: ${{github.workspace}}/Build/ubuntu24_install_vulkan_sdk.sh | |
| - name: Configure CMake | |
| working-directory: ${{github.workspace}}/Build | |
| run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_CLANG_VERSION}} -DBUILD_SHARED_LIBS=YES | |
| - name: Build | |
| run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc) | |
| - name: Test | |
| working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}} | |
| run: ctest --output-on-failure --verbose | |
| linux-clang-32-bit: | |
| runs-on: ubuntu-latest | |
| name: Linux Clang 32-bit | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build_type: [Debug, Release, Distribution] | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Update APT | |
| run: sudo apt update | |
| - name: Install G++-Multilib | |
| run: sudo apt -y install g++-multilib | |
| - name: Configure CMake | |
| working-directory: ${{github.workspace}}/Build | |
| run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_CLANG_VERSION}} -DCMAKE_CXX_FLAGS=-m32 -DUSE_SSE4_1=OFF -DUSE_SSE4_2=OFF -DUSE_AVX=OFF -DUSE_AVX2=OFF -DUSE_AVX512=OFF -DUSE_LZCNT=OFF -DUSE_TZCNT=OFF -DUSE_F16C=OFF -DUSE_FMADD=OFF | |
| - name: Build | |
| run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc) | |
| - name: Test | |
| working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}} | |
| run: ctest --output-on-failure --verbose | |
| linux-gcc: | |
| runs-on: ubuntu-latest | |
| name: Linux GCC | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build_type: [Debug, Release, Distribution] | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Install Vulkan | |
| run: ${{github.workspace}}/Build/ubuntu24_install_vulkan_sdk.sh | |
| - name: Configure CMake | |
| working-directory: ${{github.workspace}}/Build | |
| run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_GCC_VERSION}} | |
| - name: Build | |
| run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc) | |
| - name: Test | |
| working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}} | |
| run: ctest --output-on-failure --verbose | |
| linux-gcc-so: | |
| runs-on: ubuntu-latest | |
| name: Linux GCC Shared Library | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build_type: [Debug, Release, Distribution] | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Install Vulkan | |
| run: ${{github.workspace}}/Build/ubuntu24_install_vulkan_sdk.sh | |
| - name: Configure CMake | |
| working-directory: ${{github.workspace}}/Build | |
| run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_GCC_VERSION}} -DBUILD_SHARED_LIBS=Yes | |
| - name: Build | |
| run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc) | |
| - name: Test | |
| working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}} | |
| run: ctest --output-on-failure --verbose | |
| msys2_mingw_gcc: | |
| runs-on: windows-2025-vs2026 | |
| defaults: | |
| run: | |
| shell: msys2 {0} | |
| name: MSYS2 MinGW GCC | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build_type: [Debug, Release] | |
| shared_lib: [No, Yes] | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Setup MSYS2 | |
| uses: msys2/setup-msys2@v2 | |
| with: | |
| msystem: mingw64 | |
| install: mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake | |
| update: true | |
| - name: Configure CMake | |
| working-directory: ${{github.workspace}}/Build | |
| run: ./cmake_linux_mingw.sh ${{matrix.build_type}} -DBUILD_SHARED_LIBS=${{matrix.shared_lib}} | |
| - name: Build | |
| run: cmake --build Build/MinGW_${{matrix.build_type}} -j $(nproc) | |
| - name: Test | |
| working-directory: Build/MinGW_${{matrix.build_type}} | |
| run: ctest --output-on-failure --verbose | |
| msvc_cl: | |
| runs-on: windows-2025-vs2026 | |
| name: Visual Studio CL | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build_type: [Debug, Release, Distribution] | |
| double_precision: [No, Yes] | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Add msbuild to PATH | |
| uses: microsoft/setup-msbuild@v3 | |
| - name: Configure CMake | |
| working-directory: ${{github.workspace}}/Build | |
| run: ./cmake_vs2026_cl.bat -DDOUBLE_PRECISION=${{matrix.double_precision}} | |
| - name: Build | |
| run: msbuild Build\VS2026_CL\JoltPhysics.slnx /property:Configuration=${{matrix.build_type}} -m | |
| - name: Test | |
| working-directory: ${{github.workspace}}/Build/VS2026_CL/${{matrix.build_type}} | |
| run: ./UnitTests.exe | |
| msvc_cl_no_object_stream: | |
| runs-on: windows-2025-vs2026 | |
| name: Visual Studio CL - No Object Stream | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build_type: [Debug, Distribution] | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Add msbuild to PATH | |
| uses: microsoft/setup-msbuild@v3 | |
| - name: Configure CMake | |
| working-directory: ${{github.workspace}}/Build | |
| run: ./cmake_vs2026_cl.bat -DENABLE_OBJECT_STREAM=NO | |
| - name: Build | |
| run: msbuild Build\VS2026_CL\JoltPhysics.slnx /property:Configuration=${{matrix.build_type}} -m | |
| - name: Test | |
| working-directory: ${{github.workspace}}/Build/VS2026_CL/${{matrix.build_type}} | |
| run: ./UnitTests.exe | |
| msvc_cl_dll: | |
| runs-on: windows-2025-vs2026 | |
| name: Visual Studio CL Shared Library | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build_type: [Debug, Release, Distribution] | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Add msbuild to PATH | |
| uses: microsoft/setup-msbuild@v3 | |
| - name: Configure CMake | |
| working-directory: ${{github.workspace}}/Build | |
| run: ./cmake_vs2026_cl.bat -DBUILD_SHARED_LIBS=Yes | |
| - name: Build | |
| run: msbuild Build\VS2026_CL\JoltPhysics.slnx /property:Configuration=${{matrix.build_type}} -m | |
| - name: Test | |
| working-directory: ${{github.workspace}}/Build/VS2026_CL/${{matrix.build_type}} | |
| run: ./UnitTests.exe | |
| msvc_cl_32_bit: | |
| runs-on: windows-2025-vs2026 | |
| name: Visual Studio CL 32-bit | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build_type: [Debug, Release] | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Add msbuild to PATH | |
| uses: microsoft/setup-msbuild@v3 | |
| - name: Configure CMake | |
| working-directory: ${{github.workspace}}/Build | |
| run: ./cmake_vs2026_cl_32bit.bat | |
| - name: Build | |
| run: msbuild Build\VS2026_CL_32BIT\JoltPhysics.slnx /property:Configuration=${{matrix.build_type}} -m | |
| - name: Test | |
| working-directory: ${{github.workspace}}/Build/VS2026_CL_32BIT/${{matrix.build_type}} | |
| run: ./UnitTests.exe | |
| msvc_cl_arm: | |
| runs-on: windows-2025-vs2026 | |
| name: Visual Studio CL ARM | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build_type: [Debug, Release] | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Add msbuild to PATH | |
| uses: microsoft/setup-msbuild@v3 | |
| - name: Configure CMake | |
| working-directory: ${{github.workspace}}/Build | |
| run: ./cmake_vs2026_cl_arm.bat | |
| - name: Build | |
| run: msbuild Build\VS2026_CL_ARM\JoltPhysics.slnx /property:Configuration=${{matrix.build_type}} -m | |
| msvc_clang: | |
| runs-on: windows-2025-vs2026 | |
| name: Visual Studio Clang | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build_type: [Debug, Release, Distribution] | |
| double_precision: [No, Yes] | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Add msbuild to PATH | |
| uses: microsoft/setup-msbuild@v3 | |
| - name: Configure CMake | |
| working-directory: ${{github.workspace}}/Build | |
| run: ./cmake_vs2026_clang.bat -DDOUBLE_PRECISION=${{matrix.double_precision}} | |
| - name: Build | |
| run: msbuild Build\VS2026_Clang\JoltPhysics.slnx /property:Configuration=${{matrix.build_type}} -m | |
| - name: Test | |
| working-directory: ${{github.workspace}}/Build/VS2026_Clang/${{matrix.build_type}} | |
| run: ./UnitTests.exe | |
| macos: | |
| runs-on: macos-latest | |
| name: macOS | |
| env: | |
| VULKAN_SDK_INSTALL: ${{github.workspace}}/vulkan_sdk | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build_type: [Debug, Release, Distribution] | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Install Metal Toolchain | |
| run: xcodebuild -downloadComponent MetalToolchain | |
| - name: Install Vulkan | |
| run: ${{github.workspace}}/Build/macos_install_vulkan_sdk.sh ${VULKAN_SDK_INSTALL} | |
| - name: Configure CMake | |
| run: | | |
| source ${VULKAN_SDK_INSTALL}/setup-env.sh | |
| cmake -B ${{github.workspace}}/Build/MacOS_${{matrix.build_type}} -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_CXX_COMPILER=clang++ Build | |
| - name: Build | |
| run: cmake --build ${{github.workspace}}/Build/MacOS_${{matrix.build_type}} -j $(sysctl -n hw.ncpu) | |
| - name: Test | |
| working-directory: ${{github.workspace}}/Build/MacOS_${{matrix.build_type}} | |
| run: | | |
| source ${VULKAN_SDK_INSTALL}/setup-env.sh | |
| ctest --output-on-failure --verbose | |
| android: | |
| runs-on: ubuntu-latest | |
| name: Android | |
| strategy: | |
| fail-fast: false | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Setup Java | |
| uses: actions/setup-java@v6 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '17' | |
| - name: Gradle Build | |
| working-directory: ${{github.workspace}}/Build/Android | |
| run: ./gradlew build --no-daemon | |
| ios: | |
| runs-on: macos-latest | |
| name: iOS | |
| strategy: | |
| fail-fast: false | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Configure CMake | |
| run: cmake -B ${{github.workspace}}/Build/XCode_iOS -DTARGET_HELLO_WORLD=OFF -DTARGET_PERFORMANCE_TEST=OFF -DCMAKE_SYSTEM_NAME=iOS -GXcode Build | |
| - name: Build | |
| run: cmake --build ${{github.workspace}}/Build/XCode_iOS -- -sdk iphonesimulator -arch arm64 -j $(sysctl -n hw.ncpu) | |
| emscripten: | |
| runs-on: ubuntu-latest | |
| name: Emscripten | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Setup emsdk | |
| uses: mymindstorm/setup-emsdk@v16 | |
| with: | |
| version: ${{env.EMSCRIPTEN_VERSION}} | |
| - name: Verify emsdk | |
| run: emcc -v | |
| - name: Setup Node.js ${{env.NODE_VERSION}} | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: ${{env.NODE_VERSION}} | |
| - name: Configure CMake | |
| working-directory: ${{github.workspace}}/Build | |
| run: ./cmake_linux_emscripten.sh Distribution -DTARGET_HELLO_WORLD=OFF -DTARGET_PERFORMANCE_TEST=OFF | |
| - name: Build | |
| run: cmake --build ${{github.workspace}}/Build/WASM_Distribution -j $(nproc) | |
| - name: Test | |
| working-directory: ${{github.workspace}}/Build/WASM_Distribution | |
| run: node UnitTests.js |