From 405637480019d2e0a7b4f0740ea07b89067557de Mon Sep 17 00:00:00 2001 From: Sergiu Deitsch Date: Fri, 24 Feb 2023 19:25:26 +0100 Subject: [PATCH] fixed emscripten detection (#897) --- .github/workflows/emscripten.yml | 1 - CMakeLists.txt | 18 ++++++++++++++---- src/symbolize.cc | 2 +- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/.github/workflows/emscripten.yml b/.github/workflows/emscripten.yml index adbff663f..f583061fa 100644 --- a/.github/workflows/emscripten.yml +++ b/.github/workflows/emscripten.yml @@ -40,7 +40,6 @@ jobs: cmake -S . -B build_${{matrix.build_type}} \ -DBUILD_SHARED_LIBS=${{matrix.lib == 'shared'}} \ -DCMAKE_AR=$(which emar) \ - -DCMAKE_C_COMPILER=$(which emcc) \ -DCMAKE_CXX_COMPILER=$(which em++) \ -DCMAKE_CXX_STANDARD=${{matrix.std}} \ -DCMAKE_CXX_STANDARD_REQUIRED=ON \ diff --git a/CMakeLists.txt b/CMakeLists.txt index 43fa1bf71..582758a3d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -503,15 +503,25 @@ if (WITH_SYMBOLIZE) if (HAVE_SYMBOLIZE) set (HAVE_STACKTRACE 1) endif (HAVE_SYMBOLIZE) - elseif (UNIX OR (APPLE AND HAVE_DLADDR)) + elseif (UNIX) + cmake_push_check_state (RESET) + check_cxx_source_compiles ([=[ + int main() + { + #ifndef __ELF__ + #error __ELF__ not defined + #endif + } + ]=] HAVE_SYMBOLIZE) + cmake_pop_check_state () + elseif (APPLE AND HAVE_DLADDR) set (HAVE_SYMBOLIZE 1) endif (WIN32 OR CYGWIN) endif (WITH_SYMBOLIZE) # CMake manages symbolize availability. The definition is necessary only when -# building the library. Switch to add_compile_definitions once we drop support -# for CMake below version 3.12. -add_definitions (-DGLOG_NO_SYMBOLIZE_DETECTION) +# building the library. +add_compile_definitions (GLOG_NO_SYMBOLIZE_DETECTION) check_cxx_source_compiles (" #include diff --git a/src/symbolize.cc b/src/symbolize.cc index f56e97c99..51025018f 100644 --- a/src/symbolize.cc +++ b/src/symbolize.cc @@ -834,7 +834,7 @@ static ATTRIBUTE_NOINLINE bool SymbolizeAndDemangle(void *pc, char *out, _END_GOOGLE_NAMESPACE_ -#elif (defined(GLOG_OS_MACOSX) || defined(GLOG_OS_EMSCRIPTEN)) && defined(HAVE_DLADDR) +#elif defined(GLOG_OS_MACOSX) && defined(HAVE_DLADDR) #include #include