1#!/usr/bin/m4 2# 3# Copyright (c) 2018 The strace developers. 4# All rights reserved. 5# 6# Redistribution and use in source and binary forms, with or without 7# modification, are permitted provided that the following conditions 8# are met: 9# 1. Redistributions of source code must retain the above copyright 10# notice, this list of conditions and the following disclaimer. 11# 2. Redistributions in binary form must reproduce the above copyright 12# notice, this list of conditions and the following disclaimer in the 13# documentation and/or other materials provided with the distribution. 14# 3. The name of the author may not be used to endorse or promote products 15# derived from this software without specific prior written permission. 16# 17# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 28AC_DEFUN([st_STACKTRACE], [dnl 29 30AC_ARG_ENABLE([stacktrace], 31 [AS_HELP_STRING([--enable-stacktrace=yes|no|check], 32 [whether to enable stack tracing support, default is check])], 33 [case "$enableval" in 34 yes|no|check) enable_stacktrace="$enableval" ;; 35 *) AC_MSG_ERROR([bad value $enableval for enable-stacktrace option. 36 Valid options are: yes, no, check.]) 37 ;; 38 esac], 39 [enable_stacktrace=check]) 40 41use_unwinder= 42dnl Whether to enable stack tracing support? 43 44AS_IF([test x"$enable_stacktrace" != xno], 45 [st_ARG_LIBDW 46 st_ARG_LIBUNWIND 47 AS_IF([test "x$with_libdw" = xyes && test "x$with_libunwind" = xyes], 48 [AC_MSG_ERROR([--with-libdw=yes and --with-libunwind=yes are mutually exclusive])], 49 [test "x$with_libdw" = xyes], [with_libunwind=no], 50 [test "x$with_libunwind" = xyes], [with_libdw=no] 51 ) 52 AS_IF([test "x$use_unwinder" = x], [st_LIBDW]) 53 AS_IF([test "x$use_unwinder" = x], [st_LIBUNWIND]) 54 AS_IF([test x"$enable_stacktrace$use_unwinder" = xyes], 55 [AC_MSG_ERROR([stack tracing support requires an unwinder])] 56 ) 57 ] 58 ) 59 60AC_MSG_CHECKING([whether to enable stack tracing support]) 61AM_CONDITIONAL([ENABLE_STACKTRACE], [test "x$use_unwinder" != x]) 62AM_CONDITIONAL([USE_LIBDW], [test "x$use_unwinder" = xlibdw]) 63AM_CONDITIONAL([USE_LIBUNWIND], [test "x$use_unwinder" = xlibunwind]) 64 65use_libiberty= 66AS_IF([test "x$use_unwinder" != x], 67 [AC_DEFINE([ENABLE_STACKTRACE], [1], 68 [Define to enable stack tracing support]) 69 AC_DEFINE_UNQUOTED([USE_UNWINDER], ["$use_unwinder"], 70 [The unwinder to use for stack tracing support]) 71 AC_MSG_RESULT([yes, using $use_unwinder]) 72 dnl As stack tracing support is enabled, check for a demangler. 73 st_DEMANGLE], 74 [AC_MSG_RESULT([no])]) 75 76AM_CONDITIONAL([USE_DEMANGLE], [test "x$use_libiberty" = xyes]) 77 78]) 79