Provides platform and dependency checks. More...
Go to the source code of this file.
Macros | |
#define | SEQAN3_DEPRECATED_330 [[deprecated("This will be removed in SeqAn-3.3.0; please see the documentation.")]] |
Deprecation message for SeqAn 3.3.0 release. | |
#define | SEQAN3_DEPRECATED_HEADER(message) SEQAN3_PRAGMA(GCC warning message) |
Deprecation message for deprecated header. | |
#define | SEQAN3_DISABLE_LEGACY_STD_DIAGNOSTIC |
This disables the warning you would get if -D_GLIBCXX_USE_CXX11_ABI=0 is set. | |
#define | SEQAN3_PRAGMA(non_string_literal) _Pragma(#non_string_literal) |
_Pragma requires a string-literal and # makes it a string | |
#define | SEQAN3_WITH_CEREAL 0 |
Whether CEREAL support is available or not. | |
#define | SEQAN3_WITH_LEMON 0 |
Whether Lemon support is available or not. | |
#define | SEQAN3_WORKAROUND_DEFAULT_CONSTRUCTIBLE_VIEW 0 |
A view does not need to be default constructible. This change is first implemented in gcc12. | |
#define | SEQAN3_WORKAROUND_FURTHER_CONSTRAIN_FRIEND_DECLARATION 0 |
gcc only: Constrain friend declarations to limit access to internals. More... | |
#define | SEQAN3_WORKAROUND_GCC_100139 0 |
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100139 std::views::{take, drop} do not type-erase. This is a defect within the standard lib. | |
#define | SEQAN3_WORKAROUND_GCC_100252 0 |
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100252 ICE in template instantiation. | |
#define | SEQAN3_WORKAROUND_GCC_93467 0 |
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93467. | |
#define | SEQAN3_WORKAROUND_GCC_96070 0 |
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96070 and https://github.com/seqan/product_backlog/issues/151. | |
#define | SEQAN3_WORKAROUND_GCC_99318 0 |
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99318. | |
#define | SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY 0 |
Workaround bogus memcpy errors in GCC 12.1. (Wrestrict and Wstringop-overflow) More... | |
#define | SEQAN3_WORKAROUND_GCC_NO_CXX11_ABI 0 |
This is needed to support CentOS 7 or RHEL 7; Newer CentOS's include a more modern default-gcc version making this macro obsolete. More... | |
#define | SEQAN3_WORKAROUND_GCC_NON_TEMPLATE_REQUIRES 0 |
https://eel.is/c++draft/range.take#view defines e.g. constexpr auto size() requires sized_range<V> without any template. This syntax works since gcc-10, before that a dummy template <typename = ...> must be used. | |
#define | SEQAN3_WORKAROUND_GCC_PIPEABLE_CONFIG_CONCEPT 0 |
Workaround to access the static id of the configuration elements inside of the concept definition (fixed in gcc11). | |
#define | SEQAN3_WORKAROUND_VIEW_PERFORMANCE 1 |
Warn about gcc 10.0 and gcc 10.1 Known Issues: More... | |
Cereal function macros | |
These can be changed by apps so we used the macros instead of the values internally. | |
#define | CEREAL_LOAD_FUNCTION_NAME load |
Macro for Cereal's load function. | |
#define | CEREAL_LOAD_MINIMAL_FUNCTION_NAME load_minimal |
Macro for Cereal's load_minimal function. | |
#define | CEREAL_SAVE_FUNCTION_NAME save |
Macro for Cereal's save function. | |
#define | CEREAL_SAVE_MINIMAL_FUNCTION_NAME save_minimal |
Macro for Cereal's save_minimal function. | |
#define | CEREAL_SERIALIZE_FUNCTION_NAME serialize |
Macro for Cereal's serialize function. | |
Provides platform and dependency checks.
#define SEQAN3_WORKAROUND_FURTHER_CONSTRAIN_FRIEND_DECLARATION 0 |
gcc only: Constrain friend declarations to limit access to internals.
We have some instances where we constrain friend declarations to limit which class instance can access private information. For example
would only allow std::tuple<int>
to access the internals.
It seems that this is not standard behaviour and more like a gcc-only extension, as neither clang nor msvc supports it. For now we will keep this code, but it should be removed if it turns out that this is non-standard. (i.e. a newer gcc release does not support it any more)
#define SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY 0 |
Workaround bogus memcpy errors in GCC 12.1. (Wrestrict and Wstringop-overflow)
#define SEQAN3_WORKAROUND_GCC_NO_CXX11_ABI 0 |
This is needed to support CentOS 7 or RHEL 7; Newer CentOS's include a more modern default-gcc version making this macro obsolete.
In GCC 5 there was a bigger ABI change and modern systems compile with dual ABI, but some enterprise systems (those where gcc 4 is the standard compiler) don't support dual ABI. This has the effect that even community builds of gcc are build with –disable-libstdcxx-dual-abi. Only building the compiler yourself would solve this problem.
#define SEQAN3_WORKAROUND_VIEW_PERFORMANCE 1 |
Warn about gcc 10.0 and gcc 10.1 Known Issues:
Performance of views, especially filter and join is currently bad, especially in I/O.