aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2017-07-30 23:02:41 +0200
committerGitHub <noreply@github.com>2017-07-30 23:02:41 +0200
commita7538371fec595641bed2d5e2d92e5ae2ce89b94 (patch)
treef115ab0f9e90cbbf3c1d4a09cc4839c7de4fa1c1
parent5cd68b39003dc51c5b80147d689cf7e8b67443b0 (diff)
downloadrneovim-a7538371fec595641bed2d5e2d92e5ae2ce89b94.tar.gz
rneovim-a7538371fec595641bed2d5e2d92e5ae2ce89b94.tar.bz2
rneovim-a7538371fec595641bed2d5e2d92e5ae2ce89b94.zip
build: linux does not always have execinfo.h (#7101)
Closes #7099
-rw-r--r--CMakeLists.txt11
-rw-r--r--config/config.h.in2
-rw-r--r--src/nvim/log.c7
-rw-r--r--src/nvim/log.h2
4 files changed, 18 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 099f6e3787..594f631ba0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -192,6 +192,16 @@ if(CMAKE_EXE_LINKER_FLAGS MATCHES "--sort-common" OR
string(REGEX REPLACE "-Wl($| )" "" CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS}")
endif()
+check_c_source_compiles("
+#include <execinfo.h>
+int main(void)
+{
+ void *trace[1];
+ int trace_size = backtrace(trace, 1);
+ return 0;
+}
+" HAVE_EXECINFO_BACKTRACE)
+
if(MSVC)
# XXX: /W4 gives too many warnings. #3241
add_definitions(/W3 -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE)
@@ -324,7 +334,6 @@ main(void)
return MSGPACK_OBJECT_FLOAT32;
}
" MSGPACK_HAS_FLOAT32)
-
if(MSGPACK_HAS_FLOAT32)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNVIM_MSGPACK_HAS_FLOAT32")
endif()
diff --git a/config/config.h.in b/config/config.h.in
index f26b5a50a8..962eefd7a7 100644
--- a/config/config.h.in
+++ b/config/config.h.in
@@ -68,4 +68,6 @@
#cmakedefine ORDER_BIG_ENDIAN
#define ENDIAN_INCLUDE_FILE <@ENDIAN_INCLUDE_FILE@>
+#cmakedefine HAVE_EXECINFO_BACKTRACE
+
#endif // AUTO_CONFIG_H
diff --git a/src/nvim/log.c b/src/nvim/log.c
index 252fe5438d..b64aef3cac 100644
--- a/src/nvim/log.c
+++ b/src/nvim/log.c
@@ -25,6 +25,10 @@ static uv_mutex_t mutex;
# include "log.c.generated.h"
#endif
+#ifdef HAVE_EXECINFO_BACKTRACE
+# include <execinfo.h>
+#endif
+
static bool log_try_create(char *fname)
{
if (fname == NULL || fname[0] == '\0') {
@@ -173,8 +177,7 @@ FILE *open_log_file(void)
return stderr;
}
-#if defined(__linux__)
-# include <execinfo.h>
+#ifdef HAVE_EXECINFO_BACKTRACE
void log_callstack(const char *const func_name, const int line_num)
{
void *trace[100];
diff --git a/src/nvim/log.h b/src/nvim/log.h
index 2bd18f5776..743a8d17aa 100644
--- a/src/nvim/log.h
+++ b/src/nvim/log.h
@@ -61,7 +61,7 @@
__VA_ARGS__)
#endif
-#if defined(__linux__)
+#ifdef HAVE_EXECINFO_BACKTRACE
# define LOG_CALLSTACK() log_callstack(__func__, __LINE__)
#endif