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