diff options
Diffstat (limited to 'm4')
-rw-r--r-- | m4/efl_libunwind.m4 | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/m4/efl_libunwind.m4 b/m4/efl_libunwind.m4 new file mode 100644 index 0000000000..e9ca682cfb --- /dev/null +++ b/m4/efl_libunwind.m4 @@ -0,0 +1,61 @@ +dnl This code is public domain and can be freely used or copied. +dnl File to auto-detect libunwind + +dnl Macro that checks for libunwind, first by using +dnl pkg-config, then by trying to compile and link a simple +dnl program, to see if libunwind is distributed on the system +dnl but has no pkg-config support +dnl +dnl The biggest usecase is on Mac OS X, where there are no +dnl pkg-config files, and the libunwind headers are lost +dnl in an obscure place on the system (but whom the compilers +dnl distributed by Apple are aware of). +dnl +dnl Usage: EFL_CHECK_LIBUNWIND +dnl will inconditionaly set UNWIND_CFLAGS and UNWIND_LIBS +dnl to follow pkg-config fashion. +dnl +AC_DEFUN([EFL_CHECK_LIBUNWIND], +[dnl + dnl First, check with pkg-config + PKG_CHECK_MODULES([UNWIND], [libunwind libunwind-generic], + [have_unwind=yes], [have_unwind=no]) + + dnl No pkg-config file... maybe system built-in? + if test "x${have_unwind}" = "xno"; then + AC_LANG_PUSH([C]) + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include <libunwind.h> + ]], + [[ + unw_context_t ctx; + unw_getcontext(&ctx); + ]] + )], + [ + have_unwind="yes" + ], + [ + have_unwind="no" + ] + ) + AC_MSG_CHECKING([for native libunwind]) + AC_MSG_RESULT([${have_unwind}]) + AC_LANG_POP([C]) + + dnl Provide dummy variables to automake. + dnl In case pkg-config succeeded, these will be set and + dnl used in other automake files. To avoid, problems, + dnl we define empty variables. + UNWIND_CFLAGS="" + UNWIND_LIBS="" + AC_SUBST([UNWIND_CFLAGS]) + AC_SUBST([UNWIND_LIBS]) + fi + + AS_IF([test "x$have_unwind" = "xyes"], + [AC_DEFINE([HAVE_UNWIND], [1], [Have libunwind])]) + AM_CONDITIONAL(HAVE_UNWIND, test "x$have_unwind" = "xyes") +]) |