21#define SEQAN3_STR_HELPER(x) #x
22#define SEQAN3_STR(x) SEQAN3_STR_HELPER(x)
31#ifndef SEQAN3_DOXYGEN_ONLY
32# define SEQAN3_DOXYGEN_ONLY(x)
39#if defined(__GNUC__) && (__GNUC__ == 7 || __GNUC__ == 8 || __GNUC__ == 9)
40# error "SeqAn 3.1.x is the last version that supports GCC 7, 8, and 9. Please upgrade your compiler or use 3.1.x."
49# if (__cplusplus < 201709)
50# error "SeqAn3 requires C++20, make sure that you have set -std=c++20."
53# error "This is not a C++ compiler."
56#if __has_include(<version>)
65#if __has_include(<seqan3/version.hpp>)
68# error SeqAn3 include directory not set correctly. Forgot to add -I ${INSTALLDIR}/include to your CXXFLAGS?
72#if __has_include(<range/v3/version.hpp>)
73# define RANGE_V3_MINVERSION 1100
74# define RANGE_V3_MAXVERSION 1199
76# define SEQAN3_MSG "Your version: " SEQAN3_STR(RANGE_V3_VERSION) \
77 "; minimum version: " SEQAN3_STR(RANGE_V3_MINVERSION) \
78 "; expected maximum version: " SEQAN3_STR(RANGE_V3_MAXVERSION)
79# include <range/v3/version.hpp>
80# if RANGE_V3_VERSION < RANGE_V3_MINVERSION
81# error Your range-v3 library is too old.
82# pragma message(SEQAN3_MSG)
83# elif RANGE_V3_VERSION > RANGE_V3_MAXVERSION
84# pragma GCC warning "Your range-v3 library is possibly too new. Some features might not work correctly."
85# pragma message(SEQAN3_MSG)
89# error The range-v3 library was not included correctly. Forgot to add -I ${INSTALLDIR}/include to your CXXFLAGS?
93#if __has_include(<sdsl/version.hpp>)
94# include <sdsl/version.hpp>
95 static_assert(sdsl::sdsl_version_major == 3,
"Only version 3 of the SDSL is supported by SeqAn3.");
97# error The sdsl library was not included correctly. Forgot to add -I ${INSTALLDIR}/include to your CXXFLAGS?
105#ifndef SEQAN3_WITH_CEREAL
106# if __has_include(<cereal/cereal.hpp>)
107# define SEQAN3_WITH_CEREAL 1
109# define SEQAN3_WITH_CEREAL 0
111#elif SEQAN3_WITH_CEREAL != 0
112# if ! __has_include(<cereal/cereal.hpp>)
113# error Cereal was marked as required, but not found!
117#if !SEQAN3_WITH_CEREAL
126# define CEREAL_SERIALIZE_FUNCTION_NAME serialize
128# define CEREAL_LOAD_FUNCTION_NAME load
130# define CEREAL_SAVE_FUNCTION_NAME save
132# define CEREAL_LOAD_MINIMAL_FUNCTION_NAME load_minimal
134# define CEREAL_SAVE_MINIMAL_FUNCTION_NAME save_minimal
145#ifndef SEQAN3_WITH_LEMON
146# if __has_include(<lemon/config.h>)
147# define SEQAN3_WITH_LEMON 1
149# define SEQAN3_WITH_LEMON 0
151#elif SEQAN3_WITH_LEMON != 0
152# if !__has_include(<lemon/config.h>)
153# error Lemon was marked as required, but not found!
156#if SEQAN3_WITH_LEMON == 1
157# define LEMON_HAVE_LONG_LONG 1
158# define LEMON_CXX11 1
159# if defined(__unix__) || defined(__APPLE__)
160# define LEMON_USE_PTHREAD 1
161# define LEMON_USE_WIN32_THREADS 0
162# define LEMON_WIN32 0
164# define LEMON_USE_PTHREAD 0
165# define LEMON_USE_WIN32_THREADS 1
166# define LEMON_WIN32 1
178# define SEQAN3_PRAGMA(non_string_literal) _Pragma(#non_string_literal)
182#ifndef SEQAN3_DEPRECATED_HEADER
183# ifndef SEQAN3_DISABLE_DEPRECATED_WARNINGS
184# define SEQAN3_DEPRECATED_HEADER(message) SEQAN3_PRAGMA(GCC warning message)
186# define SEQAN3_DEPRECATED_HEADER(message)
200#if defined(__GNUC__) && (__GNUC__ == 10 && __GNUC_MINOR__ <= 1)
201# pragma GCC warning "Be aware that gcc 10.0 and 10.1 are known to have several bugs that might make SeqAn3 fail to compile. Please use gcc >= 10.2."
204#ifndef SEQAN3_WORKAROUND_VIEW_PERFORMANCE
206# define SEQAN3_WORKAROUND_VIEW_PERFORMANCE 1
210#ifndef SEQAN3_WORKAROUND_GCC_93467
211# if defined(__GNUC__) && ((__GNUC__ <= 9) || (__GNUC__ == 10 && __GNUC_MINOR__ < 2))
212# define SEQAN3_WORKAROUND_GCC_93467 1
214# define SEQAN3_WORKAROUND_GCC_93467 0
219#ifndef SEQAN3_WORKAROUND_GCC_96070
220# if defined(__GNUC__) && (__GNUC__ == 10 && __GNUC_MINOR__ < 4)
221# define SEQAN3_WORKAROUND_GCC_96070 1
223# define SEQAN3_WORKAROUND_GCC_96070 0
228#ifndef SEQAN3_WORKAROUND_GCC_99318
229# if defined(__GNUC__) && (__GNUC__ == 10 && __GNUC_MINOR__ < 3)
230# define SEQAN3_WORKAROUND_GCC_99318 1
232# define SEQAN3_WORKAROUND_GCC_99318 0
238#ifndef SEQAN3_WORKAROUND_GCC_100139
239# if defined(__GNUC__)
240# define SEQAN3_WORKAROUND_GCC_100139 1
242# define SEQAN3_WORKAROUND_GCC_100139 0
248#ifndef SEQAN3_WORKAROUND_GCC_100252
249# if defined(__GNUC__) && (__GNUC__ >= 12)
250# define SEQAN3_WORKAROUND_GCC_100252 1
252# define SEQAN3_WORKAROUND_GCC_100252 0
266#ifndef SEQAN3_WORKAROUND_GCC_NO_CXX11_ABI
267# if defined(_GLIBCXX_USE_CXX11_ABI) && _GLIBCXX_USE_CXX11_ABI == 0
268# define SEQAN3_WORKAROUND_GCC_NO_CXX11_ABI 1
270# define SEQAN3_WORKAROUND_GCC_NO_CXX11_ABI 0
274#if SEQAN3_DOXYGEN_ONLY(1)0
276#define SEQAN3_DISABLE_LEGACY_STD_DIAGNOSTIC
279#if defined(_GLIBCXX_USE_CXX11_ABI) && _GLIBCXX_USE_CXX11_ABI == 0
280# ifndef SEQAN3_DISABLE_LEGACY_STD_DIAGNOSTIC
281# pragma GCC warning "We do not actively support compiler that have -D_GLIBCXX_USE_CXX11_ABI=0 set, and it might be that SeqAn does not compile due to this. It is known that all compiler of CentOS 7 / RHEL 7 set this flag by default (and that it cannot be overridden!). Note that these versions of the OSes are community-supported (see https://docs.seqan.de/seqan/3-master-user/about_api.html#platform_stability for more details). You can disable this warning by setting -DSEQAN3_DISABLE_LEGACY_STD_DIAGNOSTIC."
288#ifndef SEQAN3_WORKAROUND_GCC_NON_TEMPLATE_REQUIRES
289# if defined(__GNUC_MINOR__) && (__GNUC__ < 10)
290# define SEQAN3_WORKAROUND_GCC_NON_TEMPLATE_REQUIRES 1
292# define SEQAN3_WORKAROUND_GCC_NON_TEMPLATE_REQUIRES 0
298#ifndef SEQAN3_WORKAROUND_GCC_PIPEABLE_CONFIG_CONCEPT
299# if defined(__GNUC__) && (__GNUC__ < 11)
300# define SEQAN3_WORKAROUND_GCC_PIPEABLE_CONFIG_CONCEPT 1
302# define SEQAN3_WORKAROUND_GCC_PIPEABLE_CONFIG_CONCEPT 0
325#ifndef SEQAN3_WORKAROUND_FURTHER_CONSTRAIN_FRIEND_DECLARATION
326# if defined(__clang__)
327# define SEQAN3_WORKAROUND_FURTHER_CONSTRAIN_FRIEND_DECLARATION 1
329# define SEQAN3_WORKAROUND_FURTHER_CONSTRAIN_FRIEND_DECLARATION 0
339#undef SEQAN3_STR_HELPER
Provides SeqAn version macros and global variables.