testsuite/IpeStats: Use Make rather than shell interpolation
[ghc.git] / m4 / fp_find_libffi.m4
blobe1873468e88251a3c970d45137ee0d9fed3a3e89
1 # FP_FIND_LIBFFI
2 # --------------------------------------------------------------
3 # Should we used libffi? (yes or no)
5 # Sets variables:
6 #   - UseSystemLibFFI: [YES|NO]
7 #   - FFILibDir: optional path
8 #   - FFIIncludeDir: optional path
9 AC_DEFUN([FP_FIND_LIBFFI],
11   # system libffi
13   AC_ARG_WITH([system-libffi],
14   [AS_HELP_STRING([--with-system-libffi],
15     [Use system provided libffi for RTS [default=no]])
16   ])
18   AS_IF([test "x$with_system_libffi" = "xyes"],
19     [UseSystemLibFFI="YES"],
20     [UseSystemLibFFI="NO"]
21   )
23   AC_ARG_WITH([ffi-includes],
24   [AS_HELP_STRING([--with-ffi-includes=ARG],
25     [Find includes for libffi in ARG [default=system default]])
26   ],
27   [
28    if test "x$UseSystemLibFFI" != "xYES"; then
29       AC_MSG_WARN([--with-ffi-includes will be ignored, --with-system-libffi not set])
30    else
31       FFIIncludeDir="$withval"
32       LIBFFI_CFLAGS="-I$withval"
33    fi
34   ])
36   AC_ARG_WITH([ffi-libraries],
37   [AS_HELP_STRING([--with-ffi-libraries=ARG],
38     [Find libffi in ARG [default=system default]])
39   ],
40   [
41    if test "x$UseSystemLibFFI" != "xYES"; then
42       AC_MSG_WARN([--with-ffi-libraries will be ignored, --with-system-libffi not set])
43    else
44       FFILibDir="$withval" LIBFFI_LDFLAGS="-L$withval"
45    fi
46   ])
48   AS_IF([test "$UseSystemLibFFI" = "YES"], [
49    CFLAGS2="$CFLAGS"
50    CFLAGS="$LIBFFI_CFLAGS $CFLAGS"
51    LDFLAGS2="$LDFLAGS"
52    LDFLAGS="$LIBFFI_LDFLAGS $LDFLAGS"
54    if test "$HostOS" = "openbsd";
55    then
56      # OpenBSD's libffi is not directly linked to the libpthread but
57      # still requires pthread functionality. This means that any client
58      # binary which links with libffi also needs to link with
59      # libpthread. If it does not, then linking fails with unresolved
60      # symbols.
61      LDFLAGS="$LDFLAGS -lpthread"
62    fi
64    AC_CHECK_LIB(ffi, ffi_call,
65     [AC_CHECK_HEADERS(
66       [ffi.h],
67       [],
68       [AC_MSG_ERROR([Cannot find ffi.h for system libffi])]
69      )],
70     [AC_MSG_ERROR([Cannot find system libffi])]
71    )
73    CFLAGS="$CFLAGS2"
74    LDFLAGS="$LDFLAGS2"
75   ])