summaryrefslogtreecommitdiff
path: root/rts/m4/fp_find_libdw.m4
blob: 70305c78fe38de6c89ac288cb7ccba44dcbee512 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
dnl ** Have libdw?
dnl --------------------------------------------------------------
dnl Sets UseLibdw.
AC_DEFUN([FP_FIND_LIBDW],
[
  AC_ARG_WITH([libdw-libraries],
    [AS_HELP_STRING([--with-libdw-libraries=ARG],
      [Find libraries for libdw in ARG [default=system default]])
    ],
    [
      LibdwLibDir="$withval"
      LIBDW_LDFLAGS="-L$withval"
    ])

  AC_ARG_WITH([libdw-includes],
    [AS_HELP_STRING([--with-libdw-includes=ARG],
      [Find includes for libdw in ARG [default=system default]])
    ],
    [
      LibdwIncludeDir="$withval"
      LIBDW_CFLAGS="-I$withval"
    ])

  AC_ARG_ENABLE(dwarf-unwind,
    [AS_HELP_STRING([--enable-dwarf-unwind],
      [Enable DWARF unwinding support in the runtime system via elfutils' libdw [default=no]])],
    [],
    [enable_dwarf_unwind=no])

  UseLibdw=NO
  if test "$enable_dwarf_unwind" != "no" ; then
    CFLAGS2="$CFLAGS"
    CFLAGS="$LIBDW_CFLAGS $CFLAGS"
    LDFLAGS2="$LDFLAGS"
    LDFLAGS="$LIBDW_LDFLAGS $LDFLAGS"

    AC_CHECK_HEADER([elfutils/libdwfl.h],
      [AC_CHECK_LIB(dw, dwfl_attach_state,
        [UseLibdw=YES])])

    if test "x:$enable_dwarf_unwind:$UseLibdw" = "x:yes:NO" ; then
      AC_MSG_ERROR([Cannot find system libdw (required by --enable-dwarf-unwind)])
    fi

    CFLAGS="$CFLAGS2"
    LDFLAGS="$LDFLAGS2"
  fi

  AC_SUBST(UseLibdw)
  USE_LIBDW=0
  if test $UseLibdw = "YES" ; then
    USE_LIBDW=1
  fi
  AC_DEFINE_UNQUOTED([USE_LIBDW], [$USE_LIBDW], [Set to 1 to use libdw]
])