From 72c46adccc9f50eb72d8abee6dcc22357f363f23 Mon Sep 17 00:00:00 2001 From: Philippe Marguinaud Date: Mon, 27 May 2024 18:07:46 +0000 Subject: [PATCH] Detect backtrace (execinfo.h) with check_symbol_exists --- CMakeLists.txt | 6 ++++++ field_backtrace.c | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b7f28fe..fabee45 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -108,6 +108,8 @@ ecbuild_add_option( FEATURE BUDDY_MALLOC DEFAULT ON ) +check_symbol_exists(backtrace execinfo.h HAVE_BACKTRACE) + ## fypp preprocessor flags if(HAVE_BUDDY_MALLOC) list( APPEND fypp_defines "-DUSE_BUDDY_MALLOC") @@ -174,6 +176,10 @@ foreach(prec ${precisions}) INTERFACE $ ) + if( HAVE_BACKTRACE ) + target_compile_definitions( ${LIBNAME}_${prec} PRIVATE HAVE_BACKTRACE ) + endif() + if( prec MATCHES sp ) target_compile_definitions( ${LIBNAME}_${prec} PRIVATE PARKIND1_SINGLE ) endif() diff --git a/field_backtrace.c b/field_backtrace.c index 5b8037d..cbd9356 100644 --- a/field_backtrace.c +++ b/field_backtrace.c @@ -1,5 +1,6 @@ #include +#ifdef HAVE_BACKTRACE #include #include @@ -26,7 +27,7 @@ void field_backtrace_ (char * str, int * p1, int * p2, int * plen) } -#ifdef UNDEF +#else void field_backtrace_ (char * str, int * p1, int * p2, int * plen) {