diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index bebc9b3..935af4e 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -8,25 +8,28 @@ jobs: strategy: fail-fast: false matrix: - compiler: - # - g++-9 - - g++-10 - - g++-11 - - g++-12 - # - clang++-12 - - clang++-13 - - clang++-14 - cmake_args: - - "" cxxstandard: - 14 - 17 - 2a + include: + - compiler: g++-10 + stdlib: libstdc++ + - compiler: g++-11 + stdlib: libstdc++ + - compiler: g++-12 + stdlib: libstdc++ + - compiler: g++-13 + stdlib: libstdc++ + - compiler: clang++-13 + stdlib: libc++ + - compiler: clang++-14 + stdlib: libc++ + - compiler: clang++-15 + stdlib: libstdc++ steps: - name: Checkout - uses: actions/checkout@v2 - with: - fetch-depth: 1 + uses: actions/checkout@v4 - name: Prepare run: cmake -E make_directory build @@ -35,7 +38,7 @@ jobs: working-directory: build env: CXX: ${{matrix.compiler}} - CXXFLAGS: -std=c++${{matrix.cxxstandard}} + CXXFLAGS: -std=c++${{matrix.cxxstandard}} -stdlib=${{matrix.stdlib}} run: cmake -DCMAKE_BUILD_TYPE=DEBUG "-Dfrozen.coverage=ON" -DCMAKE_VERBOSE_MAKEFILE=ON .. - name: Build diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml index 4ea39a8..26f0f1b 100644 --- a/.github/workflows/osx.yml +++ b/.github/workflows/osx.yml @@ -16,9 +16,7 @@ jobs: - 2a steps: - name: Checkout - uses: actions/checkout@v2 - with: - fetch-depth: 1 + uses: actions/checkout@v4 - name: Prepare run: cmake -E make_directory build diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 9052fc0..0272bd7 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -16,9 +16,7 @@ jobs: - 2a steps: - name: Checkout - uses: actions/checkout@v2 - with: - fetch-depth: 1 + uses: actions/checkout@v4 - name: Prepare run: cmake -E make_directory build diff --git a/CMakeLists.txt b/CMakeLists.txt index 65fb923..19c4efc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -126,9 +126,13 @@ if(frozen.installation) # generate a CMake configuration file for consumption by CMake's `find_package` # intrinsic # + if(${CMAKE_VERSION} VERSION_GREATER "3.14") + set(OPTIONAL_ARCH_INDEPENDENT "ARCH_INDEPENDENT") + endif() write_basic_package_version_file("frozenConfigVersion.cmake" VERSION ${PROJECT_VERSION} - COMPATIBILITY SameMajorVersion) + COMPATIBILITY SameMajorVersion + ${OPTIONAL_ARCH_INDEPENDENT}) install(FILES "${PROJECT_BINARY_DIR}/frozenConfigVersion.cmake" DESTINATION "${CMAKE_INSTALL_DATADIR}/cmake/frozen") diff --git a/README.rst b/README.rst index 5a1ceb9..1c61dda 100644 --- a/README.rst +++ b/README.rst @@ -26,6 +26,15 @@ Once initialized, the container keys cannot be updated, and in exchange, lookups are faster. And initialization is free when ``constexpr`` or ``constinit`` is used :-). +Stable Version +-------------- + +The Frozen library is pretty stable now, have been so for years, so: + +1. The ``master`` version can be used as the default **stable** version. +2. It is in maintenance mode. I still accept commits that make the code cleaner + ``|`` faster ``|`` more modern, but expect some latency in the review process. + Installation ------------ diff --git a/include/frozen/bits/defines.h b/include/frozen/bits/defines.h index e20f6d0..839f4e8 100644 --- a/include/frozen/bits/defines.h +++ b/include/frozen/bits/defines.h @@ -55,11 +55,11 @@ #define FROZEN_LETITGO_HAS_CHAR8T #endif -#if __cpp_deduction_guides >= 201703L +#if defined(__cpp_deduction_guides) && __cpp_deduction_guides >= 201703L #define FROZEN_LETITGO_HAS_DEDUCTION_GUIDES #endif -#if __cpp_lib_constexpr_string >= 201907L +#if defined(__cpp_lib_constexpr_string) && __cpp_lib_constexpr_string >= 201907L #define FROZEN_LETITGO_HAS_CONSTEXPR_STRING #endif diff --git a/tests/catch.hpp b/tests/catch.hpp index db1fed3..9b309bd 100644 --- a/tests/catch.hpp +++ b/tests/catch.hpp @@ -1,6 +1,6 @@ /* - * Catch v2.13.8 - * Generated: 2022-01-03 21:20:09.589503 + * Catch v2.13.10 + * Generated: 2022-10-16 11:01:23.452308 * ---------------------------------------------------------- * This file has been merged from multiple headers. Please don't edit it directly * Copyright (c) 2022 Two Blue Cubes Ltd. All rights reserved. @@ -15,7 +15,7 @@ #define CATCH_VERSION_MAJOR 2 #define CATCH_VERSION_MINOR 13 -#define CATCH_VERSION_PATCH 8 +#define CATCH_VERSION_PATCH 10 #ifdef __clang__ # pragma clang system_header @@ -7395,8 +7395,6 @@ namespace Catch { template struct ObjectStorage { - using TStorage = typename std::aligned_storage::value>::type; - ObjectStorage() : data() {} ObjectStorage(const ObjectStorage& other) @@ -7439,7 +7437,7 @@ namespace Catch { return *static_cast(static_cast(&data)); } - TStorage data; + struct { alignas(T) unsigned char data[sizeof(T)]; } data; }; } @@ -7949,7 +7947,7 @@ namespace Catch { #if defined(__i386__) || defined(__x86_64__) #define CATCH_TRAP() __asm__("int $3\n" : : ) /* NOLINT */ #elif defined(__aarch64__) - #define CATCH_TRAP() __asm__(".inst 0xd4200000") + #define CATCH_TRAP() __asm__(".inst 0xd43e0000") #endif #elif defined(CATCH_PLATFORM_IPHONE) @@ -13392,6 +13390,10 @@ namespace Catch { filename.erase(0, lastSlash); filename[0] = '#'; } + else + { + filename.insert(0, "#"); + } auto lastDot = filename.find_last_of('.'); if (lastDot != std::string::npos) { @@ -13554,7 +13556,7 @@ namespace Catch { // Handle list request if( Option listed = list( m_config ) ) - return static_cast( *listed ); + return (std::min) (MaxExitCode, static_cast(*listed)); TestGroup tests { m_config }; auto const totals = tests.execute(); @@ -15387,7 +15389,7 @@ namespace Catch { } Version const& libraryVersion() { - static Version version( 2, 13, 8, "", 0 ); + static Version version( 2, 13, 10, "", 0 ); return version; } @@ -17522,12 +17524,20 @@ namespace Catch { #ifndef __OBJC__ +#ifndef CATCH_INTERNAL_CDECL +#ifdef _MSC_VER +#define CATCH_INTERNAL_CDECL __cdecl +#else +#define CATCH_INTERNAL_CDECL +#endif +#endif + #if defined(CATCH_CONFIG_WCHAR) && defined(CATCH_PLATFORM_WINDOWS) && defined(_UNICODE) && !defined(DO_NOT_USE_WMAIN) // Standard C/C++ Win32 Unicode wmain entry point -extern "C" int wmain (int argc, wchar_t * argv[], wchar_t * []) { +extern "C" int CATCH_INTERNAL_CDECL wmain (int argc, wchar_t * argv[], wchar_t * []) { #else // Standard C/C++ main entry point -int main (int argc, char * argv[]) { +int CATCH_INTERNAL_CDECL main (int argc, char * argv[]) { #endif return Catch::Session().run( argc, argv ); @@ -17890,7 +17900,7 @@ using Catch::Detail::Approx; #define INFO( msg ) (void)(0) #define UNSCOPED_INFO( msg ) (void)(0) #define WARN( msg ) (void)(0) -#define CAPTURE( msg ) (void)(0) +#define CAPTURE( ... ) (void)(0) #define TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ )) #define TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ))