restructure into smaller files & add IWYU/clang-tidy

Signed-off-by: Folling <mail@folling.io>
This commit is contained in:
folling 2023-08-29 14:12:08 +02:00 committed by Folling
parent 660736133a
commit 13eee8b168
Signed by: folling
SSH key fingerprint: SHA256:S9qEx5WCFFLK49tE/LKnKuJYM5sw+++Dn6qJbbyxnCY
28 changed files with 845 additions and 556 deletions

View file

@ -1,6 +1,9 @@
cmake_minimum_required(VERSION 3.18)
project(ikarus)
option(LIBIKARUS_ENABLE_TESTS "Enable tests" OFF)
option(LIBIKARUS_ENABLE_LINTS "Enable linting" OFF)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 20)
@ -11,7 +14,7 @@ add_subdirectory(include)
add_subdirectory(src)
add_library(
libikarus OBJECT
libikarus SHARED
${INCLUDE_FILES}
${SOURCE_FILES}
)
@ -27,7 +30,7 @@ target_include_directories(
)
target_link_libraries(
libikarus PUBLIC
libikarus PRIVATE
Catch2::Catch2WithMain
)
@ -37,19 +40,40 @@ target_link_libraries(
sqlitecpp
)
set_target_properties(
libikarus PROPERTIES
LINKER_LANGUAGE CXX
)
if (LIBIKARUS_ENABLE_LINTS)
find_program(IWYU_PATH NAMES include-what-you-use iwyu REQUIRED)
find_program(CLANG_TIDY_PATH NAMES clang-tidy REQUIRED)
add_executable(ikarus_tests ${SOURCE_FILES})
target_link_libraries(ikarus_tests PRIVATE Catch2::Catch2WithMain)
set_property(TARGET libikarus PROPERTY CXX_INCLUDE_WHAT_YOU_USE ${IWYU_PATH})
string(
CONCAT CLANG_TIDY_OPTIONS
"-checks=-*,"
"bugprone-*,"
"concurrency-*,"
"cppcoreguidelines-*,-cppcoreguidelines-pro-type-reinterpret-cast,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-pro-type-union-access,"
"misc-*,"
"modernize-*,-modernize-use-trailing-return-type,"
"performance-*,"
"portability-*,"
"readability-*,-readability-identifier-length,-readability-magic-numbers,-readability-function-cognitive-complexity"
)
target_include_directories(
ikarus_tests PUBLIC
${CMAKE_CURRENT_LIST_DIR}/include
)
set_property(
TARGET libikarus
PROPERTY CXX_CLANG_TIDY ${CLANG_TIDY_PATH};${CLANG_TIDY_OPTIONS}
)
endif ()
include(CTest)
include(vendor/catch2/extras/Catch.cmake)
catch_discover_tests(ikarus_tests)
if (LIBIKARUS_ENABLE_TESTS)
add_executable(libikarus_tests ${SOURCE_FILES})
target_link_libraries(libikarus_tests PRIVATE Catch2::Catch2WithMain)
target_include_directories(
libikarus_tests PUBLIC
${CMAKE_CURRENT_LIST_DIR}/include
)
include(CTest)
include(vendor/catch2/extras/Catch.cmake)
catch_discover_tests(libikarus_tests)
endif ()