Skip to content

Build failure on Macos 15.4 #126

@foolnotion

Description

@foolnotion

Hi,

I am trying to compile nanobench on macos-15.4 with clang-19.1.7 (although 20.1.2 also fails) and am encountering some issues:

  1. somehow all warnings are treated as errors despite passing -DNB_sanitizer=OFF. My solution to get it to (at least try to) build was to add a specific exception in the CMake files:
$ git diff CMakeLists.txt src/cmake/
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b2f6089..abfe364 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,14 +16,6 @@ if (NANOBENCH_STANDALONE_PROJECT)
   set(CMAKE_CXX_STANDARD_REQUIRED ON)
   set(CMAKE_CXX_EXTENSIONS OFF)

-    # configuration see .clang-tidy
-    if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
-        find_program(CLANG_TIDY_PROGRAM NAMES clang-tidy)
-        if(CLANG_TIDY_PROGRAM)
-            set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_PROGRAM}")
-        endif()
-    endif()
-
   find_program(CCACHE_PROGRAM ccache)
   if(CCACHE_PROGRAM)
       SET(CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_PROGRAM}")
@@ -33,6 +25,10 @@ if (NANOBENCH_STANDALONE_PROJECT)

   if (NB_sanitizer)
       if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+            find_program(CLANG_TIDY_PROGRAM NAMES clang-tidy)
+            if(CLANG_TIDY_PROGRAM)
+                set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_PROGRAM}")
+            endif()
           # see https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html#silencing-unsigned-integer-overflow
           # Compile with -g and -fno-omit-frame-pointer to get proper debug information in your binary
           target_compile_options(nb PRIVATE -g)
diff --git a/src/cmake/CMakeLists.txt b/src/cmake/CMakeLists.txt
index 707d33e..2ef33f4 100644
--- a/src/cmake/CMakeLists.txt
+++ b/src/cmake/CMakeLists.txt
@@ -32,7 +32,7 @@ endfunction()
MESSAGE(STATUS "${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}, C++${CMAKE_CXX_STANDARD}, CMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}")

