From 20f6d7112e4e2e7dd093f8d81904e62aa4c154fc Mon Sep 17 00:00:00 2001 From: ClausKlein Date: Sat, 7 Dec 2024 19:48:20 +0100 Subject: [PATCH 1/4] Fix builds on macOS --- .pre-commit-config.yaml | 6 +++--- CMakePresets.json | 2 +- etc/clang-flags.cmake | 22 ++++++++++++++++------ etc/gcc-flags.cmake | 21 +++++++++++++++------ 4 files changed, 35 insertions(+), 16 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c783148c..bbe424d8 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -13,14 +13,14 @@ 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: v18.1.8 + rev: v19.1.4 hooks: - id: clang-format types_or: [c++, c] # CMake linting and formatting - repo: https://github.com/BlankSpruce/gersemi - rev: 0.15.1 + rev: 0.17.1 hooks: - id: gersemi name: CMake linting @@ -28,7 +28,7 @@ repos: # Markdown linting # Config file: .markdownlint.yaml - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.41.0 + rev: v0.43.0 hooks: - id: markdownlint exclude: ^papers/ diff --git a/CMakePresets.json b/CMakePresets.json index 42d3d6c4..11abeb13 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -158,7 +158,7 @@ { "name": "clang-16", "inherits": "common", - "configurePreset": "clang-16" + "configurePreset": "clang-16", "targets": [ "all_verify_interface_header_sets", "all" diff --git a/etc/clang-flags.cmake b/etc/clang-flags.cmake index 5b23bf7a..96138143 100644 --- a/etc/clang-flags.cmake +++ b/etc/clang-flags.cmake @@ -33,12 +33,22 @@ set(CMAKE_CXX_FLAGS_TSAN "C++ TSAN Flags" FORCE ) -set(CMAKE_CXX_FLAGS_ASAN - "-O3 -g -DNDEBUG -fsanitize=address,undefined,leak" - CACHE STRING - "C++ ASAN Flags" - FORCE -) +if(APPLE) + set(CMAKE_CXX_FLAGS_ASAN + "-O3 -g -DNDEBUG -fsanitize=address,undefined" + CACHE STRING + "C++ ASAN Flags" + FORCE + ) +else() + set(CMAKE_CXX_FLAGS_ASAN + "-O3 -g -DNDEBUG -fsanitize=address,undefined,leak" + CACHE STRING + "C++ ASAN Flags" + FORCE + ) +endif() + set(CMAKE_CXX_FLAGS_GCOV "-O0 -fno-inline -g --coverage" CACHE STRING diff --git a/etc/gcc-flags.cmake b/etc/gcc-flags.cmake index 4747203c..6cb2f6ec 100644 --- a/etc/gcc-flags.cmake +++ b/etc/gcc-flags.cmake @@ -28,12 +28,21 @@ set(CMAKE_CXX_FLAGS_TSAN "C++ TSAN Flags" FORCE ) -set(CMAKE_CXX_FLAGS_ASAN - "-O3 -g -DNDEBUG -fsanitize=address,undefined,leak" - CACHE STRING - "C++ ASAN Flags" - FORCE -) +if(APPLE) + set(CMAKE_CXX_FLAGS_ASAN + "-O3 -g -DNDEBUG -fsanitize=address,undefined" + CACHE STRING + "C++ ASAN Flags" + FORCE + ) +else() + set(CMAKE_CXX_FLAGS_ASAN + "-O3 -g -DNDEBUG -fsanitize=address,undefined,leak" + CACHE STRING + "C++ ASAN Flags" + FORCE + ) +endif() set(CMAKE_CXX_FLAGS_GCOV "-O0 -fno-inline -g --coverage -fprofile-abs-path" From 0bea1527ebc30b42051746940bc24d7bdf52897e Mon Sep 17 00:00:00 2001 From: ClausKlein Date: Sat, 7 Dec 2024 20:04:27 +0100 Subject: [PATCH 2/4] Apply pre-commit run -a --- .../optional26/detail/stl_interfaces/iterator_interface.hpp | 2 +- papers/P2988/optional.hpp | 4 ++-- papers/P2988/optional_ref.h | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/beman/optional26/detail/stl_interfaces/iterator_interface.hpp b/include/beman/optional26/detail/stl_interfaces/iterator_interface.hpp index a0d97bd5..f065e6cd 100644 --- a/include/beman/optional26/detail/stl_interfaces/iterator_interface.hpp +++ b/include/beman/optional26/detail/stl_interfaces/iterator_interface.hpp @@ -229,7 +229,7 @@ BEMAN_OPTIONAL26_DETAIL_STL_INTERFACES_NAMESPACE_V1 { template constexpr auto operator->() const noexcept(noexcept(detail::make_pointer(*std::declval()))) - -> decltype(detail::make_pointer(*std::declval())) { + -> decltype(detail::make_pointer(*std::declval())) { return detail::make_pointer(*derived()); } diff --git a/papers/P2988/optional.hpp b/papers/P2988/optional.hpp index af4f4be9..59025aa8 100644 --- a/papers/P2988/optional.hpp +++ b/papers/P2988/optional.hpp @@ -326,8 +326,8 @@ constexpr auto optional::and_then(F&& f) const { template template -constexpr auto -optional::transform(F&& f) const -> optional> { +constexpr auto optional::transform(F&& f) const + -> optional> { using U = invoke_result_t; if (has_value()) { return optional{invoke(std::forward(f), *value_)}; diff --git a/papers/P2988/optional_ref.h b/papers/P2988/optional_ref.h index 877d4189..0acb1934 100644 --- a/papers/P2988/optional_ref.h +++ b/papers/P2988/optional_ref.h @@ -132,8 +132,8 @@ class optional { } template - constexpr auto - transform(F&& f) const -> optional> { + constexpr auto transform(F&& f) const + -> optional> { using U = std::invoke_result_t; return (has_value()) ? optional{std::invoke(std::forward(f), *value_)} From e97d09bdb9530f8421e7a2d929b970d3ff62cad9 Mon Sep 17 00:00:00 2001 From: ClausKlein Date: Sat, 7 Dec 2024 20:16:50 +0100 Subject: [PATCH 3/4] Format json files too --- .clang-format | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.clang-format b/.clang-format index 01d5fac3..76585f77 100644 --- a/.clang-format +++ b/.clang-format @@ -1,3 +1,7 @@ +# --- +# We'll use defaults from the LLVM style +# BasedOnStyle: LLVM +# IndentWidth: 2 --- Language: Cpp AccessModifierOffset: -2 From 0fe8e084e0e235bfc618584c02b0e50e627e73e8 Mon Sep 17 00:00:00 2001 From: ClausKlein Date: Sun, 8 Dec 2024 19:03:57 +0100 Subject: [PATCH 4/4] Reverted to old clang-format hook --- .pre-commit-config.yaml | 3 ++- .../optional26/detail/stl_interfaces/iterator_interface.hpp | 2 +- papers/P2988/optional.hpp | 4 ++-- papers/P2988/optional_ref.h | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index bbe424d8..c5d88bb7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -9,11 +9,12 @@ repos: - id: check-yaml - id: check-added-large-files + # TODO: keep this version, do not update! # Clang-format for C++ # 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: v18.1.8 hooks: - id: clang-format types_or: [c++, c] diff --git a/include/beman/optional26/detail/stl_interfaces/iterator_interface.hpp b/include/beman/optional26/detail/stl_interfaces/iterator_interface.hpp index f065e6cd..a0d97bd5 100644 --- a/include/beman/optional26/detail/stl_interfaces/iterator_interface.hpp +++ b/include/beman/optional26/detail/stl_interfaces/iterator_interface.hpp @@ -229,7 +229,7 @@ BEMAN_OPTIONAL26_DETAIL_STL_INTERFACES_NAMESPACE_V1 { template constexpr auto operator->() const noexcept(noexcept(detail::make_pointer(*std::declval()))) - -> decltype(detail::make_pointer(*std::declval())) { + -> decltype(detail::make_pointer(*std::declval())) { return detail::make_pointer(*derived()); } diff --git a/papers/P2988/optional.hpp b/papers/P2988/optional.hpp index 59025aa8..af4f4be9 100644 --- a/papers/P2988/optional.hpp +++ b/papers/P2988/optional.hpp @@ -326,8 +326,8 @@ constexpr auto optional::and_then(F&& f) const { template template -constexpr auto optional::transform(F&& f) const - -> optional> { +constexpr auto +optional::transform(F&& f) const -> optional> { using U = invoke_result_t; if (has_value()) { return optional{invoke(std::forward(f), *value_)}; diff --git a/papers/P2988/optional_ref.h b/papers/P2988/optional_ref.h index 0acb1934..877d4189 100644 --- a/papers/P2988/optional_ref.h +++ b/papers/P2988/optional_ref.h @@ -132,8 +132,8 @@ class optional { } template - constexpr auto transform(F&& f) const - -> optional> { + constexpr auto + transform(F&& f) const -> optional> { using U = std::invoke_result_t; return (has_value()) ? optional{std::invoke(std::forward(f), *value_)}