-
Notifications
You must be signed in to change notification settings - Fork 109
/
Copy pathCMakeLists.txt
146 lines (133 loc) · 4.62 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
cmake_minimum_required(VERSION 3.15 FATAL_ERROR)
# keep old policy for setting implicit link libraries
# zlib causes issues in static builds otherwise
cmake_policy(SET CMP0060 OLD)
cmake_policy(SET CMP0074 NEW)
project(foldseek C CXX)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/lib/mmseqs/cmake")
set(ENABLE_PROSTT5 1 CACHE BOOL "Enable ProstT5")
set(ENABLE_CUDA 0 CACHE BOOL "Enable CUDA")
set(IGNORE_RUST_VERSION 0 CACHE BOOL "Ignore Rust version check")
set(FORCE_STATIC_DEPS 0 CACHE BOOL "Force static linking of deps")
if(FORCE_STATIC_DEPS)
if(ENABLE_CUDA)
set(CMAKE_FIND_LIBRARY_SUFFIXES .a .so CACHE INTERNAL "" FORCE)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++")
else()
set(CMAKE_FIND_LIBRARY_SUFFIXES .a CACHE INTERNAL "" FORCE)
set(CMAKE_LINK_SEARCH_START_STATIC ON CACHE INTERNAL "" FORCE)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static -static-libgcc -static-libstdc++")
endif()
set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "" FORCE)
endif()
if(NOT XCODE AND NOT MSVC AND NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif()
set(FRAMEWORK_ONLY 1 CACHE INTERNAL "" FORCE)
include(MMseqsSetupDerivedTarget)
add_subdirectory(lib/mmseqs EXCLUDE_FROM_ALL)
set(FOLDSEEK_FRAMEWORK_ONLY 0 CACHE BOOL "Framework mode (don't create foldseek executable)")
if (FOLDSEEK_FRAMEWORK_ONLY)
set(FRAMEWORK_ONLY 1 CACHE INTERNAL "" FORCE)
endif()
add_subdirectory(lib/3di)
add_subdirectory(lib/pulchra)
add_subdirectory(lib/kerasify)
add_subdirectory(lib/tmalign)
set(BUILD_LIBRARY 1 CACHE INTERNAL "" FORCE)
add_subdirectory(lib/foldcomp EXCLUDE_FROM_ALL)
add_subdirectory(data)
include_directories(lib)
include_directories(lib/3di)
include_directories(lib/pulchra)
include_directories(lib/kerasify)
set(ENV{CARGO_NET_OFFLINE} true)
add_subdirectory(lib/corrosion)
# don't try to link to gcc_s, its not needed anyway
list(REMOVE_ITEM Rust_CARGO_TARGET_LINK_NATIVE_LIBS "gcc_s")
set(Rust_CARGO_TARGET_LINK_NATIVE_LIBS ${Rust_CARGO_TARGET_LINK_NATIVE_LIBS} CACHE INTERNAL "")
if(Rust_VERSION VERSION_LESS "1.68.0" AND NOT IGNORE_RUST_VERSION)
message(FATAL_ERROR "Rust >= 1.68.0 is required")
endif()
set(RUST_FEATURE "")
if(HAVE_AVX2)
set(RUST_FEATURE simd_avx2)
elseif(HAVE_SSE4_1 OR HAVE_SSE2)
set(RUST_FEATURE simd_sse2)
elseif(HAVE_ARM8)
set(RUST_FEATURE simd_neon)
endif()
if (NATIVE_ARCH AND (RUST_FEATURE STREQUAL ""))
if(EMSCRIPTEN)
set(RUST_FEATURE simd_wasm)
elseif(ARM)
set(RUST_FEATURE simd_neon)
elseif(X86 OR X64)
if (HAVE_AVX2_EXTENSIONS)
set(RUST_FEATURE simd_avx2)
elseif (HAVE_SSE2_EXTENSIONS)
set(RUST_FEATURE simd_sse2)
endif()
endif()
endif()
if(RUST_FEATURE STREQUAL "")
message(FATAL_ERROR "No SIMD support for this architecture")
endif()
message("-- Rust Feature: ${RUST_FEATURE}")
corrosion_import_crate(
MANIFEST_PATH lib/block-aligner/c/Cargo.toml
FEATURES "${RUST_FEATURE}"
CRATE_TYPES staticlib
)
include_directories(lib/block-aligner/c)
if(EMSCRIPTEN)
corrosion_add_target_local_rustflags(block_aligner_c "-Clink-args=--no-entry -sRELOCATABLE=1")
endif()
if(HAVE_SSE2)
message(WARNING "ProstT5 support requires at least SSE4.1, disabling ProstT5")
set(ENABLE_PROSTT5 OFF)
endif()
if(ENABLE_PROSTT5)
set(CMAKE_SYSTEM_PROCESSOR_TMP ${CMAKE_SYSTEM_PROCESSOR})
# circumvent ggml's host CPU detection
if(ARM)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
endif()
if(X86 OR X64)
set(CMAKE_SYSTEM_PROCESSOR x86_64)
endif()
if(PPC64)
set(CMAKE_SYSTEM_PROCESSOR ppc64)
endif()
set(GGML_STATIC ON)
set(BUILD_SHARED_LIBS OFF)
set(GGML_BLAS OFF)
set(GGML_OPENMP OFF)
if (NOT NATIVE_ARCH)
set(GGML_NATIVE OFF)
if (HAVE_AVX2)
set(GGML_AVX2 ON)
set(GGML_AVX ON)
set(GGML_FMA ON)
set(GGML_F16C ON)
elseif(HAVE_SSE4_1)
set(GGML_AVX2 OFF)
set(GGML_AVX OFF)
set(GGML_FMA OFF)
set(GGML_F16C OFF)
endif()
endif()
if (ENABLE_CUDA)
set(GGML_CUDA ON)
set(GGML_CUDA_F16 ON)
set(GGML_CUDA_FORCE_CUBLAS ON)
set(GGML_CUDA_NO_VMM ON)
endif()
if (APPLE AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(GGML_METAL OFF)
endif()
add_subdirectory(lib/prostt5 EXCLUDE_FROM_ALL)
set(CMAKE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR_TMP})
endif()
add_subdirectory(src)