Skip to content
Snippets Groups Projects
ghc_adjustors_method.m4 1.36 KiB
Newer Older
dnl GHC_ADJUSTORS_METHOD(Platform)
dnl --------------------------------------------------------------
dnl Use libffi for adjustors?
AC_DEFUN([GHC_ADJUSTORS_METHOD],
[
  case [$]{$1[Arch]} in
      i386|x86_64)
          # We have native adjustor support on these platforms
          HaveNativeAdjustor=yes
          ;;
      *)
          HaveNativeAdjustor=no
          ;;
  esac

  AC_ARG_ENABLE(libffi-adjustors,
      [AS_HELP_STRING(
          [--enable-libffi-adjustors],
          [Force use of libffi for adjustors, even on platforms which have support for more efficient, native adjustors.])],
      UseLibffiForAdjustors=$enableval,
      dnl do nothing
  )

  AC_MSG_CHECKING([whether to use libffi for adjustors])
  if test "$UseLibffiForAdjustors" = "yes" ; then
      # Use libffi is the user explicitly requested it
      AdjustorType="libffi"
  elif test "$HaveNativeAdjustor" = "yes"; then
      # Otherwise if we have a native adjustor implementation use that
      AdjustorType="native"
  else
      # If we don't have a native adjustor implementation then default to libffi
      AdjustorType="libffi"
  fi

  case "$AdjustorType" in
  libffi)
      UseLibffiForAdjustors=YES
      ;;
  native)
      UseLibffiForAdjustors=NO
      ;;
  *)
      AC_MSG_ERROR([Internal error: Invalid AdjustorType])
      exit 1
  esac
])