diff --git a/.github/workflows/cmake-single-platform.yml b/.github/workflows/cmake-single-platform.yml new file mode 100644 index 0000000..9403a0d --- /dev/null +++ b/.github/workflows/cmake-single-platform.yml @@ -0,0 +1,49 @@ +# This starter workflow is for a CMake project running on a single platform. There is a different starter workflow if you need cross-platform coverage. +# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-multi-platform.yml +name: CMake on a single platform + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +env: + # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) + BUILD_TYPE: Release + +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 + runs-on: ubuntu-24.04 + + steps: + - uses: actions/checkout@v4 + + - name: Add LunarG repo + run: | + wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo tee /etc/apt/trusted.gpg.d/lunarg.asc + sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-noble.list https://packages.lunarg.com/vulkan/lunarg-vulkan-noble.list + + - name: Install Dependencies + run: | + sudo apt-get update + sudo apt-get install extra-cmake-modules libglm-dev libwayland-dev libx11-dev libxkbcommon-dev vulkan-sdk wayland-protocols + + - 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=${{env.BUILD_TYPE}} + + - name: Build + # Build your program with the given configuration + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + + - name: Test + working-directory: ${{github.workspace}}/build + # Execute tests defined by the CMake configuration. + # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail + run: ctest -C ${{env.BUILD_TYPE}} + diff --git a/CMakeLists.txt b/CMakeLists.txt index e627c94..a7afedc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,10 +23,13 @@ elseif(${CMAKE_BUILD_TYPE} STREQUAL "MinSizeRel") endif() function(add_shader_target target) + set(outdir ${CMAKE_CURRENT_BINARY_DIR}/shaders) + file(MAKE_DIRECTORY ${outdir}) + set(${all_binaries} "") foreach(shader ${ARGN}) set(source ${CMAKE_CURRENT_SOURCE_DIR}/shaders/${shader}) - set(binary ${CMAKE_CURRENT_BINARY_DIR}/shaders/${shader}.spv) + set(binary ${outdir}/${shader}.spv) add_custom_command( OUTPUT ${binary} MAIN_DEPENDENCY ${source} diff --git a/README.md b/README.md index 18ab4a1..32cc7fc 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ Also required to build, but not used: * C/C++ compiler (tested with clang++ 18) * CMake * [Extra Cmake Modules](https://api.kde.org/frameworks/extra-cmake-modules/html/index.html) by KDE +* GLM headers * Vulkan SDK * Vulkan headers * VMA headers