diff --git a/.gitea/workflows/build_pc.yml b/.gitea/workflows/build_pc.yml index fb286c3..2da5da6 100644 --- a/.gitea/workflows/build_pc.yml +++ b/.gitea/workflows/build_pc.yml @@ -34,10 +34,27 @@ jobs: run: > sudo apt update && sudo apt install -y extra-cmake-modules libwayland-dev libxkbcommon-dev xorg-dev libarchive-dev libassimp-dev ninja-build glslang-tools glslang-dev unzip zip libcurl4-openssl-dev libfreetype-dev libjpeg-turbo8-dev nasm && sudo wget https://sourceforge.net/projects/bin2c/files/1.1/bin2c-1.1.zip && sudo unzip bin2c-1.1.zip && cd bin2c && sudo gcc -o bin2c bin2c.c && sudo mv bin2c /usr/bin + + - name: Get cmake checks from cache + uses: actions/cache@v4 + id: cache + with: + path: | + ${{github.workspace}}/build/cmake_checks_cache.txt + ${{github.workspace}}/build/CMakeFiles/**/CMake*.cmake + key: ${{runner.os}}-cmake-checks + - name: Configure CMake - run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DDEPENDENCY_MIRROR_FILE="${{github.workspace}}/.gitea/workflows/DependencyMirrors.txt" + shell: bash + run: | + if [ "${{ steps.cache.outputs.cache-hit }}" != "true" ]; then + cmake -B "${{github.workspace}}/build" -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DDEPENDENCY_MIRROR_FILE="${{github.workspace}}/.gitea/workflows/DependencyMirrors.txt" + else + cmake -B "${{github.workspace}}/build" -C ${{github.workspace}}/build/cmake_checks_cache.txt -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DDEPENDENCY_MIRROR_FILE="${{github.workspace}}/.gitea/workflows/DependencyMirrors.txt" + fi - name: Build - run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + shell: bash + run: cmake --build "${{github.workspace}}/build" --config ${{env.BUILD_TYPE}} - name: Test working-directory: ${{github.workspace}}/build run: ctest -C ${{env.BUILD_TYPE}} @@ -67,9 +84,6 @@ jobs: retention-days: 30 overwrite: true - - - build_iOS: name: Build iOS diff --git a/.gitmodules b/.gitmodules index ee8d9e5..2656049 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "doc"] path = doc url = git@git.madvoxel.net:OpenVulkano/OpenVulkano.wiki.git +[submodule "cmake/cmake-checks-cache"] + path = cmake/cmake-checks-cache + url = https://github.com/cristianadam/cmake-checks-cache.git diff --git a/3rdParty/msdf/CMakeLists.txt b/3rdParty/msdf/CMakeLists.txt index a8e3600..e7f7849 100644 --- a/3rdParty/msdf/CMakeLists.txt +++ b/3rdParty/msdf/CMakeLists.txt @@ -12,12 +12,13 @@ if (ENABLE_MSDF) if(NOT DEFINED FREETYPE_REPO) set(FREETYPE_REPO https://github.com/freetype/freetype.git) endif() - - unset(freetype_FOUND) + if (NOT DEFINED FREETYPE_BUILT_FROM_SOURCES) + unset(freetype_FOUND) + endif() if (NOT IOS) find_package(freetype QUIET) endif () - if (NOT freetype_FOUND OR NOT EXISTS "${CMAKE_BINARY_DIR}/_deps/freetype-src/build") + if (NOT freetype_FOUND AND NOT FREETYPE_BUILT_FROM_SOURCES) message("Installing freetype from sources") FetchContent_Declare( freetype @@ -55,6 +56,7 @@ if (ENABLE_MSDF) endif() set(FREETYPE_INCLUDE_DIR "${FT_SRC_DIR}/freetype-install/include/freetype2" CACHE INTERNAL "ft include dir" FORCE) set(FREETYPE_BUILT_FROM_SOURCES ON CACHE BOOL "ft built from sources" FORCE) + set(freetype_FOUND ON CACHE BOOL "" FORCE) list(APPEND CMAKE_PREFIX_PATH "${FT_SRC_DIR}/freetype-install") endif() diff --git a/CMakeLists.txt b/CMakeLists.txt index b26832d..7a82edd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,9 @@ if(LINUX) find_package(ECM REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) endif() -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/functions") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake-checks-cache/CMakeChecksCache" + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/functions") include(VarsFromFile) include(SetCompilerSettings) diff --git a/cmake/cmake-checks-cache b/cmake/cmake-checks-cache new file mode 160000 index 0000000..fa345a9 --- /dev/null +++ b/cmake/cmake-checks-cache @@ -0,0 +1 @@ +Subproject commit fa345a9dbdf7dc4a6b27d6b6e5113ab38d0b9db9 diff --git a/openVulkanoCpp/CMakeLists.txt b/openVulkanoCpp/CMakeLists.txt index ae21b7b..8ed12cd 100644 --- a/openVulkanoCpp/CMakeLists.txt +++ b/openVulkanoCpp/CMakeLists.txt @@ -1,7 +1,16 @@ cmake_minimum_required(VERSION 3.28 FATAL_ERROR) - set(BASH_EXECUTABLE "" CACHE FILEPATH "Path to bash executable") +if(WIN32) + # prefer using git's bash over WSL's(if it exists) under System32 since it leads to wrong shader generation + find_program(GIT_PROGRAM git NO_CACHE REQUIRED) + get_filename_component(GIT_DIR ${GIT_PROGRAM} DIRECTORY) + get_filename_component(GIT_BASE_DIR ${GIT_DIR} DIRECTORY) + find_program(BASH_PROGRAM bash HINTS "${GIT_BASE_DIR}/bin" NO_CACHE NO_DEFAULT_PATH QUIET) + if (BASH_PROGRAM) + set(BASH_EXECUTABLE ${BASH_PROGRAM} CACHE FILEPATH "Path to bash executable" FORCE) + endif() +endif() if ("${BASH_EXECUTABLE}" STREQUAL "") find_program(BASH_PROGRAM bash NO_CACHE REQUIRED) set(BASH_EXECUTABLE ${BASH_PROGRAM} CACHE FILEPATH "Path to bash executable" FORCE)