HIBF 1.0.0-rc.1
Loading...
Searching...
No Matches
platform.hpp File Reference

Provides platform and dependency checks. More...

+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define HIBF_COMPILER_IS_GCC   0
 Whether the current compiler is GCC.
 
#define HIBF_CONSTEXPR_VECTOR
 std::vector constexpr support.
 
#define HIBF_DEPRECATED_100    [[deprecated("This will be removed in version 1.0.0; please see the documentation.")]]
 Deprecation message for release.
 
#define HIBF_DEPRECATED_HEADER(message)   HIBF_PRAGMA(GCC warning message)
 Deprecation message for deprecated header.
 
#define HIBF_DISABLE_COMPILER_CHECK
 This disables the warning you would get if your compiler is not known to work.
 
#define HIBF_DISABLE_LEGACY_STD_DIAGNOSTIC
 This disables the warning you would get if -D_GLIBCXX_USE_CXX11_ABI=0 is set.
 
#define HIBF_HAS_AVX512   0
 Whether AVX512F and AVX512BW are available.
 
#define HIBF_PRAGMA(non_string_literal)   _Pragma(#non_string_literal)
 _Pragma requires a string-literal and # makes it a string
 
#define HIBF_WORKAROUND_GCC_BOGUS_MEMCPY   0
 Workaround bogus memcpy errors in GCC 12. (Wrestrict and Wstringop-overflow)
 
#define HIBF_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 HIBF_WORKAROUND_LITERAL   inline
 Our char literals returning std::vector should be constexpr if constexpr std::vector is supported.
 

Detailed Description

Provides platform and dependency checks.

Author
Enrico Seiler <enrico.seiler AT fu-berlin.de>

Macro Definition Documentation

◆ HIBF_COMPILER_IS_GCC

#define HIBF_COMPILER_IS_GCC   0

Whether the current compiler is GCC.

GNUC is also used to indicate the support for GNU compiler extensions. To detect the presence of the GCC compiler, one has to rule out other compilers.

See also
https://sourceforge.net/p/predef/wiki/Compilers

◆ HIBF_WORKAROUND_GCC_BOGUS_MEMCPY

#define HIBF_WORKAROUND_GCC_BOGUS_MEMCPY   0

Workaround bogus memcpy errors in GCC 12. (Wrestrict and Wstringop-overflow)

See also
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105545

◆ HIBF_WORKAROUND_GCC_NO_CXX11_ABI

#define HIBF_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/hibf/issues/2244
https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html