name: CMake on: workflow_call: inputs: build_type: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) description: Type of build (Debug, Release, RelWithDebInfo, MinSizeRel) type: string default: Debug upload_artifacts: description: Should upload artifacts or not type: boolean default: false run_tests: description: Run CTest after project build type: boolean default: false jobs: build: # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac. # You can convert this to a matrix build if you need cross-platform coverage. # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix strategy: matrix: include: - os: ubuntu-latest runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - name: Install packages # If libluajit-5.1-dev is not available, use this: # git clone https://luajit.org/git/luajit.git # cd luajit # make && make install INSTALL_INC=/usr/include/lua run: | sudo apt-get update sudo apt-get install libglew-dev libglm-dev libpng-dev libopenal-dev libluajit-5.1-dev libvorbis-dev libgtest-dev libcurl4-openssl-dev # dependency for building sdl # https://github.com/libsdl-org/SDL/blob/main/docs/README-linux.md sudo apt-get install -y build-essential git make \ pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev \ libaudio-dev libfribidi-dev libjack-dev libsndio-dev libx11-dev libxext-dev \ libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libxtst-dev \ libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev \ libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev # fix luajit paths sudo ln -s /usr/lib/x86_64-linux-gnu/libluajit-5.1.a /usr/lib/x86_64-linux-gnu/liblua-5.1.a sudo ln -s /usr/include/luajit-2.1 /usr/include/lua # install EnTT git clone https://github.com/skypjack/entt.git cd entt/build cmake -DCMAKE_BUILD_TYPE=Release -DENTT_INSTALL=on .. sudo make install cd ../.. # install SDL3 git clone https://github.com/libsdl-org/SDL.git cd SDL cmake -G "Ninja Multi-Config" -B.build . cmake --build .build --config Release -j 4 sudo cmake --install .build --config Release cd .. - name: Configure CMake # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only # required if you are using a single-configuration generator such as # make. # # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{inputs.build_type}} -DVOXELENGINE_BUILD_TESTS=ON - name: Build # Build your program with the given configuration run: | cmake --build ${{github.workspace}}/build --config ${{inputs.build_type}} -j 4 mv ${{github.workspace}}/build/VoxelEngine VoxelEngine - name: Run tests if: ${{ inputs.run_tests }} run: ctest --test-dir ${{github.workspace}}/build - name: Upload artifacts if: ${{ inputs.upload_artifacts }} uses: actions/upload-artifact@v4 with: name: VoxelEngine path: | VoxelEngine res/*