From c6b8c99f8ee0fec77ee4ae4b346e99ba387c0eab Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Sat, 12 Sep 2026 10:23:58 +0100 Subject: [PATCH 1/3] Removed ETL_USE_TYPE_TRAITS_BUILTINS macro --- .github/workflows/clang-c++11.yml | 6 +- .github/workflows/clang-c++14.yml | 6 +- .github/workflows/clang-c++17.yml | 6 +- .github/workflows/clang-c++20.yml | 16 +- .github/workflows/clang-c++23.yml | 16 +- .github/workflows/clang-c++26.yml | 18 +- .github/workflows/clang-syntax-checks.yml | 52 ++--- .github/workflows/gcc-c++11.yml | 4 +- .github/workflows/gcc-c++14.yml | 4 +- .github/workflows/gcc-c++17.yml | 4 +- .github/workflows/gcc-c++20.yml | 8 +- .github/workflows/gcc-c++23-armhf.yml | 2 +- .github/workflows/gcc-c++23-i386.yml | 2 +- .github/workflows/gcc-c++23-powerpc.yml | 2 +- .github/workflows/gcc-c++23-riscv64.yml | 2 +- .github/workflows/gcc-c++23-s390x.yml | 2 +- .github/workflows/gcc-c++23.yml | 8 +- .github/workflows/gcc-c++26.yml | 8 +- .github/workflows/gcc-syntax-checks.yml | 52 ++--- .github/workflows/msvc.yml | 8 +- include/etl/memory.h | 15 +- include/etl/private/variant_variadic.h | 2 +- .../etl/profiles/determine_builtin_support.h | 188 ++++++------------ include/etl/type_traits.h | 2 +- test/CMakeLists.txt | 5 - test/run-coverage.sh | 2 +- test/run-syntax-checks.sh | 32 ++- test/run-tests.sh | 22 +- test/syntax_check/CMakeLists.txt | 5 - test/test_etl_traits.cpp | 38 ++++ test/test_optional.cpp | 2 +- test/test_type_traits.cpp | 6 +- 32 files changed, 240 insertions(+), 305 deletions(-) diff --git a/.github/workflows/clang-c++11.yml b/.github/workflows/clang-c++11.yml index 39c0a0a4..2747e156 100644 --- a/.github/workflows/clang-c++11.yml +++ b/.github/workflows/clang-c++11.yml @@ -50,7 +50,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -78,7 +78,7 @@ jobs: export CXX=clang++ export CXXFLAGS="-stdlib=libc++" export LDFLAGS="-stdlib=libc++" - cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -99,7 +99,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" diff --git a/.github/workflows/clang-c++14.yml b/.github/workflows/clang-c++14.yml index e7909302..b72f896a 100644 --- a/.github/workflows/clang-c++14.yml +++ b/.github/workflows/clang-c++14.yml @@ -50,7 +50,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -78,7 +78,7 @@ jobs: export CXX=clang++ export CXXFLAGS="-stdlib=libc++" export LDFLAGS="-stdlib=libc++" - cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -99,7 +99,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" diff --git a/.github/workflows/clang-c++17.yml b/.github/workflows/clang-c++17.yml index 54b05957..8fdb32bf 100644 --- a/.github/workflows/clang-c++17.yml +++ b/.github/workflows/clang-c++17.yml @@ -50,7 +50,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -78,7 +78,7 @@ jobs: export CXX=clang++ export CXXFLAGS="-stdlib=libc++" export LDFLAGS="-stdlib=libc++" - cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -99,7 +99,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" diff --git a/.github/workflows/clang-c++20.yml b/.github/workflows/clang-c++20.yml index eb6d6bf5..5a84a5d4 100644 --- a/.github/workflows/clang-c++20.yml +++ b/.github/workflows/clang-c++20.yml @@ -62,7 +62,7 @@ jobs: export CXX=clang++-17 export CXXFLAGS="-stdlib=libc++" export LDFLAGS="-stdlib=libc++" - cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./ clang-17 --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -90,7 +90,7 @@ jobs: run: | export CC=clang-17 export CXX=clang++-17 - cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./ + cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./ clang-17 --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -118,7 +118,7 @@ jobs: run: | export CC=clang-17 export CXX=clang++-17 - cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./ clang-17 --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -146,7 +146,7 @@ jobs: run: | export CC=clang-17 export CXX=clang++-17 - cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./ clang-17 --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -167,7 +167,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -188,7 +188,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -209,7 +209,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -230,7 +230,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" diff --git a/.github/workflows/clang-c++23.yml b/.github/workflows/clang-c++23.yml index 97ba5af3..56540778 100644 --- a/.github/workflows/clang-c++23.yml +++ b/.github/workflows/clang-c++23.yml @@ -57,7 +57,7 @@ jobs: export CXX=clang++ export CXXFLAGS="-stdlib=libc++" export LDFLAGS="-stdlib=libc++" - cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./ + cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -86,7 +86,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./ + cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -107,7 +107,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./ + cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -128,7 +128,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./ + cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -149,7 +149,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./ + cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -170,7 +170,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./ + cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -191,7 +191,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./ + cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -212,7 +212,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./ + cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 -DETL_ENABLE_SANITIZER=ON ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" diff --git a/.github/workflows/clang-c++26.yml b/.github/workflows/clang-c++26.yml index 5905289a..05efeec2 100644 --- a/.github/workflows/clang-c++26.yml +++ b/.github/workflows/clang-c++26.yml @@ -55,7 +55,7 @@ jobs: export CXX=clang++ && \ export CXXFLAGS=-stdlib=libc++ && \ export LDFLAGS=-stdlib=libc++ && \ - cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \ + cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \ clang --version && \ make -j \$(getconf _NPROCESSORS_ONLN) && \ ./test/etl_tests -v" @@ -76,7 +76,7 @@ jobs: cd /workspaces/etl && \ export CC=clang && \ export CXX=clang++ && \ - cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \ + cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \ clang --version && \ make -j \$(getconf _NPROCESSORS_ONLN) && \ ./test/etl_tests -v" @@ -97,7 +97,7 @@ jobs: cd /workspaces/etl && \ export CC=clang && \ export CXX=clang++ && \ - cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \ + cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \ clang --version && \ make -j \$(getconf _NPROCESSORS_ONLN) && \ ./test/etl_tests -v" @@ -118,7 +118,7 @@ jobs: cd /workspaces/etl && \ export CC=clang && \ export CXX=clang++ && \ - cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ && \ + cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ && \ clang --version && \ make -j \$(getconf _NPROCESSORS_ONLN) && \ ./test/etl_tests -v" @@ -139,7 +139,7 @@ jobs: cd /workspaces/etl && \ export CC=clang && \ export CXX=clang++ && \ - cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ && \ + cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ && \ clang --version && \ make -j \$(getconf _NPROCESSORS_ONLN) && \ ./test/etl_tests -v" @@ -158,7 +158,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -179,7 +179,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -200,7 +200,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -221,7 +221,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ + cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ clang --version make -j "$(getconf _NPROCESSORS_ONLN)" diff --git a/.github/workflows/clang-syntax-checks.yml b/.github/workflows/clang-syntax-checks.yml index 25795ebe..8d1ddf1b 100644 --- a/.github/workflows/clang-syntax-checks.yml +++ b/.github/workflows/clang-syntax-checks.yml @@ -49,7 +49,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -67,7 +67,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -85,7 +85,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -103,7 +103,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -121,7 +121,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -139,7 +139,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -157,7 +157,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -175,7 +175,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -193,7 +193,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -211,7 +211,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -229,7 +229,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -247,7 +247,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -265,7 +265,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -283,7 +283,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -301,7 +301,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -319,7 +319,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -337,7 +337,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -355,7 +355,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -373,7 +373,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -391,7 +391,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -409,7 +409,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -427,7 +427,7 @@ jobs: run: | export CC=clang export CXX=clang++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check clang --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -447,7 +447,7 @@ jobs: cd /workspaces/etl && \ export CC=clang && \ export CXX=clang++ && \ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./test/syntax_check && \ + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./test/syntax_check && \ clang++ --version && \ make -j \$(getconf _NPROCESSORS_ONLN)" @@ -467,7 +467,7 @@ jobs: cd /workspaces/etl && \ export CC=clang && \ export CXX=clang++ && \ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./test/syntax_check && \ + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./test/syntax_check && \ clang++ --version && \ make -j \$(getconf _NPROCESSORS_ONLN)" @@ -487,7 +487,7 @@ jobs: cd /workspaces/etl && \ export CC=clang && \ export CXX=clang++ && \ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./test/syntax_check && \ + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./test/syntax_check && \ clang++ --version && \ make -j \$(getconf _NPROCESSORS_ONLN)" @@ -507,6 +507,6 @@ jobs: cd /workspaces/etl && \ export CC=clang && \ export CXX=clang++ && \ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./test/syntax_check && \ + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./test/syntax_check && \ clang++ --version && \ make -j \$(getconf _NPROCESSORS_ONLN)" diff --git a/.github/workflows/gcc-c++11.yml b/.github/workflows/gcc-c++11.yml index 71a5809e..3cbdd12a 100644 --- a/.github/workflows/gcc-c++11.yml +++ b/.github/workflows/gcc-c++11.yml @@ -51,7 +51,7 @@ jobs: git fetch export CC=gcc export CXX=g++ - cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./ + cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./ gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -73,7 +73,7 @@ jobs: git fetch export CC=gcc export CXX=g++ - cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./ + cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./ gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" diff --git a/.github/workflows/gcc-c++14.yml b/.github/workflows/gcc-c++14.yml index 0cb6dc2c..45791462 100644 --- a/.github/workflows/gcc-c++14.yml +++ b/.github/workflows/gcc-c++14.yml @@ -50,7 +50,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./ + cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./ gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -71,7 +71,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./ + cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./ gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" diff --git a/.github/workflows/gcc-c++17.yml b/.github/workflows/gcc-c++17.yml index 4968a87d..23a9cc39 100644 --- a/.github/workflows/gcc-c++17.yml +++ b/.github/workflows/gcc-c++17.yml @@ -50,7 +50,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./ + cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./ gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -71,7 +71,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./ + cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./ gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" diff --git a/.github/workflows/gcc-c++20.yml b/.github/workflows/gcc-c++20.yml index 68be97d8..8561b6b8 100644 --- a/.github/workflows/gcc-c++20.yml +++ b/.github/workflows/gcc-c++20.yml @@ -50,7 +50,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./ + cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./ gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -71,7 +71,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./ + cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./ gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -92,7 +92,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./ + cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./ gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -113,7 +113,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./ + cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./ gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" diff --git a/.github/workflows/gcc-c++23-armhf.yml b/.github/workflows/gcc-c++23-armhf.yml index 00cb78d6..0c82ac33 100644 --- a/.github/workflows/gcc-c++23-armhf.yml +++ b/.github/workflows/gcc-c++23-armhf.yml @@ -49,7 +49,7 @@ jobs: - name: Build and run tests run: | docker run --rm --user root -v ${{ github.workspace }}:/workspaces/etl etl-armhf bash -c "\ - cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \ + cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \ -DETL_CXX_STANDARD=23 -DCMAKE_TOOLCHAIN_FILE=.devcontainer/armhf/toolchain-armhf.cmake \ -DEXTRA_TESTING_FLAGS=-v \ ./ && \ diff --git a/.github/workflows/gcc-c++23-i386.yml b/.github/workflows/gcc-c++23-i386.yml index dec5833f..9ea63944 100644 --- a/.github/workflows/gcc-c++23-i386.yml +++ b/.github/workflows/gcc-c++23-i386.yml @@ -49,7 +49,7 @@ jobs: - name: Build and run tests run: | docker run --rm --user root -v ${{ github.workspace }}:/workspaces/etl etl-i386 bash -c "\ - cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \ + cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \ -DETL_CXX_STANDARD=23 -DCMAKE_TOOLCHAIN_FILE=.devcontainer/i386/toolchain-i386.cmake \ -DEXTRA_TESTING_FLAGS=-v \ ./ && \ diff --git a/.github/workflows/gcc-c++23-powerpc.yml b/.github/workflows/gcc-c++23-powerpc.yml index 71a90f20..58d3e36b 100644 --- a/.github/workflows/gcc-c++23-powerpc.yml +++ b/.github/workflows/gcc-c++23-powerpc.yml @@ -49,7 +49,7 @@ jobs: - name: Build and run tests run: | docker run --rm --user root -v ${{ github.workspace }}:/workspaces/etl etl-powerpc bash -c "\ - cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \ + cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \ -DETL_CXX_STANDARD=23 -DCMAKE_TOOLCHAIN_FILE=.devcontainer/powerpc/toolchain-powerpc.cmake \ -DEXTRA_TESTING_FLAGS=-v \ ./ && \ diff --git a/.github/workflows/gcc-c++23-riscv64.yml b/.github/workflows/gcc-c++23-riscv64.yml index b7a2611d..7732ea8b 100644 --- a/.github/workflows/gcc-c++23-riscv64.yml +++ b/.github/workflows/gcc-c++23-riscv64.yml @@ -49,7 +49,7 @@ jobs: - name: Build and run tests run: | docker run --rm --user root -v ${{ github.workspace }}:/workspaces/etl etl-riscv64 bash -c "\ - cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \ + cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \ -DETL_CXX_STANDARD=23 -DCMAKE_TOOLCHAIN_FILE=.devcontainer/riscv64/toolchain-riscv64.cmake \ -DEXTRA_TESTING_FLAGS=-v \ ./ && \ diff --git a/.github/workflows/gcc-c++23-s390x.yml b/.github/workflows/gcc-c++23-s390x.yml index 365f44dc..b4d3db6d 100644 --- a/.github/workflows/gcc-c++23-s390x.yml +++ b/.github/workflows/gcc-c++23-s390x.yml @@ -49,7 +49,7 @@ jobs: - name: Build and run tests run: | docker run --rm --user root -v ${{ github.workspace }}:/workspaces/etl etl-s390x bash -c "\ - cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \ + cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \ -DETL_CXX_STANDARD=23 -DCMAKE_TOOLCHAIN_FILE=.devcontainer/s390x/toolchain-s390x.cmake \ -DEXTRA_TESTING_FLAGS=-v \ ./ && \ diff --git a/.github/workflows/gcc-c++23.yml b/.github/workflows/gcc-c++23.yml index 65cf7dc4..dc559c30 100644 --- a/.github/workflows/gcc-c++23.yml +++ b/.github/workflows/gcc-c++23.yml @@ -50,7 +50,7 @@ jobs: run: | export CC=gcc-14 export CXX=g++-14 - cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 ./ + cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 ./ gcc-14 --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -71,7 +71,7 @@ jobs: run: | export CC=gcc-14 export CXX=g++-14 - cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 ./ + cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 ./ gcc-14 --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -92,7 +92,7 @@ jobs: run: | export CC=gcc-14 export CXX=g++-14 - cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 ./ + cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 ./ gcc-14 --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -113,7 +113,7 @@ jobs: run: | export CC=gcc-14 export CXX=g++-14 - cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 ./ + cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 -DETL_OPTIMISATION=-O3 ./ gcc-14 --version make -j "$(getconf _NPROCESSORS_ONLN)" diff --git a/.github/workflows/gcc-c++26.yml b/.github/workflows/gcc-c++26.yml index 38506641..28059334 100644 --- a/.github/workflows/gcc-c++26.yml +++ b/.github/workflows/gcc-c++26.yml @@ -52,7 +52,7 @@ jobs: cd /workspaces/etl && \ export CC=gcc && \ export CXX=g++ && \ - cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \ + cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \ gcc --version && \ make -j \$(getconf _NPROCESSORS_ONLN) && \ ./test/etl_tests -v" @@ -73,7 +73,7 @@ jobs: cd /workspaces/etl && \ export CC=gcc && \ export CXX=g++ && \ - cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \ + cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./ && \ gcc --version && \ make -j \$(getconf _NPROCESSORS_ONLN) && \ ./test/etl_tests -v" @@ -94,7 +94,7 @@ jobs: cd /workspaces/etl && \ export CC=gcc && \ export CXX=g++ && \ - cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ && \ + cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ && \ gcc --version && \ make -j \$(getconf _NPROCESSORS_ONLN) && \ ./test/etl_tests -v" @@ -115,7 +115,7 @@ jobs: cd /workspaces/etl && \ export CC=gcc && \ export CXX=g++ && \ - cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ && \ + cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./ && \ gcc --version && \ make -j \$(getconf _NPROCESSORS_ONLN) && \ ./test/etl_tests -v" diff --git a/.github/workflows/gcc-syntax-checks.yml b/.github/workflows/gcc-syntax-checks.yml index 0faa94c0..180b2c1b 100644 --- a/.github/workflows/gcc-syntax-checks.yml +++ b/.github/workflows/gcc-syntax-checks.yml @@ -49,7 +49,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -67,7 +67,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -85,7 +85,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -103,7 +103,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -121,7 +121,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -139,7 +139,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -157,7 +157,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -175,7 +175,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -193,7 +193,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -211,7 +211,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -229,7 +229,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -247,7 +247,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -265,7 +265,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -283,7 +283,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -301,7 +301,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -319,7 +319,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -337,7 +337,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -355,7 +355,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -373,7 +373,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -391,7 +391,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -409,7 +409,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -427,7 +427,7 @@ jobs: run: | export CC=gcc export CXX=g++ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check gcc --version make -j "$(getconf _NPROCESSORS_ONLN)" @@ -447,7 +447,7 @@ jobs: cd /workspaces/etl && \ export CC=gcc && \ export CXX=g++ && \ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./test/syntax_check && \ + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./test/syntax_check && \ gcc --version && \ make -j \$(getconf _NPROCESSORS_ONLN)" @@ -467,7 +467,7 @@ jobs: cd /workspaces/etl && \ export CC=gcc && \ export CXX=g++ && \ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./test/syntax_check && \ + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=26 ./test/syntax_check && \ gcc --version && \ make -j \$(getconf _NPROCESSORS_ONLN)" @@ -487,7 +487,7 @@ jobs: cd /workspaces/etl && \ export CC=gcc && \ export CXX=g++ && \ - cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./test/syntax_check && \ + cmake -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./test/syntax_check && \ gcc --version && \ make -j \$(getconf _NPROCESSORS_ONLN)" @@ -507,6 +507,6 @@ jobs: cd /workspaces/etl && \ export CC=gcc && \ export CXX=g++ && \ - cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./test/syntax_check && \ + cmake -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=26 ./test/syntax_check && \ gcc --version && \ make -j \$(getconf _NPROCESSORS_ONLN)" diff --git a/.github/workflows/msvc.yml b/.github/workflows/msvc.yml index dd5d3e45..2f7fcae0 100644 --- a/.github/workflows/msvc.yml +++ b/.github/workflows/msvc.yml @@ -54,7 +54,7 @@ jobs: - name: Build run: | - cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=${{ matrix.cxx_standard }} ./ + cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=${{ matrix.cxx_standard }} ./ MSBuild.exe -version MSBuild.exe .\etl.sln @@ -79,7 +79,7 @@ jobs: - name: Build run: | - cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=${{ matrix.cxx_standard }} ./ + cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=${{ matrix.cxx_standard }} ./ MSBuild.exe -version MSBuild.exe .\etl.sln @@ -105,7 +105,7 @@ jobs: - name: Build run: | - cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=${{ matrix.cxx_standard }} ./ + cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=${{ matrix.cxx_standard }} ./ MSBuild.exe -version MSBuild.exe .\etl.sln @@ -131,7 +131,7 @@ jobs: - name: Build run: | - cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=${{ matrix.cxx_standard }} ./ + cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=${{ matrix.cxx_standard }} ./ MSBuild.exe -version MSBuild.exe .\etl.sln diff --git a/include/etl/memory.h b/include/etl/memory.h index 742766c5..a1ddcadf 100644 --- a/include/etl/memory.h +++ b/include/etl/memory.h @@ -132,14 +132,7 @@ namespace etl #endif ETL_STATIC_ASSERT(!etl::is_void::value, "etl::launder argument must not be a void type"); - #if defined(__has_builtin) && !defined(ETL_COMPILER_MICROSOFT) - #if __has_builtin(__builtin_launder) - return __builtin_launder(p); - #else - return p; - #endif - #elif ETL_USING_GCC_COMPILER && (ETL_COMPILER_FULL_VERSION >= 70000) - // GCC 7, 8 and 9 provide __builtin_launder but not __has_builtin. + #if ETL_USING_BUILTIN_LAUNDER return __builtin_launder(p); #else return p; @@ -400,12 +393,8 @@ namespace etl template ETL_NODISCARD ETL_CONSTEXPR T* assume_aligned(T* ptr) ETL_NOEXCEPT { - #if defined(__has_builtin) && !defined(ETL_COMPILER_MICROSOFT) - #if __has_builtin(__builtin_assume_aligned) + #if ETL_USING_BUILTIN_ASSUME_ALIGNED return static_cast(__builtin_assume_aligned(ptr, N)); - #else - return ptr; - #endif #else return ptr; #endif diff --git a/include/etl/private/variant_variadic.h b/include/etl/private/variant_variadic.h index 4161aa31..ea955f14 100644 --- a/include/etl/private/variant_variadic.h +++ b/include/etl/private/variant_variadic.h @@ -417,7 +417,7 @@ namespace etl } #endif - #if ETL_NOT_USING_STL && !defined(ETL_USE_TYPE_TRAITS_BUILTINS) + #if ETL_NOT_USING_STL template <> struct is_copy_constructible : public etl::true_type { diff --git a/include/etl/profiles/determine_builtin_support.h b/include/etl/profiles/determine_builtin_support.h index 994cbadf..048868c5 100644 --- a/include/etl/profiles/determine_builtin_support.h +++ b/include/etl/profiles/determine_builtin_support.h @@ -31,137 +31,18 @@ SOFTWARE. #ifndef ETL_DETERMINE_BUILTIN_SUPPORT_H_INCLUDED #define ETL_DETERMINE_BUILTIN_SUPPORT_H_INCLUDED -#if defined(ETL_USE_TYPE_TRAITS_BUILTINS) // Set all of them to be true if not - // already defined - #if !defined(ETL_USING_BUILTIN_IS_ASSIGNABLE) - #define ETL_USING_BUILTIN_IS_ASSIGNABLE 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_CONSTRUCTIBLE) - #define ETL_USING_BUILTIN_IS_CONSTRUCTIBLE 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_NOTHROW_CONSTRUCTIBLE) - #define ETL_USING_BUILTIN_IS_NOTHROW_CONSTRUCTIBLE 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_NOTHROW_ASSIGNABLE) - #define ETL_USING_BUILTIN_IS_NOTHROW_ASSIGNABLE 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE) - #define ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE 1 - #endif - - #if !defined(ETL_USING_BUILTIN_HAS_TRIVIAL_CONSTRUCTOR) - #define ETL_USING_BUILTIN_HAS_TRIVIAL_CONSTRUCTOR 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_ASSIGNABLE) - #define ETL_USING_BUILTIN_IS_TRIVIALLY_ASSIGNABLE 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE) - #define ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE 1 - #endif - - #if !defined(ETL_USING_BUILTIN_HAS_TRIVIAL_DESTRUCTOR) - #define ETL_USING_BUILTIN_HAS_TRIVIAL_DESTRUCTOR 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_DESTRUCTIBLE) - #define ETL_USING_BUILTIN_IS_DESTRUCTIBLE 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_NOTHROW_DESTRUCTIBLE) - #define ETL_USING_BUILTIN_IS_NOTHROW_DESTRUCTIBLE 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE) - #define ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_STANDARD_LAYOUT) - #define ETL_USING_BUILTIN_IS_STANDARD_LAYOUT 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_TRIVIAL) - #define ETL_USING_BUILTIN_IS_TRIVIAL 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_LAYOUT_COMPATIBLE) - #define ETL_USING_BUILTIN_IS_LAYOUT_COMPATIBLE 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_POINTER_INTERCONVERTIBLE_BASE_OF) - #define ETL_USING_BUILTIN_IS_POINTER_INTERCONVERTIBLE_BASE_OF 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_UNION) - #define ETL_USING_BUILTIN_IS_UNION 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_EMPTY) - #define ETL_USING_BUILTIN_IS_EMPTY 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_POLYMORPHIC) - #define ETL_USING_BUILTIN_IS_POLYMORPHIC 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_ABSTRACT) - #define ETL_USING_BUILTIN_IS_ABSTRACT 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_FINAL) - #define ETL_USING_BUILTIN_IS_FINAL 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_AGGREGATE) - #define ETL_USING_BUILTIN_IS_AGGREGATE 1 - #endif - - #if !defined(ETL_USING_BUILTIN_HAS_VIRTUAL_DESTRUCTOR) - #define ETL_USING_BUILTIN_HAS_VIRTUAL_DESTRUCTOR 1 - #endif - - #if !defined(ETL_USING_BUILTIN_HAS_UNIQUE_OBJECT_REPRESENTATIONS) - #define ETL_USING_BUILTIN_HAS_UNIQUE_OBJECT_REPRESENTATIONS 1 - #endif - - #if !defined(ETL_USING_BUILTIN_UNDERLYING_TYPE) - #define ETL_USING_BUILTIN_UNDERLYING_TYPE 1 - #endif - - #if !defined(ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED) - #define ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED 1 - #endif - - #if !defined(ETL_USING_BUILTIN_BIT_CAST) - #define ETL_USING_BUILTIN_BIT_CAST 1 +#if ETL_USING_GCC_COMPILER && (ETL_COMPILER_FULL_VERSION >= 70000 && ETL_COMPILER_FULL_VERSION < 100000) && !defined(ETL_COMPILER_MICROSOFT) + // GCC 7, 8 and 9 provide __builtin_launder but not __has_builtin. + #if !defined(ETL_USING_BUILTIN_LAUNDER) + #define ETL_USING_BUILTIN_LAUNDER 1 #endif #endif -#if defined(ETL_USE_BUILTIN_MEM_FUNCTIONS) // Set all of them to be true if not - // already defined - #if !defined(ETL_USING_BUILTIN_MEMCPY) - #define ETL_USING_BUILTIN_MEMCPY 1 - #endif - - #if !defined(ETL_USING_BUILTIN_MEMMOVE) - #define ETL_USING_BUILTIN_MEMMOVE 1 - #endif - - #if !defined(ETL_USING_BUILTIN_MEMSET) - #define ETL_USING_BUILTIN_MEMSET 1 - #endif - - #if !defined(ETL_USING_BUILTIN_MEMCMP) - #define ETL_USING_BUILTIN_MEMCMP 1 - #endif - - #if !defined(ETL_USING_BUILTIN_MEMCHR) - #define ETL_USING_BUILTIN_MEMCHR 1 +#if (ETL_USING_GCC_COMPILER || ETL_USING_CLANG_COMPILER) && !defined(ETL_COMPILER_MICROSOFT) + // __builtin_constant_p predates __has_builtin on GCC and Clang, so enable it for + // those compilers when __has_builtin was not available to detect it. + #if !defined(ETL_USING_BUILTIN_CONSTANT_P) + #define ETL_USING_BUILTIN_CONSTANT_P 1 #endif #endif @@ -319,6 +200,15 @@ SOFTWARE. #if !defined(ETL_USING_BUILTIN_BUILTIN_IS_CPP_TRIVIALLY_RELOCATABLE) #define ETL_USING_BUILTIN_BUILTIN_IS_CPP_TRIVIALLY_RELOCATABLE __has_builtin(__builtin_is_cpp_trivially_relocatable) #endif + + #if !defined(ETL_USING_BUILTIN_LAUNDER) + #define ETL_USING_BUILTIN_LAUNDER __has_builtin(__builtin_launder) + #endif + + #if !defined(ETL_USING_BUILTIN_ASSUME_ALIGNED) + #define ETL_USING_BUILTIN_ASSUME_ALIGNED __has_builtin(__builtin_assume_aligned) + #endif + #endif #if defined(ETL_COMPILER_MICROSOFT) // The Microsoft compiler supports the __is_trivially_copyable @@ -531,11 +421,27 @@ SOFTWARE. #define ETL_USING_BUILTIN_BIT_CAST 0 #endif +#if !defined(ETL_USING_BUILTIN_LAUNDER) + #define ETL_USING_BUILTIN_LAUNDER 0 +#endif + +#if !defined(ETL_USING_BUILTIN_ASSUME_ALIGNED) + #define ETL_USING_BUILTIN_ASSUME_ALIGNED 0 +#endif + +#if !defined(ETL_USING_BUILTIN_HAS_TRIVIAL_CONSTRUCTOR) + #define ETL_USING_BUILTIN_HAS_TRIVIAL_CONSTRUCTOR 0 +#endif + +#if !defined(ETL_USING_BUILTIN_HAS_TRIVIAL_DESTRUCTOR) + #define ETL_USING_BUILTIN_HAS_TRIVIAL_DESTRUCTOR 0 +#endif + namespace etl { namespace traits { - // Documentation: https://www.etlcpp.com/etl_traits.html + // Documentation: https://www.etlcpp.com/docs/utilities/etl-traits/ static ETL_CONSTANT bool using_builtin_is_assignable = (ETL_USING_BUILTIN_IS_ASSIGNABLE == 1); static ETL_CONSTANT bool using_builtin_is_constructible = (ETL_USING_BUILTIN_IS_CONSTRUCTIBLE == 1); @@ -545,18 +451,36 @@ namespace etl static ETL_CONSTANT bool using_builtin_is_trivially_assignable = (ETL_USING_BUILTIN_IS_TRIVIALLY_ASSIGNABLE == 1); static ETL_CONSTANT bool using_builtin_is_trivially_destructible = (ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE == 1); static ETL_CONSTANT bool using_builtin_is_trivially_copyable = (ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE == 1); - static ETL_CONSTANT bool using_builtin_underlying_type = (ETL_USING_BUILTIN_UNDERLYING_TYPE == 1); + static ETL_CONSTANT bool using_builtin_is_destructible = (ETL_USING_BUILTIN_IS_DESTRUCTIBLE == 1); + static ETL_CONSTANT bool using_builtin_is_nothrow_destructible = (ETL_USING_BUILTIN_IS_NOTHROW_DESTRUCTIBLE == 1); + static ETL_CONSTANT bool using_builtin_is_standard_layout = (ETL_USING_BUILTIN_IS_STANDARD_LAYOUT == 1); + static ETL_CONSTANT bool using_builtin_is_trivial = (ETL_USING_BUILTIN_IS_TRIVIAL == 1); + static ETL_CONSTANT bool using_builtin_is_layout_compatible = (ETL_USING_BUILTIN_IS_LAYOUT_COMPATIBLE == 1); + static ETL_CONSTANT bool using_builtin_is_pointer_interconvertible_base_of = (ETL_USING_BUILTIN_IS_POINTER_INTERCONVERTIBLE_BASE_OF == 1); + static ETL_CONSTANT bool using_builtin_is_union = (ETL_USING_BUILTIN_IS_UNION == 1); + static ETL_CONSTANT bool using_builtin_is_empty = (ETL_USING_BUILTIN_IS_EMPTY == 1); + static ETL_CONSTANT bool using_builtin_is_polymorphic = (ETL_USING_BUILTIN_IS_POLYMORPHIC == 1); + static ETL_CONSTANT bool using_builtin_is_abstract = (ETL_USING_BUILTIN_IS_ABSTRACT == 1); + static ETL_CONSTANT bool using_builtin_is_final = (ETL_USING_BUILTIN_IS_FINAL == 1); + static ETL_CONSTANT bool using_builtin_is_aggregate = (ETL_USING_BUILTIN_IS_AGGREGATE == 1); static ETL_CONSTANT bool using_builtin_is_constant_evaluated = (ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED == 1); + static ETL_CONSTANT bool using_builtin_is_virtual_base_of = (ETL_USING_BUILTIN_IS_VIRTUAL_BASE_OF == 1); + static ETL_CONSTANT bool using_builtin_is_trivially_relocatable = (ETL_USING_BUILTIN_IS_TRIVIALLY_RELOCATABLE == 1); + static ETL_CONSTANT bool using_builtin_has_unique_object_representations = (ETL_USING_BUILTIN_HAS_UNIQUE_OBJECT_REPRESENTATIONS == 1); + static ETL_CONSTANT bool using_builtin_has_trivial_constructor = (ETL_USING_BUILTIN_HAS_TRIVIAL_CONSTRUCTOR == 1); + static ETL_CONSTANT bool using_builtin_has_trivial_destructor = (ETL_USING_BUILTIN_HAS_TRIVIAL_DESTRUCTOR == 1); + static ETL_CONSTANT bool using_builtin_has_virtual_destructor = (ETL_USING_BUILTIN_HAS_VIRTUAL_DESTRUCTOR == 1); + static ETL_CONSTANT bool using_builtin_underlying_type = (ETL_USING_BUILTIN_UNDERLYING_TYPE == 1); static ETL_CONSTANT bool using_builtin_constant_p = (ETL_USING_BUILTIN_CONSTANT_P == 1); static ETL_CONSTANT bool using_builtin_memcpy = (ETL_USING_BUILTIN_MEMCPY == 1); static ETL_CONSTANT bool using_builtin_memmove = (ETL_USING_BUILTIN_MEMMOVE == 1); static ETL_CONSTANT bool using_builtin_memset = (ETL_USING_BUILTIN_MEMSET == 1); static ETL_CONSTANT bool using_builtin_memcmp = (ETL_USING_BUILTIN_MEMCMP == 1); static ETL_CONSTANT bool using_builtin_memchr = (ETL_USING_BUILTIN_MEMCHR == 1); - static ETL_CONSTANT bool using_builtin_is_virtual_base_of = (ETL_USING_BUILTIN_IS_VIRTUAL_BASE_OF == 1); - static ETL_CONSTANT bool using_builtin_is_trivially_relocatable = (ETL_USING_BUILTIN_IS_TRIVIALLY_RELOCATABLE == 1); static ETL_CONSTANT bool using_builtin_builtin_is_cpp_trivially_relocatable = (ETL_USING_BUILTIN_BUILTIN_IS_CPP_TRIVIALLY_RELOCATABLE == 1); static ETL_CONSTANT bool using_builtin_bit_cast = (ETL_USING_BUILTIN_BIT_CAST == 1); + static ETL_CONSTANT bool using_builtin_launder = (ETL_USING_BUILTIN_LAUNDER == 1); + static ETL_CONSTANT bool using_builtin_assume_aligned = (ETL_USING_BUILTIN_ASSUME_ALIGNED == 1); } // namespace traits } // namespace etl diff --git a/include/etl/type_traits.h b/include/etl/type_traits.h index a7df81ae..fa5f3b2b 100644 --- a/include/etl/type_traits.h +++ b/include/etl/type_traits.h @@ -3318,7 +3318,7 @@ namespace etl #endif //*************************************************************************** -#if ETL_USING_STL && ETL_USING_CPP11 && !defined(ETL_USE_TYPE_TRAITS_BUILTINS) && !defined(ETL_USER_DEFINED_TYPE_TRAITS) \ +#if ETL_USING_STL && ETL_USING_CPP11 && !defined(ETL_USER_DEFINED_TYPE_TRAITS) \ && ((!defined(ARDUINO) && ETL_NOT_USING_STLPORT) || defined(ETL_GCC_V5_TYPE_TRAITS_SUPPORTED)) //********************************************* diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index e1661909..38db6ff2 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -442,11 +442,6 @@ else() message(STATUS "Compiling for STL") endif() -if (ETL_USE_TYPE_TRAITS_BUILTINS) - message(STATUS "Compiling for built-in type traits") - target_compile_definitions(etl_tests PRIVATE -DETL_USE_TYPE_TRAITS_BUILTINS) -endif() - if (ETL_USER_DEFINED_TYPE_TRAITS) message(STATUS "Compiling for user defined type traits") target_compile_definitions(etl_tests PRIVATE -DETL_USER_DEFINED_TYPE_TRAITS) diff --git a/test/run-coverage.sh b/test/run-coverage.sh index bf795262..d921133b 100755 --- a/test/run-coverage.sh +++ b/test/run-coverage.sh @@ -53,7 +53,7 @@ for CXXSTD in 11 14 17 20 23 26; do -DCMAKE_C_COMPILER=$C_COMPILER \ -DCMAKE_CXX_COMPILER=$CXX_COMPILER \ -DNO_STL=$NOSTL \ - -DETL_USE_TYPE_TRAITS_BUILTINS=OFF \ + \ -DETL_USER_DEFINED_TYPE_TRAITS=OFF \ -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \ -DETL_OPTIMISATION=-O0 \ diff --git a/test/run-syntax-checks.sh b/test/run-syntax-checks.sh index fcac0287..1ba125e3 100755 --- a/test/run-syntax-checks.sh +++ b/test/run-syntax-checks.sh @@ -11,14 +11,14 @@ TitleColour=$'\033[38;2;107;210;255m' HelpColour=$'\033[38;2;250;180;250m' NoColour=$'\033[0m' -ParseGitBranch() +ParseGitBranch() { git rev-parse --abbrev-ref HEAD } SetConfigurationName() { - configuration_name=$1 + configuration_name=$1 } PrintHeader() @@ -147,10 +147,8 @@ RunCheck() local cc_name=$1 local msg=$2 local no_stl=$3 - local builtins=$4 - local user_defined=$5 - local force_03=$6 - local build_dir=$7 + local force_03=$4 + local build_dir=$5 if [ "$compiler_enabled" != "$cc_name" ] && [ "$compiler_enabled" != "All compilers" ]; then return @@ -171,7 +169,7 @@ RunCheck() rm -rdf bgcc rm -rdf bclang cmake -E make_directory bgcc bclang - CC=$cc CXX=$cxx cmake -E chdir $build_dir cmake -DNO_STL=$no_stl -DETL_USE_TYPE_TRAITS_BUILTINS=$builtins -DETL_USER_DEFINED_TYPE_TRAITS=$user_defined -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=$force_03 -DETL_CXX_STANDARD=$cxx_standard .. + CC=$cc CXX=$cxx cmake -E chdir $build_dir cmake -DNO_STL=$no_stl -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=$force_03 -DETL_CXX_STANDARD=$cxx_standard .. cmake --build $build_dir if [ $? -eq 0 ]; then PassedCompilation @@ -193,25 +191,21 @@ RunStandard() cxx_standard=$std # GCC configurations - RunCheck gcc "STL" OFF OFF OFF OFF bgcc - RunCheck gcc "No STL" ON OFF OFF OFF bgcc - RunCheck gcc "STL - Built-in traits" OFF ON OFF OFF bgcc - RunCheck gcc "No STL - Built-in traits" ON ON OFF OFF bgcc + RunCheck gcc "STL" OFF OFF bgcc + RunCheck gcc "No STL" ON OFF bgcc if [ "$has_force_03" = "1" ]; then - RunCheck gcc "STL - Force C++03" OFF OFF OFF ON bgcc - RunCheck gcc "No STL - Force C++03" ON OFF OFF ON bgcc + RunCheck gcc "STL - Force C++03" OFF ON bgcc + RunCheck gcc "No STL - Force C++03" ON ON bgcc fi # Clang configurations - RunCheck clang "STL" OFF OFF OFF OFF bclang - RunCheck clang "No STL" ON OFF OFF OFF bclang - RunCheck clang "STL - Built-in traits" OFF ON OFF OFF bgcc - RunCheck clang "No STL - Built-in traits" ON ON OFF OFF bgcc + RunCheck clang "STL" OFF OFF bclang + RunCheck clang "No STL" ON OFF bclang if [ "$has_force_03" = "1" ]; then - RunCheck clang "STL - Force C++03" OFF OFF OFF ON bclang - RunCheck clang "No STL - Force C++03" ON OFF OFF ON bclang + RunCheck clang "STL - Force C++03" OFF ON bclang + RunCheck clang "No STL - Force C++03" ON ON bclang fi } diff --git a/test/run-tests.sh b/test/run-tests.sh index ba309963..5b974c55 100755 --- a/test/run-tests.sh +++ b/test/run-tests.sh @@ -240,17 +240,17 @@ for cxx_standard in $cxx_standards ; do cd $OLD_DIR fi done <<-EOF -gcc ,STL ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. -gcc ,STL - Non-virtual messages,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=ON $verbose_cmake_flag .. -gcc ,STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. -gcc ,No STL ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. -gcc ,No STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. -gcc ,No STL - Builtin mem functions ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF -DETL_USE_BUILTIN_MEM_FUNCTIONS=ON $verbose_cmake_flag .. -clang,STL ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. -clang,STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. -clang,No STL ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. -clang,No STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. -clang,No STL - Builtin mem functions ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF -DETL_USE_BUILTIN_MEM_FUNCTIONS=ON $verbose_cmake_flag .. +gcc ,STL ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. +gcc ,STL - Non-virtual messages,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=ON $verbose_cmake_flag .. +gcc ,STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. +gcc ,No STL ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. +gcc ,No STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. +gcc ,No STL - Builtin mem functions ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF -DETL_USE_BUILTIN_MEM_FUNCTIONS=ON $verbose_cmake_flag .. +clang,STL ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. +clang,STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. +clang,No STL ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. +clang,No STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. +clang,No STL - Builtin mem functions ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF -DETL_USE_BUILTIN_MEM_FUNCTIONS=ON $verbose_cmake_flag .. gcc ,Initializer list test ,etl_initializer_list,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize $verbose_cmake_flag .. clang,Initializer list test ,etl_initializer_list,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize $verbose_cmake_flag .. gcc ,Error macros 'log_errors' test,etl_error_handler/log_errors ,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize $verbose_cmake_flag .. diff --git a/test/syntax_check/CMakeLists.txt b/test/syntax_check/CMakeLists.txt index 3c4e8e54..d909cb5d 100644 --- a/test/syntax_check/CMakeLists.txt +++ b/test/syntax_check/CMakeLists.txt @@ -12,11 +12,6 @@ else() message(STATUS "Compiling for STL") endif() -if (ETL_USE_TYPE_TRAITS_BUILTINS) - message(STATUS "Compiling for built-in type traits") - add_definitions(-DETL_USE_TYPE_TRAITS_BUILTINS) -endif() - if (ETL_USER_DEFINED_TYPE_TRAITS) message(STATUS "Compiling for user defined type traits") add_definitions(-DETL_USER_DEFINED_TYPE_TRAITS) diff --git a/test/test_etl_traits.cpp b/test/test_etl_traits.cpp index a90f073c..a79f2d82 100644 --- a/test/test_etl_traits.cpp +++ b/test/test_etl_traits.cpp @@ -66,6 +66,44 @@ namespace CHECK_EQUAL((ETL_USING_8BIT_TYPES == 1), etl::traits::has_8bit_types); CHECK_EQUAL((ETL_USING_64BIT_TYPES == 1), etl::traits::has_64bit_types); + // Using builtins... + CHECK_EQUAL((ETL_USING_BUILTIN_IS_ASSIGNABLE == 1), etl::traits::using_builtin_is_assignable); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_CONSTRUCTIBLE == 1), etl::traits::using_builtin_is_constructible); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_NOTHROW_CONSTRUCTIBLE == 1), etl::traits::using_builtin_is_nothrow_constructible); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_NOTHROW_ASSIGNABLE == 1), etl::traits::using_builtin_is_nothrow_assignable); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE == 1), etl::traits::using_builtin_is_trivially_constructible); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_TRIVIALLY_ASSIGNABLE == 1), etl::traits::using_builtin_is_trivially_assignable); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE == 1), etl::traits::using_builtin_is_trivially_destructible); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE == 1), etl::traits::using_builtin_is_trivially_copyable); + CHECK_EQUAL((ETL_USING_BUILTIN_HAS_TRIVIAL_CONSTRUCTOR == 1), etl::traits::using_builtin_has_trivial_constructor); + CHECK_EQUAL((ETL_USING_BUILTIN_HAS_TRIVIAL_DESTRUCTOR == 1), etl::traits::using_builtin_has_trivial_destructor); + CHECK_EQUAL((ETL_USING_BUILTIN_HAS_VIRTUAL_DESTRUCTOR == 1), etl::traits::using_builtin_has_virtual_destructor); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_DESTRUCTIBLE == 1), etl::traits::using_builtin_is_destructible); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_NOTHROW_DESTRUCTIBLE == 1), etl::traits::using_builtin_is_nothrow_destructible); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_STANDARD_LAYOUT == 1), etl::traits::using_builtin_is_standard_layout); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_TRIVIAL == 1), etl::traits::using_builtin_is_trivial); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_LAYOUT_COMPATIBLE == 1), etl::traits::using_builtin_is_layout_compatible); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_POINTER_INTERCONVERTIBLE_BASE_OF == 1), etl::traits::using_builtin_is_pointer_interconvertible_base_of); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_UNION == 1), etl::traits::using_builtin_is_union); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_EMPTY == 1), etl::traits::using_builtin_is_empty); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_POLYMORPHIC == 1), etl::traits::using_builtin_is_polymorphic); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_ABSTRACT == 1), etl::traits::using_builtin_is_abstract); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_FINAL == 1), etl::traits::using_builtin_is_final); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_AGGREGATE == 1), etl::traits::using_builtin_is_aggregate); + CHECK_EQUAL((ETL_USING_BUILTIN_HAS_UNIQUE_OBJECT_REPRESENTATIONS == 1), etl::traits::using_builtin_has_unique_object_representations); + CHECK_EQUAL((ETL_USING_BUILTIN_UNDERLYING_TYPE == 1), etl::traits::using_builtin_underlying_type); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED == 1), etl::traits::using_builtin_is_constant_evaluated); + CHECK_EQUAL((ETL_USING_BUILTIN_CONSTANT_P == 1), etl::traits::using_builtin_constant_p); + CHECK_EQUAL((ETL_USING_BUILTIN_MEMCPY == 1), etl::traits::using_builtin_memcpy); + CHECK_EQUAL((ETL_USING_BUILTIN_MEMMOVE == 1), etl::traits::using_builtin_memmove); + CHECK_EQUAL((ETL_USING_BUILTIN_MEMSET == 1), etl::traits::using_builtin_memset); + CHECK_EQUAL((ETL_USING_BUILTIN_MEMCMP == 1), etl::traits::using_builtin_memcmp); + CHECK_EQUAL((ETL_USING_BUILTIN_MEMCHR == 1), etl::traits::using_builtin_memchr); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_VIRTUAL_BASE_OF == 1), etl::traits::using_builtin_is_virtual_base_of); + CHECK_EQUAL((ETL_USING_BUILTIN_IS_TRIVIALLY_RELOCATABLE == 1), etl::traits::using_builtin_is_trivially_relocatable); + CHECK_EQUAL((ETL_USING_BUILTIN_BUILTIN_IS_CPP_TRIVIALLY_RELOCATABLE == 1), etl::traits::using_builtin_builtin_is_cpp_trivially_relocatable); + CHECK_EQUAL((ETL_USING_BUILTIN_BIT_CAST == 1), etl::traits::using_builtin_bit_cast); + // Has... CHECK_EQUAL((ETL_HAS_ATOMIC == 1), etl::traits::has_atomic); CHECK_EQUAL((ETL_HAS_MUTEX == 1), etl::traits::has_mutex); diff --git a/test/test_optional.cpp b/test/test_optional.cpp index 905de3cb..72ed0eca 100644 --- a/test/test_optional.cpp +++ b/test/test_optional.cpp @@ -1393,7 +1393,7 @@ namespace // because ETL_NOEXCEPT_IF expands to nothing otherwise. // The etl::is_nothrow_* traits only work with STL or builtins. //************************************************************************* -#if ETL_USING_CPP11 && ETL_USING_EXCEPTIONS && (defined(ETL_USE_TYPE_TRAITS_BUILTINS) || (ETL_USING_STL && !defined(ETL_USER_DEFINED_TYPE_TRAITS))) +#if ETL_USING_CPP11 && ETL_USING_EXCEPTIONS && ETL_USING_STL struct NothrowAtAll { NothrowAtAll() noexcept {} diff --git a/test/test_type_traits.cpp b/test/test_type_traits.cpp index 844b3511..04dc3381 100644 --- a/test/test_type_traits.cpp +++ b/test/test_type_traits.cpp @@ -355,8 +355,8 @@ namespace #endif } // namespace -// Definitions for when the STL and compiler built-ins are not available. -#if ETL_NOT_USING_STL && !defined(ETL_USE_TYPE_TRAITS_BUILTINS) +// Definitions for when the STL is not available. +#if ETL_NOT_USING_STL using etl::is_assignable; using etl::is_constructible; @@ -2621,7 +2621,7 @@ namespace //************************************************************************* TEST(test_is_lvalue_assignable) { -#if ETL_USING_STL || defined(ETL_USE_TYPE_TRAITS_BUILTINS) || defined(ETL_USER_DEFINED_TYPE_TRAITS) +#if ETL_USING_STL || defined(ETL_USER_DEFINED_TYPE_TRAITS) #if ETL_USING_CPP17 CHECK((etl::is_lvalue_assignable_v)); CHECK(!(etl::is_lvalue_assignable_v)); From 14aae8c71755b8b4db814086fe680e3ff2e32d10 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Fri, 9 Oct 2026 10:41:48 +0100 Subject: [PATCH 2/3] Added ETL_DISABLE_BUILTIN_FUNCTIONS to allow tests to to be run without using builtins --- include/etl/atomic/atomic_gcc_sync.h | 13 +++++---- .../etl/profiles/determine_builtin_support.h | 6 ++-- include/etl/type_traits.h | 2 +- test/CMakeLists.txt | 5 ++++ test/run-coverage.sh | 3 +- test/run-syntax-checks.sh | 27 +++++++++++------- test/run-tests.sh | 8 +++--- test/syntax_check/CMakeLists.txt | 5 ++++ test/test_memory.cpp | 2 ++ test/test_type_traits.cpp | 28 ++++++++++++++++--- 10 files changed, 69 insertions(+), 30 deletions(-) diff --git a/include/etl/atomic/atomic_gcc_sync.h b/include/etl/atomic/atomic_gcc_sync.h index b3c58bcd..5161abee 100644 --- a/include/etl/atomic/atomic_gcc_sync.h +++ b/include/etl/atomic/atomic_gcc_sync.h @@ -881,7 +881,6 @@ namespace etl { public: - ETL_STATIC_ASSERT((etl::is_trivially_copyable::value), "atomic requires that T is trivially copyable"); ETL_STATIC_ASSERT((etl::is_copy_constructible::value), "atomic requires that T is copy constructible"); ETL_STATIC_ASSERT((etl::is_copy_assignable::value), "atomic requires that T is copy assignable"); ETL_STATIC_ASSERT((etl::is_move_constructible::value), "atomic requires that T is move constructible"); @@ -963,14 +962,15 @@ namespace etl (void)order; ETL_BUILTIN_LOCK; - if (memcmp(&value, &expected, sizeof(T)) == 0) + if (value == expected) { value = desired; result = true; } else { - result = false; + expected = value; + result = false; } ETL_BUILTIN_UNLOCK; @@ -2062,7 +2062,6 @@ namespace etl { public: - ETL_STATIC_ASSERT((etl::is_trivially_copyable::value), "atomic requires that T is trivially copyable"); ETL_STATIC_ASSERT((etl::is_copy_constructible::value), "atomic requires that T is copy constructible"); ETL_STATIC_ASSERT((etl::is_copy_assignable::value), "atomic requires that T is copy assignable"); ETL_STATIC_ASSERT((etl::is_move_constructible::value), "atomic requires that T is move constructible"); @@ -2139,15 +2138,17 @@ namespace etl { bool result; + (void)order; ETL_BUILTIN_LOCK; - if (memcmp(&value, &expected, sizeof(T)) == 0) + if (value == expected) { value = desired; result = true; } else { - result = false; + expected = value; + result = false; } ETL_BUILTIN_UNLOCK; diff --git a/include/etl/profiles/determine_builtin_support.h b/include/etl/profiles/determine_builtin_support.h index 048868c5..40d932fd 100644 --- a/include/etl/profiles/determine_builtin_support.h +++ b/include/etl/profiles/determine_builtin_support.h @@ -46,9 +46,9 @@ SOFTWARE. #endif #endif -#if defined(__has_builtin) && !defined(ETL_COMPILER_MICROSOFT) // Use __has_builtin to check for - // existence of builtin functions? - // Fix VS2022 intellisense issue. +#if defined(__has_builtin) && !defined(ETL_DISABLE_BUILTIN_FUNCTIONS) && !defined(ETL_COMPILER_MICROSOFT) // Use __has_builtin to check for + // existence of builtin functions? + // Fix VS2022 intellisense issue. #if !defined(ETL_USING_BUILTIN_IS_ASSIGNABLE) #define ETL_USING_BUILTIN_IS_ASSIGNABLE __has_builtin(__is_assignable) #endif diff --git a/include/etl/type_traits.h b/include/etl/type_traits.h index fa5f3b2b..827e6be0 100644 --- a/include/etl/type_traits.h +++ b/include/etl/type_traits.h @@ -4946,7 +4946,7 @@ namespace etl { return false; } -#elif ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED == 1 +#elif ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED // Fallback for C++20 on supported compilers return __builtin_is_constant_evaluated(); #else diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 38db6ff2..4f03d1ce 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -447,6 +447,11 @@ if (ETL_USER_DEFINED_TYPE_TRAITS) target_compile_definitions(etl_tests PRIVATE -DETL_USER_DEFINED_TYPE_TRAITS) endif() +if (ETL_DISABLE_BUILTIN_FUNCTIONS) + message(STATUS "Compiling with builtin functions disabled") + target_compile_definitions(etl_tests PRIVATE -DETL_DISABLE_BUILTIN_FUNCTIONS) +endif() + if (ETL_MESSAGES_ARE_NOT_VIRTUAL) message(STATUS "Compiling for non-virtual messages") target_compile_definitions(etl_tests PRIVATE -DETL_MESSAGES_ARE_NOT_VIRTUAL) diff --git a/test/run-coverage.sh b/test/run-coverage.sh index d921133b..6998eaa6 100755 --- a/test/run-coverage.sh +++ b/test/run-coverage.sh @@ -59,8 +59,7 @@ for CXXSTD in 11 14 17 20 23 26; do -DETL_OPTIMISATION=-O0 \ -DETL_CXX_STANDARD=$CXXSTD \ -DETL_ENABLE_SANITIZER=OFF \ - -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF \ - -DETL_USE_BUILTIN_MEM_FUNCTIONS=ON .. + -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF .. cmake --build . ./etl_tests lcov --gcov-tool "$GCOV" $GCOV_ADD --capture --directory CMakeFiles/etl_tests.dir \ diff --git a/test/run-syntax-checks.sh b/test/run-syntax-checks.sh index 1ba125e3..e464f523 100755 --- a/test/run-syntax-checks.sh +++ b/test/run-syntax-checks.sh @@ -148,7 +148,8 @@ RunCheck() local msg=$2 local no_stl=$3 local force_03=$4 - local build_dir=$5 + local disable_builtins=$5 + local build_dir=$6 if [ "$compiler_enabled" != "$cc_name" ] && [ "$compiler_enabled" != "All compilers" ]; then return @@ -169,7 +170,7 @@ RunCheck() rm -rdf bgcc rm -rdf bclang cmake -E make_directory bgcc bclang - CC=$cc CXX=$cxx cmake -E chdir $build_dir cmake -DNO_STL=$no_stl -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=$force_03 -DETL_CXX_STANDARD=$cxx_standard .. + CC=$cc CXX=$cxx cmake -E chdir $build_dir cmake -DNO_STL=$no_stl -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=$force_03 -DETL_DISABLE_BUILTIN_FUNCTIONS=$disable_builtins -DETL_CXX_STANDARD=$cxx_standard .. cmake --build $build_dir if [ $? -eq 0 ]; then PassedCompilation @@ -191,21 +192,27 @@ RunStandard() cxx_standard=$std # GCC configurations - RunCheck gcc "STL" OFF OFF bgcc - RunCheck gcc "No STL" ON OFF bgcc + RunCheck gcc "STL" OFF OFF OFF bgcc + RunCheck gcc "No STL" ON OFF OFF bgcc + + RunCheck gcc "STL - Disable builtins" OFF ON ON bgcc + RunCheck gcc "No STL - Disable builtins" ON ON ON bgcc if [ "$has_force_03" = "1" ]; then - RunCheck gcc "STL - Force C++03" OFF ON bgcc - RunCheck gcc "No STL - Force C++03" ON ON bgcc + RunCheck gcc "STL - Force C++03" OFF ON OFF bgcc + RunCheck gcc "No STL - Force C++03" ON ON OFF bgcc fi # Clang configurations - RunCheck clang "STL" OFF OFF bclang - RunCheck clang "No STL" ON OFF bclang + RunCheck clang "STL" OFF OFF OFF bclang + RunCheck clang "No STL" ON OFF OFF bclang + + RunCheck clang "STL - Disable builtins" OFF ON ON bclang + RunCheck clang "No STL - Disable builtins" ON ON ON bclang if [ "$has_force_03" = "1" ]; then - RunCheck clang "STL - Force C++03" OFF ON bclang - RunCheck clang "No STL - Force C++03" ON ON bclang + RunCheck clang "STL - Force C++03" OFF ON OFF bclang + RunCheck clang "No STL - Force C++03" ON ON OFF bclang fi } diff --git a/test/run-tests.sh b/test/run-tests.sh index 5b974c55..2b018608 100755 --- a/test/run-tests.sh +++ b/test/run-tests.sh @@ -17,7 +17,7 @@ TitleColour='\033[38;2;107;210;255m' HelpColour='\033[38;2;250;180;250m' NoColour='\033[0m' -ParseGitBranch() +ParseGitBranch() { git rev-parse --abbrev-ref HEAD } @@ -145,7 +145,7 @@ elif [ "$2" = "1" ]; then elif [ "$2" = "2" ]; then opt="-O2" elif [ "$2" = "3" ]; then - opt="-O3" + opt="-O3" else opt="-O0" fi @@ -245,12 +245,12 @@ gcc ,STL - Non-virtual messages,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMP gcc ,STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. gcc ,No STL ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. gcc ,No STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. -gcc ,No STL - Builtin mem functions ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF -DETL_USE_BUILTIN_MEM_FUNCTIONS=ON $verbose_cmake_flag .. +gcc ,No STL - Disable builtins ,.,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF -DETL_DISABLE_BUILTIN_FUNCTIONS=ON $verbose_cmake_flag .. clang,STL ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. clang,STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. clang,No STL ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. clang,No STL - Force C++03 ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF $verbose_cmake_flag .. -clang,No STL - Builtin mem functions ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF -DETL_USE_BUILTIN_MEM_FUNCTIONS=ON $verbose_cmake_flag .. +clang,No STL - Disable builtins ,.,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DNO_STL=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF -DETL_DISABLE_BUILTIN_FUNCTIONS=ON $verbose_cmake_flag .. gcc ,Initializer list test ,etl_initializer_list,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize $verbose_cmake_flag .. clang,Initializer list test ,etl_initializer_list,cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize $verbose_cmake_flag .. gcc ,Error macros 'log_errors' test,etl_error_handler/log_errors ,cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard -DETL_ENABLE_SANITIZER=$sanitize $verbose_cmake_flag .. diff --git a/test/syntax_check/CMakeLists.txt b/test/syntax_check/CMakeLists.txt index d909cb5d..c50aa3de 100644 --- a/test/syntax_check/CMakeLists.txt +++ b/test/syntax_check/CMakeLists.txt @@ -17,6 +17,11 @@ if (ETL_USER_DEFINED_TYPE_TRAITS) add_definitions(-DETL_USER_DEFINED_TYPE_TRAITS) endif() +if (ETL_DISABLE_BUILTIN_FUNCTIONS) + message(STATUS "Compiling with builtin functions disabled") + add_definitions(-DETL_DISABLE_BUILTIN_FUNCTIONS) +endif() + if (ETL_FORCE_TEST_CPP03_IMPLEMENTATION) message(STATUS "Force C++03 implementations") add_definitions(-DETL_FORCE_TEST_CPP03_IMPLEMENTATION) diff --git a/test/test_memory.cpp b/test/test_memory.cpp index a8fda0fa..712e1f1f 100644 --- a/test/test_memory.cpp +++ b/test/test_memory.cpp @@ -1943,6 +1943,7 @@ namespace } //************************************************************************* +#if (ETL_USING_STL && ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED) || ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE TEST(test_start_lifetime_as) { struct quad_t @@ -1968,6 +1969,7 @@ namespace CHECK_EQUAL(1, cp->a); CHECK_EQUAL(4, cp->d); } +#endif //************************************************************************* TEST(test_start_lifetime_as_array) diff --git a/test/test_type_traits.cpp b/test/test_type_traits.cpp index 04dc3381..df617374 100644 --- a/test/test_type_traits.cpp +++ b/test/test_type_traits.cpp @@ -792,6 +792,7 @@ namespace } //************************************************************************* +#if ETL_USING_CPP17 && ETL_USING_STL || ETL_USING_BUILTIN_IS_STANDARD_LAYOUT TEST(test_is_standard_layout) { struct StandardLayout @@ -818,8 +819,10 @@ namespace CHECK(!etl::is_standard_layout_v); #endif } +#endif //************************************************************************* +#if (ETL_USING_CPP17 && ETL_USING_STL) || ETL_USING_BUILTIN_IS_TRIVIAL TEST(test_is_trivial) { struct Trivial @@ -869,6 +872,7 @@ namespace CHECK(!etl::is_trivial_v); #endif } +#endif //************************************************************************* #if ETL_USING_BUILTIN_IS_LAYOUT_COMPATIBLE || (ETL_USING_STL && ETL_USING_CPP20 && defined(__cpp_lib_is_layout_compatible)) @@ -1265,6 +1269,7 @@ namespace #endif //************************************************************************* +#if ETL_USING_STL || ETL_USING_BUILTIN_IS_UNION TEST(test_is_union) { union Union @@ -1292,8 +1297,10 @@ namespace CHECK(!etl::is_union_v); #endif } +#endif //************************************************************************* +#if ETL_USING_STL || ETL_USING_BUILTIN_IS_EMPTY TEST(test_is_empty) { struct Empty @@ -1332,8 +1339,10 @@ namespace CHECK(!etl::is_empty_v); #endif } +#endif //************************************************************************* +#if ETL_USING_STL || ETL_USING_BUILTIN_IS_POLYMORPHIC TEST(test_is_polymorphic) { struct NonPolymorphic @@ -1373,8 +1382,10 @@ namespace CHECK(!etl::is_polymorphic_v); #endif } +#endif //************************************************************************* +#if ETL_USING_STL || ETL_USING_BUILTIN_IS_ABSTRACT TEST(test_is_abstract) { struct NonAbstract @@ -1422,9 +1433,10 @@ namespace CHECK(!etl::is_abstract_v); #endif } +#endif //************************************************************************* -#if ETL_USING_CPP14 +#if ETL_USING_CPP14 && (ETL_USING_STL || ETL_USING_BUILTIN_IS_FINAL) TEST(test_is_final) { struct NonFinal @@ -1481,7 +1493,7 @@ namespace #endif //************************************************************************* -#if ETL_USING_CPP17 +#if ETL_USING_CPP17 && (ETL_USING_STL || ETL_USING_BUILTIN_IS_AGGREGATE) TEST(test_is_aggregate) { struct Aggregate @@ -1542,6 +1554,7 @@ namespace #endif //************************************************************************* +#if ETL_USING_STL || ETL_USING_BUILTIN_HAS_VIRTUAL_DESTRUCTOR TEST(test_has_virtual_destructor) { struct NonVirtualDestructor @@ -1588,9 +1601,10 @@ namespace CHECK(!etl::has_virtual_destructor_v); #endif } +#endif //************************************************************************* -#if ETL_USING_CPP17 +#if ETL_USING_CPP17 && (ETL_USING_STL || ETL_USING_BUILTIN_HAS_UNIQUE_OBJECT_REPRESENTATIONS) TEST(test_has_unique_object_representations) { struct NoPadding @@ -2969,6 +2983,10 @@ namespace } //************************************************************************* +#if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED || ETL_USING_BUILTIN_IS_TRIVIALLY_ASSIGNABLE + template + using is_trivially_assignable = std::is_trivially_assignable; +#elif ETL_USING_BUILTIN_IS_TRIVIALLY_ASSIGNABLE TEST(test_is_trivially_assignable) { #if ETL_USING_CPP11 && !defined(ETL_USER_DEFINED_TYPE_TRAITS) \ @@ -2986,6 +3004,7 @@ namespace #endif #endif } +#endif //************************************************************************* TEST(test_is_trivially_copy_assignable) @@ -3343,11 +3362,12 @@ namespace TEST(test_is_constant_evaluated) { constexpr bool c0 = etl::is_constant_evaluated(); - #if !ETL_USING_CPP23 && defined(ETL_COMPILER_MICROSOFT) +#if (!ETL_USING_CPP23 && (defined(ETL_COMPILER_MICROSOFT) || !ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED)) // Not supported on MSVC via __has_builtin, see // determine_builtin_support.h CHECK_FALSE(c0); #else + CHECK_TRUE(c0); #endif From 6da56512fcb551ff0acb8ca69d6812a10add5166 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Fri, 9 Oct 2026 11:06:16 +0100 Subject: [PATCH 3/3] clang-format updates --- test/test_type_traits.cpp | 40 +++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/test/test_type_traits.cpp b/test/test_type_traits.cpp index df617374..c35c8ecd 100644 --- a/test/test_type_traits.cpp +++ b/test/test_type_traits.cpp @@ -814,10 +814,10 @@ namespace CHECK(etl::is_standard_layout::value); CHECK(!etl::is_standard_layout::value); -#if ETL_USING_CPP17 + #if ETL_USING_CPP17 CHECK(etl::is_standard_layout_v); CHECK(!etl::is_standard_layout_v); -#endif + #endif } #endif @@ -867,10 +867,10 @@ namespace CHECK(!etl::is_trivial::value); CHECK(!etl::is_trivial::value); -#if ETL_USING_CPP17 + #if ETL_USING_CPP17 CHECK(etl::is_trivial_v); CHECK(!etl::is_trivial_v); -#endif + #endif } #endif @@ -1292,10 +1292,10 @@ namespace CHECK(!etl::is_union::value); CHECK(!etl::is_union::value); -#if ETL_USING_CPP17 + #if ETL_USING_CPP17 CHECK(etl::is_union_v); CHECK(!etl::is_union_v); -#endif + #endif } #endif @@ -1334,10 +1334,10 @@ namespace CHECK(!etl::is_empty::value); CHECK(!etl::is_empty::value); -#if ETL_USING_CPP17 + #if ETL_USING_CPP17 CHECK(etl::is_empty_v); CHECK(!etl::is_empty_v); -#endif + #endif } #endif @@ -1377,10 +1377,10 @@ namespace CHECK(!etl::is_polymorphic::value); CHECK(!etl::is_polymorphic::value); -#if ETL_USING_CPP17 + #if ETL_USING_CPP17 CHECK(etl::is_polymorphic_v); CHECK(!etl::is_polymorphic_v); -#endif + #endif } #endif @@ -1428,10 +1428,10 @@ namespace CHECK(!etl::is_abstract::value); CHECK(!etl::is_abstract::value); -#if ETL_USING_CPP17 + #if ETL_USING_CPP17 CHECK(etl::is_abstract_v); CHECK(!etl::is_abstract_v); -#endif + #endif } #endif @@ -1596,10 +1596,10 @@ namespace CHECK(!etl::has_virtual_destructor::value); CHECK(!etl::has_virtual_destructor::value); -#if ETL_USING_CPP17 + #if ETL_USING_CPP17 CHECK(etl::has_virtual_destructor_v); CHECK(!etl::has_virtual_destructor_v); -#endif + #endif } #endif @@ -2984,13 +2984,13 @@ namespace //************************************************************************* #if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED || ETL_USING_BUILTIN_IS_TRIVIALLY_ASSIGNABLE - template + template using is_trivially_assignable = std::is_trivially_assignable; #elif ETL_USING_BUILTIN_IS_TRIVIALLY_ASSIGNABLE TEST(test_is_trivially_assignable) { -#if ETL_USING_CPP11 && !defined(ETL_USER_DEFINED_TYPE_TRAITS) \ - && (ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED || ETL_USING_BUILTIN_IS_TRIVIALLY_ASSIGNABLE) + #if ETL_USING_CPP11 && !defined(ETL_USER_DEFINED_TYPE_TRAITS) \ + && (ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED || ETL_USING_BUILTIN_IS_TRIVIALLY_ASSIGNABLE) CHECK((etl::is_trivially_assignable::value) == (std::is_trivially_assignable::value)); CHECK((etl::is_trivially_assignable::value) == (std::is_trivially_assignable::value)); CHECK((etl::is_trivially_assignable::value) == (std::is_trivially_assignable::value)); @@ -2998,11 +2998,11 @@ namespace CHECK((etl::is_trivially_assignable::value) == (std::is_trivially_assignable::value)); - #if ETL_USING_CPP17 + #if ETL_USING_CPP17 CHECK((etl::is_trivially_assignable_v) == (std::is_trivially_assignable_v)); CHECK((etl::is_trivially_assignable_v) == (std::is_trivially_assignable_v)); + #endif #endif -#endif } #endif @@ -3362,7 +3362,7 @@ namespace TEST(test_is_constant_evaluated) { constexpr bool c0 = etl::is_constant_evaluated(); -#if (!ETL_USING_CPP23 && (defined(ETL_COMPILER_MICROSOFT) || !ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED)) + #if (!ETL_USING_CPP23 && (defined(ETL_COMPILER_MICROSOFT) || !ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED)) // Not supported on MSVC via __has_builtin, see // determine_builtin_support.h CHECK_FALSE(c0);