function(add_compile_flags_target target)
-    if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
+    if((CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") AND (NOT CMAKE_SYSTEM_NAME MATCHES "Darwin"))
       if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0)
           target_compile_options(${target} PRIVATE -fdiagnostics-color)
           target_compile_options(${target} PRIVATE -Wno-zero-as-null-pointer-constant) # doesn't work with spaceship operator

The full cmake invocation is:

cmake -S . -B build -DNB_sanitizer=0 -DNB_STANDALONE_PROJECT=0 -DBUILD_SHARED_LIBS=1

Output:

CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 3.10 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value.  Or, use the <min>...<max> syntax
  to tell CMake that the project requires at least <min> but has been updated
  to work with policies introduced by <max> or earlier.


-- The CXX compiler identification is Clang 19.1.7
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /nix/store/2xp6f0h7ssrns8a6kz0swnynw7j2vvq7-clang-wrapper-19.1.7/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Clang 19.1.7, C++11, CMAKE_CXX_FLAGS=
-- Configuring done (0.4s)
-- Generating done (0.0s)
CMake Warning:
  Manually-specified variables were not used by the project:

    NB_STANDALONE_PROJECT


-- Build files have been written to: /Users/bogdb/src/nanobench/build
CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 3.10 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value.  Or, use the <min>...<max> syntax
  to tell CMake that the project requires at least <min> but has been updated
  to work with policies introduced by <max> or earlier.


-- The CXX compiler identification is Clang 19.1.7
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /nix/store/2xp6f0h7ssrns8a6kz0swnynw7j2vvq7-clang-wrapper-19.1.7/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Clang 19.1.7, C++11, CMAKE_CXX_FLAGS=
-- Configuring done (0.4s)
-- Generating done (0.0s)
CMake Warning:
  Manually-specified variables were not used by the project:

    NB_STANDALONE_PROJECT


-- Build files have been written to: /Users/bogdb/src/nanobench/build
  1. After hacking at the CMake file I can start a build until I get an error:
[  2%] Building CXX object CMakeFiles/nb.dir/src/test/app/nanobench.cpp.o
In file included from /Users/bogdb/src/nanobench/src/test/app/nanobench.cpp:2:
/Users/bogdb/src/nanobench/src/include/nanobench.h:1722:13: warning: 'switch' missing 'default' label [-Wswitch-default]
 1722 |             switch (n.type) {
      |             ^
/Users/bogdb/src/nanobench/src/include/nanobench.h:1752:13: warning: 'switch' missing 'default' label [-Wswitch-default]
 1752 |             switch (n.type) {
      |             ^
/Users/bogdb/src/nanobench/src/include/nanobench.h:1911:9: warning: 'switch' missing 'default' label [-Wswitch-default]
 1911 |         switch (n.type) {
      |         ^
/Users/bogdb/src/nanobench/src/include/nanobench.h:2210:9: warning: 'switch' missing 'default' label [-Wswitch-default]
 2210 |         switch (mState) {
      |         ^
/Users/bogdb/src/nanobench/src/include/nanobench.h:1504:13: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 1504 |             begin += 2;
      |             ^~~~~
/Users/bogdb/src/nanobench/src/include/nanobench.h:1511:43: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 1511 |             nodes.emplace_back(Node{*tpl, *tpl + std::strlen(*tpl), std::vector<Node>{}, Node::Type::content});
      |                                           ^~~~
/Users/bogdb/src/nanobench/src/include/nanobench.h:1516:39: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 1516 |         nodes.emplace_back(Node{*tpl, begin - 2, std::vector<Node>{}, Node::Type::content});
      |                                       ^~~~~
/Users/bogdb/src/nanobench/src/include/nanobench.h:1520:16: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 1520 |         *tpl = end + 2;
      |                ^~~
/Users/bogdb/src/nanobench/src/include/nanobench.h:1528:37: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 1528 |             nodes.emplace_back(Node{begin + 1, end, parseMustacheTemplate(tpl), Node::Type::section});
      |                                     ^~~~~
/Users/bogdb/src/nanobench/src/include/nanobench.h:1533:37: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 1533 |             nodes.emplace_back(Node{begin + 1, end, parseMustacheTemplate(tpl), Node::Type::inverted_section});
      |                                     ^~~~~
10 warnings generated.
[  5%] Building CXX object CMakeFiles/nb.dir/src/test/app/doctest.cpp.o
In file included from /Users/bogdb/src/nanobench/src/test/app/doctest.cpp:2:
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:611:47: warning: unsafe buffer access [-Wunsafe-buffer-usage]
  611 |     bool isOnStack() const noexcept { return (buf[last] & 128) == 0; }
      |                                               ^~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3308:16: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 3308 |         for(;; a++, b++) {
      |                ^
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3308:21: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 3308 |         for(;; a++, b++) {
      |                     ^
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3505:20: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 3505 |             return m_atomics[tlsLaneIdx].atomic;
      |                    ^~~~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3600:9: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 3600 |         buf[sz] = '\0';
      |         ^~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3608:9: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 3608 |         data.ptr[sz] = '\0';
      |         ^~~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3613:72: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 3613 | void String::setOnHeap() noexcept { *reinterpret_cast<unsigned char*>(&buf[last]) = 128; }
      |                                                                        ^~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3614:47: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 3614 | void String::setLast(size_type in) noexcept { buf[last] = char(in); }
      |                                               ^~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3616:24: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 3616 |     if (isOnStack()) { buf[sz] = '\0'; setLast(last - sz); }
      |                        ^~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3617:12: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 3617 |     else { data.ptr[sz] = '\0'; data.size = sz; }
      |            ^~~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3669:20: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 3669 |             memcpy(buf + my_old_size, other.c_str(), other_size + 1);
      |                    ^~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3683:20: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 3683 |             memcpy(data.ptr + my_old_size, other.c_str(), other_size + 1);
      |                    ^~~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3689:20: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 3689 |             memcpy(data.ptr + my_old_size, other.c_str(), other_size + 1);
      |                    ^~~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3705:20: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 3705 |             memcpy(data.ptr + my_old_size, other.c_str(), other_size + 1);
      |                    ^~~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3735:16: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 3735 |         return reinterpret_cast<char*>(buf)[i];
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3736:12: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 3736 |     return data.ptr[i];
      |            ^~~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3742:34: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 3742 |         return last - (size_type(buf[last]) & 31); // using "last" would work only if "len" is 32
      |                                  ^~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3756:19: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 3756 |     memmove(cptr, cptr + pos, cnt);
      |                   ^~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3763:20: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 3763 |     return String{ c_str() + pos, cnt };
      |                    ^~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3768:23: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 3768 |     const char* end = begin + size();
      |                       ^~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3769:22: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 3769 |     const char* it = begin + pos;
      |                      ^~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3770:35: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 3770 |     for (; it < end && *it != ch; it++);
      |                                   ^~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3777:22: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 3777 |     const char* it = begin + std::min(pos, size() - 1);
      |                      ^~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3778:38: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 3778 |     for (; it >= begin && *it != ch; it--);
      |                                      ^~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:3892:20: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 3892 |             return forward + 1;
      |                    ^~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:4122:13: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 4122 |             wild++;
      |             ^~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:4123:13: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 4123 |             str++;
      |             ^~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:4128:24: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 4128 |                 if(!*++wild) {
      |                        ^~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:4132:22: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 4132 |                 cp = str + 1;
      |                      ^~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:4135:17: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 4135 |                 wild++;
      |                 ^~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:4136:17: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 4136 |                 str++;
      |                 ^~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:4139:24: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 4139 |                 str  = cp++; //!OCLINT parameter reassignment
      |                        ^~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:4144:13: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 4144 |             wild++;
      |             ^~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:4170:22: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 4170 |         while ((c = *str++))
      |                      ^~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:4803:35: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 4803 |                 SignalDefs& def = signalDefs[i];
      |                                   ^~~~~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:4833:27: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 4833 |                 sigaction(signalDefs[i].id, &sa, &oldSigActions[i]);
      |                           ^~~~~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:4833:51: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 4833 |                 sigaction(signalDefs[i].id, &sa, &oldSigActions[i]);
      |                                                   ^~~~~~~~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:4842:31: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 4842 |                     sigaction(signalDefs[i].id, &oldSigActions[i], nullptr);
      |                               ^~~~~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:4842:50: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 4842 |                     sigaction(signalDefs[i].id, &oldSigActions[i], nullptr);
      |                                                  ^~~~~~~~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:5434:21: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 5434 |                     contexts[i]->stringify(&ss);
      |                     ^~~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:5492:74: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 5492 |                     xml.scopedElement("TestCase").writeAttribute("name", in.data[i]->m_name)
      |                                                                          ^~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:5493:54: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 5493 |                         .writeAttribute("testsuite", in.data[i]->m_test_suite)
      |                                                      ^~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:5494:74: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 5494 |                         .writeAttribute("filename", skipPathFromFilename(in.data[i]->m_file.c_str()))
      |                                                                          ^~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:5495:54: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 5495 |                         .writeAttribute("line", line(in.data[i]->m_line))
      |                                                      ^~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:5496:52: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 5496 |                         .writeAttribute("skipped", in.data[i]->m_skip);
      |                                                    ^~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:5502:75: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 5502 |                     xml.scopedElement("TestSuite").writeAttribute("name", in.data[i]->m_test_suite);
      |                                                                           ^~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:5936:21: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 5936 |                     contexts[i]->stringify(&s);
      |                     ^~~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:6014:21: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 6014 |                     contexts[i]->stringify(&s);
      |                     ^~~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:6226:41: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 6226 |                     s << Color::None << in.data[i]->m_name << "\n";
      |                                         ^~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:6239:41: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 6239 |                     s << Color::None << in.data[i]->m_test_suite << "\n";
      |                                         ^~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:6359:26: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 6359 |                       << stringified_contexts[i - 1] << "\n";
      |                          ^~~~~~~~~~~~~~~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:6454:37: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 6454 |             auto temp = std::strstr(argv[index], pattern);
      |                                     ^~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:6458:40: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 6458 |                 auto curr            = argv[index];
      |                                        ^~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:6460:25: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 6460 |                     if(*curr++ != '-') {
      |                         ^~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:6465:39: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 6465 |                 if(noBadCharsFound && argv[index][0] == '-') {
      |                                       ^~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:6468:25: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 6468 |                         temp += strlen(pattern);
      |                         ^~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:6491:40: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 6491 |         if(parseOptionImpl(argc, argv, pattern + strlen(DOCTEST_CONFIG_OPTIONS_PREFIX), value))
      |                                        ^~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:6519:31: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 6519 |             const char* end = current + strlen(current);
      |                               ^~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:6521:35: warning: unsafe pointer arithmetic [-Wunsafe-buffer-usage]
 6521 |                 char character = *current++;
      |                                   ^~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:6576:41: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 6576 |                 if (parsedValue.compare(positive[i], true) == 0) {
      |                                         ^~~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:6580:41: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 6580 |                 if (parsedValue.compare(negative[i], true) == 0) {
      |                                         ^~~~~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:6895:35: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 6895 |                 const auto temp = first[i];
      |                                   ^~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:6897:17: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 6897 |                 first[i]         = first[idxToSwap];
      |                 ^~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:6897:36: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 6897 |                 first[i]         = first[idxToSwap];
      |                                    ^~~~~
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:6898:17: warning: unsafe buffer access [-Wunsafe-buffer-usage]
 6898 |                 first[idxToSwap] = temp;
      |                 ^~~~~
65 warnings generated.
[  8%] Building CXX object CMakeFiles/nb.dir/src/test/example_always_the_same.cpp.o
In file included from /Users/bogdb/src/nanobench/src/test/example_always_the_same.cpp:2:
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:611:47: warning: unsafe buffer access [-Wunsafe-buffer-usage]
  611 |     bool isOnStack() const noexcept { return (buf[last] & 128) == 0; }
      |                                               ^~~
1 warning generated.
[ 11%] Building CXX object CMakeFiles/nb.dir/src/test/example_atomic.cpp.o
In file included from /Users/bogdb/src/nanobench/src/test/example_atomic.cpp:2:
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:611:47: warning: unsafe buffer access [-Wunsafe-buffer-usage]
  611 |     bool isOnStack() const noexcept { return (buf[last] & 128) == 0; }
      |                                               ^~~
1 warning generated.
[ 13%] Building CXX object CMakeFiles/nb.dir/src/test/example_branch_misses.cpp.o
In file included from /Users/bogdb/src/nanobench/src/test/example_branch_misses.cpp:2:
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:611:47: warning: unsafe buffer access [-Wunsafe-buffer-usage]
  611 |     bool isOnStack() const noexcept { return (buf[last] & 128) == 0; }
      |                                               ^~~
1 warning generated.
[ 16%] Building CXX object CMakeFiles/nb.dir/src/test/example_complexity.cpp.o
In file included from /Users/bogdb/src/nanobench/src/test/example_complexity.cpp:2:
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:611:47: warning: unsafe buffer access [-Wunsafe-buffer-usage]
  611 |     bool isOnStack() const noexcept { return (buf[last] & 128) == 0; }
      |                                               ^~~
1 warning generated.
[ 19%] Building CXX object CMakeFiles/nb.dir/src/test/example_containers.cpp.o
In file included from /Users/bogdb/src/nanobench/src/test/example_containers.cpp:2:
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:611:47: warning: unsafe buffer access [-Wunsafe-buffer-usage]
  611 |     bool isOnStack() const noexcept { return (buf[last] & 128) == 0; }
      |                                               ^~~
1 warning generated.
[ 22%] Building CXX object CMakeFiles/nb.dir/src/test/example_csv.cpp.o
In file included from /Users/bogdb/src/nanobench/src/test/example_csv.cpp:2:
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:611:47: warning: unsafe buffer access [-Wunsafe-buffer-usage]
  611 |     bool isOnStack() const noexcept { return (buf[last] & 128) == 0; }
      |                                               ^~~
1 warning generated.
[ 25%] Building CXX object CMakeFiles/nb.dir/src/test/example_hide_output.cpp.o
In file included from /Users/bogdb/src/nanobench/src/test/example_hide_output.cpp:2:
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:611:47: warning: unsafe buffer access [-Wunsafe-buffer-usage]
  611 |     bool isOnStack() const noexcept { return (buf[last] & 128) == 0; }
      |                                               ^~~
1 warning generated.
[ 27%] Building CXX object CMakeFiles/nb.dir/src/test/example_preconfigured_name.cpp.o
In file included from /Users/bogdb/src/nanobench/src/test/example_preconfigured_name.cpp:2:
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:611:47: warning: unsafe buffer access [-Wunsafe-buffer-usage]
  611 |     bool isOnStack() const noexcept { return (buf[last] & 128) == 0; }
      |                                               ^~~
1 warning generated.
[ 30%] Building CXX object CMakeFiles/nb.dir/src/test/example_pyperf.cpp.o
In file included from /Users/bogdb/src/nanobench/src/test/example_pyperf.cpp:2:
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:611:47: warning: unsafe buffer access [-Wunsafe-buffer-usage]
  611 |     bool isOnStack() const noexcept { return (buf[last] & 128) == 0; }
      |                                               ^~~
1 warning generated.
[ 33%] Building CXX object CMakeFiles/nb.dir/src/test/example_random_number_generators.cpp.o
In file included from /Users/bogdb/src/nanobench/src/test/example_random_number_generators.cpp:6:
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:611:47: warning: unsafe buffer access [-Wunsafe-buffer-usage]
  611 |     bool isOnStack() const noexcept { return (buf[last] & 128) == 0; }
      |                                               ^~~
1 warning generated.
[ 36%] Building CXX object CMakeFiles/nb.dir/src/test/example_random_uniform01.cpp.o
In file included from /Users/bogdb/src/nanobench/src/test/example_random_uniform01.cpp:2:
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:611:47: warning: unsafe buffer access [-Wunsafe-buffer-usage]
  611 |     bool isOnStack() const noexcept { return (buf[last] & 128) == 0; }
      |                                               ^~~
1 warning generated.
[ 38%] Building CXX object CMakeFiles/nb.dir/src/test/example_random2.cpp.o
In file included from /Users/bogdb/src/nanobench/src/test/example_random2.cpp:2:
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:611:47: warning: unsafe buffer access [-Wunsafe-buffer-usage]
  611 |     bool isOnStack() const noexcept { return (buf[last] & 128) == 0; }
      |                                               ^~~
1 warning generated.
[ 41%] Building CXX object CMakeFiles/nb.dir/src/test/example_shuffle.cpp.o
In file included from /Users/bogdb/src/nanobench/src/test/example_shuffle.cpp:2:
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:611:47: warning: unsafe buffer access [-Wunsafe-buffer-usage]
  611 |     bool isOnStack() const noexcept { return (buf[last] & 128) == 0; }
      |                                               ^~~
1 warning generated.
[ 44%] Building CXX object CMakeFiles/nb.dir/src/test/tutorial_complexity_set.cpp.o
In file included from /Users/bogdb/src/nanobench/src/test/tutorial_complexity_set.cpp:2:
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:611:47: warning: unsafe buffer access [-Wunsafe-buffer-usage]
  611 |     bool isOnStack() const noexcept { return (buf[last] & 128) == 0; }
      |                                               ^~~
1 warning generated.
[ 47%] Building CXX object CMakeFiles/nb.dir/src/test/tutorial_complexity_sort.cpp.o
In file included from /Users/bogdb/src/nanobench/src/test/tutorial_complexity_sort.cpp:2:
/Users/bogdb/src/nanobench/src/test/thirdparty/doctest/doctest.h:611:47: warning: unsafe buffer access [-Wunsafe-buffer-usage]
  611 |     bool isOnStack() const noexcept { return (buf[last] & 128) == 0; }
      |                                               ^~~
1 warning generated.
[ 50%] Building CXX object CMakeFiles/nb.dir/src/test/tutorial_context.cpp.o
/Users/bogdb/src/nanobench/src/test/tutorial_context.cpp:42:10: error: no matching member function for call to 'run'
   39 |     bench.context("scalar", "f32")
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   40 |         .context("foo", "bar")
      |         ~~~~~~~~~~~~~~~~~~~~~~
   41 |         .run("+=", plus_eq<float>)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~
   42 |         .run("fma", fma<float>);
      |         ~^~~
/Users/bogdb/src/nanobench/src/include/nanobench.h:1234:15: note: candidate template ignored: couldn't infer template argument 'Op'
 1234 | Bench& Bench::run(char const* benchmarkName, Op&& op) {
      |               ^
/Users/bogdb/src/nanobench/src/include/nanobench.h:1240:15: note: candidate template ignored: couldn't infer template argument 'Op'
 1240 | Bench& Bench::run(std::string const& benchmarkName, Op&& op) {
      |               ^
/Users/bogdb/src/nanobench/src/include/nanobench.h:1212:15: note: candidate function template not viable: requires single argument 'op', but 2 arguments were provided
 1212 | Bench& Bench::run(Op&& op) {
      |               ^   ~~~~~~~
/Users/bogdb/src/nanobench/src/test/tutorial_context.cpp:46:10: error: no matching member function for call to 'run'
   43 |     bench.context("scalar", "f64")
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   44 |         .context("foo", "baz")
      |         ~~~~~~~~~~~~~~~~~~~~~~
   45 |         .run("+=", plus_eq<double>)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
   46 |         .run("fma", fma<double>);
      |         ~^~~
/Users/bogdb/src/nanobench/src/include/nanobench.h:1234:15: note: candidate template ignored: couldn't infer template argument 'Op'
 1234 | Bench& Bench::run(char const* benchmarkName, Op&& op) {
      |               ^
/Users/bogdb/src/nanobench/src/include/nanobench.h:1240:15: note: candidate template ignored: couldn't infer template argument 'Op'
 1240 | Bench& Bench::run(std::string const& benchmarkName, Op&& op) {
      |               ^
/Users/bogdb/src/nanobench/src/include/nanobench.h:1212:15: note: candidate function template not viable: requires single argument 'op', but 2 arguments were provided
 1212 | Bench& Bench::run(Op&& op) {
      |               ^   ~~~~~~~
2 errors generated.
make[2]: *** [CMakeFiles/nb.dir/build.make:317: CMakeFiles/nb.dir/src/test/tutorial_context.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:219: CMakeFiles/nb.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

Note that on linux I don't have this problem.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions