diff --git a/winpr/CMakeLists.txt b/winpr/CMakeLists.txt index 43876f130..7dbde7c52 100644 --- a/winpr/CMakeLists.txt +++ b/winpr/CMakeLists.txt @@ -165,7 +165,18 @@ endif() if(NOT IOS) CHECK_SYMBOL_EXISTS(strndup string.h HAVE_STRNDUP) check_include_files(unistd.h HAVE_UNISTD_H) - check_include_files(execinfo.h HAVE_EXECINFO_H) + check_include_files(execinfo.h HAVE_EXECINFO_HEADER) + if (HAVE_EXECINFO_HEADER) + check_symbol_exists(backtrace execinfo.h HAVE_EXECINFO_BACKTRACE) + check_symbol_exists(backtrace_symbols execinfo.h HAVE_EXECINFO_BACKTRACE_SYMBOLS) + check_symbol_exists(backtrace_symbols_fd execinfo.h HAVE_EXECINFO_BACKTRACE_SYMBOLS_FD) + + # Some implementations (e.g. Android NDK API < 33) provide execinfo.h but do not define + # the backtrace functions. Disable detection for these cases + if (HAVE_EXECINFO_BACKTRACE AND HAVE_EXECINFO_BACKTRACE_SYMBOLS AND HAVE_EXECINFO_BACKTRACE_SYMBOLS_FD) + set(HAVE_EXECINFO_H ON) + endif() + endif() check_include_files(inttypes.h HAVE_INTTYPES_H) check_include_files(stdint.h HAVE_STDINT_H) check_include_files(inttypes.h HAVE_INTTYPES_H)