diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3738a6c..acc32fb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,46 +18,38 @@ jobs: os: [windows-latest, ubuntu-latest, macos-latest] build_configuration: [Debug, Release] compiler: [llvm, gcc] - vcpkg_bootstrap: [bootstrap-vcpkg.sh] exclude: - os: windows-latest - vcpkg_bootstrap: bootstrap-vcpkg.sh include: - os: 'windows-latest' triplet: x64-windows - vcpkg_bootstrap: bootstrap-vcpkg.bat compiler: llvm build_configuration: Debug - os: 'windows-latest' triplet: x64-windows - vcpkg_bootstrap: bootstrap-vcpkg.bat compiler: llvm build_configuration: Release - os: 'windows-latest' triplet: x64-windows - vcpkg_bootstrap: bootstrap-vcpkg.bat compiler: gcc build_configuration: Debug - os: 'windows-latest' triplet: x64-windows - vcpkg_bootstrap: bootstrap-vcpkg.bat compiler: gcc build_configuration: Release - os: 'windows-latest' triplet: x64-windows - vcpkg_bootstrap: bootstrap-vcpkg.bat compiler: msvc build_configuration: Debug - os: 'windows-latest' triplet: x64-windows - vcpkg_bootstrap: bootstrap-vcpkg.bat compiler: msvc build_configuration: Release @@ -70,22 +62,12 @@ jobs: steps: - name: checkout uses: actions/checkout@v3 - with: - submodules: true - name: cache uses: actions/cache@v3 with: - path: | - ~/vcpkg - ./build/vcpkg_installed - ${{ env.HOME }}/.cache/vcpkg/archives - ${{ env.XDG_CACHE_HOME }}/vcpkg/archives - ${{ env.LOCALAPPDATA }}\vcpkg\archives - ${{ env.APPDATA }}\vcpkg\archives - key: ${{ runner.os }}-${{ matrix.compiler }}-${{ matrix.build_configuration }}-${{ hashFiles('**/CMakeLists.txt') }}-${{ hashFiles('./vcpkg.json')}} - restore-keys: | - ${{ runner.os }}-${{ matrix.build_configuration }}- + path: "**/cpm_modules" + key: ${{ github.workflow }}-cpm-modules-${{ hashFiles('**/CMakeLists.txt', '**/*.cmake') }} - name: setup dependencies uses: aminya/setup-cpp@v1 @@ -93,20 +75,11 @@ jobs: compiler: ${{ matrix.compiler }} vcvarsall: ${{ contains(matrix.os, 'windows')}} cmake: true - vcpkg: true ccache: true clangtidy: ${{ env.CLANG_TIDY_VERSION }} - cppcheck: true - - - name: Boostrap Vcpkg - run: ${{github.workspace}}/external/vcpkg/${{matrix.vcpkg_bootstrap}} -disableMetrics - - - name: Install packaged dependencies - run: ${{github.workspace}}/external/vcpkg/vcpkg install spdlog --triplet ${{matrix.triplet}} - name: Configure CMake - run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build_configuration}} - -DCMAKE_TOOLCHAIN_FILE=${{github.workspace}}/external/vcpkg/scripts/buildsystems/vcpkg.cmake + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build_configuration}} - name: Build run: cmake --build ${{github.workspace}}/build --config ${{matrix.build_configuration}} diff --git a/CMakeLists.txt b/CMakeLists.txt index a5c9ec4..34aead8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,16 +13,10 @@ OPTION(ENABLE_WARNINGS_AS_ERRORS "Warnings are treated as Errors" ON) OPTION(ENABLE_STATIC_ANALYSIS "Enable Static Analysis Tools" OFF) OPTION(ENABLE_SANITIZERS "Enable Sanitizer Tools" OFF) -set(CMAKE_SCRIPTS_DIR ${CMAKE_CURRENT_LIST_DIR}/scripts/cmake) +set(CMAKE_SCRIPTS_DIR ${CMAKE_CURRENT_LIST_DIR}/cmake) include(${CMAKE_SCRIPTS_DIR}/compilerwarnings.cmake) include(${CMAKE_SCRIPTS_DIR}/sanitizers.cmake) include(${CMAKE_SCRIPTS_DIR}/staticanalysis.cmake) -if (ENABLE_TESTS) - message("-- Unit Testing Enabled") - enable_testing() - add_subdirectory(test) -endif() - add_subdirectory(src) diff --git a/scripts/cmake/compilerwarnings.cmake b/cmake/compilerwarnings.cmake similarity index 100% rename from scripts/cmake/compilerwarnings.cmake rename to cmake/compilerwarnings.cmake diff --git a/cmake/cpm.cmake b/cmake/cpm.cmake new file mode 100644 index 0000000..a3086b7 --- /dev/null +++ b/cmake/cpm.cmake @@ -0,0 +1,33 @@ +set(CPM_DOWNLOAD_VERSION 0.38.1) + +if(CPM_SOURCE_CACHE) + set(CPM_DOWNLOAD_LOCATION "${CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake") +elseif(DEFINED ENV{CPM_SOURCE_CACHE}) + set(CPM_DOWNLOAD_LOCATION "$ENV{CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake") +else() + set(CPM_DOWNLOAD_LOCATION "${CMAKE_BINARY_DIR}/cmake/CPM_${CPM_DOWNLOAD_VERSION}.cmake") +endif() + +# Expand relative path. This is important if the provided path contains a tilde (~) +get_filename_component(CPM_DOWNLOAD_LOCATION ${CPM_DOWNLOAD_LOCATION} ABSOLUTE) + +function(download_cpm) + message(STATUS "Downloading CPM.cmake to ${CPM_DOWNLOAD_LOCATION}") + file(DOWNLOAD + https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake + ${CPM_DOWNLOAD_LOCATION} + ) +endfunction() + +if(NOT (EXISTS ${CPM_DOWNLOAD_LOCATION})) + download_cpm() +else() + # resume download if it previously failed + file(READ ${CPM_DOWNLOAD_LOCATION} check) + if("${check}" STREQUAL "") + download_cpm() + endif() + unset(check) +endif() + +include(${CPM_DOWNLOAD_LOCATION}) diff --git a/cmake/googletest.cmake b/cmake/googletest.cmake new file mode 100644 index 0000000..1a971fe --- /dev/null +++ b/cmake/googletest.cmake @@ -0,0 +1,18 @@ +include_guard() + +CPMAddPackage( + NAME googletest + GITHUB_REPOSITORY google/googletest + GIT_TAG v1.13.0 + VERSION 1.13.0 + OPTIONS + "INSTALL_GTEST OFF" + "gtest_force_shared_crt ON" +) + +set_property(TARGET + gtest + gtest_main + gmock + gmock_main + PROPERTY FOLDER third_party/GoogleTest) diff --git a/scripts/cmake/precompiled.cmake b/cmake/precompiled.cmake similarity index 100% rename from scripts/cmake/precompiled.cmake rename to cmake/precompiled.cmake diff --git a/scripts/cmake/sanitizers.cmake b/cmake/sanitizers.cmake similarity index 100% rename from scripts/cmake/sanitizers.cmake rename to cmake/sanitizers.cmake diff --git a/scripts/cmake/staticanalysis.cmake b/cmake/staticanalysis.cmake similarity index 100% rename from scripts/cmake/staticanalysis.cmake rename to cmake/staticanalysis.cmake diff --git a/external/vcpkg b/external/vcpkg deleted file mode 160000 index af031ae..0000000 --- a/external/vcpkg +++ /dev/null @@ -1 +0,0 @@ -Subproject commit af031ae388730db1cf6d1d7b3752c74209d7bbe1 diff --git a/scripts/.clang-tidy b/scripts/.clang-tidy deleted file mode 100644 index 1aaa846..0000000 --- a/scripts/.clang-tidy +++ /dev/null @@ -1,19 +0,0 @@ ---- -Checks: "*, - -abseil-*, - -altera-*, - -android-*, - -fuchsia-*, - -google-*, - -llvm*, - -modernize-use-trailing-return-type, - -zircon-*, - -readability-else-after-return, - -readability-static-accessed-through-instance, - -readability-avoid-const-params-in-decls, - -cppcoreguidelines-non-private-member-variables-in-classes, - -misc-non-private-member-variables-in-classes, -" -WarningsAsErrors: '' -HeaderFilterRegex: '' -FormatStyle: none \ No newline at end of file diff --git a/scripts/cmake/googletest.cmake b/scripts/cmake/googletest.cmake deleted file mode 100644 index 29379ff..0000000 --- a/scripts/cmake/googletest.cmake +++ /dev/null @@ -1,18 +0,0 @@ -include_guard() - -include(FetchContent) -FetchContent_Declare( - googletest - GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG 58d77fa8070e8cec2dc1ed015d66b454c8d78850 # release-1.12.1 -) -# For Windows: Prevent overriding the parent project's compiler/linker settings -set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) -FetchContent_MakeAvailable(googletest) - -set_property(TARGET - gtest - gtest_main - gmock - gmock_main - PROPERTY FOLDER GoogleTest) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt deleted file mode 100644 index 921320b..0000000 --- a/test/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -include(${CMAKE_SCRIPTS_DIR}/googletest.cmake) - -add_executable( - window-starter-test - test_main.cpp -) - -target_link_libraries( - window-starter-test - gtest_main -) - -include(GoogleTest) -gtest_discover_tests(window-starter-test) diff --git a/test/test_main.cpp b/test/test_main.cpp deleted file mode 100644 index d46382c..0000000 --- a/test/test_main.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include - -TEST(testmain, example) -{ - EXPECT_EQ(42, 7*6); -} \ No newline at end of file