diff --git a/scripts/.clang-tidy b/.clang-tidy similarity index 100% rename from scripts/.clang-tidy rename to .clang-tidy diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3738a6c..df9d173 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 @@ -75,17 +67,8 @@ jobs: - 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 +76,12 @@ 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/.gitmodules b/.gitmodules deleted file mode 100644 index cda8672..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "external/vcpkg"] - path = external/vcpkg - url = https://github.com/Microsoft/vcpkg.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 83b85e4..a0e5b18 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,11 +13,12 @@ OPTION(ENABLE_WARNINGS_AS_ERRORS "Warnings are treated as Errors" ON) OPTION(ENABLE_STATIC_ANALYSIS "Enable Static Analysis Tools" ON) OPTION(ENABLE_SANITIZERS "Enable Sanitizer Tools" ON) -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) +include(${CMAKE_SCRIPTS_DIR}/cpm.cmake) if (ENABLE_TESTS) message("-- Unit Testing Enabled") 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..84ae294 --- /dev/null +++ b/cmake/googletest.cmake @@ -0,0 +1,18 @@ +include_guard() + +CPMAddPackage( + NAME googletest + GITHUB_REPOSITORY google/googletest + GIT_TAG release-1.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/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/src/CMakeLists.txt b/src/CMakeLists.txt index 63c1f07..bfe5055 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -5,8 +5,9 @@ add_executable( main.cpp ) -find_package(spdlog CONFIG REQUIRED) -target_link_libraries(${current_target} PRIVATE spdlog::spdlog spdlog::spdlog_header_only) +CPMAddPackage("gh:fmtlib/fmt#10.0.0") +target_link_libraries(${current_target} PRIVATE fmt::fmt) +set_property(TARGET fmt PROPERTY FOLDER third_party/fmt) if( ENABLE_ALL_REASONABLE_WARNINGS ) MESSAGE("-- Additional Warnings Enabled") diff --git a/src/main.cpp b/src/main.cpp index d75c935..28d95e4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,8 +1,8 @@ -#include +#include auto main() -> int { - spdlog::trace("Hello, World!"); + fmt::print("Hello, World!"); return 0; }