From f88d757d060a8ebdf88c370e172700192ccca6fa Mon Sep 17 00:00:00 2001 From: HanYunChenLuo Date: Thu, 15 Jan 2026 07:22:07 +0800 Subject: [PATCH] =?UTF-8?q?Add=20glibc=20check=20to=20support=20build=20fi?= =?UTF-8?q?lament=20on=20Linux=20musl-based=20distrib=E2=80=A6=20(#9592)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 10 +++++++++- libs/utils/src/CallStack.cpp | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a706f4397c..48b116e2b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -367,14 +367,22 @@ endif() if (LINUX) option(USE_STATIC_LIBCXX "Link against the static runtime libraries." ON) + + # Add this step to support both glibc-based Linux distributions (e.g., Ubuntu, Debian) + # and musl-based distributions (e.g., Alpine). + include(CheckSymbolExists) + check_symbol_exists(__GLIBC__ "features.h" CLANG_WITH_GLIBC) + if (${USE_STATIC_LIBCXX}) if (FILAMENT_USING_GCC) link_libraries("-static-libgcc -static-libstdc++") - else () + elseif (CLANG_WITH_GLIBC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") link_libraries("-static-libgcc -static-libstdc++") link_libraries(libc++.a) link_libraries(libc++abi.a) + else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static") endif() endif() diff --git a/libs/utils/src/CallStack.cpp b/libs/utils/src/CallStack.cpp index 3c95701bd2..94c70ba259 100644 --- a/libs/utils/src/CallStack.cpp +++ b/libs/utils/src/CallStack.cpp @@ -27,7 +27,7 @@ #include #include -#if !defined(__ANDROID__) && !defined(WIN32) && !defined(__EMSCRIPTEN__) +#if !defined(__ANDROID__) && !defined(WIN32) && !defined(__EMSCRIPTEN__) && !(defined(__linux__) && !defined(__GLIBC__)) #include #define HAS_EXECINFO 1 #else