aboutsummaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorMarcos Magueta <maguetamarcos@gmail.com>2026-05-19 00:31:13 -0300
committerGitHub <noreply@github.com>2026-05-19 00:31:13 -0300
commita1ad592d31a14c674b9e44ab5fe1fe1358d03707 (patch)
tree1057c30479afbdf0484c0c77d9c493e396d0238e /CMakeLists.txt
parentaf8759a9c1d965a3220024d1857aea219d62d898 (diff)
downloadRNT-a1ad592d31a14c674b9e44ab5fe1fe1358d03707.tar.gz
RNT-a1ad592d31a14c674b9e44ab5fe1fe1358d03707.zip
CI: Fix windows build with API annotations
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt65
1 files changed, 23 insertions, 42 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d4af6cb..20f5244 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,4 @@
-# CMakeList.txt : CMake project for RelationalNT, include source and define
-# project specific logic here.
-#
-cmake_minimum_required (VERSION 3.10)
+cmake_minimum_required (VERSION 3.16)
# Enable Hot Reload for MSVC compilers if supported.
if (POLICY CMP0141)
@@ -11,13 +8,16 @@ endif()
project ("RelationalNT")
+set(CMAKE_CXX_STANDARD 20)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+option(RNT_UNITY_BUILD "Enable unity (jumbo) builds for faster compilation" ON)
+
find_package(unofficial-sqlite3 CONFIG REQUIRED)
find_path(PICOSHA2_INCLUDE_DIRS "picosha2.h")
find_package(Catch2 3 REQUIRED)
-# Add source to this project's executable.
-add_executable (RelationalNT
- "src/RelationalNT.cpp"
+add_library(rnt_core OBJECT
"src/ObjectManager.cpp"
"src/PermissionsManager.cpp"
"src/IdentityManager.cpp"
@@ -28,38 +28,25 @@ add_executable (RelationalNT
"src/TupleCodec.cpp"
"src/MultigroupCodec.cpp"
"src/InMemoryBackend.cpp"
- "src/SqliteBackend.cpp"
"src/NamespaceReferenceManager.cpp"
"src/VM.cpp"
)
+target_include_directories(rnt_core PUBLIC "include" ${PICOSHA2_INCLUDE_DIRS})
+set_target_properties(rnt_core PROPERTIES
+ POSITION_INDEPENDENT_CODE ON
+ UNITY_BUILD ${RNT_UNITY_BUILD}
+)
-target_include_directories(RelationalNT PRIVATE "include")
+add_executable (RelationalNT
+ "src/RelationalNT.cpp"
+ "src/SqliteBackend.cpp"
+)
+target_link_libraries(RelationalNT PRIVATE rnt_core unofficial::sqlite3::sqlite3)
target_compile_definitions(RelationalNT PRIVATE NT_CONSOLE_APP)
-
-if (CMAKE_VERSION VERSION_GREATER 3.12)
- set_property(TARGET RelationalNT PROPERTY CXX_STANDARD 20)
-endif()
-
-target_link_libraries(RelationalNT PRIVATE unofficial::sqlite3::sqlite3)
-target_include_directories(RelationalNT PRIVATE ${PICOSHA2_INCLUDE_DIRS})
+set_target_properties(RelationalNT PROPERTIES UNITY_BUILD ${RNT_UNITY_BUILD})
enable_testing()
-set(RNT_CORE_SOURCES
- "src/ObjectManager.cpp"
- "src/PermissionsManager.cpp"
- "src/IdentityManager.cpp"
- "src/LifecycleManager.cpp"
- "src/HandlerManager.cpp"
- "src/CursorManager.cpp"
- "src/Merkle.cpp"
- "src/TupleCodec.cpp"
- "src/MultigroupCodec.cpp"
- "src/InMemoryBackend.cpp"
- "src/NamespaceReferenceManager.cpp"
- "src/VM.cpp"
-)
-
add_executable(RNT_tests
"test/VM.cpp"
"test/MultigroupCodec.cpp"
@@ -67,13 +54,11 @@ add_executable(RNT_tests
"test/NamespaceReferenceManager.cpp"
"test/LifecycleManager.cpp"
"test/CursorManager.cpp"
- ${RNT_CORE_SOURCES}
)
-target_include_directories(RNT_tests PRIVATE "include")
-target_include_directories(RNT_tests PRIVATE ${PICOSHA2_INCLUDE_DIRS})
+target_link_libraries(RNT_tests PRIVATE rnt_core Catch2::Catch2WithMain)
target_compile_definitions(RNT_tests PRIVATE NT_CONSOLE_APP)
-target_link_libraries(RNT_tests PRIVATE Catch2::Catch2WithMain)
-set_property(TARGET RNT_tests PROPERTY CXX_STANDARD 20)
+
+set_target_properties(RNT_tests PROPERTIES UNITY_BUILD OFF)
include(Catch)
catch_discover_tests(RNT_tests DISCOVERY_MODE PRE_TEST)
@@ -81,18 +66,14 @@ catch_discover_tests(RNT_tests DISCOVERY_MODE PRE_TEST)
add_library(RNT SHARED
"src/RNT_C_API.cpp"
"src/SqliteBackend.cpp"
- ${RNT_CORE_SOURCES}
)
+target_link_libraries(RNT PRIVATE rnt_core unofficial::sqlite3::sqlite3)
target_include_directories(RNT PUBLIC "include")
-target_include_directories(RNT PRIVATE ${PICOSHA2_INCLUDE_DIRS})
target_compile_definitions(RNT PRIVATE NT_EXPORTS)
-target_link_libraries(RNT PRIVATE unofficial::sqlite3::sqlite3)
-set_property(TARGET RNT PROPERTY CXX_STANDARD 20)
+set_target_properties(RNT PROPERTIES UNITY_BUILD ${RNT_UNITY_BUILD})
add_executable(RNT_capi_tests
"test/C_API.cpp"
)
-target_include_directories(RNT_capi_tests PRIVATE "include")
target_link_libraries(RNT_capi_tests PRIVATE RNT Catch2::Catch2WithMain)
-set_property(TARGET RNT_capi_tests PROPERTY CXX_STANDARD 20)
catch_discover_tests(RNT_capi_tests DISCOVERY_MODE PRE_TEST)