From c79b04421f99591bb0e75693c159ce968420a7f1 Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 09:10:19 +0000 Subject: [PATCH 01/21] Set min version --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 06885ae..1819f98 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.12) +cmake_minimum_required(VERSION 3.15) project(cpp_channel) set(PROJECT_VERSION 1.3.0) From d30c45abfeeac9c9886c82387bcb666de421443e Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 10:04:14 +0000 Subject: [PATCH 02/21] Format cmake files --- .cmake-format.json | 5 ++++ .devcontainer/Dockerfile | 3 +++ .devcontainer/devcontainer.json | 3 ++- .github/workflows/cmake.yml | 13 +++++++---- .vscode/settings.json | 3 +++ CMakeLists.txt | 4 ++-- Makefile | 6 +++++ examples/CMakeLists.txt | 7 +++--- examples/cmake-project/CMakeLists.txt | 13 +++++------ tests/CMakeLists.txt | 33 ++++++++++++--------------- 10 files changed, 54 insertions(+), 36 deletions(-) create mode 100644 .cmake-format.json diff --git a/.cmake-format.json b/.cmake-format.json new file mode 100644 index 0000000..d34f8ce --- /dev/null +++ b/.cmake-format.json @@ -0,0 +1,5 @@ +{ + "line_width": 120, + "tab_size": 4, + "max_subgroups_hwrap": 3 +} diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 5350c9b..e8c2b36 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -19,6 +19,7 @@ RUN apt-get update && apt-get install -y \ lldb \ llvm \ nano \ + pipx \ software-properties-common \ sudo \ unzip \ @@ -34,4 +35,6 @@ RUN passwd -d ${USERNAME} \ USER $USERNAME +RUN pipx install cmake-format --include-deps && pipx ensurepath + WORKDIR /workspace diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index e6cfd58..7fed0bf 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -11,7 +11,8 @@ "twxs.cmake", "fredericbonnet.cmake-test-adapter", "llvm-vs-code-extensions.vscode-clangd", - "vadimcn.vscode-lldb" + "vadimcn.vscode-lldb", + "cheshirekow.cmake-format" ] } }, diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 1c7e4f5..70f5df1 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -125,15 +125,20 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} files: ${{github.workspace}}/build/coverage.info - clang-format: - name: Clang Format + format: + name: Format runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Run Clang Format - run: clang-format --dry-run --Werror $(find include tests examples -type f -name *.*pp) + - name: C++ + run: clang-format --dry-run --Werror $(find . -name *.*pp) + + - name: CMake + run: | + cmake-format -i $(find -name CMakeLists.txt) + git diff --exit-code clang-tidy: name: Clang Tidy diff --git a/.vscode/settings.json b/.vscode/settings.json index 38bae1b..0a52245 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -17,6 +17,9 @@ "[jsonc]": { "editor.defaultFormatter": "vscode.json-language-features" }, + "[cmake]": { + "editor.defaultFormatter": "cheshirekow.cmake-format" + }, "clangd.arguments": [ "--compile-commands-dir=${workspaceFolder}/build", "--background-index", diff --git a/CMakeLists.txt b/CMakeLists.txt index 1819f98..54fa631 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,12 +20,12 @@ option(CPP_CHANNEL_COVERAGE "Generate test coverage." OFF) option(CPP_CHANNEL_SANITIZERS "Build with sanitizers." OFF) option(CPP_CHANNEL_SANITIZE_THREADS "Build with thread sanitizer." OFF) -if (CPP_CHANNEL_BUILD_TESTS) +if(CPP_CHANNEL_BUILD_TESTS) enable_testing() add_subdirectory(tests) endif() -if (CPP_CHANNEL_BUILD_EXAMPLES) +if(CPP_CHANNEL_BUILD_EXAMPLES) add_subdirectory(examples) endif() diff --git a/Makefile b/Makefile index aae49df..8fe3a8c 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +DIRS = include tests examples + all: bench: @@ -25,3 +27,7 @@ coverage: doc: doxygen cd docs && python3 -m http.server 8000 + +format: + clang-format -i $(shell find $(DIRS) -name *.*pp) + cmake-format -i $(shell find $(DIRS) -name CMakeLists.txt) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 6303d07..0bc5900 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -5,10 +5,10 @@ function(add_example NAME) set_target_warnings(${NAME} PRIVATE) - if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") target_link_libraries(${NAME} -ltsan) target_compile_options(${NAME} PRIVATE -fsanitize=thread) - endif() + endif() add_dependencies(examples ${NAME}) endfunction() @@ -18,8 +18,7 @@ function(run_example NAME) TARGET ${NAME} POST_BUILD COMMAND ${NAME} - COMMENT "Running example: ${NAME}" - ) + COMMENT "Running example: ${NAME}") endfunction() add_custom_target(examples) diff --git a/examples/cmake-project/CMakeLists.txt b/examples/cmake-project/CMakeLists.txt index 74b65b5..c130e48 100644 --- a/examples/cmake-project/CMakeLists.txt +++ b/examples/cmake-project/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.16) +cmake_minimum_required(VERSION 3.15) project(cmake_project) set(PROJECT_VERSION 0.1.0) @@ -10,11 +10,10 @@ 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) +if(NOT channel_POPULATED) + FetchContent_Declare(channel URL https://github.com/andreiavrammsd/cpp-channel/archive/v1.3.0.zip + DOWNLOAD_EXTRACT_TIMESTAMP TRUE) FetchContent_Populate(channel) include_directories(${channel_SOURCE_DIR}/include) - # OR - # add_subdirectory(${channel_SOURCE_DIR}/) - # target_link_libraries(cmake_project msd_channel) -endif () + # OR add_subdirectory(${channel_SOURCE_DIR}/) target_link_libraries(cmake_project msd_channel) +endif() diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 44281f7..ed802c0 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,23 +1,20 @@ -if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0") +if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0") cmake_policy(SET CMP0135 NEW) endif() # Testing framework -if (MSVC) - option( - gtest_force_shared_crt - "Use shared (DLL) run-time lib even when Google Test is built as static lib." - ON) +if(MSVC) + option(gtest_force_shared_crt "Use shared (DLL) run-time lib even when Google Test is built as static lib." ON) endif() include(FetchContent) -if (NOT googletest_POPULATED) +if(NOT googletest_POPULATED) FetchContent_Declare(googletest URL https://github.com/google/googletest/archive/refs/tags/release-1.12.1.zip) FetchContent_MakeAvailable(googletest) set(INSTALL_GTEST OFF CACHE BOOL "" FORCE) set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) set(BUILD_GTEST_TESTS OFF CACHE BOOL "" FORCE) -endif () +endif() # Test macro function(package_add_test TESTNAME) @@ -28,12 +25,12 @@ function(package_add_test TESTNAME) set_target_warnings(${TESTNAME} PRIVATE) target_link_libraries(${TESTNAME} gtest gtest_main) - if (CPP_CHANNEL_COVERAGE) + if(CPP_CHANNEL_COVERAGE) target_link_libraries(${TESTNAME} -lgcov) target_compile_options(${TESTNAME} PRIVATE --coverage) - endif () + endif() - if (CPP_CHANNEL_SANITIZERS) + if(CPP_CHANNEL_SANITIZERS) target_link_libraries(${TESTNAME} -lubsan) target_compile_options(${TESTNAME} PRIVATE -fsanitize=undefined) @@ -42,12 +39,12 @@ function(package_add_test TESTNAME) target_link_libraries(${TESTNAME} ${COVERAGE_FLAGS}) target_compile_options(${TESTNAME} PRIVATE ${COVERAGE_FLAGS}) endif() - endif () + endif() - if (CPP_CHANNEL_SANITIZE_THREADS) - target_link_libraries(${TESTNAME} -fsanitize=thread) + if(CPP_CHANNEL_SANITIZE_THREADS) + target_link_libraries(${TESTNAME} -fsanitize=thread) target_compile_options(${TESTNAME} PRIVATE -fsanitize=thread) - endif () + endif() add_test(NAME ${TESTNAME} COMMAND ${TESTNAME}) set_tests_properties(${TESTNAME} PROPERTIES LABELS "channel_tests") @@ -62,18 +59,18 @@ 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") +if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") # Disable warnings about C++17 extensions target_compile_options(channel_test PRIVATE -Wno-c++17-extensions) endif() # Benchmark -if (NOT benchmark_POPULATED) +if(NOT benchmark_POPULATED) FetchContent_Declare(benchmark URL https://github.com/google/benchmark/archive/refs/tags/v1.9.4.zip) FetchContent_MakeAvailable(benchmark) set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "" FORCE) set(BENCHMARK_ENABLE_GTEST_TESTS OFF CACHE BOOL "" FORCE) -endif () +endif() add_executable(channel_benchmark channel_benchmark.cpp) target_link_libraries(channel_benchmark benchmark) From a670353c694f860e05e32412cd913ed0687bc0e2 Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 10:10:31 +0000 Subject: [PATCH 03/21] Add words --- .vscode/settings.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.vscode/settings.json b/.vscode/settings.json index 0a52245..fc51347 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -24,5 +24,14 @@ "--compile-commands-dir=${workspaceFolder}/build", "--background-index", "--clang-tidy" + ], + "cSpell.words": [ + "clangd", + "ensurepath", + "graphviz", + "HISTFILE", + "lldb", + "noninteractive", + "pipx" ] } From 3ead163cb0cbc5f438973e249072b3094fb1a158 Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 10:27:43 +0000 Subject: [PATCH 04/21] Add clean --- Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index 8fe3a8c..477491f 100644 --- a/Makefile +++ b/Makefile @@ -31,3 +31,6 @@ doc: format: clang-format -i $(shell find $(DIRS) -name *.*pp) cmake-format -i $(shell find $(DIRS) -name CMakeLists.txt) + +clean: + rm -rf build docs From bb46752f7674961203154ce06df93c75d8956a23 Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 10:27:58 +0000 Subject: [PATCH 05/21] Clean Dockerfile --- .devcontainer/Dockerfile | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index e8c2b36..697adc0 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,15 +1,17 @@ FROM ubuntu:24.04 ENV DEBIAN_FRONTEND=noninteractive +ARG USER=ubuntu -RUN apt-get update && apt-get install -y \ +# Install packages and clean up after +RUN apt-get update && apt-get install -y --no-install-recommends \ bash-completion \ build-essential \ cmake \ clang \ - clangd \ clang-format \ clang-tidy \ + clangd \ curl \ doxygen \ gdb \ @@ -19,22 +21,25 @@ RUN apt-get update && apt-get install -y \ lldb \ llvm \ nano \ + openssh-client \ pipx \ software-properties-common \ sudo \ unzip \ wget \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* + && apt-get clean && rm -rf /var/lib/apt/lists/* -ARG USERNAME=ubuntu -RUN passwd -d ${USERNAME} \ - && mkdir -p /home/${USERNAME}/.cache && chown -R ${USERNAME}:${USERNAME} /home/${USERNAME}/.cache \ - && SNIPPET="export PROMPT_COMMAND='history -a' && export HISTFILE=/home/${USERNAME}/.cache/.bash_history" \ - && echo "$SNIPPET" >> "/home/${USERNAME}/.bashrc" +# Configure user environment and permissions +RUN passwd -d ${USER} \ + && mkdir -p /home/${USER}/.cache \ + && chown -R ${USER}:${USER} /home/${USER}/.cache \ + && echo "export PROMPT_COMMAND='history -a'" >> /home/${USER}/.bashrc \ + && echo "export HISTFILE=/home/${USER}/.cache/.bash_history" >> /home/${USER}/.bashrc -USER $USERNAME +USER ${USER} -RUN pipx install cmake-format --include-deps && pipx ensurepath +# Install cmake-format +RUN pipx install cmake-format --include-deps \ + && pipx ensurepath WORKDIR /workspace From 0e0c5d1dcdade1f43e620f6cc1e6ef04228b225d Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 11:05:48 +0000 Subject: [PATCH 06/21] Allow ASLR --- .devcontainer/devcontainer.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 7fed0bf..283df16 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -22,5 +22,10 @@ "source=cache,target=/home/ubuntu/.cache,type=volume" ], "workspaceFolder": "/workspace", + "runArgs": [ + "--cap-add=SYS_PTRACE", + "--security-opt", + "seccomp=unconfined" + ], "remoteUser": "ubuntu" } From 5dc192ffc2e906631104e054396f618f4d7cfeed Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 11:06:01 +0000 Subject: [PATCH 07/21] Remove unused --- .devcontainer/Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 697adc0..10bd725 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -14,7 +14,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ clangd \ curl \ doxygen \ - gdb \ git \ graphviz \ lcov \ @@ -23,7 +22,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ nano \ openssh-client \ pipx \ - software-properties-common \ sudo \ unzip \ wget \ From 663aa351fa399442eda509df355028fc9a818585 Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 11:08:24 +0000 Subject: [PATCH 08/21] Install cmake-format --- .github/workflows/cmake.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 70f5df1..65b0a8b 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -137,6 +137,7 @@ jobs: - name: CMake run: | + pip install cmake-format cmake-format -i $(find -name CMakeLists.txt) git diff --exit-code From 2d90aa5a1723b7e10779ade53b84ac2eab5141e6 Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 11:54:28 +0000 Subject: [PATCH 09/21] Add gdb --- .devcontainer/Dockerfile | 1 + .devcontainer/devcontainer.json | 8 ++------ .vscode/launch.json | 24 ++++++++++++++++++++++-- .vscode/settings.json | 1 + 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 10bd725..56deee7 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -14,6 +14,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ clangd \ curl \ doxygen \ + gdb \ git \ graphviz \ lcov \ diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 283df16..feb1264 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -12,7 +12,8 @@ "fredericbonnet.cmake-test-adapter", "llvm-vs-code-extensions.vscode-clangd", "vadimcn.vscode-lldb", - "cheshirekow.cmake-format" + "cheshirekow.cmake-format", + "ms-vscode.cpptools" ] } }, @@ -22,10 +23,5 @@ "source=cache,target=/home/ubuntu/.cache,type=volume" ], "workspaceFolder": "/workspace", - "runArgs": [ - "--cap-add=SYS_PTRACE", - "--security-opt", - "seccomp=unconfined" - ], "remoteUser": "ubuntu" } diff --git a/.vscode/launch.json b/.vscode/launch.json index b10c7f7..3285047 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -2,7 +2,24 @@ "version": "0.2.0", "configurations": [ { - "name": "Launch (LLDB)", + "name": "Launch GDB", + "type": "cppdbg", + "request": "launch", + "program": "${command:cmake.launchTargetPath}", + "args": [], + "stopAtEntry": false, + "cwd": "${workspaceFolder}", + "MIMode": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + }, + { + "name": "Launch LLDB", "type": "lldb", "request": "launch", "program": "${command:cmake.launchTargetPath}", @@ -10,7 +27,10 @@ "--gtest_color=yes" ], "cwd": "${workspaceFolder}", - "terminal": "integrated" + "terminal": "integrated", + "initCommands": [ + "settings set target.disable-aslr false" + ] } ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index fc51347..5c07d22 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -25,6 +25,7 @@ "--background-index", "--clang-tidy" ], + "C_Cpp.intelliSenseEngine": "disabled", "cSpell.words": [ "clangd", "ensurepath", From 6ef6b8463179320985c75b1ce68c0e920240b3dc Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 12:02:52 +0000 Subject: [PATCH 10/21] Add cmake kits --- .vscode/cmake-kits.json | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .vscode/cmake-kits.json diff --git a/.vscode/cmake-kits.json b/.vscode/cmake-kits.json new file mode 100644 index 0000000..05cec4e --- /dev/null +++ b/.vscode/cmake-kits.json @@ -0,0 +1,18 @@ +[ + { + "name": "Clang 18.1.3 x86_64-pc-linux-gnu", + "compilers": { + "C": "/usr/bin/clang", + "CXX": "/usr/bin/clang++" + }, + "isTrusted": true + }, + { + "name": "GCC 13.3.0 x86_64-linux-gnu", + "compilers": { + "C": "/usr/bin/gcc", + "CXX": "/usr/bin/g++" + }, + "isTrusted": true + } +] From 8cfb59b02906c29bda478c423ca6b4dfdce468c2 Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 12:46:45 +0000 Subject: [PATCH 11/21] Kits --- .vscode/cmake-kits.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.vscode/cmake-kits.json b/.vscode/cmake-kits.json index 05cec4e..3de6a7e 100644 --- a/.vscode/cmake-kits.json +++ b/.vscode/cmake-kits.json @@ -1,17 +1,17 @@ [ - { - "name": "Clang 18.1.3 x86_64-pc-linux-gnu", + { + "name": "GCC", "compilers": { - "C": "/usr/bin/clang", - "CXX": "/usr/bin/clang++" + "C": "/usr/bin/gcc", + "CXX": "/usr/bin/g++" }, "isTrusted": true }, { - "name": "GCC 13.3.0 x86_64-linux-gnu", + "name": "Clang", "compilers": { - "C": "/usr/bin/gcc", - "CXX": "/usr/bin/g++" + "C": "/usr/bin/clang", + "CXX": "/usr/bin/clang++" }, "isTrusted": true } From 5c69bcc5c57704bcacdae423d039309be975dd62 Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 12:47:06 +0000 Subject: [PATCH 12/21] ASLR --- .vscode/launch.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 3285047..19707e7 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -27,10 +27,7 @@ "--gtest_color=yes" ], "cwd": "${workspaceFolder}", - "terminal": "integrated", - "initCommands": [ - "settings set target.disable-aslr false" - ] + "terminal": "integrated" } ] } From 00dea7e2c81864e960bb8fbdb4d855876c92b6d7 Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 12:49:19 +0000 Subject: [PATCH 13/21] CMake --- .vscode/settings.json | 15 ++++++++++++++- examples/CMakeLists.txt | 2 +- tests/CMakeLists.txt | 18 +++++++++--------- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 5c07d22..f42cc0f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -27,12 +27,25 @@ ], "C_Cpp.intelliSenseEngine": "disabled", "cSpell.words": [ + "ARGN", "clangd", + "endfunction", "ensurepath", + "fcoverage", + "fprofile", + "fsanitize", + "googletest", "graphviz", + "gtest", "HISTFILE", + "lgcov", "lldb", + "ltsan", + "lubsan", + "MSVC", "noninteractive", - "pipx" + "pipx", + "STREQUAL", + "TESTNAME" ] } diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 0bc5900..4350e02 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -6,8 +6,8 @@ function(add_example NAME) set_target_warnings(${NAME} PRIVATE) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - target_link_libraries(${NAME} -ltsan) target_compile_options(${NAME} PRIVATE -fsanitize=thread) + target_link_libraries(${NAME} -ltsan) endif() add_dependencies(examples ${NAME}) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index ed802c0..aa72fd1 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -26,24 +26,24 @@ function(package_add_test TESTNAME) target_link_libraries(${TESTNAME} gtest gtest_main) if(CPP_CHANNEL_COVERAGE) - target_link_libraries(${TESTNAME} -lgcov) target_compile_options(${TESTNAME} PRIVATE --coverage) - endif() - - if(CPP_CHANNEL_SANITIZERS) - target_link_libraries(${TESTNAME} -lubsan) - target_compile_options(${TESTNAME} PRIVATE -fsanitize=undefined) + target_link_libraries(${TESTNAME} -lgcov) if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") set(COVERAGE_FLAGS -fprofile-instr-generate -fcoverage-mapping) - target_link_libraries(${TESTNAME} ${COVERAGE_FLAGS}) target_compile_options(${TESTNAME} PRIVATE ${COVERAGE_FLAGS}) + target_link_libraries(${TESTNAME} ${COVERAGE_FLAGS}) endif() endif() + if(CPP_CHANNEL_SANITIZERS) + target_compile_options(${TESTNAME} PRIVATE -fsanitize=undefined) + target_link_libraries(${TESTNAME} -lubsan) + endif() + if(CPP_CHANNEL_SANITIZE_THREADS) - target_link_libraries(${TESTNAME} -fsanitize=thread) target_compile_options(${TESTNAME} PRIVATE -fsanitize=thread) + target_link_libraries(${TESTNAME} -fsanitize=thread) endif() add_test(NAME ${TESTNAME} COMMAND ${TESTNAME}) @@ -73,6 +73,6 @@ if(NOT benchmark_POPULATED) endif() add_executable(channel_benchmark channel_benchmark.cpp) -target_link_libraries(channel_benchmark benchmark) set_target_warnings(channel_benchmark PRIVATE) target_compile_options(channel_benchmark PRIVATE -std=c++${CMAKE_CXX_STANDARD}) +target_link_libraries(channel_benchmark benchmark) From 15eabe10b4bce8f78828a2634d72c6b04a5cc312 Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 13:42:04 +0000 Subject: [PATCH 14/21] Add word --- .vscode/settings.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.vscode/settings.json b/.vscode/settings.json index f42cc0f..24237b2 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -38,6 +38,7 @@ "graphviz", "gtest", "HISTFILE", + "hwrap", "lgcov", "lldb", "ltsan", From 5f83d4b2bad7fbf5a8f707da16fb850bb2490b6b Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 13:46:36 +0000 Subject: [PATCH 15/21] Extract dir vars --- .vscode/settings.json | 6 ++++++ Makefile | 18 +++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 24237b2..0698d3e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -29,11 +29,16 @@ "cSpell.words": [ "ARGN", "clangd", + "cpupower", + "ctest", + "DCMAKE", + "DCPP", "endfunction", "ensurepath", "fcoverage", "fprofile", "fsanitize", + "genhtml", "googletest", "graphviz", "gtest", @@ -46,6 +51,7 @@ "MSVC", "noninteractive", "pipx", + "powersave", "STREQUAL", "TESTNAME" ] diff --git a/Makefile b/Makefile index 477491f..a65ce0d 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,15 @@ -DIRS = include tests examples +PROJECT_DIRS = include tests examples +BUILD_DIR = build +BENCH_DIR = build/bench +COV_DIR = build/coverage +DOCS_DIR = docs all: bench: - sudo cpupower frequency-set --governor performance - mkdir -p build/bench && cd build/bench \ + mkdir -p $(BENCH_DIR) && cd $(BENCH_DIR) \ && cmake ../.. -DCMAKE_BUILD_TYPE=Release -DCPP_CHANNEL_BUILD_TESTS=ON \ && cmake --build . --config Release --target channel_benchmark -j \ && ./tests/channel_benchmark @@ -13,7 +17,7 @@ bench: - sudo cpupower frequency-set --governor powersave coverage: - mkdir -p build/coverage && cd build/coverage \ + rm -rf $(COV_DIR) && mkdir -p $(COV_DIR) && cd $(COV_DIR) \ && cmake ../.. -DCMAKE_BUILD_TYPE=Debug -DCPP_CHANNEL_BUILD_TESTS=ON -DCPP_CHANNEL_COVERAGE=ON \ && cmake --build . --config Debug --target channel_tests -j \ && ctest -C Debug --verbose -L channel_tests --output-on-failure -j \ @@ -26,11 +30,11 @@ coverage: doc: doxygen - cd docs && python3 -m http.server 8000 + cd $(DOCS_DIR) && python3 -m http.server 8000 format: - clang-format -i $(shell find $(DIRS) -name *.*pp) - cmake-format -i $(shell find $(DIRS) -name CMakeLists.txt) + clang-format -i $(shell find $(PROJECT_DIRS) -name *.*pp) + cmake-format -i $(shell find $(PROJECT_DIRS) -name CMakeLists.txt) clean: - rm -rf build docs + rm -rf $(BUILD_DIR) $(DOCS_DIR) From 4e160eadea94175dea1b33fd3aa30b87aa3f36ec Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 13:48:39 +0000 Subject: [PATCH 16/21] Clean --- examples/move.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/examples/move.cpp b/examples/move.cpp index 4aa2f99..d4d5738 100644 --- a/examples/move.cpp +++ b/examples/move.cpp @@ -3,31 +3,31 @@ #include class Data final { - int i_{}; + int value_{}; public: Data() = default; - explicit Data(int i) : i_{i} {} + explicit Data(int value) : value_{value} {} - int getI() const { return i_; } + int get_value() const { return value_; } - Data(const Data& other) noexcept : i_{other.i_} { std::cout << "copy " << i_ << '\n'; } + Data(const Data& other) noexcept : value_{other.value_} { std::cout << "copy " << value_ << '\n'; } Data& operator=(const Data& other) { if (this != &other) { - i_ = other.i_; + value_ = other.value_; } - std::cout << "copy " << i_ << '\n'; + std::cout << "copy " << value_ << '\n'; return *this; } - Data(Data&& other) noexcept : i_{other.i_} { std::cout << "move " << i_ << '\n'; } + Data(Data&& other) noexcept : value_{other.value_} { std::cout << "move " << value_ << '\n'; } Data& operator=(Data&& other) noexcept { if (this != &other) { - i_ = other.i_; - std::cout << "move " << i_ << '\n'; + value_ = other.value_; + std::cout << "move " << value_ << '\n'; } return *this; @@ -49,7 +49,7 @@ int main() chan << std::move(in3); for (const auto& out : chan) { - std::cout << out.getI() << '\n'; + std::cout << out.get_value() << '\n'; if (chan.empty()) { break; From e6c5bbedb1b32f700a0c30ac0e5e5fa219f29942 Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 13:50:05 +0000 Subject: [PATCH 17/21] Remove -std --- examples/CMakeLists.txt | 2 -- tests/CMakeLists.txt | 2 -- tests/channel_test.cpp | 3 +++ 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 4350e02..48a2897 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,8 +1,6 @@ function(add_example NAME) add_executable(${NAME} ${ARGN}) - target_compile_options(${NAME} PRIVATE -std=c++${CMAKE_CXX_STANDARD}) - set_target_warnings(${NAME} PRIVATE) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index aa72fd1..f72190e 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -20,8 +20,6 @@ endif() function(package_add_test TESTNAME) add_executable(${TESTNAME} ${ARGN}) - target_compile_options(${TESTNAME} PRIVATE -std=c++${CMAKE_CXX_STANDARD}) - set_target_warnings(${TESTNAME} PRIVATE) target_link_libraries(${TESTNAME} gtest gtest_main) diff --git a/tests/channel_test.cpp b/tests/channel_test.cpp index 964a29c..bc0fe86 100644 --- a/tests/channel_test.cpp +++ b/tests/channel_test.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -16,6 +17,8 @@ TEST(ChannelTest, Traits) { + auto x = std::make_unique(1); + (void)x; using type = int; using channel = msd::channel; EXPECT_TRUE((std::is_same::value)); From 5d958f3d46c1274ecadcf1e26fe5c35321edd2c2 Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 14:06:00 +0000 Subject: [PATCH 18/21] MSVC std --- examples/CMakeLists.txt | 4 ++++ tests/CMakeLists.txt | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 48a2897..97fd1e3 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,6 +1,10 @@ function(add_example NAME) add_executable(${NAME} ${ARGN}) + if(MSVC) + target_compile_options(${NAME} PRIVATE /std:c++${CMAKE_CXX_STANDARD}) + endif() + set_target_warnings(${NAME} PRIVATE) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index f72190e..c302b18 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -20,6 +20,10 @@ endif() function(package_add_test TESTNAME) add_executable(${TESTNAME} ${ARGN}) + if(MSVC) + target_compile_options(${TESTNAME} PRIVATE /std:c++${CMAKE_CXX_STANDARD}) + endif() + set_target_warnings(${TESTNAME} PRIVATE) target_link_libraries(${TESTNAME} gtest gtest_main) @@ -72,5 +76,4 @@ endif() add_executable(channel_benchmark channel_benchmark.cpp) set_target_warnings(channel_benchmark PRIVATE) -target_compile_options(channel_benchmark PRIVATE -std=c++${CMAKE_CXX_STANDARD}) target_link_libraries(channel_benchmark benchmark) From 46ed6fa1ff24bd981b6ed359736b2dedae347a58 Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 14:09:44 +0000 Subject: [PATCH 19/21] MSVC --- examples/CMakeLists.txt | 4 ---- tests/channel_test.cpp | 3 --- 2 files changed, 7 deletions(-) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 97fd1e3..48a2897 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,10 +1,6 @@ function(add_example NAME) add_executable(${NAME} ${ARGN}) - if(MSVC) - target_compile_options(${NAME} PRIVATE /std:c++${CMAKE_CXX_STANDARD}) - endif() - set_target_warnings(${NAME} PRIVATE) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") diff --git a/tests/channel_test.cpp b/tests/channel_test.cpp index bc0fe86..964a29c 100644 --- a/tests/channel_test.cpp +++ b/tests/channel_test.cpp @@ -8,7 +8,6 @@ #include #include #include -#include #include #include #include @@ -17,8 +16,6 @@ TEST(ChannelTest, Traits) { - auto x = std::make_unique(1); - (void)x; using type = int; using channel = msd::channel; EXPECT_TRUE((std::is_same::value)); From ac928648fafe1c24fd273f2071827f215485e89a Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 14:29:11 +0000 Subject: [PATCH 20/21] Split tests/benchmarks --- .vscode/settings.json | 6 ++++-- CMakeLists.txt | 5 +++++ Makefile | 8 ++++---- benchmarks/.clang-tidy | 9 +++++++++ benchmarks/CMakeLists.txt | 16 ++++++++++++++++ {tests => benchmarks}/channel_benchmark.cpp | 20 ++++++++++---------- tests/CMakeLists.txt | 19 ++----------------- 7 files changed, 50 insertions(+), 33 deletions(-) create mode 100644 benchmarks/.clang-tidy create mode 100644 benchmarks/CMakeLists.txt rename {tests => benchmarks}/channel_benchmark.cpp (73%) diff --git a/.vscode/settings.json b/.vscode/settings.json index 0698d3e..d95052a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,11 +1,12 @@ { "cmake.configureArgs": [ - "-DCPP_CHANNEL_BUILD_EXAMPLES=ON", + "-DCMAKE_CXX_STANDARD=11", "-DCPP_CHANNEL_BUILD_TESTS=ON", + "-DCPP_CHANNEL_BUILD_BENCHMARKS=ON", + "-DCPP_CHANNEL_BUILD_EXAMPLES=ON", "-DCPP_CHANNEL_COVERAGE=ON", "-DCPP_CHANNEL_SANITIZERS=ON", "-DCPP_CHANNEL_SANITIZE_THREADS=OFF", - "-DCMAKE_CXX_STANDARD=11", "-DCMAKE_INSTALL_PREFIX=${workspaceFolder}/install" ], "editor.formatOnSave": true, @@ -29,6 +30,7 @@ "cSpell.words": [ "ARGN", "clangd", + "cppcoreguidelines", "cpupower", "ctest", "DCMAKE", diff --git a/CMakeLists.txt b/CMakeLists.txt index 54fa631..91d90a5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,7 @@ add_library(msd_channel INTERFACE) target_include_directories(msd_channel INTERFACE include) option(CPP_CHANNEL_BUILD_TESTS "Build all of cpp_channel's own tests." OFF) +option(CPP_CHANNEL_BUILD_BENCHMARKS "Build all of cpp_channel's own benchmark tests." OFF) option(CPP_CHANNEL_BUILD_EXAMPLES "Build cpp_channel's example programs." OFF) option(CPP_CHANNEL_COVERAGE "Generate test coverage." OFF) option(CPP_CHANNEL_SANITIZERS "Build with sanitizers." OFF) @@ -25,6 +26,10 @@ if(CPP_CHANNEL_BUILD_TESTS) add_subdirectory(tests) endif() +if(CPP_CHANNEL_BUILD_BENCHMARKS) + add_subdirectory(benchmarks) +endif() + if(CPP_CHANNEL_BUILD_EXAMPLES) add_subdirectory(examples) endif() diff --git a/Makefile b/Makefile index a65ce0d..7fcebd6 100644 --- a/Makefile +++ b/Makefile @@ -9,15 +9,15 @@ all: bench: - sudo cpupower frequency-set --governor performance - mkdir -p $(BENCH_DIR) && cd $(BENCH_DIR) \ - && cmake ../.. -DCMAKE_BUILD_TYPE=Release -DCPP_CHANNEL_BUILD_TESTS=ON \ + rm -rf $(BENCH_DIR) && mkdir $(BENCH_DIR) && cd $(BENCH_DIR) \ + && cmake ../.. -DCMAKE_BUILD_TYPE=Release -DCPP_CHANNEL_BUILD_BENCHMARKS=ON \ && cmake --build . --config Release --target channel_benchmark -j \ - && ./tests/channel_benchmark + && ./benchmarks/channel_benchmark - sudo cpupower frequency-set --governor powersave coverage: - rm -rf $(COV_DIR) && mkdir -p $(COV_DIR) && cd $(COV_DIR) \ + rm -rf $(COV_DIR) && mkdir $(COV_DIR) && cd $(COV_DIR) \ && cmake ../.. -DCMAKE_BUILD_TYPE=Debug -DCPP_CHANNEL_BUILD_TESTS=ON -DCPP_CHANNEL_COVERAGE=ON \ && cmake --build . --config Debug --target channel_tests -j \ && ctest -C Debug --verbose -L channel_tests --output-on-failure -j \ diff --git a/benchmarks/.clang-tidy b/benchmarks/.clang-tidy new file mode 100644 index 0000000..2406173 --- /dev/null +++ b/benchmarks/.clang-tidy @@ -0,0 +1,9 @@ +InheritParentConfig: true + +Checks: > + -cppcoreguidelines-avoid-magic-numbers, + -readability-magic-numbers, + -fuchsia-default-arguments-calls + +CheckOptions: + - { key: readability-identifier-length.MinimumVariableNameLength, value: '1' } diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt new file mode 100644 index 0000000..73c807e --- /dev/null +++ b/benchmarks/CMakeLists.txt @@ -0,0 +1,16 @@ +include(FetchContent) +if(NOT benchmark_POPULATED) + set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "" FORCE) + set(BENCHMARK_ENABLE_GTEST_TESTS OFF CACHE BOOL "" FORCE) + FetchContent_Declare(benchmark URL https://github.com/google/benchmark/archive/refs/tags/v1.9.4.zip + DOWNLOAD_EXTRACT_TIMESTAMP TRUE) + FetchContent_MakeAvailable(benchmark) +endif() + +function(package_add_benchmark TESTNAME) + add_executable(${TESTNAME} ${ARGN}) + set_target_warnings(${TESTNAME} PRIVATE) + target_link_libraries(${TESTNAME} benchmark) +endfunction() + +package_add_benchmark(channel_benchmark channel_benchmark.cpp) diff --git a/tests/channel_benchmark.cpp b/benchmarks/channel_benchmark.cpp similarity index 73% rename from tests/channel_benchmark.cpp rename to benchmarks/channel_benchmark.cpp index c57df59..e5c6422 100644 --- a/tests/channel_benchmark.cpp +++ b/benchmarks/channel_benchmark.cpp @@ -20,12 +20,12 @@ ------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------ - bm_channel_with_queue_storage 42602 ns 42598 ns 16407 - bm_channel_with_vector_storage 42724 ns 42723 ns 16288 - bm_channel_with_vector_storage 51332 ns 51328 ns 11776 + channel_with_queue_storage 42602 ns 42598 ns 16407 + channel_with_vector_storage 42724 ns 42723 ns 16288 + channel_with_vector_storage 51332 ns 51328 ns 11776 */ -static void bm_channel_with_queue_storage(benchmark::State& state) +static void channel_with_queue_storage(benchmark::State& state) { msd::channel> channel{10}; @@ -39,14 +39,14 @@ static void bm_channel_with_queue_storage(benchmark::State& state) } } -BENCHMARK(bm_channel_with_queue_storage); +BENCHMARK(channel_with_queue_storage); -static void bm_channel_with_vector_storage(benchmark::State& state) +static void channel_with_vector_storage(benchmark::State& state) { msd::channel> channel{10}; std::string input(1000000, 'x'); - std::string out = ""; + std::string out{}; out.resize(input.size()); for (auto _ : state) { @@ -55,9 +55,9 @@ static void bm_channel_with_vector_storage(benchmark::State& state) } } -BENCHMARK(bm_channel_with_vector_storage); +BENCHMARK(channel_with_vector_storage); -static void bm_channel_with_array_storage(benchmark::State& state) +static void channel_with_array_storage(benchmark::State& state) { msd::channel> channel{}; @@ -71,6 +71,6 @@ static void bm_channel_with_array_storage(benchmark::State& state) } } -BENCHMARK(bm_channel_with_array_storage); +BENCHMARK(channel_with_array_storage); BENCHMARK_MAIN(); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c302b18..8e1b625 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -9,7 +9,8 @@ endif() include(FetchContent) if(NOT googletest_POPULATED) - FetchContent_Declare(googletest URL https://github.com/google/googletest/archive/refs/tags/release-1.12.1.zip) + FetchContent_Declare(googletest URL https://github.com/google/googletest/archive/refs/tags/release-1.12.1.zip + DOWNLOAD_EXTRACT_TIMESTAMP TRUE) FetchContent_MakeAvailable(googletest) set(INSTALL_GTEST OFF CACHE BOOL "" FORCE) set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) @@ -20,10 +21,6 @@ endif() function(package_add_test TESTNAME) add_executable(${TESTNAME} ${ARGN}) - if(MSVC) - target_compile_options(${TESTNAME} PRIVATE /std:c++${CMAKE_CXX_STANDARD}) - endif() - set_target_warnings(${TESTNAME} PRIVATE) target_link_libraries(${TESTNAME} gtest gtest_main) @@ -65,15 +62,3 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") # Disable warnings about C++17 extensions target_compile_options(channel_test PRIVATE -Wno-c++17-extensions) endif() - -# Benchmark -if(NOT benchmark_POPULATED) - FetchContent_Declare(benchmark URL https://github.com/google/benchmark/archive/refs/tags/v1.9.4.zip) - FetchContent_MakeAvailable(benchmark) - set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "" FORCE) - set(BENCHMARK_ENABLE_GTEST_TESTS OFF CACHE BOOL "" FORCE) -endif() - -add_executable(channel_benchmark channel_benchmark.cpp) -set_target_warnings(channel_benchmark PRIVATE) -target_link_libraries(channel_benchmark benchmark) From 89008d98d02c6f860e9b2569533ad6094dae2fc0 Mon Sep 17 00:00:00 2001 From: Andrei Avram <6795248+andreiavrammsd@users.noreply.github.com> Date: Sat, 14 Jun 2025 14:31:52 +0000 Subject: [PATCH 21/21] Set before download --- tests/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 8e1b625..3d449b3 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -9,12 +9,12 @@ endif() include(FetchContent) if(NOT googletest_POPULATED) - FetchContent_Declare(googletest URL https://github.com/google/googletest/archive/refs/tags/release-1.12.1.zip - DOWNLOAD_EXTRACT_TIMESTAMP TRUE) - FetchContent_MakeAvailable(googletest) set(INSTALL_GTEST OFF CACHE BOOL "" FORCE) set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) set(BUILD_GTEST_TESTS OFF CACHE BOOL "" FORCE) + FetchContent_Declare(googletest URL https://github.com/google/googletest/archive/refs/tags/release-1.12.1.zip + DOWNLOAD_EXTRACT_TIMESTAMP TRUE) + FetchContent_MakeAvailable(googletest) endif() # Test macro