21 #define STR_HELPER(x) #x 22 #define STR(x) STR_HELPER(x) 31 static_assert(__cplusplus >= 201703,
"SeqAn3 requires C++17, make sure that you have set -std=c++17.");
33 # error "This is not a C++ compiler." 36 #if __has_include(<version>) 42 # if __cpp_concepts == 201507 // GCC and Concepts TS 43 # define SEQAN3_CONCEPT concept bool 45 static_assert(__cpp_concepts >= 201507,
"Your compiler supports Concepts, but the support is not recent enough.");
46 # define SEQAN3_CONCEPT concept 49 # error "SeqAn3 requires C++ Concepts, either vie the TS (flag: -fconcepts) or via C++20 (flag: -std=c++2a / -std=c++20)." 53 #if !__has_include(<filesystem>) 54 # if !__has_include(<experimental/filesystem>) 55 # error SeqAn3 requires C++17 filesystem support, but it was not found. 64 #if !__has_include(<seqan3/version.hpp>) 65 # error SeqAn3 include directory not set correctly. Forgot to add -I ${INSTALLDIR}/include to your CXXFLAGS? 69 #if __has_include(<range/v3/version.hpp>) 70 # define RANGE_V3_MINVERSION 500 71 # define RANGE_V3_MAXVERSION 599 73 # define MSG "Your version: " STR(RANGE_V3_VERSION) \ 74 "; minimum version: " STR(RANGE_V3_MINVERSION) \ 75 "; expected maximum version: " STR(RANGE_V3_MAXVERSION) 76 # include <range/v3/version.hpp> 77 # if RANGE_V3_VERSION < RANGE_V3_MINVERSION 78 # error Your range-v3 library is too old. 80 # elif RANGE_V3_VERSION > RANGE_V3_MAXVERSION 81 # pragma GCC warning "Your range-v3 library is possibly too new. Some features might not work correctly." 86 # error The range-v3 library was not included correctly. Forgot to add -I ${INSTALLDIR}/include to your CXXFLAGS? 90 #if __has_include(<sdsl/version.hpp>) 91 # include <sdsl/version.hpp> 92 static_assert(sdsl::sdsl_version_major == 3,
"Only version 3 of the SDSL is supported by SeqAn3.");
94 # error The sdsl library was not included correctly. Forgot to add -I ${INSTALLDIR}/include to your CXXFLAGS? 102 #ifndef SEQAN3_WITH_CEREAL 103 # if __has_include(<cereal/cereal.hpp>) 104 # define SEQAN3_WITH_CEREAL 1 106 # define SEQAN3_WITH_CEREAL 0 108 #elif SEQAN3_WITH_CEREAL != 0 109 # if ! __has_include(<cereal/cereal.hpp>) 110 # error Cereal was marked as required, but not found! 114 #if !SEQAN3_WITH_CEREAL 122 # define CEREAL_SERIALIZE_FUNCTION_NAME serialize 124 # define CEREAL_LOAD_FUNCTION_NAME load 126 # define CEREAL_SAVE_FUNCTION_NAME save 128 # define CEREAL_LOAD_MINIMAL_FUNCTION_NAME load_minimal 130 # define CEREAL_SAVE_MINIMAL_FUNCTION_NAME save_minimal 142 #ifndef SEQAN3_WITH_LEMON 143 # if __has_include(<lemon/config.h>) 144 # define SEQAN3_WITH_LEMON 1 146 # define SEQAN3_WITH_LEMON 0 148 #elif SEQAN3_WITH_LEMON != 0 149 # if !__has_include(<lemon/config.h>) 150 # error Lemon was marked as required, but not found! 153 #if SEQAN3_WITH_LEMON == 1 154 # define LEMON_HAVE_LONG_LONG 1 155 # define LEMON_CXX11 1 156 # if defined(__unix__) || defined(__APPLE__) 157 # define LEMON_USE_PTHREAD 1 158 # define LEMON_USE_WIN32_THREADS 0 159 # define LEMON_WIN32 0 161 # define LEMON_USE_PTHREAD 0 162 # define LEMON_USE_WIN32_THREADS 1 163 # define LEMON_WIN32 1 175 #ifndef SEQAN3_DOXYGEN_ONLY 176 # define SEQAN3_DOXYGEN_ONLY(x) 183 #ifndef SEQAN3_WORKAROUND_VIEW_PERFORMANCE 184 # define SEQAN3_WORKAROUND_VIEW_PERFORMANCE 1 189 #ifndef SEQAN3_WORKAROUND_GCC_87113 190 # if defined(__GNUC_MINOR__) && ((__GNUC__ == 7) || ((__GNUC__ == 8) && (__GNUC_MINOR__ < 3))) 191 # define SEQAN3_WORKAROUND_GCC_87113 1 193 # define SEQAN3_WORKAROUND_GCC_87113 0