From a217750134b071cb741899987aaeab37483d4a3e Mon Sep 17 00:00:00 2001 From: "jiliang.ljl" Date: Tue, 10 Mar 2026 17:49:46 +0800 Subject: [PATCH 1/8] build: support config clang stdlib and fix default --- cmake/bazel.cmake | 47 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/cmake/bazel.cmake b/cmake/bazel.cmake index f1effc6da..88cab4670 100644 --- a/cmake/bazel.cmake +++ b/cmake/bazel.cmake @@ -365,11 +365,28 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) +if(APPLE) + option(CLANG_USE_LIBCXX "Use libc++ instead of libstdc++" ON) +else() + option(CLANG_USE_LIBCXX "Use libc++ instead of libstdc++" OFF) +endif() + +set(CLANG_STDLIB_OPTION "") +if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + if(CLANG_USE_LIBCXX) + set(CLANG_STDLIB_OPTION "-stdlib=libc++") + else() + if(NOT APPLE) + set(CLANG_STDLIB_OPTION "-stdlib=libstdc++") + endif() + endif() +endif() + if(NOT MSVC) # Use color in diagnostics set( _COMPILER_FLAGS - "$<$:-fcolor-diagnostics;-stdlib=libc++>" + "$<$:-fcolor-diagnostics;${CLANG_STDLIB_OPTION}>" "$<$:-fcolor-diagnostics>" "$<$:-fdiagnostics-color=always>" ) @@ -460,7 +477,7 @@ endif() # C/C++ strict link flags set( BAZEL_CC_STRICT_LINK_FLAGS - "$<$:-stdlib=libc++>" + "$<$:${CLANG_STDLIB_OPTION}>" ${BAZEL_CC_ASAN_COMPILE_FLAGS} ${BAZEL_CC_COVERAGE_COMPILE_FLAGS} ) @@ -479,7 +496,7 @@ set( # C/C++ unstrict link flags set( BAZEL_CC_UNSTRICT_LINK_FLAGS - "$<$:-stdlib=libc++>" + "$<$:${CLANG_STDLIB_OPTION}>" ${BAZEL_CC_ASAN_COMPILE_FLAGS} ${BAZEL_CC_COVERAGE_COMPILE_FLAGS} ) @@ -572,7 +589,7 @@ function(_targets_link_dependencies _NAME) if(TARGET ${LIB}) list(APPEND LIBS_DEPS ${LIB}) list( - APPEND LIBS_INCS + APPEND LIBS_INCS "$" ) endif() @@ -590,45 +607,45 @@ function(_target_link_libraries _NAME) if(NOT _COLLECT_ALWAYS_LINK_VISITED) set(_COLLECT_ALWAYS_LINK_VISITED "" PARENT_SCOPE) endif() - + set(LOCAL_RESULT "") foreach(LIB ${LIB_LIST}) if(NOT TARGET ${LIB}) continue() endif() - + list(FIND _COLLECT_ALWAYS_LINK_VISITED ${LIB} ALREADY_VISITED) if(NOT ALREADY_VISITED EQUAL -1) continue() endif() - + list(APPEND _COLLECT_ALWAYS_LINK_VISITED ${LIB}) set(_COLLECT_ALWAYS_LINK_VISITED "${_COLLECT_ALWAYS_LINK_VISITED}" PARENT_SCOPE) - + get_target_property(ALWAYS_LINK ${LIB} ALWAYS_LINK) if(ALWAYS_LINK) list(APPEND LOCAL_RESULT ${LIB}) endif() - + get_target_property(DEP_LIBS ${LIB} INTERFACE_LINK_LIBRARIES) if(DEP_LIBS) _collect_always_link_libs("${DEP_LIBS}" DEP_ALWAYS_LINK_LIBS) list(APPEND LOCAL_RESULT ${DEP_ALWAYS_LINK_LIBS}) endif() - + get_target_property(LINK_LIBS ${LIB} LINK_LIBRARIES) if(LINK_LIBS) _collect_always_link_libs("${LINK_LIBS}" LINK_ALWAYS_LINK_LIBS) list(APPEND LOCAL_RESULT ${LINK_ALWAYS_LINK_LIBS}) endif() endforeach() - + list(REMOVE_DUPLICATES LOCAL_RESULT) set(${RESULT_VAR} "${LOCAL_RESULT}" PARENT_SCOPE) endfunction() - + _collect_always_link_libs("${ARGN}" ALL_ALWAYS_LINK_LIBS) - + set(ALL_LIBS_TO_PROCESS ${ARGN}) foreach(ALWAYS_LIB ${ALL_ALWAYS_LINK_LIBS}) list(FIND ARGN ${ALWAYS_LIB} FOUND_INDEX) @@ -636,9 +653,9 @@ function(_target_link_libraries _NAME) list(APPEND ALL_LIBS_TO_PROCESS ${ALWAYS_LIB}) endif() endforeach() - + list(REMOVE_DUPLICATES ALL_LIBS_TO_PROCESS) - + foreach(LIB ${ALL_LIBS_TO_PROCESS}) if(NOT TARGET ${LIB}) list(APPEND LINK_LIBS ${LIB}) From bf69722a50c71d93aa0d0ff8188160850350c6db Mon Sep 17 00:00:00 2001 From: "jiliang.ljl" Date: Tue, 10 Mar 2026 17:58:57 +0800 Subject: [PATCH 2/8] fix android --- cmake/bazel.cmake | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cmake/bazel.cmake b/cmake/bazel.cmake index 88cab4670..f6dacf8b2 100644 --- a/cmake/bazel.cmake +++ b/cmake/bazel.cmake @@ -365,11 +365,13 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) -if(APPLE) - option(CLANG_USE_LIBCXX "Use libc++ instead of libstdc++" ON) +if(APPLE OR ANDROID) + set(_clang_use_libcxx_default ON) else() - option(CLANG_USE_LIBCXX "Use libc++ instead of libstdc++" OFF) + set(_clang_use_libcxx_default OFF) endif() +option(CLANG_USE_LIBCXX "Use libc++ instead of libstdc++" ${_clang_use_libcxx_default}) +unset(_clang_use_libcxx_default)) set(CLANG_STDLIB_OPTION "") if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") From b96037e00207cf459666851eb81788acdad0fced Mon Sep 17 00:00:00 2001 From: "jiliang.ljl" Date: Tue, 10 Mar 2026 18:01:36 +0800 Subject: [PATCH 3/8] fix android --- cmake/bazel.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/bazel.cmake b/cmake/bazel.cmake index f6dacf8b2..f9731ce57 100644 --- a/cmake/bazel.cmake +++ b/cmake/bazel.cmake @@ -371,7 +371,7 @@ else() set(_clang_use_libcxx_default OFF) endif() option(CLANG_USE_LIBCXX "Use libc++ instead of libstdc++" ${_clang_use_libcxx_default}) -unset(_clang_use_libcxx_default)) +unset(_clang_use_libcxx_default) set(CLANG_STDLIB_OPTION "") if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") From bdeed968cb3a8f4fe07573b8c4d71c12da54b7ac Mon Sep 17 00:00:00 2001 From: "jiliang.ljl" Date: Tue, 10 Mar 2026 19:21:25 +0800 Subject: [PATCH 4/8] fix --- cmake/bazel.cmake | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/cmake/bazel.cmake b/cmake/bazel.cmake index f9731ce57..b32d8c206 100644 --- a/cmake/bazel.cmake +++ b/cmake/bazel.cmake @@ -374,14 +374,10 @@ option(CLANG_USE_LIBCXX "Use libc++ instead of libstdc++" ${_clang_use_libcxx_de unset(_clang_use_libcxx_default) set(CLANG_STDLIB_OPTION "") -if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - if(CLANG_USE_LIBCXX) - set(CLANG_STDLIB_OPTION "-stdlib=libc++") - else() - if(NOT APPLE) - set(CLANG_STDLIB_OPTION "-stdlib=libstdc++") - endif() - endif() +if(CLANG_USE_LIBCXX) + set(CLANG_STDLIB_OPTION "-stdlib=libc++") +else() + set(CLANG_STDLIB_OPTION "-stdlib=libstdc++") endif() if(NOT MSVC) From 3417498a1489e9f91deb07d21b572ecf1b5e6ff1 Mon Sep 17 00:00:00 2001 From: "jiliang.ljl" Date: Tue, 10 Mar 2026 19:31:22 +0800 Subject: [PATCH 5/8] fix --- cmake/bazel.cmake | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/cmake/bazel.cmake b/cmake/bazel.cmake index b32d8c206..1a076133a 100644 --- a/cmake/bazel.cmake +++ b/cmake/bazel.cmake @@ -365,13 +365,11 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) -if(APPLE OR ANDROID) - set(_clang_use_libcxx_default ON) +if(APPLE) + option(CLANG_USE_LIBCXX "Use libc++ instead of libstdc++" ON) else() - set(_clang_use_libcxx_default OFF) + option(CLANG_USE_LIBCXX "Use libc++ instead of libstdc++" OFF) endif() -option(CLANG_USE_LIBCXX "Use libc++ instead of libstdc++" ${_clang_use_libcxx_default}) -unset(_clang_use_libcxx_default) set(CLANG_STDLIB_OPTION "") if(CLANG_USE_LIBCXX) From f00136465d84ea6e3e68020ed721b07e02090e9e Mon Sep 17 00:00:00 2001 From: "jiliang.ljl" Date: Tue, 10 Mar 2026 21:23:24 +0800 Subject: [PATCH 6/8] fix --- cmake/bazel.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/bazel.cmake b/cmake/bazel.cmake index 1a076133a..2e4f1ccf7 100644 --- a/cmake/bazel.cmake +++ b/cmake/bazel.cmake @@ -365,7 +365,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) -if(APPLE) +if(APPLE OR ANDROID) option(CLANG_USE_LIBCXX "Use libc++ instead of libstdc++" ON) else() option(CLANG_USE_LIBCXX "Use libc++ instead of libstdc++" OFF) From 61322e47882c5ecf5fa1eed1aaba89b9b8be34b7 Mon Sep 17 00:00:00 2001 From: "jiliang.ljl" Date: Wed, 11 Mar 2026 10:01:04 +0800 Subject: [PATCH 7/8] add clang ci --- .github/workflows/main.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index abfd4d73c..34ccc2378 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -81,12 +81,19 @@ jobs: - os: macos-15 platform: macos-arm64 arch_flag: "" # ARM64 uses auto-detection + compiler: default - os: ubuntu-24.04-arm platform: linux-arm64 arch_flag: "" # ARM64 uses auto-detection + compiler: default - os: ubuntu-24.04 platform: linux-x64 arch_flag: "" # Use native CPU microarchitecture + compiler: default + - os: ubuntu-24.04 + platform: linux-x64-clang + arch_flag: "" + compiler: clang steps: - name: Checkout code @@ -101,6 +108,15 @@ jobs: cache: 'pip' cache-dependency-path: 'pyproject.toml' + - name: Install Clang + if: matrix.compiler == 'clang' + run: | + sudo apt-get update + sudo apt-get install -y clang + echo "CC=clang" >> $GITHUB_ENV + echo "CXX=clang++" >> $GITHUB_ENV + shell: bash + - name: Set up environment variables run: | # Set number of processors for parallel builds From 131e337dadebe98aeb34cdcbc78bfec20efb8cb2 Mon Sep 17 00:00:00 2001 From: "jiliang.ljl" Date: Wed, 11 Mar 2026 13:42:27 +0800 Subject: [PATCH 8/8] Revert "add clang ci" This reverts commit 61322e47882c5ecf5fa1eed1aaba89b9b8be34b7. --- .github/workflows/main.yml | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 34ccc2378..abfd4d73c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -81,19 +81,12 @@ jobs: - os: macos-15 platform: macos-arm64 arch_flag: "" # ARM64 uses auto-detection - compiler: default - os: ubuntu-24.04-arm platform: linux-arm64 arch_flag: "" # ARM64 uses auto-detection - compiler: default - os: ubuntu-24.04 platform: linux-x64 arch_flag: "" # Use native CPU microarchitecture - compiler: default - - os: ubuntu-24.04 - platform: linux-x64-clang - arch_flag: "" - compiler: clang steps: - name: Checkout code @@ -108,15 +101,6 @@ jobs: cache: 'pip' cache-dependency-path: 'pyproject.toml' - - name: Install Clang - if: matrix.compiler == 'clang' - run: | - sudo apt-get update - sudo apt-get install -y clang - echo "CC=clang" >> $GITHUB_ENV - echo "CXX=clang++" >> $GITHUB_ENV - shell: bash - - name: Set up environment variables run: | # Set number of processors for parallel builds