Skip to content

Commit 32cb7f2

Browse files
authored
Extend SVS_URL logic with new binaries (#928)
* fix indent * rewrite SVS_URL logic * fix indent * update logic and comments
1 parent f177c40 commit 32cb7f2

1 file changed

Lines changed: 36 additions & 17 deletions

File tree

‎cmake/svs.cmake‎

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -37,38 +37,57 @@ if(USE_SVS)
3737
include(CheckSymbolExists)
3838
check_symbol_exists(__GLIBC__ "features.h" GLIBC_FOUND)
3939
if(GLIBC_FOUND)
40-
include(CheckCXXSourceRuns)
41-
check_cxx_source_runs("#include <features.h>
42-
int main(){ return __GLIBC__ == 2 && __GLIBC_MINOR__ >= 28 ?0:1; }"
43-
GLIBC_2_28_FOUND)
44-
check_cxx_source_runs("#include <features.h>
45-
int main(){ return __GLIBC__ == 2 && __GLIBC_MINOR__ >= 26 ?0:1; }"
46-
GLIBC_2_26_FOUND)
40+
# Detect glibc version via __GLIBC__.
41+
file(WRITE "${CMAKE_BINARY_DIR}/detect_glibc.cpp"
42+
"#include <cstdio>\n#include <features.h>\nint main(){ printf(\"%d.%d\", __GLIBC__, __GLIBC_MINOR__); return 0; }\n")
43+
try_run(_glibc_run_result _glibc_compiled
44+
"${CMAKE_BINARY_DIR}" "${CMAKE_BINARY_DIR}/detect_glibc.cpp"
45+
RUN_OUTPUT_VARIABLE GLIBC_VERSION)
46+
if(NOT _glibc_compiled OR NOT _glibc_run_result EQUAL 0)
47+
set(GLIBC_VERSION "0")
48+
endif()
49+
message(STATUS "Detected GLIBC version: ${GLIBC_VERSION}")
50+
51+
# Detect libstdc++ version via _GLIBCXX_RELEASE (GCC major version of the headers).
52+
file(WRITE "${CMAKE_BINARY_DIR}/detect_glibcxx.cpp"
53+
"#include <stdio.h>\n#include <string>\nint main(){ printf(\"%d\", _GLIBCXX_RELEASE); return 0; }\n")
54+
try_run(_glibcxx_run_result _glibcxx_compiled
55+
"${CMAKE_BINARY_DIR}" "${CMAKE_BINARY_DIR}/detect_glibcxx.cpp"
56+
RUN_OUTPUT_VARIABLE GLIBCXX_VERSION)
57+
if(NOT _glibcxx_compiled OR NOT _glibcxx_run_result EQUAL 0)
58+
set(GLIBCXX_VERSION 0)
59+
endif()
60+
message(STATUS "Detected GLIBCXX_RELEASE (GCC major): ${GLIBCXX_VERSION}")
4761
endif()
4862

4963
cmake_dependent_option(SVS_SHARED_LIB "Use SVS pre-compiled shared library" ON "USE_SVS AND GLIBC_FOUND AND SVS_LVQ_SUPPORTED" OFF)
5064
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
51-
if (GLIBC_2_28_FOUND)
52-
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "20.0")
53-
set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.3.0/svs-shared-library-0.3.0-reduced-clang20.tar.gz" CACHE STRING "SVS URL")
65+
if(GLIBC_VERSION VERSION_GREATER_EQUAL "2.31" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "21.0")
66+
if(GLIBCXX_VERSION VERSION_GREATER_EQUAL "13")
67+
set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/nightly/svs-shared-library-nightly-reduced-clang21-gcc13-2026-03-31-1147.tar.gz" CACHE STRING "SVS URL")
68+
elseif(GLIBCXX_VERSION VERSION_GREATER_EQUAL "12")
69+
set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/nightly/svs-shared-library-nightly-reduced-clang21-gcc12-2026-03-31-1147.tar.gz" CACHE STRING "SVS URL")
70+
elseif(GLIBCXX_VERSION VERSION_GREATER_EQUAL "11")
71+
set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/nightly/svs-shared-library-nightly-reduced-clang21-gcc11-2026-03-31-1147.tar.gz" CACHE STRING "SVS URL")
5472
else()
55-
set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.3.0/svs-shared-library-0.3.0-reduced-clang.tar.gz" CACHE STRING "SVS URL")
73+
message(STATUS "libstdc++ >= GCC 11 is required for Clang SVS binaries - disabling SVS_SHARED_LIB")
74+
set(SVS_SHARED_LIB OFF)
5675
endif()
5776
else()
58-
message(STATUS "GLIBC>=2.28 is required for Clang build - disabling SVS_SHARED_LIB")
77+
message(STATUS "GLIBC >= 2.31 and Clang >= 21.0 is required for Clang SVS binaries - disabling SVS_SHARED_LIB")
5978
set(SVS_SHARED_LIB OFF)
6079
endif()
6180
else()
62-
if (GLIBC_2_28_FOUND)
63-
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "14.0")
81+
if(GLIBC_VERSION VERSION_GREATER_EQUAL "2.28")
82+
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "14.0")
6483
set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.3.0/svs-shared-library-0.3.0-reduced-gcc14.tar.gz" CACHE STRING "SVS URL")
6584
else()
6685
set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.3.0/svs-shared-library-0.3.0-reduced.tar.gz" CACHE STRING "SVS URL")
67-
endif()
68-
elseif(GLIBC_2_26_FOUND)
86+
endif()
87+
elseif(GLIBC_VERSION VERSION_GREATER_EQUAL "2.26")
6988
set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.3.0/svs-shared-library-0.3.0-reduced-glibc2_26.tar.gz" CACHE STRING "SVS URL")
7089
else()
71-
message(STATUS "GLIBC>=2.26 is required for SVS shared library - disabling SVS_SHARED_LIB")
90+
message(STATUS "GLIBC >= 2.26 is required for GCC SVS binaries - disabling SVS_SHARED_LIB")
7291
set(SVS_SHARED_LIB OFF)
7392
endif()
7493
endif()

0 commit comments

Comments
 (0)