SeqAn3 3.1.0
The Modern C++ library for sequence analysis.
platform.hpp File Reference

Provides platform and dependency checks. More...

#include <cinttypes>
#include <ciso646>
#include <cstddef>
+ Include dependency graph for platform.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#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_RETURN_TYPE_CONSTRAINT(expression, concept_name, ...)    {expression} -> concept_name<__VA_ARGS__>
 Same as writing {expression} -> concept_name<type1[, ...]> in a concept definition.
 
#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_GCC7_AND_8_CONCEPT_ISSUES   0
 Various concept problems only present in GCC7 and GCC8.
 
#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_83328   0
 See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83328.
 
#define SEQAN3_WORKAROUND_GCC_87113   0
 See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87113.
 
#define SEQAN3_WORKAROUND_GCC_89953   0
 See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89953.
 
#define SEQAN3_WORKAROUND_GCC_90897   0
 See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90897.
 
#define SEQAN3_WORKAROUND_GCC_93467   0
 See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93467.
 
#define SEQAN3_WORKAROUND_GCC_94967   0
 See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94967 gcc7 does not preserve the const && type using std::get.
 
#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_INCOMPLETE_FILESYSTEM   0
 GCC 7 only offers an experimental filesystems implementation.
 
#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_ISSUE_286   0
 See https://github.com/seqan/product_backlog/issues/286.
 
#define SEQAN3_WORKAROUND_VIEW_PERFORMANCE   1
 Warn about gcc 10.0 and gcc 10.1 Known Issues: More...
 

Detailed Description

Provides platform and dependency checks.

Author
Hannes Hauswedell <hannes.hauswedell AT fu-berlin.de>

Macro Definition Documentation

◆ SEQAN3_WORKAROUND_GCC_NO_CXX11_ABI

#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.

See also
https://github.com/seqan/seqan3/issues/2244
https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html

◆ SEQAN3_WORKAROUND_VIEW_PERFORMANCE

#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.