diff --git a/.gitignore b/.gitignore index 9f63b71..7fbfa51 100755 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /cmake-build-*/ +tests/cmake-build-*/ \ No newline at end of file diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 0000000..21b0a35 --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,35 @@ +cmake_minimum_required(VERSION 3.1) +project(BLT_TESTS) + +option(ENABLE_ADDRSAN "Enable the address sanitizer" OFF) +option(ENABLE_UBSAN "Enable the ub sanitizer" OFF) +option(ENABLE_TSAN "Enable the thread data race sanitizer" OFF) + +set(CMAKE_CXX_STANDARD 20) + +add_subdirectory(../) + +include_directories(include/) +file(GLOB_RECURSE PROJECT_BUILD_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp") + +add_executable(${PROJECT_NAME} ${PROJECT_BUILD_FILES}) + +target_link_libraries(${PROJECT_NAME} ) + +target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Werror -Wpedantic -Wno-comment) +target_link_options(${PROJECT_NAME} PRIVATE -Wall -Werror -Wpedantic -Wno-comment) + +if (${ENABLE_ADDRSAN} MATCHES ON) + target_compile_options(${PROJECT_NAME} PRIVATE -fsanitize=address) + target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=address) +endif () + +if (${ENABLE_UBSAN} MATCHES ON) + target_compile_options(${PROJECT_NAME} PRIVATE -fsanitize=undefined) + target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=undefined) +endif () + +if (${ENABLE_TSAN} MATCHES ON) + target_compile_options(${PROJECT_NAME} PRIVATE -fsanitize=thread) + target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=thread) +endif () \ No newline at end of file