Loading...
Searching...
No Matches
platform.hpp File Reference

Provides platform and dependency checks. More...

`#include <version>`
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_COMPILER_IS_GCC 0
| Whether the current compiler is GCC.
#define | SEQAN3_DEPRECATED_340 [[deprecated("This will be removed in SeqAn-3.4.0; please see the documentation.")]]
| Deprecation message for deprecated header.
#define | SEQAN3_DISABLE_COMPILER_CHECK
| This disables the warning you would get if your compiler is not known to work.
#define | SEQAN3_DISABLE_LEGACY_STD_DIAGNOSTIC
| This disables the warning you would get if -D_GLIBCXX_USE_CXX11_ABI=0 is set.
#define | SEQAN3_HAS_BZIP2 0
| Whether BZIP2 support is available or not.
#define | SEQAN3_HAS_CEREAL 0
| Whether CEREAL support is available or not.
#define | SEQAN3_HAS_ZLIB 0
| Whether ZLIB support is available or not.
#define | SEQAN3_PRAGMA(non_string_literal)
| _Pragma requires a string-literal and # makes it a string
#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.
#define | SEQAN3_WORKAROUND_LITERAL inline
| Our char literals returning std::vector should be constexpr if constexpr std::vector is supported.
#define | SEQAN3_WORKAROUND_VIEW_PERFORMANCE 1
| Performance of views, especially filter and join is currently bad, especially in I/O.
Workaround for bogus memcopy/memmove warnings on GCC
#define | SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY 0
| Indicates whether the workaround is active. 1 for GCC, 0 for other compilers.
#define | SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_START(...)
| Denotes the start of a block where diagnostics are ignored.
#define | SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_STOP
| Denotes the end of a block where diagnostics are ignored.

## Detailed Description

Provides platform and dependency checks.

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

## Macro Definition Documentation

## SEQAN3_DEPRECATED_340

#define SEQAN3_DEPRECATED_340 [[deprecated("This will be removed in SeqAn-3.4.0; please see the documentation.")]]

Deprecation message for deprecated header.

Deprecation message for SeqAn 3.4.0 release.

## SEQAN3_PRAGMA

#define SEQAN3_PRAGMA | ( |  | non_string_literal | ) |

Value:
_Pragma(#non_string_literal)

_Pragma requires a string-literal and # makes it a string

## SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_START

#define SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_START | ( |  | ... | ) |

Denotes the start of a block where diagnostics are ignored.

If SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY is 0, this macro has no effect. Otherwise, the macro takes one or two arguments and will expand to a preprocessor directive equivalent to:

### Input

// The macro accepts one or two arguments.
SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_START(-Wrestrict, -Warray-bounds)
SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_START
#define SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_START(...)
Denotes the start of a block where diagnostics are ignored.
Definition platform.hpp:268

### Output

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wrestrict"
#pragma GCC diagnostic ignored "-Warray-bounds"

## SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_STOP

#define SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_STOP

Denotes the end of a block where diagnostics are ignored.

If SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY is 0, this macro has no effect. Otherwise, the macro will expand to a preprocessor directive equivalent to:

#pragma GCC diagnostic pop

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

#define SEQAN3_WORKAROUND_LITERAL inline

Our char literals returning std::vector should be constexpr if constexpr std::vector is supported.

The _GLIBCXX_DEBUG statement is a workaround for a libstdc++ bug

See also
  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104748
  https://github.com/seqan/seqan3/issues/3221
  https://godbolt.org/z/159n8xrdo

Hide me