Skip to content

CMake review #77

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Jun 14, 2025
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 3 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
cmake_minimum_required(VERSION 3.15)
project(cpp_channel)
set(PROJECT_VERSION 1.3.0)
project(cpp_channel VERSION 1.3.0)

set(CMAKE_CXX_STANDARD 11 CACHE STRING "C++ standard")
set(CMAKE_CXX_STANDARD_REQUIRED YES)
set(CXX_EXTENSIONS NO)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CXX_EXTENSIONS OFF)

list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
include(warnings)

include_directories(include)

add_library(msd_channel INTERFACE)
target_include_directories(msd_channel INTERFACE include)

Expand Down
3 changes: 2 additions & 1 deletion benchmarks/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
include(FetchContent)

if(NOT benchmark_POPULATED)
set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "" FORCE)
set(BENCHMARK_ENABLE_GTEST_TESTS OFF CACHE BOOL "" FORCE)
Expand All @@ -10,7 +11,7 @@ endif()
function(package_add_benchmark TESTNAME)
add_executable(${TESTNAME} ${ARGN})
set_target_warnings(${TESTNAME} PRIVATE)
target_link_libraries(${TESTNAME} benchmark)
target_link_libraries(${TESTNAME} msd_channel benchmark)
endfunction()

package_add_benchmark(channel_benchmark channel_benchmark.cpp)
5 changes: 3 additions & 2 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ function(add_example NAME)
add_executable(${NAME} ${ARGN})

set_target_warnings(${NAME} PRIVATE)
target_link_libraries(${NAME} msd_channel)

if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
target_compile_options(${NAME} PRIVATE -fsanitize=thread)
target_link_libraries(${NAME} -ltsan)
target_link_options(${NAME} PRIVATE -fsanitize=thread)
endif()

add_dependencies(examples ${NAME})
Expand Down
1 change: 1 addition & 0 deletions examples/cmake-project/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic -Werror --cover
add_executable(cmake_project src/main.cpp)

include(FetchContent)

if(NOT channel_POPULATED)
FetchContent_Declare(channel URL https://github.com/andreiavrammsd/cpp-channel/archive/v1.3.0.zip
DOWNLOAD_EXTRACT_TIMESTAMP TRUE)
Expand Down
18 changes: 9 additions & 9 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ if(MSVC)
endif()

include(FetchContent)

if(NOT googletest_POPULATED)
set(INSTALL_GTEST OFF CACHE BOOL "" FORCE)
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
Expand All @@ -22,7 +23,7 @@ function(package_add_test TESTNAME)
add_executable(${TESTNAME} ${ARGN})

set_target_warnings(${TESTNAME} PRIVATE)
target_link_libraries(${TESTNAME} gtest gtest_main)
target_link_libraries(${TESTNAME} msd_channel gtest gtest_main)

if(CPP_CHANNEL_COVERAGE)
target_compile_options(${TESTNAME} PRIVATE --coverage)
Expand All @@ -35,14 +36,18 @@ function(package_add_test TESTNAME)
endif()
endif()

set(CPP_CHANNEL_SANITIZER_FLAGS "")
if(CPP_CHANNEL_SANITIZERS)
target_compile_options(${TESTNAME} PRIVATE -fsanitize=undefined)
target_link_libraries(${TESTNAME} -lubsan)
set(SANITIZERS -fsanitize=address -fno-sanitize-recover=address -fsanitize=undefined
-fno-sanitize-recover=undefined)

target_compile_options(${TESTNAME} PRIVATE ${SANITIZERS})
target_link_options(${TESTNAME} PRIVATE ${SANITIZERS})
endif()

if(CPP_CHANNEL_SANITIZE_THREADS)
target_compile_options(${TESTNAME} PRIVATE -fsanitize=thread)
target_link_libraries(${TESTNAME} -fsanitize=thread)
target_link_options(${TESTNAME} PRIVATE -fsanitize=thread)
endif()

add_test(NAME ${TESTNAME} COMMAND ${TESTNAME})
Expand All @@ -57,8 +62,3 @@ add_custom_target(channel_tests)
package_add_test(channel_test channel_test.cpp)
package_add_test(blocking_iterator_test blocking_iterator_test.cpp)
package_add_test(storage_test storage_test.cpp)

if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
# Disable warnings about C++17 extensions
target_compile_options(channel_test PRIVATE -Wno-c++17-extensions)
endif()
Loading