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 -y libglfw3-dev libglfw3 libglew-dev libglm-dev libpng-dev libopenal-dev libluajit-5.1-dev libvorbis-dev libgtest-dev libcurl4-openssl-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 ../.. - 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}} 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/*