From 5630c2708e80af6ed61d38bcdffd917f360e921b Mon Sep 17 00:00:00 2001 From: Orange Date: Mon, 27 Oct 2025 08:34:05 +0300 Subject: [PATCH] Update build system and enable VCPKG Migrates to CMake presets and enables VCPKG to manage dependencies. Removes explicit submodule configuration. Updates benchmark and googletest to be integrated or linked properly. The goal is to ease the build process and reduce complexity related to linking and dependency management. --- .github/workflows/cmake-multi-platform.yml | 4 ++-- .gitmodules | 6 ------ CMakeLists.txt | 9 +++------ CMakePresets.json | 2 -- benchmark/CMakeLists.txt | 8 ++++++-- extlibs/CMakeLists.txt | 9 --------- extlibs/benchmark | 1 - extlibs/googletest | 1 - tests/CMakeLists.txt | 8 +++++++- 9 files changed, 18 insertions(+), 30 deletions(-) delete mode 100644 extlibs/CMakeLists.txt delete mode 160000 extlibs/benchmark delete mode 160000 extlibs/googletest diff --git a/.github/workflows/cmake-multi-platform.yml b/.github/workflows/cmake-multi-platform.yml index 2fc5be9..40b7f0e 100644 --- a/.github/workflows/cmake-multi-platform.yml +++ b/.github/workflows/cmake-multi-platform.yml @@ -40,7 +40,7 @@ jobs: git clone --depth 1 https://github.com/microsoft/vcpkg "$VCPKG_ROOT" - name: Configure (cmake --preset) shell: bash - run: cmake --preset linux-release -DOMATH_BUILD_TESTS=ON -DOMATH_BUILD_BENCHMARK=OFF -DOMATH_BUILD_VIA_VCPKG=ON + run: cmake --preset linux-release -DOMATH_BUILD_TESTS=ON -DOMATH_BUILD_BENCHMARK=OFF -DOMATH_BUILD_VIA_VCPKG=ON -DVCPKG_MANIFEST_FEATURES="imgui;avx2;tests" - name: Build shell: bash @@ -75,7 +75,7 @@ jobs: - name: Configure (cmake --preset) shell: bash - run: cmake --preset windows-release -DOMATH_BUILD_TESTS=ON -DOMATH_BUILD_BENCHMARK=OFF -DOMATH_BUILD_VIA_VCPKG=ON + run: cmake --preset windows-release -DOMATH_BUILD_TESTS=ON -DOMATH_BUILD_BENCHMARK=OFF -DOMATH_BUILD_VIA_VCPKG=ON -DVCPKG_MANIFEST_FEATURES="imgui;avx2;tests" - name: Build shell: bash diff --git a/.gitmodules b/.gitmodules index 87b94fb..e69de29 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +0,0 @@ -[submodule "extlibs/googletest"] - path = extlibs/googletest - url = https://github.com/google/googletest.git -[submodule "extlibs/benchmark"] - path = extlibs/benchmark - url = https://github.com/google/benchmark.git diff --git a/CMakeLists.txt b/CMakeLists.txt index d57f26e..e4b4427 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,9 +21,9 @@ option(OMATH_BUILD_EXAMPLES "Build example projects with you can learn & play" O option(OMATH_STATIC_MSVC_RUNTIME_LIBRARY "Force Omath to link static runtime" OFF) option(OMATH_SUPRESS_SAFETY_CHECKS "Supress some safety checks in release build to improve general performance" ON) option(OMATH_USE_UNITY_BUILD "Will enable unity build to speed up compilation" OFF) -option(OMATH_ENABLE_LEGACY "Will enable legacy classes that MUST be used ONLY for backward compatibility" OFF) +option(OMATH_ENABLE_LEGACY "Will enable legacy classes that MUST be used ONLY for backward compatibility" ON) -option(OMATH_BUILD_VIA_VCPKG "Will enable building using vcpkg, vcpkg will override some options that were set in vcpkg.json file, and search for dependencies using vcpkg" OFF) +option(OMATH_BUILD_VIA_VCPKG "Will enable building using vcpkg, vcpkg will override some options that were set in vcpkg.json file, and search for dependencies using vcpkg" ON) if (OMATH_BUILD_VIA_VCPKG AND NOT CMAKE_TOOLCHAIN_FILE) message(FATAL_ERROR "[${PROJECT_NAME}] CMAKE_TOOLCHAIN_FILE IS EMPTY! Please set env variable called 'VCPKG_ROOT' to vcpkg root folder here is an example: 'C:/vcpkg' or '/home/user/vcpkg' ") @@ -107,7 +107,7 @@ if (OMATH_SUPRESS_SAFETY_CHECKS) endif () if (OMATH_ENABLE_LEGACY) - target_compile_options(${PROJECT_NAME} PUBLIC OMATH_ENABLE_LEGACY) + target_compile_definitions(${PROJECT_NAME} PUBLIC OMATH_ENABLE_LEGACY) endif () set_target_properties(${PROJECT_NAME} PROPERTIES @@ -140,9 +140,6 @@ endif () target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_23) -add_subdirectory(extlibs) - - if (OMATH_BUILD_TESTS) add_subdirectory(tests) target_compile_definitions(${PROJECT_NAME} PUBLIC OMATH_BUILD_TESTS) diff --git a/CMakePresets.json b/CMakePresets.json index 5aa27b1..1608eed 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -10,7 +10,6 @@ "cacheVariables": { "CMAKE_CXX_COMPILER": "cl.exe", "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", - "VCPKG_MANIFEST_FEATURES": "imgui;avx2;tests", "VCPKG_INSTALLED_DIR": "${sourceDir}/cmake-build/vcpkg_installed", "CMAKE_MAKE_PROGRAM": "Ninja" }, @@ -45,7 +44,6 @@ "cacheVariables": { "CMAKE_CXX_COMPILER": "clang++", "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", - "VCPKG_MANIFEST_FEATURES": "imgui;avx2;tests", "VCPKG_INSTALLED_DIR": "${sourceDir}/cmake-build/vcpkg_installed", "CMAKE_MAKE_PROGRAM": "Ninja" }, diff --git a/benchmark/CMakeLists.txt b/benchmark/CMakeLists.txt index 124e35a..fe48e3a 100644 --- a/benchmark/CMakeLists.txt +++ b/benchmark/CMakeLists.txt @@ -11,5 +11,9 @@ set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 23 CXX_STANDARD_REQUIRED ON) - -target_link_libraries(${PROJECT_NAME} PRIVATE benchmark::benchmark omath) \ No newline at end of file +if (TARGET benchmark::benchmark) + target_link_libraries(${PROJECT_NAME} PRIVATE benchmark::benchmark omath) +else() + find_package(benchmark CONFIG REQUIRED) + target_link_libraries(${PROJECT_NAME} PRIVATE benchmark::benchmark omath) +endif () diff --git a/extlibs/CMakeLists.txt b/extlibs/CMakeLists.txt deleted file mode 100644 index 3ed280f..0000000 --- a/extlibs/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ - -if (OMATH_BUILD_TESTS) - add_subdirectory(googletest) -endif () - -if (OMATH_BUILD_BENCHMARK) - set(BENCHMARK_ENABLE_TESTING OFF) - add_subdirectory(benchmark) -endif () \ No newline at end of file diff --git a/extlibs/benchmark b/extlibs/benchmark deleted file mode 160000 index 2948b6a..0000000 --- a/extlibs/benchmark +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2948b6a2e61ccabecc952c24794c6960d86c9ed6 diff --git a/extlibs/googletest b/extlibs/googletest deleted file mode 160000 index 52eb810..0000000 --- a/extlibs/googletest +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 52eb8108c5bdec04579160ae17225d66034bd723 diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 5d93257..0ab0c99 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -15,5 +15,11 @@ set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD_REQUIRED ON) -target_link_libraries(${PROJECT_NAME} PRIVATE gtest gtest_main omath::omath) + +if (NOT OMATH_BUILD_VIA_VCPKG) + target_link_libraries(${PROJECT_NAME} PRIVATE gtest gtest_main omath::omath) +else() + find_package(GTest CONFIG REQUIRED) + target_link_libraries(${PROJECT_NAME} PRIVATE GTest::gtest GTest::gtest_main omath::omath) +endif() gtest_discover_tests(${PROJECT_NAME}) \ No newline at end of file