1- cmake_minimum_required (VERSION 2.8.12 FATAL_ERROR)
1+ cmake_minimum_required (VERSION 3.15 FATAL_ERROR)
22project (MMseqs CXX C)
33message ("-- Source Directory: ${CMAKE_CURRENT_SOURCE_DIR} " )
44message ("-- Project Directory: ${PROJECT_SOURCE_DIR} " )
@@ -18,6 +18,25 @@ set(HAVE_ARM8 0 CACHE BOOL "Have ARMv8 CPU")
1818set (HAVE_S390X 0 CACHE BOOL "Have s390x architecture" )
1919set (NATIVE_ARCH 1 CACHE BOOL "Assume native architecture for SIMD. Use one of the HAVE_* options or set CMAKE_CXX_FLAGS to the appropriate flags if you disable this." )
2020set (USE_SYSTEM_ZSTD 0 CACHE BOOL "Use zstd provided by system instead of bundled version" )
21+ set (ENABLE_CUDA 0 CACHE BOOL "Enable CUDA" )
22+ set (FORCE_STATIC_DEPS 0 CACHE BOOL "Force static linking of deps" )
23+
24+ if (FORCE_STATIC_DEPS)
25+ if (ENABLE_CUDA)
26+ set (CMAKE_FIND_LIBRARY_SUFFIXES .a .so CACHE INTERNAL "" FORCE)
27+ set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++" )
28+ else ()
29+ set (CMAKE_FIND_LIBRARY_SUFFIXES .a CACHE INTERNAL "" FORCE)
30+ set (CMAKE_LINK_SEARCH_START_STATIC ON CACHE INTERNAL "" FORCE)
31+ set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static -static-libgcc -static-libstdc++" )
32+ endif ()
33+ set (BUILD_SHARED_LIBS OFF CACHE INTERNAL "" FORCE)
34+ endif ()
35+
36+ if (NOT XCODE AND NOT MSVC AND NOT CMAKE_BUILD_TYPE )
37+ set (CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
38+ set_property (CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo" )
39+ endif ()
2140
2241if (HAVE_SANITIZER)
2342 include (FindUBSan)
@@ -26,10 +45,6 @@ if (HAVE_SANITIZER)
2645 include (FindTSan)
2746endif ()
2847
29- if (NOT CMAKE_BUILD_TYPE )
30- set (CMAKE_BUILD_TYPE Release)
31- endif ()
32-
3348# find compiler
3449if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
3550 message ("-- Compiler is clang(++)" )
@@ -51,9 +66,9 @@ set(MMSEQS_CXX_FLAGS "-fsigned-char")
5166set (MMSEQS_ARCH "" )
5267if (HAVE_AVX2)
5368 if (CMAKE_COMPILER_IS_CLANG)
54- set (MMSEQS_ARCH "${MMSEQS_ARCH} -mavx2 -mcx16" )
69+ set (MMSEQS_ARCH "${MMSEQS_ARCH} -mavx2 -mfma - mcx16" )
5570 else ()
56- set (MMSEQS_ARCH "${MMSEQS_ARCH} -mavx2 -mcx16 -Wa,-q" )
71+ set (MMSEQS_ARCH "${MMSEQS_ARCH} -mavx2 -mfma - mcx16 -Wa,-q" )
5772 endif ()
5873 set (X64 1 CACHE INTERNAL "" )
5974elseif (HAVE_SSE4_1)
@@ -77,7 +92,11 @@ elseif (HAVE_S390X)
7792 set (ZARCH 1 CACHE INTERNAL "" )
7893endif ()
7994
80- if (NATIVE_ARCH AND (MMSEQS_ARCH STREQUAL "" ))
95+ if (MMSEQS_ARCH)
96+ set (NATIVE_ARCH 0 CACHE INTERNAL "" )
97+ endif ()
98+
99+ if (NATIVE_ARCH)
81100 if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm.*|ARM.*|aarch64.*|AARCH64.*)" )
82101 set (ARM 1 CACHE INTERNAL "" )
83102 elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "PPC64*|ppc64*|powerpc64*" )
@@ -118,6 +137,13 @@ if (NATIVE_ARCH AND (MMSEQS_ARCH STREQUAL ""))
118137 endif ()
119138endif ()
120139
140+ if (ARM AND CMAKE_COMPILER_IS_CLANG AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 20.1.5)
141+ message ("-- Setting -DAVX2 ON ARM" )
142+ set (MMSEQS_ARCH "${MMSEQS_ARCH} -DAVX2" )
143+ endif ()
144+
145+ set (MMSEQS_ARCH ${MMSEQS_ARCH} CACHE INTERNAL "" )
146+
121147if (NOT (MMSEQS_ARCH STREQUAL "" ))
122148 set (MMSEQS_CXX_FLAGS "${MMSEQS_CXX_FLAGS} ${MMSEQS_ARCH} " )
123149endif ()
@@ -164,11 +190,11 @@ endif ()
164190set (MMSEQS_C_FLAGS "${MMSEQS_CXX_FLAGS} " )
165191set (MMSEQS_CXX_FLAGS "${MMSEQS_CXX_FLAGS} -std=c++1y" )
166192# Compiler-specific features
167- if (CMAKE_COMPILER_IS_CLANG AND (NOT EMSCRIPTEN))
168- set (CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11" )
169- set (CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++" )
170- set (MMSEQS_CXX_FLAGS "${MMSEQS_CXX_FLAGS} -stdlib=libc++" )
171- endif ()
193+ # if (CMAKE_COMPILER_IS_CLANG AND (NOT EMSCRIPTEN))
194+ # set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11")
195+ # set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
196+ # set(MMSEQS_CXX_FLAGS "${MMSEQS_CXX_FLAGS} -stdlib=libc++")
197+ # endif ()
172198
173199if (USE_SYSTEM_ZSTD)
174200 include (FindPackageHandleStandardArgs)
@@ -204,21 +230,29 @@ add_subdirectory(lib/tinyexpr EXCLUDE_FROM_ALL)
204230include_directories (lib/microtar)
205231add_subdirectory (lib/microtar)
206232
233+ # tantan
234+ include_directories (lib/tantan)
235+ add_subdirectory (lib/tantan)
236+
207237# simde
208238include_directories (lib/simde)
209239
210240include_directories (lib)
211241include_directories (lib/simd)
212- include_directories (lib/gzstream)
213242include_directories (lib/alp)
214- include_directories (lib/cacode)
215243include_directories (lib/ksw2)
216244include_directories (lib/xxhash)
217245if (NOT DISABLE_IPS4O)
218246 include_directories (lib/ips4o)
219247endif ()
220248
221- add_subdirectory (lib/cacode)
249+ # libmarv
250+ if (ENABLE_CUDA)
251+ set (LIBRARY_ONLY 1 CACHE INTERNAL "" FORCE)
252+ include_directories (lib/libmarv/src)
253+ add_subdirectory (lib/libmarv/src EXCLUDE_FROM_ALL )
254+ endif ()
255+
222256add_subdirectory (lib/alp)
223257add_subdirectory (lib/ksw2)
224258add_subdirectory (data)
0 commit comments