From 30cf5b3d23b4e133809226a6b7b059ad75676b48 Mon Sep 17 00:00:00 2001 From: ClausKlein Date: Wed, 9 Jul 2025 06:02:46 +0200 Subject: [PATCH 1/4] ck --- .pre-commit-config.yaml | 16 +- CMakeLists.txt | 97 ++----- etc/ci-clang-toolchain.cmake | 39 ++- etc/clang-flags.cmake | 42 ++- etc/gcc-flags.cmake | 35 ++- etc/gcc-toolchain.cmake | 43 ++- etc/llvm-16-toolchain.cmake | 39 ++- etc/llvm-master-toolchain.cmake | 46 ++- etc/llvm-toolchain.cmake | 39 ++- examples/CMakeLists.txt | 41 +-- src/beman/execution/CMakeLists.txt | 412 +++++++++++++-------------- tests/beman/execution/CMakeLists.txt | 253 +++++++--------- 12 files changed, 590 insertions(+), 512 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index bffa58ed..04aa8e5d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -14,18 +14,18 @@ repos: # This brings in a portable version of clang-format. # See also: https://github.com/ssciwr/clang-format-wheel - repo: https://github.com/pre-commit/mirrors-clang-format - rev: v19.1.4 + rev: v20.1.7 hooks: - id: clang-format types_or: [c++, c, json] exclude: docs/TODO.json - # TODO: CMake linting and formatting - # - repo: https://github.com/BlankSpruce/gersemi - # rev: 0.17.1 - # hooks: - # - id: gersemi - # name: CMake linting + # CMake linting and formatting + - repo: https://github.com/BlankSpruce/gersemi + rev: 0.19.3 + hooks: + - id: gersemi + name: CMake linting # TODO: Markdown linting # Config file: .markdownlint.yaml @@ -35,7 +35,7 @@ repos: # - id: markdownlint - repo: https://github.com/codespell-project/codespell - rev: v2.3.0 + rev: v2.4.1 hooks: - id: codespell files: ^.*\.(cmake|cpp|hpp|txt|md|json|in|yaml|yml)$ diff --git a/CMakeLists.txt b/CMakeLists.txt index 807c993b..be86786f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,7 @@ cmake_minimum_required(VERSION 3.25...3.31) project(beman_execution VERSION 0.0.1 LANGUAGES CXX) if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) - message(FATAL_ERROR "In-source builds are not allowed!") + message(FATAL_ERROR "In-source builds are not allowed!") endif() set(TARGET_NAME execution) @@ -20,112 +20,61 @@ set(TARGET_PACKAGE_NAME ${PROJECT_NAME}-config) set(TARGETS_EXPORT_NAME ${PROJECT_NAME}-targets) option( - BEMAN_EXECUTION_ENABLE_TESTING - "Enable building tests and test infrastructure. Values: { ON, OFF }." - ${PROJECT_IS_TOP_LEVEL} + BEMAN_EXECUTION_ENABLE_TESTING + "Enable building tests and test infrastructure. Values: { ON, OFF }." + ${PROJECT_IS_TOP_LEVEL} ) option( - BEMAN_EXECUTION_BUILD_EXAMPLES - "Enable building examples. Values: { ON, OFF }." - ${PROJECT_IS_TOP_LEVEL} + BEMAN_EXECUTION_BUILD_EXAMPLES + "Enable building examples. Values: { ON, OFF }." + ${PROJECT_IS_TOP_LEVEL} ) option( - BEMAN_EXECUTION_ENABLE_INSTALL - "Install the project components. Values: { ON, OFF }." - ${PROJECT_IS_TOP_LEVEL} + BEMAN_EXECUTION_ENABLE_INSTALL + "Install the project components. Values: { ON, OFF }." + ${PROJECT_IS_TOP_LEVEL} ) include(GNUInstallDirs) set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) -if(FALSE) -if(PROJECT_IS_TOP_LEVEL AND NOT BEMAN_EXECUTION_ENABLE_INSTALL OR CMAKE_SKIP_INSTALL_RULES) - set(CMAKE_SKIP_INSTALL_RULES ON) - - include(FetchContent) - - # Add project_options from https://github.com/aminya/project_options - # Change the version in the following URL to update the package - # (watch the releases of the repository for future updates) - set(PROJECT_OPTIONS_VERSION "v0.41.0") - FetchContent_Declare( - _project_options URL https://github.com/aminya/project_options/archive/refs/tags/${PROJECT_OPTIONS_VERSION}.zip - ) - FetchContent_MakeAvailable(_project_options) - include(${_project_options_SOURCE_DIR}/Index.cmake) - - # Initialize project_options variable related to this project - # This overwrites `project_options` and sets `project_warnings` - # uncomment to enable the options. Some of them accept one or more inputs: - project_options( - PREFIX - ${TARGET_NAME} - ENABLE_CACHE - # NO! # ENABLE_CLANG_TIDY - # NO! ENABLE_VS_ANALYSIS - # ENABLE_INTERPROCEDURAL_OPTIMIZATION - # ENABLE_NATIVE_OPTIMIZATION - # ENABLE_DOXYGEN - # ENABLE_COVERAGE - ENABLE_SANITIZER_ADDRESS - ENABLE_SANITIZER_UNDEFINED - # TODO: ENABLE_SANITIZER_THREAD - # FIXME: on Linux only with clang++? ENABLE_SANITIZER_MEMORY - ENABLE_SANITIZER_POINTER_COMPARE - ENABLE_SANITIZER_POINTER_SUBTRACT - ENABLE_CONTROL_FLOW_PROTECTION - ENABLE_STACK_PROTECTION - ENABLE_OVERFLOW_PROTECTION - # ENABLE_ELF_PROTECTION - # ENABLE_RUNTIME_SYMBOLS_RESOLUTION - # ENABLE_COMPILE_COMMANDS_SYMLINK - # ENABLE_PCH - # PCH_HEADERS - # WARNINGS_AS_ERRORS - # ENABLE_INCLUDE_WHAT_YOU_USE - # ENABLE_GCC_ANALYZER - # ENABLE_BUILD_WITH_TIME_TRACE - # TODO: buggy! ENABLE_UNITY - # LINKER "lld" - ) -endif() -endif() - add_subdirectory(src/beman/execution) if(BEMAN_EXECUTION_ENABLE_TESTING) - enable_testing() + enable_testing() - add_subdirectory(tests/beman/execution) + add_subdirectory(tests/beman/execution) endif() if(BEMAN_EXECUTION_BUILD_EXAMPLES) - add_subdirectory(examples) + add_subdirectory(examples) endif() if(NOT BEMAN_EXECUTION_ENABLE_INSTALL OR CMAKE_SKIP_INSTALL_RULES) - return() + return() endif() include(CMakePackageConfigHelpers) write_basic_package_version_file( - ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PACKAGE_NAME}-version.cmake - VERSION ${CMAKE_PROJECT_VERSION} - COMPATIBILITY AnyNewerVersion + ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PACKAGE_NAME}-version.cmake + VERSION ${CMAKE_PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion ) configure_package_config_file( - "cmake/Config.cmake.in" ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PACKAGE_NAME}.cmake - INSTALL_DESTINATION ${INSTALL_CONFIGDIR} + "cmake/Config.cmake.in" + ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PACKAGE_NAME}.cmake + INSTALL_DESTINATION ${INSTALL_CONFIGDIR} ) install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PACKAGE_NAME}.cmake + FILES + ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PACKAGE_NAME}.cmake ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PACKAGE_NAME}-version.cmake - DESTINATION ${INSTALL_CONFIGDIR} + DESTINATION ${INSTALL_CONFIGDIR} ) set(CPACK_GENERATOR TGZ) diff --git a/etc/ci-clang-toolchain.cmake b/etc/ci-clang-toolchain.cmake index e3d42ee3..8158594c 100755 --- a/etc/ci-clang-toolchain.cmake +++ b/etc/ci-clang-toolchain.cmake @@ -7,13 +7,38 @@ set(CMAKE_CXX_FLAGS "-std=c++20 \ -Wall -Wextra \ -stdlib=libc++ -fexperimental-library" - CACHE STRING "CXX_FLAGS" FORCE + CACHE STRING + "CXX_FLAGS" + FORCE ) -set(CMAKE_CXX_FLAGS_DEBUG "-O0 -fno-inline -g3" CACHE STRING "C++ DEBUG Flags" FORCE) -set(CMAKE_CXX_FLAGS_RELEASE "-Ofast -g0 -DNDEBUG" CACHE STRING "C++ Release Flags" FORCE) -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG" CACHE STRING "C++ RelWithDebInfo Flags" FORCE) -set(CMAKE_CXX_FLAGS_TSAN "-O3 -g -DNDEBUG -fsanitize=thread" CACHE STRING "C++ TSAN Flags" FORCE) -set(CMAKE_CXX_FLAGS_ASAN "-O3 -g -DNDEBUG -fsanitize=address -fsanitize=undefined -fsanitize=leak" - CACHE STRING "C++ ASAN Flags" FORCE +set(CMAKE_CXX_FLAGS_DEBUG + "-O0 -fno-inline -g3" + CACHE STRING + "C++ DEBUG Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_RELEASE + "-Ofast -g0 -DNDEBUG" + CACHE STRING + "C++ Release Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO + "-O3 -g -DNDEBUG" + CACHE STRING + "C++ RelWithDebInfo Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_TSAN + "-O3 -g -DNDEBUG -fsanitize=thread" + CACHE STRING + "C++ TSAN Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_ASAN + "-O3 -g -DNDEBUG -fsanitize=address -fsanitize=undefined -fsanitize=leak" + CACHE STRING + "C++ ASAN Flags" + FORCE ) diff --git a/etc/clang-flags.cmake b/etc/clang-flags.cmake index 80f9f458..abef953b 100644 --- a/etc/clang-flags.cmake +++ b/etc/clang-flags.cmake @@ -2,10 +2,40 @@ include_guard(GLOBAL) set(CMAKE_CXX_STANDARD 23) -set(CMAKE_CXX_FLAGS "-stdlib=libc++ -Wall -Wextra" CACHE STRING "CXX_FLAGS" FORCE) +set(CMAKE_CXX_FLAGS + "-stdlib=libc++ -Wall -Wextra" + CACHE STRING + "CXX_FLAGS" + FORCE +) -set(CMAKE_CXX_FLAGS_DEBUG "-O0 -fno-inline -g3" CACHE STRING "C++ DEBUG Flags" FORCE) -set(CMAKE_CXX_FLAGS_RELEASE "-Ofast -g0 -DNDEBUG" CACHE STRING "C++ Release Flags" FORCE) -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG" CACHE STRING "C++ RelWithDebInfo Flags" FORCE) -set(CMAKE_CXX_FLAGS_TSAN "-O3 -g -DNDEBUG -fsanitize=thread" CACHE STRING "C++ TSAN Flags" FORCE) -set(CMAKE_CXX_FLAGS_ASAN "-O3 -g -DNDEBUG -fsanitize=address,undefined,leak" CACHE STRING "C++ ASAN Flags" FORCE) +set(CMAKE_CXX_FLAGS_DEBUG + "-O0 -fno-inline -g3" + CACHE STRING + "C++ DEBUG Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_RELEASE + "-Ofast -g0 -DNDEBUG" + CACHE STRING + "C++ Release Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO + "-O3 -g -DNDEBUG" + CACHE STRING + "C++ RelWithDebInfo Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_TSAN + "-O3 -g -DNDEBUG -fsanitize=thread" + CACHE STRING + "C++ TSAN Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_ASAN + "-O3 -g -DNDEBUG -fsanitize=address,undefined,leak" + CACHE STRING + "C++ ASAN Flags" + FORCE +) diff --git a/etc/gcc-flags.cmake b/etc/gcc-flags.cmake index 80744580..dbf06019 100644 --- a/etc/gcc-flags.cmake +++ b/etc/gcc-flags.cmake @@ -4,8 +4,33 @@ set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_FLAGS "-std=c++23 -Wall -Wextra" CACHE STRING "CXX_FLAGS" FORCE) -set(CMAKE_CXX_FLAGS_DEBUG "-O0 -fno-inline -g3" CACHE STRING "C++ DEBUG Flags" FORCE) -set(CMAKE_CXX_FLAGS_RELEASE "-Ofast -g0 -DNDEBUG" CACHE STRING "C++ Release Flags" FORCE) -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG" CACHE STRING "C++ RelWithDebInfo Flags" FORCE) -set(CMAKE_CXX_FLAGS_TSAN "-O3 -g -DNDEBUG -fsanitize=thread" CACHE STRING "C++ TSAN Flags" FORCE) -set(CMAKE_CXX_FLAGS_ASAN "-O3 -g -DNDEBUG -fsanitize=undefined" CACHE STRING "C++ ASAN Flags" FORCE) +set(CMAKE_CXX_FLAGS_DEBUG + "-O0 -fno-inline -g3" + CACHE STRING + "C++ DEBUG Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_RELEASE + "-Ofast -g0 -DNDEBUG" + CACHE STRING + "C++ Release Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO + "-O3 -g -DNDEBUG" + CACHE STRING + "C++ RelWithDebInfo Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_TSAN + "-O3 -g -DNDEBUG -fsanitize=thread" + CACHE STRING + "C++ TSAN Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_ASAN + "-O3 -g -DNDEBUG -fsanitize=undefined" + CACHE STRING + "C++ ASAN Flags" + FORCE +) diff --git a/etc/gcc-toolchain.cmake b/etc/gcc-toolchain.cmake index 8177e2bb..960bbf28 100755 --- a/etc/gcc-toolchain.cmake +++ b/etc/gcc-toolchain.cmake @@ -3,12 +3,41 @@ include_guard(GLOBAL) set(CMAKE_C_COMPILER gcc) set(CMAKE_CXX_COMPILER g++) -set(CMAKE_CXX_FLAGS "-std=c++20 \ - -Wall -Wextra" CACHE STRING "CXX_FLAGS" FORCE +set(CMAKE_CXX_FLAGS + "-std=c++20 \ + -Wall -Wextra" + CACHE STRING + "CXX_FLAGS" + FORCE ) -set(CMAKE_CXX_FLAGS_DEBUG "-O0 -fno-inline -g3" CACHE STRING "C++ DEBUG Flags" FORCE) -set(CMAKE_CXX_FLAGS_RELEASE "-Ofast -g0 -DNDEBUG" CACHE STRING "C++ Release Flags" FORCE) -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG" CACHE STRING "C++ RelWithDebInfo Flags" FORCE) -set(CMAKE_CXX_FLAGS_TSAN "-O3 -g -DNDEBUG -fsanitize=thread" CACHE STRING "C++ TSAN Flags" FORCE) -set(CMAKE_CXX_FLAGS_ASAN "-O3 -g -DNDEBUG -fsanitize=address,undefined,leak" CACHE STRING "C++ ASAN Flags" FORCE) +set(CMAKE_CXX_FLAGS_DEBUG + "-O0 -fno-inline -g3" + CACHE STRING + "C++ DEBUG Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_RELEASE + "-Ofast -g0 -DNDEBUG" + CACHE STRING + "C++ Release Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO + "-O3 -g -DNDEBUG" + CACHE STRING + "C++ RelWithDebInfo Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_TSAN + "-O3 -g -DNDEBUG -fsanitize=thread" + CACHE STRING + "C++ TSAN Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_ASAN + "-O3 -g -DNDEBUG -fsanitize=address,undefined,leak" + CACHE STRING + "C++ ASAN Flags" + FORCE +) diff --git a/etc/llvm-16-toolchain.cmake b/etc/llvm-16-toolchain.cmake index 200b8436..317eb15f 100755 --- a/etc/llvm-16-toolchain.cmake +++ b/etc/llvm-16-toolchain.cmake @@ -7,13 +7,38 @@ set(CMAKE_CXX_FLAGS "-std=c++20 \ -Wall -Wextra \ -stdlib=libc++ -fexperimental-library" - CACHE STRING "CXX_FLAGS" FORCE + CACHE STRING + "CXX_FLAGS" + FORCE ) -set(CMAKE_CXX_FLAGS_DEBUG "-O0 -fno-inline -g3" CACHE STRING "C++ DEBUG Flags" FORCE) -set(CMAKE_CXX_FLAGS_RELEASE "-Ofast -g0 -DNDEBUG" CACHE STRING "C++ Release Flags" FORCE) -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG" CACHE STRING "C++ RelWithDebInfo Flags" FORCE) -set(CMAKE_CXX_FLAGS_TSAN "-O3 -g -DNDEBUG -fsanitize=thread" CACHE STRING "C++ TSAN Flags" FORCE) -set(CMAKE_CXX_FLAGS_ASAN "-O3 -g -DNDEBUG -fsanitize=address -fsanitize=undefined -fsanitize=leak" - CACHE STRING "C++ ASAN Flags" FORCE +set(CMAKE_CXX_FLAGS_DEBUG + "-O0 -fno-inline -g3" + CACHE STRING + "C++ DEBUG Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_RELEASE + "-Ofast -g0 -DNDEBUG" + CACHE STRING + "C++ Release Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO + "-O3 -g -DNDEBUG" + CACHE STRING + "C++ RelWithDebInfo Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_TSAN + "-O3 -g -DNDEBUG -fsanitize=thread" + CACHE STRING + "C++ TSAN Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_ASAN + "-O3 -g -DNDEBUG -fsanitize=address -fsanitize=undefined -fsanitize=leak" + CACHE STRING + "C++ ASAN Flags" + FORCE ) diff --git a/etc/llvm-master-toolchain.cmake b/etc/llvm-master-toolchain.cmake index c38100b3..2dc4c86c 100644 --- a/etc/llvm-master-toolchain.cmake +++ b/etc/llvm-master-toolchain.cmake @@ -7,15 +7,45 @@ set(CMAKE_CXX_FLAGS "-std=c++2a \ -Wall -Wextra \ -stdlib=libc++" - CACHE STRING "CXX_FLAGS" FORCE + CACHE STRING + "CXX_FLAGS" + FORCE ) -set(CMAKE_EXE_LINKER_FLAGS "-Wl,-rpath,${LLVM_ROOT}/lib" CACHE STRING "CMAKE_EXE_LINKER_FLAGS" FORCE) +set(CMAKE_EXE_LINKER_FLAGS + "-Wl,-rpath,${LLVM_ROOT}/lib" + CACHE STRING + "CMAKE_EXE_LINKER_FLAGS" + FORCE +) -set(CMAKE_CXX_FLAGS_DEBUG "-O0 -fno-inline -g3" CACHE STRING "C++ DEBUG Flags" FORCE) -set(CMAKE_CXX_FLAGS_RELEASE "-Ofast -g0 -DNDEBUG" CACHE STRING "C++ Release Flags" FORCE) -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG" CACHE STRING "C++ Release Flags" FORCE) -set(CMAKE_CXX_FLAGS_TSAN "-O3 -g -DNDEBUG -fsanitize=thread" CACHE STRING "C++ TSAN Flags" FORCE) -set(CMAKE_CXX_FLAGS_ASAN "-O3 -g -DNDEBUG -fsanitize=address -fsanitize=undefined -fsanitize=leak" - CACHE STRING "C++ ASAN Flags" FORCE +set(CMAKE_CXX_FLAGS_DEBUG + "-O0 -fno-inline -g3" + CACHE STRING + "C++ DEBUG Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_RELEASE + "-Ofast -g0 -DNDEBUG" + CACHE STRING + "C++ Release Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO + "-O3 -g -DNDEBUG" + CACHE STRING + "C++ Release Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_TSAN + "-O3 -g -DNDEBUG -fsanitize=thread" + CACHE STRING + "C++ TSAN Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_ASAN + "-O3 -g -DNDEBUG -fsanitize=address -fsanitize=undefined -fsanitize=leak" + CACHE STRING + "C++ ASAN Flags" + FORCE ) diff --git a/etc/llvm-toolchain.cmake b/etc/llvm-toolchain.cmake index 907007dd..b0cbfbd9 100755 --- a/etc/llvm-toolchain.cmake +++ b/etc/llvm-toolchain.cmake @@ -7,13 +7,38 @@ set(CMAKE_CXX_FLAGS "-std=c++20 \ -Wall -Wextra \ -stdlib=libstdc++ " - CACHE STRING "CXX_FLAGS" FORCE + CACHE STRING + "CXX_FLAGS" + FORCE ) -set(CMAKE_CXX_FLAGS_DEBUG "-O0 -fno-inline -g3" CACHE STRING "C++ DEBUG Flags" FORCE) -set(CMAKE_CXX_FLAGS_RELEASE "-Ofast -g0 -DNDEBUG" CACHE STRING "C++ Release Flags" FORCE) -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG" CACHE STRING "C++ RelWithDebInfo Flags" FORCE) -set(CMAKE_CXX_FLAGS_TSAN "-O3 -g -DNDEBUG -fsanitize=thread" CACHE STRING "C++ TSAN Flags" FORCE) -set(CMAKE_CXX_FLAGS_ASAN "-O3 -g -DNDEBUG -fsanitize=address -fsanitize=undefined -fsanitize=leak" - CACHE STRING "C++ ASAN Flags" FORCE +set(CMAKE_CXX_FLAGS_DEBUG + "-O0 -fno-inline -g3" + CACHE STRING + "C++ DEBUG Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_RELEASE + "-Ofast -g0 -DNDEBUG" + CACHE STRING + "C++ Release Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO + "-O3 -g -DNDEBUG" + CACHE STRING + "C++ RelWithDebInfo Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_TSAN + "-O3 -g -DNDEBUG -fsanitize=thread" + CACHE STRING + "C++ TSAN Flags" + FORCE +) +set(CMAKE_CXX_FLAGS_ASAN + "-O3 -g -DNDEBUG -fsanitize=address -fsanitize=undefined -fsanitize=leak" + CACHE STRING + "C++ ASAN Flags" + FORCE ) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 5b093b21..8e9ef7f2 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -4,26 +4,29 @@ # cmake-format: on list( - APPEND - EXAMPLES - inspect - playground - sender-demo - when_all-cancel - stop_token - stopping - allocator - intro-1-hello-world - intro-2-hello-async - intro-5-consumer - doc-just - doc-just_error - doc-just_stopped + APPEND + EXAMPLES + inspect + playground + sender-demo + when_all-cancel + stop_token + stopping + allocator + intro-1-hello-world + intro-2-hello-async + intro-5-consumer + doc-just + doc-just_error + doc-just_stopped ) foreach(EXAMPLE ${EXAMPLES}) - set(EXAMPLE_TARGET ${TARGET_PREFIX}.examples.${EXAMPLE}) - add_executable(${EXAMPLE_TARGET}) - target_sources(${EXAMPLE_TARGET} PRIVATE ${EXAMPLE}.cpp) - target_link_libraries(${EXAMPLE_TARGET} PRIVATE ${TARGET_NAMESPACE}::${TARGET_NAME}) + set(EXAMPLE_TARGET ${TARGET_PREFIX}.examples.${EXAMPLE}) + add_executable(${EXAMPLE_TARGET}) + target_sources(${EXAMPLE_TARGET} PRIVATE ${EXAMPLE}.cpp) + target_link_libraries( + ${EXAMPLE_TARGET} + PRIVATE ${TARGET_NAMESPACE}::${TARGET_NAME} + ) endforeach() diff --git a/src/beman/execution/CMakeLists.txt b/src/beman/execution/CMakeLists.txt index 1b89b44f..da2f7363 100644 --- a/src/beman/execution/CMakeLists.txt +++ b/src/beman/execution/CMakeLists.txt @@ -6,231 +6,221 @@ add_library(${TARGET_NAME} STATIC) add_library(${TARGET_ALIAS} ALIAS ${TARGET_NAME}) -if(FALSE) -if(NOT BEMAN_EXECUTION_ENABLE_INSTALL OR CMAKE_SKIP_INSTALL_RULES) - target_link_libraries(${TARGET_NAME} PUBLIC $) - target_link_libraries(${TARGET_NAME} PUBLIC $) -endif() -endif() - -include(CMakePrintHelpers) -cmake_print_variables(TARGET_ALIAS TARGET_NAME TARGET_PREFIX PROJECT_SOURCE_DIR) - target_sources( - ${TARGET_NAME} - PRIVATE execution.cpp - PUBLIC FILE_SET - ${TARGET_NAME}_public_headers - TYPE - HEADERS - BASE_DIRS - ${PROJECT_SOURCE_DIR}/include - FILES - ${PROJECT_SOURCE_DIR}/include/beman/execution/execution.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/functional.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/stop_token.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution26/execution.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution26/stop_token.hpp - PUBLIC FILE_SET - ${TARGET_NAME}_detail_headers - TYPE - HEADERS - BASE_DIRS - ${PROJECT_SOURCE_DIR}/include - FILES - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/allocator_aware_move.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/almost_scheduler.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/apply_sender.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/as_awaitable.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/as_except_ptr.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/as_tuple.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/associate.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/atomic_intrusive_stack.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/await_result_type.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/await_suspend_result.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/awaitable_sender.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/basic_operation.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/basic_receiver.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/basic_sender.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/basic_state.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/bulk.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/call_result_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/callable.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/check_type_alias_exist.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/child_type.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/class_type.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/common.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_domain.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_signature.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_signatures.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_signatures_for.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_signatures_of_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_tag.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect_all.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect_all_result.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect_awaitable.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect_result_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/continues_on.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/counting_scope.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/counting_scope_base.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/counting_scope_join.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decayed_same_as.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decayed_tuple.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decayed_type_list.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decayed_typeof.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decays_to.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/default_domain.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/default_impls.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/emplace_from.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/empty_env.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/env_of_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/env_promise.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/env_type.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/error_types_of_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/forward_like.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/forwarding_query.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/fwd_env.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/gather_signatures.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_allocator.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_awaiter.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_completion_scheduler.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_completion_signatures.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_delegation_scheduler.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_domain.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_domain_early.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_domain_late.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_env.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_scheduler.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_stop_token.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/has_as_awaitable.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/has_completions.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/immovable.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/impls_for.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/indices_for.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/indirect_meta_apply.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/inplace_stop_source.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/into_variant.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/intrusive_stack.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/is_awaitable.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/is_awaiter.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/join_env.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/just.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/let.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/make_env.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/make_sender.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/matching_sig.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_combine.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_contain_same.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_contains.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_filter.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_prepend.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_size.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_to.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_transform.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_unique.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/movable_value.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/never_stop_token.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/nostopstate.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/nothrow_callable.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/notify.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/on.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/on_stop_request.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/operation_state.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/operation_state_task.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/product_type.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/prop.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/query_with_default.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/queryable.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/read_env.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/receiver.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/receiver_of.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/run_loop.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sched_attrs.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sched_env.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/schedule.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/schedule_from.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/schedule_result_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/scheduler.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/scheduler_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/scope_token.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_adaptor.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_adaptor_closure.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_awaitable.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_decompose.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_for.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_in.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sends_stopped.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/set_error.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/set_stopped.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/set_value.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/simple_allocator.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/simple_counting_scope.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/single_sender.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/single_sender_value_type.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/spawn.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/spawn_future.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/spawn_get_allocator.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/split.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/start.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/starts_on.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/state_type.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stop_callback_for_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stop_source.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stop_token_of_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stop_when.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stoppable_source.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stoppable_token.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/suppress_pop.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/suppress_push.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/suspend_complete.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sync_wait.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/tag_of_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/then.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/transform_sender.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/type_list.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/unspecified_promise.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/unstoppable_token.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/valid_completion_for.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/valid_completion_signatures.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/valid_specialization.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/value_types_of_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/variant_or_empty.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/when_all.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/when_all_with_variant.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/with_await_transform.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/with_awaitable_senders.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/write_env.hpp + ${TARGET_NAME} + PRIVATE execution.cpp + PUBLIC + FILE_SET ${TARGET_NAME}_public_headers + TYPE HEADERS + BASE_DIRS ${PROJECT_SOURCE_DIR}/include + FILES + ${PROJECT_SOURCE_DIR}/include/beman/execution/execution.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/functional.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/stop_token.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution26/execution.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution26/stop_token.hpp + PUBLIC + FILE_SET ${TARGET_NAME}_detail_headers + TYPE HEADERS + BASE_DIRS ${PROJECT_SOURCE_DIR}/include + FILES + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/allocator_aware_move.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/almost_scheduler.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/apply_sender.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/as_awaitable.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/as_except_ptr.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/as_tuple.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/associate.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/atomic_intrusive_stack.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/await_result_type.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/await_suspend_result.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/awaitable_sender.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/basic_operation.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/basic_receiver.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/basic_sender.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/basic_state.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/bulk.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/call_result_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/callable.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/check_type_alias_exist.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/child_type.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/class_type.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/common.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_domain.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_signature.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_signatures.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_signatures_for.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_signatures_of_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_tag.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect_all.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect_all_result.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect_awaitable.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect_result_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/continues_on.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/counting_scope.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/counting_scope_base.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/counting_scope_join.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decayed_same_as.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decayed_tuple.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decayed_type_list.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decayed_typeof.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decays_to.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/default_domain.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/default_impls.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/emplace_from.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/empty_env.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/env_of_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/env_promise.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/env_type.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/error_types_of_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/forward_like.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/forwarding_query.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/fwd_env.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/gather_signatures.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_allocator.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_awaiter.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_completion_scheduler.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_completion_signatures.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_delegation_scheduler.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_domain.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_domain_early.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_domain_late.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_env.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_scheduler.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_stop_token.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/has_as_awaitable.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/has_completions.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/immovable.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/impls_for.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/indices_for.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/indirect_meta_apply.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/inplace_stop_source.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/into_variant.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/intrusive_stack.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/is_awaitable.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/is_awaiter.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/join_env.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/just.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/let.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/make_env.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/make_sender.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/matching_sig.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_combine.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_contain_same.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_contains.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_filter.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_prepend.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_size.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_to.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_transform.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_unique.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/movable_value.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/never_stop_token.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/nostopstate.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/nothrow_callable.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/notify.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/on.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/on_stop_request.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/operation_state.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/operation_state_task.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/product_type.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/prop.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/query_with_default.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/queryable.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/read_env.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/receiver.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/receiver_of.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/run_loop.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sched_attrs.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sched_env.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/schedule.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/schedule_from.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/schedule_result_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/scheduler.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/scheduler_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/scope_token.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_adaptor.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_adaptor_closure.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_awaitable.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_decompose.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_for.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_in.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sends_stopped.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/set_error.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/set_stopped.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/set_value.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/simple_allocator.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/simple_counting_scope.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/single_sender.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/single_sender_value_type.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/spawn.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/spawn_future.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/spawn_get_allocator.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/split.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/start.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/starts_on.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/state_type.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stop_callback_for_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stop_source.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stop_token_of_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stop_when.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stoppable_source.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stoppable_token.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/suppress_pop.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/suppress_push.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/suspend_complete.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sync_wait.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/tag_of_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/then.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/transform_sender.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/type_list.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/unspecified_promise.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/unstoppable_token.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/valid_completion_for.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/valid_completion_signatures.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/valid_specialization.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/value_types_of_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/variant_or_empty.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/when_all.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/when_all_with_variant.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/with_await_transform.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/with_awaitable_senders.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/write_env.hpp ) -# cmake-format: off -get_property(DETAIL_HEADER_FILES TARGET ${TARGET_NAME} PROPERTY HEADER_SET_${TARGET_NAME}_detail_headers) +get_property( + DETAIL_HEADER_FILES + TARGET ${TARGET_NAME} + PROPERTY HEADER_SET_${TARGET_NAME}_detail_headers +) source_group("Header Files\\detail" FILES ${DETAIL_HEADER_FILES}) set_target_properties(${TARGET_NAME} PROPERTIES VERIFY_INTERFACE_HEADER_SETS ON) -target_compile_features(${TARGET_NAME} PUBLIC - "$<$:cxx_std_26>" - "$<$>:cxx_std_23>" +target_compile_features( + ${TARGET_NAME} + PUBLIC + "$<$:cxx_std_26>" + "$<$>:cxx_std_23>" ) if(NOT BEMAN_EXECUTION_ENABLE_INSTALL OR CMAKE_SKIP_INSTALL_RULES) - return() + return() endif() install( - TARGETS ${TARGET_NAME} - EXPORT ${TARGETS_EXPORT_NAME}1 - ARCHIVE DESTINATION lib/$ - FILE_SET ${TARGET_NAME}_public_headers - FILE_SET ${TARGET_NAME}_detail_headers + TARGETS ${TARGET_NAME} + EXPORT ${TARGETS_EXPORT_NAME}1 + ARCHIVE DESTINATION lib/$ + FILE_SET ${TARGET_NAME}_public_headers + FILE_SET ${TARGET_NAME}_detail_headers ) -# cmake-format: on install( - EXPORT ${TARGETS_EXPORT_NAME}1 - FILE ${TARGETS_EXPORT_NAME}.cmake - DESTINATION "${INSTALL_CONFIGDIR}" - NAMESPACE ${TARGET_NAMESPACE}:: + EXPORT ${TARGETS_EXPORT_NAME}1 + FILE ${TARGETS_EXPORT_NAME}.cmake + DESTINATION "${INSTALL_CONFIGDIR}" + NAMESPACE ${TARGET_NAMESPACE}:: ) diff --git a/tests/beman/execution/CMakeLists.txt b/tests/beman/execution/CMakeLists.txt index 8675d73b..899c28d9 100644 --- a/tests/beman/execution/CMakeLists.txt +++ b/tests/beman/execution/CMakeLists.txt @@ -5,165 +5,112 @@ cmake_minimum_required(VERSION 3.25...3.31) project(beman_execution_tests LANGUAGES CXX) if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) - message(FATAL_ERROR "In-source builds are not allowed!") + message(FATAL_ERROR "In-source builds are not allowed!") endif() +list(APPEND todo exec-associate.test) list( - APPEND - todo - exec-associate.test -) -list( - APPEND - execution_tests - exec-scope-counting.test - exec-spawn.test - exec-stop-when.test - exec-prop.test - exec-scope-simple-counting.test - exec-spawn-future.test - exec-scope-concepts.test - issue-144.test - exec-on.test - notify.test - exec-awaitable.test - allocator-requirements-general.test - exec-connect.test - exec-continues-on.test - exec-domain-default.test - exec-fwd-env.test - exec-general.test - exec-get-allocator.test - exec-get-compl-sched.test - exec-get-delegation-scheduler.test - exec-get-domain.test - exec-get-env.test - exec-get-scheduler.test - exec-get-stop-token.test - exec-getcomplsigs.test - exec-into-variant.test - exec-just.test - exec-let.test - exec-opstate-start.test - exec-opstate.test - exec-read-env.test - exec-recv-concepts.test - exec-recv.test - exec-run-loop-general.test - exec-run-loop-types.test - exec-sched.test - exec-schedule-from.test - exec-schedule.test - exec-set-error.test - exec-set-stopped.test - exec-set-value.test - exec-snd-apply.test - exec-snd-concepts.test - exec-snd-expos.test - exec-snd-transform.test - exec-starts-on.test - exec-split.test - exec-sync-wait.test - exec-then.test - exec-utils-cmplsigs.test - exec-when-all.test - exec-with-awaitable-senders.test - execution-queryable-concept.test - exec-bulk.test - execution-syn.test - forward-like.test - function-objects.test - functional-syn.test - meta-combine.test - meta-contains.test - meta-filter.test - meta-prepend.test - meta-transform.test - meta-unique.test - stopcallback-cons.test - stopcallback-general.test - stopcallback-inplace-cons.test - stopcallback-inplace-general.test - stopcallback-inplace.test - stopcallback.test - stopsource-cons.test - stopsource-general.test - stopsource-inplace-cons.test - stopsource-inplace-general.test - stopsource-inplace-mem.test - stopsource-inplace.test - stopsource-mem.test - stopsource.test - stoptoken-concepts.test - stoptoken-general.test - stoptoken-inplace-general.test - stoptoken-inplace-members.test - stoptoken-inplace.test - stoptoken-mem.test - stoptoken-never-general.test - stoptoken-never.test - stoptoken.test - thread-stoptoken-intro.test - thread-stoptoken-syn.compile.test - thread-stoptoken.test - thread.test - utilities.test + APPEND + execution_tests + exec-scope-counting.test + exec-spawn.test + exec-stop-when.test + exec-prop.test + exec-scope-simple-counting.test + exec-spawn-future.test + exec-scope-concepts.test + issue-144.test + exec-on.test + notify.test + exec-awaitable.test + allocator-requirements-general.test + exec-connect.test + exec-continues-on.test + exec-domain-default.test + exec-fwd-env.test + exec-general.test + exec-get-allocator.test + exec-get-compl-sched.test + exec-get-delegation-scheduler.test + exec-get-domain.test + exec-get-env.test + exec-get-scheduler.test + exec-get-stop-token.test + exec-getcomplsigs.test + exec-into-variant.test + exec-just.test + exec-let.test + exec-opstate-start.test + exec-opstate.test + exec-read-env.test + exec-recv-concepts.test + exec-recv.test + exec-run-loop-general.test + exec-run-loop-types.test + exec-sched.test + exec-schedule-from.test + exec-schedule.test + exec-set-error.test + exec-set-stopped.test + exec-set-value.test + exec-snd-apply.test + exec-snd-concepts.test + exec-snd-expos.test + exec-snd-transform.test + exec-starts-on.test + exec-split.test + exec-sync-wait.test + exec-then.test + exec-utils-cmplsigs.test + exec-when-all.test + exec-with-awaitable-senders.test + execution-queryable-concept.test + exec-bulk.test + execution-syn.test + forward-like.test + function-objects.test + functional-syn.test + meta-combine.test + meta-contains.test + meta-filter.test + meta-prepend.test + meta-transform.test + meta-unique.test + stopcallback-cons.test + stopcallback-general.test + stopcallback-inplace-cons.test + stopcallback-inplace-general.test + stopcallback-inplace.test + stopcallback.test + stopsource-cons.test + stopsource-general.test + stopsource-inplace-cons.test + stopsource-inplace-general.test + stopsource-inplace-mem.test + stopsource-inplace.test + stopsource-mem.test + stopsource.test + stoptoken-concepts.test + stoptoken-general.test + stoptoken-inplace-general.test + stoptoken-inplace-members.test + stoptoken-inplace.test + stoptoken-mem.test + stoptoken-never-general.test + stoptoken-never.test + stoptoken.test + thread-stoptoken-intro.test + thread-stoptoken-syn.compile.test + thread-stoptoken.test + thread.test + utilities.test ) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) -if(NOT DEFINED CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 23) -endif() - -if(NOT DEFINED CMAKE_PREFIX_PATH) - set(CMAKE_PREFIX_PATH ${CMAKE_INSTALL_PREFIX}) -endif() - -if(PROJECT_IS_TOP_LEVEL) - enable_testing() - find_package(beman_execution 0.0.1 EXACT QUIET) - if(beman_execution_FOUND) - set(execution_tests exec-awaitable.test) # only one sample to save time! CK - else() - set(BEMAN_EXECUTION_ENABLE_INSTALL ON) - add_subdirectory(../../.. beman_execution) - - include(CMakePrintHelpers) - cmake_print_variables(TARGET_ALIAS TARGET_LIBRARY TARGET_PREFIX PROJECT_SOURCE_DIR) - endif() -endif() - -remove_definitions(-DNDEBUG) # NOTE: we want ASSERT statements in Release too! CK - foreach(test ${execution_tests}) - set(TEST_EXE ${TARGET_PREFIX}.${test}) - add_executable(${TEST_EXE} ${test}.cpp) - target_link_libraries(${TEST_EXE} PRIVATE beman::execution) - add_test(NAME ${TEST_EXE} COMMAND $) + set(TEST_EXE ${TARGET_PREFIX}.${test}) + add_executable(${TEST_EXE} ${test}.cpp) + target_link_libraries(${TEST_EXE} PRIVATE beman::execution) + add_test(NAME ${TEST_EXE} COMMAND $) endforeach() - -if(FALSE) - if(NOT PROJECT_IS_TOP_LEVEL AND BEMAN_EXECUTION_ENABLE_TESTING) - # test if the targets are findable from the build directory - # cmake-format: off - add_test(NAME find-package-test - COMMAND ${CMAKE_CTEST_COMMAND} - # --verbose - --output-on-failure - -C $ - --build-and-test - "${CMAKE_CURRENT_SOURCE_DIR}" - "${CMAKE_CURRENT_BINARY_DIR}/find-package-test" - --build-generator ${CMAKE_GENERATOR} - --build-makeprogram ${CMAKE_MAKE_PROGRAM} - --build-options - "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" - "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" - "-DCMAKE_BUILD_TYPE=$" - "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" - # TODO(CK): Needed too? "--config $" - ) - # cmake-format: on - endif() -endif() From 7742256bbc56444eed5734fd6423278d3a15f16c Mon Sep 17 00:00:00 2001 From: ClausKlein Date: Wed, 9 Jul 2025 06:17:19 +0200 Subject: [PATCH 2/4] The final cut --- .pre-commit-config.yaml | 4 +- Makefile | 2 +- .../execution/detail/forwarding_query.hpp | 2 +- src/beman/execution/CMakeLists.txt | 350 +++++++++--------- 4 files changed, 179 insertions(+), 179 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 04aa8e5d..5f00f27d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -22,7 +22,7 @@ repos: # CMake linting and formatting - repo: https://github.com/BlankSpruce/gersemi - rev: 0.19.3 + rev: 0.20.0 hooks: - id: gersemi name: CMake linting @@ -39,4 +39,4 @@ repos: hooks: - id: codespell files: ^.*\.(cmake|cpp|hpp|txt|md|json|in|yaml|yml)$ - args: ["--ignore-words", ".codespellignore" ] + args: ["-w", "--ignore-words", ".codespellignore" ] diff --git a/Makefile b/Makefile index 220880b4..bcfbe28c 100644 --- a/Makefile +++ b/Makefile @@ -124,7 +124,7 @@ codespell: format: cmake-format clang-format cmake-format: - cmake-format -i `git diff --name-only main | egrep '(CMakeLists.txt|\.cmake)'` + pre-commit run --all clang-format: git clang-format main diff --git a/include/beman/execution/detail/forwarding_query.hpp b/include/beman/execution/detail/forwarding_query.hpp index 360c13c5..8ef78c18 100644 --- a/include/beman/execution/detail/forwarding_query.hpp +++ b/include/beman/execution/detail/forwarding_query.hpp @@ -39,7 +39,7 @@ namespace beman::execution { */ using forwarding_query_t = beman::execution::detail::forwarding_query_t; /*! - * \brief The customizatoin point object to determine whether queries should be forwarded + * \brief The customization point object to determine whether queries should be forwarded * \headerfile beman/execution/execution.hpp * * \details diff --git a/src/beman/execution/CMakeLists.txt b/src/beman/execution/CMakeLists.txt index da2f7363..a39c18c5 100644 --- a/src/beman/execution/CMakeLists.txt +++ b/src/beman/execution/CMakeLists.txt @@ -11,183 +11,183 @@ target_sources( PRIVATE execution.cpp PUBLIC FILE_SET ${TARGET_NAME}_public_headers - TYPE HEADERS - BASE_DIRS ${PROJECT_SOURCE_DIR}/include - FILES - ${PROJECT_SOURCE_DIR}/include/beman/execution/execution.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/functional.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/stop_token.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution26/execution.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution26/stop_token.hpp + TYPE HEADERS + BASE_DIRS ${PROJECT_SOURCE_DIR}/include + FILES + ${PROJECT_SOURCE_DIR}/include/beman/execution/execution.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/functional.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/stop_token.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution26/execution.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution26/stop_token.hpp PUBLIC FILE_SET ${TARGET_NAME}_detail_headers - TYPE HEADERS - BASE_DIRS ${PROJECT_SOURCE_DIR}/include - FILES - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/allocator_aware_move.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/almost_scheduler.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/apply_sender.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/as_awaitable.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/as_except_ptr.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/as_tuple.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/associate.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/atomic_intrusive_stack.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/await_result_type.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/await_suspend_result.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/awaitable_sender.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/basic_operation.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/basic_receiver.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/basic_sender.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/basic_state.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/bulk.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/call_result_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/callable.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/check_type_alias_exist.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/child_type.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/class_type.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/common.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_domain.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_signature.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_signatures.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_signatures_for.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_signatures_of_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_tag.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect_all.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect_all_result.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect_awaitable.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect_result_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/continues_on.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/counting_scope.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/counting_scope_base.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/counting_scope_join.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decayed_same_as.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decayed_tuple.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decayed_type_list.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decayed_typeof.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decays_to.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/default_domain.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/default_impls.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/emplace_from.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/empty_env.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/env_of_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/env_promise.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/env_type.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/error_types_of_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/forward_like.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/forwarding_query.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/fwd_env.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/gather_signatures.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_allocator.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_awaiter.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_completion_scheduler.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_completion_signatures.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_delegation_scheduler.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_domain.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_domain_early.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_domain_late.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_env.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_scheduler.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_stop_token.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/has_as_awaitable.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/has_completions.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/immovable.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/impls_for.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/indices_for.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/indirect_meta_apply.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/inplace_stop_source.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/into_variant.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/intrusive_stack.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/is_awaitable.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/is_awaiter.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/join_env.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/just.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/let.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/make_env.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/make_sender.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/matching_sig.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_combine.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_contain_same.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_contains.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_filter.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_prepend.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_size.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_to.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_transform.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_unique.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/movable_value.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/never_stop_token.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/nostopstate.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/nothrow_callable.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/notify.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/on.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/on_stop_request.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/operation_state.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/operation_state_task.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/product_type.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/prop.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/query_with_default.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/queryable.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/read_env.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/receiver.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/receiver_of.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/run_loop.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sched_attrs.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sched_env.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/schedule.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/schedule_from.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/schedule_result_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/scheduler.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/scheduler_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/scope_token.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_adaptor.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_adaptor_closure.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_awaitable.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_decompose.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_for.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_in.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sends_stopped.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/set_error.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/set_stopped.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/set_value.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/simple_allocator.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/simple_counting_scope.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/single_sender.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/single_sender_value_type.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/spawn.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/spawn_future.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/spawn_get_allocator.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/split.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/start.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/starts_on.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/state_type.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stop_callback_for_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stop_source.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stop_token_of_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stop_when.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stoppable_source.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stoppable_token.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/suppress_pop.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/suppress_push.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/suspend_complete.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sync_wait.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/tag_of_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/then.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/transform_sender.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/type_list.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/unspecified_promise.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/unstoppable_token.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/valid_completion_for.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/valid_completion_signatures.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/valid_specialization.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/value_types_of_t.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/variant_or_empty.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/when_all.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/when_all_with_variant.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/with_await_transform.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/with_awaitable_senders.hpp - ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/write_env.hpp + TYPE HEADERS + BASE_DIRS ${PROJECT_SOURCE_DIR}/include + FILES + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/allocator_aware_move.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/almost_scheduler.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/apply_sender.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/as_awaitable.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/as_except_ptr.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/as_tuple.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/associate.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/atomic_intrusive_stack.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/await_result_type.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/await_suspend_result.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/awaitable_sender.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/basic_operation.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/basic_receiver.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/basic_sender.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/basic_state.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/bulk.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/call_result_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/callable.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/check_type_alias_exist.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/child_type.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/class_type.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/common.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_domain.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_signature.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_signatures.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_signatures_for.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_signatures_of_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/completion_tag.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect_all.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect_all_result.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect_awaitable.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/connect_result_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/continues_on.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/counting_scope.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/counting_scope_base.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/counting_scope_join.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decayed_same_as.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decayed_tuple.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decayed_type_list.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decayed_typeof.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/decays_to.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/default_domain.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/default_impls.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/emplace_from.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/empty_env.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/env_of_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/env_promise.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/env_type.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/error_types_of_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/forward_like.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/forwarding_query.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/fwd_env.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/gather_signatures.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_allocator.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_awaiter.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_completion_scheduler.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_completion_signatures.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_delegation_scheduler.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_domain.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_domain_early.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_domain_late.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_env.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_scheduler.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/get_stop_token.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/has_as_awaitable.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/has_completions.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/immovable.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/impls_for.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/indices_for.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/indirect_meta_apply.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/inplace_stop_source.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/into_variant.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/intrusive_stack.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/is_awaitable.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/is_awaiter.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/join_env.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/just.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/let.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/make_env.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/make_sender.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/matching_sig.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_combine.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_contain_same.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_contains.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_filter.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_prepend.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_size.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_to.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_transform.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/meta_unique.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/movable_value.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/never_stop_token.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/nostopstate.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/nothrow_callable.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/notify.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/on.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/on_stop_request.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/operation_state.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/operation_state_task.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/product_type.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/prop.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/query_with_default.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/queryable.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/read_env.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/receiver.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/receiver_of.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/run_loop.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sched_attrs.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sched_env.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/schedule.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/schedule_from.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/schedule_result_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/scheduler.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/scheduler_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/scope_token.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_adaptor.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_adaptor_closure.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_awaitable.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_decompose.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_for.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sender_in.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sends_stopped.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/set_error.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/set_stopped.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/set_value.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/simple_allocator.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/simple_counting_scope.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/single_sender.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/single_sender_value_type.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/spawn.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/spawn_future.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/spawn_get_allocator.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/split.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/start.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/starts_on.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/state_type.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stop_callback_for_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stop_source.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stop_token_of_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stop_when.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stoppable_source.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/stoppable_token.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/suppress_pop.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/suppress_push.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/suspend_complete.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/sync_wait.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/tag_of_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/then.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/transform_sender.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/type_list.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/unspecified_promise.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/unstoppable_token.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/valid_completion_for.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/valid_completion_signatures.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/valid_specialization.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/value_types_of_t.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/variant_or_empty.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/when_all.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/when_all_with_variant.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/with_await_transform.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/with_awaitable_senders.hpp + ${PROJECT_SOURCE_DIR}/include/beman/execution/detail/write_env.hpp ) get_property( From 1e758dff3c329c6385e7d65f4bc6ad80d78ba1e3 Mon Sep 17 00:00:00 2001 From: ClausKlein Date: Wed, 9 Jul 2025 17:53:58 +0200 Subject: [PATCH 3/4] Restore my generic workflow presets --- cmake/CMakeUserPresets.json | 107 +++++++++++++++++++++++++ cmake/presets/CMakeDarwinPresets.json | 48 +++++++++++ cmake/presets/CMakeGenericPresets.json | 23 ++++++ cmake/presets/CMakeLinuxPresets.json | 48 +++++++++++ cmake/presets/CMakeWindowsPresets.json | 32 ++++++++ 5 files changed, 258 insertions(+) create mode 100644 cmake/CMakeUserPresets.json create mode 100644 cmake/presets/CMakeDarwinPresets.json create mode 100644 cmake/presets/CMakeGenericPresets.json create mode 100644 cmake/presets/CMakeLinuxPresets.json create mode 100644 cmake/presets/CMakeWindowsPresets.json diff --git a/cmake/CMakeUserPresets.json b/cmake/CMakeUserPresets.json new file mode 100644 index 00000000..331c063e --- /dev/null +++ b/cmake/CMakeUserPresets.json @@ -0,0 +1,107 @@ +{ + "version": 9, + "cmakeMinimumRequired": { + "major": 3, + "minor": 30, + "patch": 0 + }, + "include": [ + "cmake/presets/CMake${hostSystemName}Presets.json" + ], + "buildPresets": [ + { + "name": "debug", + "configurePreset": "debug", + "configuration": "Debug", + "targets": [ + "all" + ] + }, + { + "name": "release", + "configurePreset": "release", + "configuration": "Release", + "targets": [ + "all_verify_interface_header_sets", + "all" + ] + } + ], + "testPresets": [ + { + "name": "test_base", + "hidden": true, + "output": { + "outputOnFailure": true + }, + "execution": { + "noTestsAction": "error", + "stopOnFailure": false + } + }, + { + "name": "debug", + "inherits": "test_base", + "configuration": "Debug", + "configurePreset": "debug" + }, + { + "name": "release", + "inherits": "test_base", + "configuration": "Release", + "configurePreset": "release" + } + ], + "packagePresets": [ + { + "name": "release", + "configurePreset": "release", + "configurations": [ + "Release" + ], + "generators": [ + "TGZ" + ] + } + ], + "workflowPresets": [ + { + "name": "debug", + "steps": [ + { + "type": "configure", + "name": "debug" + }, + { + "type": "build", + "name": "debug" + }, + { + "type": "test", + "name": "debug" + } + ] + }, + { + "name": "release", + "steps": [ + { + "type": "configure", + "name": "release" + }, + { + "type": "build", + "name": "release" + }, + { + "type": "test", + "name": "release" + }, + { + "type": "package", + "name": "release" + } + ] + } + ] +} diff --git a/cmake/presets/CMakeDarwinPresets.json b/cmake/presets/CMakeDarwinPresets.json new file mode 100644 index 00000000..78efdf49 --- /dev/null +++ b/cmake/presets/CMakeDarwinPresets.json @@ -0,0 +1,48 @@ +{ + "version": 6, + "include": [ + "CMakeGenericPresets.json" + ], + "configurePresets": [ + { + "name": "debug-base-Darwin", + "hidden": true, + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug" + }, + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Darwin" + } + }, + { + "name": "release-base-Darwin", + "hidden": true, + "cacheVariables": { + "CMAKE_BUILD_TYPE": "RelWithDebInfo" + }, + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Darwin" + } + }, + { + "name": "debug", + "displayName": "Debug Build", + "inherits": [ + "root-config", + "debug-base-Darwin" + ] + }, + { + "name": "release", + "displayName": "Release Build", + "inherits": [ + "root-config", + "release-base-Darwin" + ] + } + ] +} diff --git a/cmake/presets/CMakeGenericPresets.json b/cmake/presets/CMakeGenericPresets.json new file mode 100644 index 00000000..44fd4775 --- /dev/null +++ b/cmake/presets/CMakeGenericPresets.json @@ -0,0 +1,23 @@ +{ + "version": 6, + "configurePresets": [ + { + "name": "root-config", + "hidden": true, + "generator": "Ninja", + "binaryDir": "${sourceDir}/build/${presetName}", + "installDir": "${sourceDir}/stagedir", + "cacheVariables": { + "CMAKE_PREFIX_PATH": { + "type": "path", + "value": "${sourceDir}/stagedir" + }, + "CMAKE_CXX_EXTENSIONS": true, + "CMAKE_CXX_STANDARD": "23", + "CMAKE_CXX_STANDARD_REQUIRED": true, + "CMAKE_EXPORT_COMPILE_COMMANDS": true, + "CMAKE_SKIP_TEST_ALL_DEPENDENCY": false + } + } + ] +} diff --git a/cmake/presets/CMakeLinuxPresets.json b/cmake/presets/CMakeLinuxPresets.json new file mode 100644 index 00000000..7a917350 --- /dev/null +++ b/cmake/presets/CMakeLinuxPresets.json @@ -0,0 +1,48 @@ +{ + "version": 6, + "include": [ + "CMakeGenericPresets.json" + ], + "configurePresets": [ + { + "name": "debug-base-Linux", + "hidden": true, + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug" + }, + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Linux" + } + }, + { + "name": "release-base-Linux", + "hidden": true, + "cacheVariables": { + "CMAKE_BUILD_TYPE": "RelWithDebInfo" + }, + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Linux" + } + }, + { + "name": "debug", + "displayName": "Debug Build", + "inherits": [ + "root-config", + "debug-base-Linux" + ] + }, + { + "name": "release", + "displayName": "Release Build", + "inherits": [ + "root-config", + "release-base-Linux" + ] + } + ] +} diff --git a/cmake/presets/CMakeWindowsPresets.json b/cmake/presets/CMakeWindowsPresets.json new file mode 100644 index 00000000..d8834f2c --- /dev/null +++ b/cmake/presets/CMakeWindowsPresets.json @@ -0,0 +1,32 @@ +{ + "version": 6, + "include": [ + "CMakeGenericPresets.json" + ], + "configurePresets": [ + { + "name": "release", + "description": "Windows preset for library developers", + "generator": "Ninja Multi-Config", + "binaryDir": "${sourceDir}/build", + "inherits": [ + "root-config" + ], + "cacheVariables": { + "CMAKE_CXX_COMPILER": "cl" + }, + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Windows" + } + }, + { + "name": "debug", + "description": "Windows preset for library developers", + "inherits": [ + "release" + ] + } + ] +} From 0779dc203d2712bf7ac4b620837ddae4f4a443b6 Mon Sep 17 00:00:00 2001 From: ClausKlein Date: Wed, 9 Jul 2025 18:03:45 +0200 Subject: [PATCH 4/4] ./.../beman-submodule update --remote --- infra/.beman_submodule | 2 +- .../lib/checks/beman_standard/readme.py | 36 ++++++++++++- .../beman_standard/readme/test_readme.py | 50 +++++++++++++++++++ 3 files changed, 85 insertions(+), 3 deletions(-) diff --git a/infra/.beman_submodule b/infra/.beman_submodule index 9c8e9625..49a73a21 100644 --- a/infra/.beman_submodule +++ b/infra/.beman_submodule @@ -1,3 +1,3 @@ [beman_submodule] remote=https://github.com/bemanproject/infra.git -commit_hash=78de7eb4ff54bd12c9abb790107edc86bcda07d8 +commit_hash=8e80cc3049fcc450805349da381edddd7a920dff diff --git a/infra/tools/beman-tidy/beman_tidy/lib/checks/beman_standard/readme.py b/infra/tools/beman-tidy/beman_tidy/lib/checks/beman_standard/readme.py index fcbead60..92a85751 100644 --- a/infra/tools/beman-tidy/beman_tidy/lib/checks/beman_standard/readme.py +++ b/infra/tools/beman-tidy/beman_tidy/lib/checks/beman_standard/readme.py @@ -72,10 +72,42 @@ def fix(self): pass -# TODO README.PURPOSE +@register_beman_standard_check("README.IMPLEMENTS") +class ReadmeImplementsCheck(ReadmeBaseCheck): + def __init__(self, repo_info, beman_standard_check_config): + super().__init__(repo_info, beman_standard_check_config) + + def check(self): + lines = self.read_lines_strip() + # Match the pattern to start with "Implements:" and then have a paper reference and a wg21.link URL. + # Examples of valid lines: + # **Implements**: [Standard Library Concepts (P0898R3)](https://wg21.link/P0898R3). + # **Implements**: [Give *std::optional* Range Support (P3168R2)](https://wg21.link/P3168R2) and [`std::optional` (P2988R5)](https://wg21.link/P2988R5) + # **Implements**: [.... (PxyzwRr)](https://wg21.link/PxyzwRr), [.... (PabcdRr)](https://wg21.link/PabcdRr), and [.... (PijklRr)](https://wg21.link/PijklRr), + regex = r"^\*\*Implements\*\*:\s+.*\bP\d{4}R\d+\b.*wg21\.link/\S+" + + # Count how many lines match the regex + implement_lines = 0 + for line in lines: + if re.match(regex, line): + implement_lines += 1 + + # If there is exactly one "Implements:" line, it is valid + if implement_lines == 1: + return True + + # Invalid/missing/duplicate "Implements:" line + self.log( + f"Invalid/missing/duplicate 'Implements:' line in '{self.path}'. See https://github.com/bemanproject/beman/blob/main/docs/BEMAN_STANDARD.md#readmeimplements for more information." + ) + return False -# TODO README.IMPLEMENTS + def fix(self): + self.log( + "Please write a Implements line in README.md file. See https://github.com/bemanproject/beman/blob/main/docs/BEMAN_STANDARD.md#readmeimplements for the desired format." + ) + return False @register_beman_standard_check("README.LIBRARY_STATUS") diff --git a/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/test_readme.py b/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/test_readme.py index 476a1804..87df91ee 100644 --- a/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/test_readme.py +++ b/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/test_readme.py @@ -13,6 +13,7 @@ from beman_tidy.lib.checks.beman_standard.readme import ( ReadmeTitleCheck, ReadmeBadgesCheck, + ReadmeImplementsCheck, ReadmeLibraryStatusCheck, ) @@ -130,6 +131,55 @@ def test__README_BADGES__fix_inplace(repo_info, beman_standard_check_config): pass +def test__README_IMPLEMENTS__valid(repo_info, beman_standard_check_config): + """ + Test that a valid README.md "Implements" passes the check + """ + valid_readme_paths = [ + Path(f"{valid_prefix}/README-v1.md"), + Path(f"{valid_prefix}/README-v2.md"), + Path(f"{valid_prefix}/README-v3.md"), + Path(f"{valid_prefix}/README-v4.md"), + ] + + run_check_for_each_path( + True, + valid_readme_paths, + ReadmeImplementsCheck, + repo_info, + beman_standard_check_config, + ) + + +def test__README_IMPLEMENTS__invalid(repo_info, beman_standard_check_config): + """ + Test that an invalid README.md "Implements" fails the check + """ + invalid_readme_paths = [ + Path(f"{invalid_prefix}/invalid.md"), + Path(f"{invalid_prefix}/invalid-implements-v1.md"), + Path(f"{invalid_prefix}/invalid-implements-v2.md"), + Path(f"{invalid_prefix}/invalid-implements-v3.md"), + Path(f"{invalid_prefix}/invalid-implements-v4.md"), + ] + + run_check_for_each_path( + False, + invalid_readme_paths, + ReadmeImplementsCheck, + repo_info, + beman_standard_check_config, + ) + + +@pytest.mark.skip(reason="NOT implemented") +def test__README_IMPLEMENTS__fix_inplace(repo_info, beman_standard_check_config): + """ + Test that the fix method corrects an invalid README.md "Implements" + """ + pass + + def test__README_LIBRARY_STATUS__valid(repo_info, beman_standard_check_config): """ Test that a valid README.md library status passes the check.