packages feed

integer-gmp 1.0.3.0 → 1.1

raw patch · 18 files changed

+325/−13171 lines, 18 filesdep +basedep +ghc-bignumdep ~ghc-primsetup-changednew-uploaderPVP ok

version bump matches the API change (PVP)

Dependencies added: base, ghc-bignum

Dependency ranges changed: ghc-prim

API changes (from Hackage documentation)

- GHC.Integer: absInteger :: Integer -> Integer
- GHC.Integer: andInteger :: Integer -> Integer -> Integer
- GHC.Integer: bitInteger :: Int# -> Integer
- GHC.Integer: compareInteger :: Integer -> Integer -> Ordering
- GHC.Integer: complementInteger :: Integer -> Integer
- GHC.Integer: data Integer
- GHC.Integer: decodeDoubleInteger :: Double# -> (# Integer, Int# #)
- GHC.Integer: divInteger :: Integer -> Integer -> Integer
- GHC.Integer: divModInteger :: Integer -> Integer -> (# Integer, Integer #)
- GHC.Integer: doubleFromInteger :: Integer -> Double#
- GHC.Integer: encodeDoubleInteger :: Integer -> Int# -> Double#
- GHC.Integer: encodeFloatInteger :: Integer -> Int# -> Float#
- GHC.Integer: eqInteger :: Integer -> Integer -> Bool
- GHC.Integer: eqInteger# :: Integer -> Integer -> Int#
- GHC.Integer: floatFromInteger :: Integer -> Float#
- GHC.Integer: geInteger :: Integer -> Integer -> Bool
- GHC.Integer: geInteger# :: Integer -> Integer -> Int#
- GHC.Integer: gtInteger :: Integer -> Integer -> Bool
- GHC.Integer: gtInteger# :: Integer -> Integer -> Int#
- GHC.Integer: hashInteger :: Integer -> Int#
- GHC.Integer: integerToInt :: Integer -> Int#
- GHC.Integer: integerToWord :: Integer -> Word#
- GHC.Integer: leInteger :: Integer -> Integer -> Bool
- GHC.Integer: leInteger# :: Integer -> Integer -> Int#
- GHC.Integer: ltInteger :: Integer -> Integer -> Bool
- GHC.Integer: ltInteger# :: Integer -> Integer -> Int#
- GHC.Integer: minusInteger :: Integer -> Integer -> Integer
- GHC.Integer: mkInteger :: Bool -> [Int] -> Integer
- GHC.Integer: modInteger :: Integer -> Integer -> Integer
- GHC.Integer: negateInteger :: Integer -> Integer
- GHC.Integer: neqInteger :: Integer -> Integer -> Bool
- GHC.Integer: neqInteger# :: Integer -> Integer -> Int#
- GHC.Integer: orInteger :: Integer -> Integer -> Integer
- GHC.Integer: plusInteger :: Integer -> Integer -> Integer
- GHC.Integer: popCountInteger :: Integer -> Int#
- GHC.Integer: quotInteger :: Integer -> Integer -> Integer
- GHC.Integer: quotRemInteger :: Integer -> Integer -> (# Integer, Integer #)
- GHC.Integer: remInteger :: Integer -> Integer -> Integer
- GHC.Integer: shiftLInteger :: Integer -> Int# -> Integer
- GHC.Integer: shiftRInteger :: Integer -> Int# -> Integer
- GHC.Integer: signumInteger :: Integer -> Integer
- GHC.Integer: smallInteger :: Int# -> Integer
- GHC.Integer: testBitInteger :: Integer -> Int# -> Bool
- GHC.Integer: timesInteger :: Integer -> Integer -> Integer
- GHC.Integer: wordToInteger :: Word# -> Integer
- GHC.Integer: xorInteger :: Integer -> Integer -> Integer
- GHC.Integer.GMP.Internals: Jn# :: {-# UNPACK #-} !BigNat -> Integer
- GHC.Integer.GMP.Internals: Jp# :: {-# UNPACK #-} !BigNat -> Integer
- GHC.Integer.GMP.Internals: S# :: !Int# -> Integer
- GHC.Integer.GMP.Internals: exportWordToAddr :: Word -> Addr# -> Int# -> IO Word
- GHC.Integer.GMP.Internals: exportWordToMutableByteArray :: Word -> MutableByteArray# RealWorld -> Word# -> Int# -> IO Word
- GHC.Integer.GMP.Internals: gcdInt :: Int# -> Int# -> Int#
- GHC.Integer.GMP.Internals: gcdWord :: Word# -> Word# -> Word#
- GHC.Integer.GMP.Internals: isNullBigNat# :: BigNat -> Int#
- GHC.Integer.GMP.Internals: nextPrimeBigNat :: BigNat -> BigNat
- GHC.Integer.GMP.Internals: nextPrimeInteger :: Integer -> Integer
- GHC.Integer.GMP.Internals: nextPrimeWord# :: GmpLimb# -> GmpLimb#
- GHC.Integer.GMP.Internals: nullBigNat :: BigNat
- GHC.Integer.GMP.Internals: powModBigNat :: BigNat -> BigNat -> BigNat -> BigNat
- GHC.Integer.GMP.Internals: powModBigNatWord :: BigNat -> BigNat -> GmpLimb# -> GmpLimb#
- GHC.Integer.GMP.Internals: powModSecInteger :: Integer -> Integer -> Integer -> Integer
- GHC.Integer.GMP.Internals: powModWord :: GmpLimb# -> GmpLimb# -> GmpLimb# -> GmpLimb#
- GHC.Integer.GMP.Internals: recipModBigNat :: BigNat -> BigNat -> BigNat
- GHC.Integer.GMP.Internals: recipModWord :: GmpLimb# -> GmpLimb# -> GmpLimb#
- GHC.Integer.GMP.Internals: testPrimeBigNat :: BigNat -> Int# -> Int#
- GHC.Integer.GMP.Internals: testPrimeInteger :: Integer -> Int# -> Int#
- GHC.Integer.GMP.Internals: testPrimeWord# :: GmpLimb# -> Int# -> Int#
- GHC.Integer.Logarithms: integerLog2# :: Integer -> Int#
- GHC.Integer.Logarithms: integerLogBase# :: Integer -> Integer -> Int#
- GHC.Integer.Logarithms: wordLog2# :: Word# -> Int#
- GHC.Integer.Logarithms.Internals: integerLog2# :: Integer -> Int#
- GHC.Integer.Logarithms.Internals: integerLog2IsPowerOf2# :: Integer -> (# Int#, Int# #)
- GHC.Integer.Logarithms.Internals: roundingMode# :: Integer -> Int# -> Int#
- GHC.Integer.Logarithms.Internals: wordLog2# :: Word# -> Int#
+ GHC.Integer.GMP.Internals: [unBigNat] :: BigNat -> BigNat#
+ GHC.Integer.GMP.Internals: pattern Jn# :: BigNat -> Integer
+ GHC.Integer.GMP.Internals: pattern Jp# :: BigNat -> Integer
+ GHC.Integer.GMP.Internals: pattern S# :: Int# -> Integer
- GHC.Integer.GMP.Internals: BN# :: ByteArray# -> BigNat
+ GHC.Integer.GMP.Internals: BN# :: BigNat# -> BigNat

Files

− Setup.hs
@@ -1,6 +0,0 @@-module Main (main) where--import Distribution.Simple--main :: IO ()-main = defaultMainWithHooks autoconfUserHooks
− aclocal.m4
@@ -1,44 +0,0 @@--dnl---------------------------------------------------------------------dnl * Check whether this machine has gmp/gmp3 installed-dnl----------------------------------------------------------------------AC_DEFUN([LOOK_FOR_GMP_LIB],[-    if test "$HaveFrameworkGMP" = "NO"-    then-        AC_CHECK_LIB([gmp],  [__gmpz_powm],-                     [HaveLibGmp=YES; GMP_LIBS=gmp])-        if test "$HaveLibGmp" = "NO"-        then-            AC_CHECK_LIB([gmp3], [__gmpz_powm],-                         [HaveLibGmp=YES; GMP_LIBS=gmp3])-        fi-        if test "$HaveLibGmp" = "YES"-        then-            AC_CHECK_LIB([$GMP_LIBS], [__gmpz_powm_sec],-                         [HaveSecurePowm=1])-        fi-    fi-])--dnl---------------------------------------------------------------------dnl * Mac OS X only: check for GMP.framework-dnl----------------------------------------------------------------------AC_DEFUN([LOOK_FOR_GMP_FRAMEWORK],[-    if test "$HaveLibGmp" = "NO"-    then-        case $target_os in-        darwin*)-            AC_MSG_CHECKING([for GMP.framework])-            save_libs="$LIBS"-            LIBS="-framework GMP"-            AC_TRY_LINK_FUNC(__gmpz_powm_sec,-                             [HaveFrameworkGMP=YES; GMP_FRAMEWORK=GMP])-            LIBS="$save_libs"-            AC_MSG_RESULT([$HaveFrameworkGMP])-            ;;-        esac-    fi-])-
− cbits/wrappers.c
@@ -1,909 +0,0 @@-/*- * `integer-gmp` GMP FFI wrappers- *- * Copyright (c) 2014, Herbert Valerio Riedel <hvr@gnu.org>- *- * BSD3 licensed, see ../LICENSE file for details- *- */--#define _ISOC99_SOURCE--#include "HsFFI.h"-#include "MachDeps.h"-#include "HsIntegerGmp.h"--#include <assert.h>-#include <stdbool.h>-#include <stdlib.h>-#include <stdint.h>-#include <string.h>-#include <math.h>-#include <float.h>-#include <stdio.h>--#include <gmp.h>---// GMP 4.x compatibility-#if !defined(__GNU_MP_VERSION)-# error __GNU_MP_VERSION not defined-#elif __GNU_MP_VERSION < 4-# error need GMP 4.0 or later-#elif __GNU_MP_VERSION < 5-typedef unsigned long int mp_bitcnt_t;-#endif--#if (GMP_NUMB_BITS) != (GMP_LIMB_BITS)-# error GMP_NUMB_BITS != GMP_LIMB_BITS not supported-#endif--#if (WORD_SIZE_IN_BITS) != (GMP_LIMB_BITS)-# error WORD_SIZE_IN_BITS != GMP_LIMB_BITS not supported-#endif--// sanity check-#if (SIZEOF_HSWORD*8) != WORD_SIZE_IN_BITS-# error (SIZEOF_HSWORD*8) != WORD_SIZE_IN_BITS-#endif--// Turn a (const) {xp,xn} pair into static initializer-#define CONST_MPZ_INIT(xp,xn) \-  {{ ._mp_alloc = 0, ._mp_size  = (xn), ._mp_d = (mp_limb_t*)(xp) }}--// Test if {sp,sn} represents a zero value-static inline int-mp_limb_zero_p(const mp_limb_t sp[], mp_size_t sn)-{-  return !sn || ((sn == 1 || sn == -1) && !sp[0]);-}--static inline mp_size_t-mp_size_abs(const mp_size_t x)-{-  return x>=0 ? x : -x;-}--static inline mp_size_t-mp_size_min(const mp_size_t x, const mp_size_t y)-{-  return x<y ? x : y;-}--static inline mp_size_t-mp_size_minabs(const mp_size_t x, const mp_size_t y)-{-  return mp_size_min(mp_size_abs(x), mp_size_abs(y));-}--/* Perform arithmetic right shift on MPNs (multi-precision naturals)- *- * pre-conditions:- *  - 0 < count < sn*GMP_NUMB_BITS- *  - rn = sn - floor(count / GMP_NUMB_BITS)- *  - sn > 0- *- * write {sp,sn} right-shifted by count bits into {rp,rn}- *- * return value: most-significant limb stored in {rp,rn} result- */-mp_limb_t-integer_gmp_mpn_rshift (mp_limb_t rp[], const mp_limb_t sp[], mp_size_t sn,-                        mp_bitcnt_t count)-{-  const mp_size_t    limb_shift = count / GMP_NUMB_BITS;-  const unsigned int bit_shift  = count % GMP_NUMB_BITS;-  const mp_size_t    rn         = sn - limb_shift;--  if (bit_shift)-    mpn_rshift(rp, &sp[limb_shift], rn, bit_shift);-  else-    memcpy(rp, &sp[limb_shift], rn*sizeof(mp_limb_t));--  return rp[rn-1];-}--/* Twos-complement version of 'integer_gmp_mpn_rshift' for performing- * arithmetic right shifts on "negative" MPNs.- *- * pre-conditions:- *  - 0 < count < sn*GMP_NUMB_BITS- *  - rn = sn - floor((count - 1) / GMP_NUMB_BITS)- *  - sn > 0- *- * This variant is needed to operate on MPNs interpreted as negative- * numbers, which require "rounding" towards minus infinity iff a- * non-zero bit is shifted out.- */-mp_limb_t-integer_gmp_mpn_rshift_2c (mp_limb_t rp[], const mp_limb_t sp[],-                           const mp_size_t sn, const mp_bitcnt_t count)-{-  const mp_size_t    limb_shift = count / GMP_NUMB_BITS;-  const unsigned int bit_shift  = count % GMP_NUMB_BITS;-  mp_size_t    rn         = sn - limb_shift;--  // whether non-zero bits were shifted out-  bool nz_shift_out = false;--  if (bit_shift) {-    if (mpn_rshift(rp, &sp[limb_shift], rn, bit_shift))-      nz_shift_out = true;-  } else {-    // rp was allocated (rn + 1) limbs, to prevent carry-    // on mpn_add_1 when all the bits of {rp, rn} are 1.-    memset(&rp[rn], 0, sizeof(mp_limb_t));-    memcpy(rp, &sp[limb_shift], rn*sizeof(mp_limb_t));-    rn++;-  }--  if (!nz_shift_out)-    for (unsigned i = 0; i < limb_shift; i++)-      if (sp[i]) {-        nz_shift_out = true;-        break;-      }--  // round if non-zero bits were shifted out-  if (nz_shift_out)-    if (mpn_add_1(rp, rp, rn, 1))-      abort(); /* should never happen */--  return rp[rn-1];-}--/* Perform left-shift operation on MPN- *- * pre-conditions:- *  - 0 < count- *  - rn = sn + ceil(count / GMP_NUMB_BITS)- *  - sn > 0- *- * return value: most-significant limb stored in {rp,rn} result- */-mp_limb_t-integer_gmp_mpn_lshift (mp_limb_t rp[], const mp_limb_t sp[],-                        const mp_size_t sn, const mp_bitcnt_t count)-{-  const mp_size_t    limb_shift = count / GMP_NUMB_BITS;-  const unsigned int bit_shift  = count % GMP_NUMB_BITS;-  const mp_size_t    rn0        = sn + limb_shift;--  memset(rp, 0, limb_shift*sizeof(mp_limb_t));-  if (bit_shift) {-    const mp_limb_t msl = mpn_lshift(&rp[limb_shift], sp, sn, bit_shift);-    rp[rn0] = msl;-    return msl;-  } else {-    memcpy(&rp[limb_shift], sp, sn*sizeof(mp_limb_t));-    return rp[rn0-1];-  }-}--/* Convert bignum to a `double`, truncating if necessary- * (i.e. rounding towards zero).- *- * sign of mp_size_t argument controls sign of converted double- */-HsDouble-integer_gmp_mpn_get_d (const mp_limb_t sp[], const mp_size_t sn,-                       const HsInt exponent)-{-  if (mp_limb_zero_p(sp, sn))-    return 0.0;--  const mpz_t mpz = CONST_MPZ_INIT(sp, sn);--  if (!exponent)-    return mpz_get_d(mpz);--  long e = 0;-  double d = mpz_get_d_2exp (&e, mpz);--  // TODO: over/underflow handling?-  return ldexp(d, e+exponent);-}--mp_limb_t-integer_gmp_gcd_word(const mp_limb_t x, const mp_limb_t y)-{-  if (!x) return y;-  if (!y) return x;--  return mpn_gcd_1(&x, 1, y);-}--mp_limb_t-integer_gmp_mpn_gcd_1(const mp_limb_t x[], const mp_size_t xn,-                      const mp_limb_t y)-{-  assert (xn > 0);-  assert (xn == 1 || y != 0);--  if (xn == 1)-    return integer_gmp_gcd_word(x[0], y);--  return mpn_gcd_1(x, xn, y);-}---mp_size_t-integer_gmp_mpn_gcd(mp_limb_t r[],-                    const mp_limb_t x0[], const mp_size_t xn,-                    const mp_limb_t y0[], const mp_size_t yn)-{-  assert (xn >= yn);-  assert (yn > 0);-  assert (xn == yn || yn > 1 || y0[0] != 0);-  /* post-condition: rn <= xn */--  if (yn == 1) {-    if (y0[0]) {-      r[0] = integer_gmp_mpn_gcd_1(x0, xn, y0[0]);-      return 1;-    } else { /* {y0,yn} == 0 */-      assert (xn==yn); /* NB: redundant assertion */-      memcpy(r, x0, xn*sizeof(mp_limb_t));-      return xn;-    }-  } else {-    // mpn_gcd() seems to require non-trivial normalization of its-    // input arguments (which does not seem to be documented anywhere,-    // see source of mpz_gcd() for more details), so we resort to just-    // use mpz_gcd() which does the tiresome normalization for us at-    // the cost of a few additional temporary buffer allocations in-    // C-land.--    const mpz_t op1 = CONST_MPZ_INIT(x0, xn);-    const mpz_t op2 = CONST_MPZ_INIT(y0, yn);--    mpz_t rop;-    mpz_init (rop);--    mpz_gcd(rop, op1, op2);--    const mp_size_t rn = rop[0]._mp_size;-    assert(rn > 0);-    assert(rn <= xn);--    /* the allocation/memcpy of the result can be neglectable since-       mpz_gcd() already has to allocate other temporary buffers-       anyway */-    memcpy(r, rop[0]._mp_d, rn*sizeof(mp_limb_t));--    mpz_clear(rop);--    return rn;-  }-}--/* wraps mpz_gcdext()- *- * Set g={g0,gn} to the greatest common divisor of x={x0,xn} and- * y={y0,yn}, and in addition set s={s0,sn} to coefficient- * satisfying x*s + y*t = g.- *- * The g0 array is zero-padded (so that gn is fixed).- *- * g0 must have space for exactly gn=min(xn,yn) limbs.- * s0 must have space for at least yn limbs.- *- * return value: signed 'sn' of s={s0,sn} where |sn| >= 1- */-mp_size_t-integer_gmp_gcdext(mp_limb_t s0[], mp_limb_t g0[],-                   const mp_limb_t x0[], const mp_size_t xn,-                   const mp_limb_t y0[], const mp_size_t yn)-{-  const mp_size_t gn0 = mp_size_minabs(xn, yn);-  const mpz_t x = CONST_MPZ_INIT(x0, mp_limb_zero_p(x0,xn) ? 0 : xn);-  const mpz_t y = CONST_MPZ_INIT(y0, mp_limb_zero_p(y0,yn) ? 0 : yn);--  mpz_t g, s;-  mpz_init (g);-  mpz_init (s);--  mpz_gcdext (g, s, NULL, x, y);--  // g must be positive (0 <= gn).-  // According to the docs for mpz_gcdext(), we have:-  //       g < min(|y|/2|s|, |x|/2|t|)-  // -->   g < min(|y|, |x|)-  // -->   gn <= min(yn, xn)-  // <->   gn <= gn0-  const mp_size_t gn = g[0]._mp_size;-  assert(0 <= gn && gn <= gn0);-  memset(g0, 0, gn0*sizeof(mp_limb_t));-  memcpy(g0, g[0]._mp_d, gn*sizeof(mp_limb_t));-  mpz_clear (g);--  // According to the docs for mpz_gcdext(), we have:-  //       |s| < |y| / 2g-  // -->   |s| < |y|         (note g > 0)-  // -->   sn <= yn-  const mp_size_t ssn = s[0]._mp_size;-  const mp_size_t sn  = mp_size_abs(ssn);-  assert(sn <= mp_size_abs(yn));-  memcpy(s0, s[0]._mp_d, sn*sizeof(mp_limb_t));-  mpz_clear (s);--  if (!sn) {-    s0[0] = 0;-    return 1;-  }--  return ssn;-}--/* Truncating (i.e. rounded towards zero) integer division-quotient of MPN */-void-integer_gmp_mpn_tdiv_q (mp_limb_t q[],-                        const mp_limb_t n[], const mp_size_t nn,-                        const mp_limb_t d[], const mp_size_t dn)-{-  /* qn = 1+nn-dn; rn = dn */-  assert(nn>=dn);--  if (dn > 128) {-    // Use temporary heap allocated throw-away buffer for MPNs larger-    // than 1KiB for 64bit-sized limbs (larger than 512bytes for-    // 32bit-sized limbs)-    mp_limb_t *const r = malloc(dn*sizeof(mp_limb_t));-    mpn_tdiv_qr(q, r, 0, n, nn, d, dn);-    free (r);-  } else { // allocate smaller arrays on the stack-    mp_limb_t r[dn];-    mpn_tdiv_qr(q, r, 0, n, nn, d, dn);-  }-}--/* Truncating (i.e. rounded towards zero) integer division-remainder of MPNs */-void-integer_gmp_mpn_tdiv_r (mp_limb_t r[],-                        const mp_limb_t n[], const mp_size_t nn,-                        const mp_limb_t d[], const mp_size_t dn)-{-  /* qn = 1+nn-dn; rn = dn */-  assert(nn>=dn);-  const mp_size_t qn = 1+nn-dn;--  if (qn > 128) {-    // Use temporary heap allocated throw-away buffer for MPNs larger-    // than 1KiB for 64bit-sized limbs (larger than 512bytes for-    // 32bit-sized limbs)-    mp_limb_t *const q = malloc(qn*sizeof(mp_limb_t));-    mpn_tdiv_qr(q, r, 0, n, nn, d, dn);-    free (q);-  } else { // allocate smaller arrays on the stack-    mp_limb_t q[qn];-    mpn_tdiv_qr(q, r, 0, n, nn, d, dn);-  }-}---/* Wraps GMP's 'mpz_sizeinbase()' function */-HsWord-integer_gmp_mpn_sizeinbase(const mp_limb_t s[], const mp_size_t sn,-                           const HsInt base)-{-  assert (2 <= base && base <= 256);--  if (mp_limb_zero_p(s,sn)) return 1;--  const mpz_t zs = CONST_MPZ_INIT(s, sn);--  return mpz_sizeinbase(zs, base);-}--/* Single-limb version of 'integer_gmp_mpn_sizeinbase()' */-HsWord-integer_gmp_mpn_sizeinbase1(const mp_limb_t s, const HsInt base)-{-  return s ? integer_gmp_mpn_sizeinbase(&s, 1, base) : 1;-}--/* Wrapper around GMP's 'mpz_export()' function */-HsWord-integer_gmp_mpn_export(const mp_limb_t s[], const mp_size_t sn,-                       void *destptr, HsInt destofs, HsInt msbf)-{-  /* TODO: implement w/o GMP, c.f. 'integer_gmp_mpn_import()' */-  assert (msbf == 0 || msbf == 1);--  if (mp_limb_zero_p(s,sn)) return 0;--  const mpz_t zs = CONST_MPZ_INIT(s, sn);--  size_t written = 0;--  // mpz_export (void *rop, size_t *countp, int order, size_t size, int endian,-  //             size_t nails, const mpz_t op)-  (void) mpz_export(((char *)destptr)+destofs, &written, !msbf ? -1 : 1,-                    /* size */ 1, /* endian */ 0, /* nails */ 0, zs);--  return written;-}--/* Single-limb version of 'integer_gmp_mpn_export()' */-HsWord-integer_gmp_mpn_export1(const mp_limb_t s,-                        void *destptr, const HsInt destofs, const HsInt msbf)-{-  /* TODO: implement w/o GMP */-  return integer_gmp_mpn_export(&s, 1, destptr, destofs, msbf);-}--/* Import single limb from memory location- *- * We can't use GMP's 'mpz_import()'- */-HsWord-integer_gmp_mpn_import1(const uint8_t *srcptr, const HsWord srcofs,-                        const HsWord srclen, const HsInt msbf)-{-  assert (msbf == 0 || msbf == 1);-  assert (srclen <= SIZEOF_HSWORD);--  srcptr += srcofs;--  HsWord result = 0;--  if (msbf)-    for (unsigned i = 0; i < srclen; ++i)-      result |= (HsWord)srcptr[i] << ((srclen-i-1)*8);-  else // lsbf-    for (unsigned i = 0; i < srclen; ++i)-      result |= (HsWord)srcptr[i] << (i*8);--  return result;-}--/* import into mp_limb_t[] from memory location */-void-integer_gmp_mpn_import(mp_limb_t * restrict r, const uint8_t * restrict srcptr,-                       const HsWord srcofs, const HsWord srclen,-                       const HsInt msbf)-{-  assert (msbf == 0 || msbf == 1);--  srcptr += srcofs;--  const unsigned  limb_cnt_rem = srclen % SIZEOF_HSWORD;-  const mp_size_t limb_cnt     = srclen / SIZEOF_HSWORD;--  if (msbf) {-    if (limb_cnt_rem) { // partial limb-      r[limb_cnt] = integer_gmp_mpn_import1(srcptr, 0, limb_cnt_rem, 1);-      srcptr += limb_cnt_rem;-    }--    for (unsigned ri = 0; ri < limb_cnt; ++ri) {-      r[limb_cnt-ri-1] = integer_gmp_mpn_import1(srcptr, 0, SIZEOF_HSWORD, 1);-      srcptr += SIZEOF_HSWORD;-    }-  } else { // lsbf-    for (unsigned ri = 0; ri < limb_cnt; ++ri) {-      r[ri] = integer_gmp_mpn_import1(srcptr, 0, SIZEOF_HSWORD, 0);-      srcptr += SIZEOF_HSWORD;-    }--    if (limb_cnt_rem) // partial limb-      r[limb_cnt] = integer_gmp_mpn_import1(srcptr, 0, limb_cnt_rem, 0);-  }-}--/* Scan for first non-zero byte starting at srcptr[srcofs], ending at- * srcptr[srcofs+srclen-1];- *- * If no non-zero byte found, returns srcofs+srclen; otherwise returns- * index of srcptr where first non-zero byte was found.- */-HsWord-integer_gmp_scan_nzbyte(const uint8_t *srcptr,-                        const HsWord srcofs, const HsWord srclen)-{-  // TODO: consider implementing this function in Haskell-land-  srcptr += srcofs;--  for (unsigned i = 0; i < srclen; ++i)-    if (srcptr[i])-      return srcofs+i;--  return srcofs+srclen;-}--/* Reverse scan for non-zero byte- * starting at srcptr[srcofs+srclen-1], ending at srcptr[srcofs].- *- * Returns new length srclen1 such that srcptr[srcofs+i] == 0 for- * srclen1 <= i < srclen.- */-HsWord-integer_gmp_rscan_nzbyte(const uint8_t *srcptr,-                         const HsWord srcofs, const HsWord srclen)-{-  // TODO: consider implementing this function in Haskell-land-  srcptr += srcofs;--  for (unsigned i = srclen; i > 0; --i)-    if (srcptr[i-1])-      return i;--  return 0;-}--/* wrapper around mpz_probab_prime_p */-HsInt-integer_gmp_test_prime(const mp_limb_t s[], const mp_size_t sn, const HsInt rep)-{-  if (mp_limb_zero_p(s,sn)) return 0;--  const mpz_t sz = CONST_MPZ_INIT(s, sn);--  // int mpz_probab_prime_p (const mpz_t n, int reps)-  return mpz_probab_prime_p(sz, rep);-}--/* wrapper around mpz_probab_prime_p */-HsInt-integer_gmp_test_prime1(const mp_limb_t limb, const HsInt rep)-{-  if (!limb) return 0;--  return integer_gmp_test_prime(&limb, 1, rep);-}--/* wrapper around mpz_nextprime()- *- * Stores next prime (relative to {sp,sn}) in {rp,sn}.- * Return value is most significant limb of {rp,sn+1}.- */-mp_limb_t-integer_gmp_next_prime(mp_limb_t rp[], const mp_limb_t sp[],-                       const mp_size_t sn)-{-  assert (sn>=0);--  if (!sn) return 2;-  if (sn == 1 && sp[0] < 2) {-    rp[0] = 2;-    return 0;-  }--  const mpz_t op = CONST_MPZ_INIT(sp, sn);--  mpz_t rop;-  mpz_init (rop);-  mpz_nextprime (rop, op);--  const mp_size_t rn = rop[0]._mp_size;--  // copy result into {rp,sn} buffer-  assert (rn == sn || rn == sn+1);-  memcpy(rp, rop[0]._mp_d, sn*sizeof(mp_limb_t));-  const mp_limb_t result = rn>sn ? rop[0]._mp_d[sn] : 0;--  mpz_clear (rop);--  return result;-}--/* wrapper around mpz_nextprime()- *- * returns next prime modulo 2^GMP_LIMB_BITS- */-mp_limb_t-integer_gmp_next_prime1(const mp_limb_t limb)-{-  if (limb < 2) return 2;--  const mpz_t op = CONST_MPZ_INIT(&limb, 1);--  mpz_t rop;-  mpz_init (rop);-  mpz_nextprime (rop, op);-  assert (rop[0]._mp_size > 0);-  const mp_limb_t result = rop[0]._mp_d[0];-  mpz_clear (rop);--  return result;-}--/* wrapper around mpz_powm()- *- * Store '(B^E) mod M' in {rp,rn}- *- * rp must have allocated mn limbs; This function's return value is- * the actual number rn (0 < rn <= mn) of limbs written to the rp limb-array.- *- * bn and en are allowed to be negative to denote negative numbers- */-mp_size_t-integer_gmp_powm(mp_limb_t rp[], // result-                 const mp_limb_t bp[], const mp_size_t bn, // base-                 const mp_limb_t ep[], const mp_size_t en, // exponent-                 const mp_limb_t mp[], const mp_size_t mn) // mod-{-  assert(!mp_limb_zero_p(mp,mn));--  if ((mn == 1 || mn == -1) && mp[0] == 1) {-    rp[0] = 0;-    return 1;-  }--  if (mp_limb_zero_p(ep,en)) {-    rp[0] = 1;-    return 1;-  }--  const mpz_t b = CONST_MPZ_INIT(bp, mp_limb_zero_p(bp,bn) ? 0 : bn);-  const mpz_t e = CONST_MPZ_INIT(ep, en);-  const mpz_t m = CONST_MPZ_INIT(mp, mn);--  mpz_t r;-  mpz_init (r);--  mpz_powm(r, b, e, m);--  const mp_size_t rn = r[0]._mp_size;--  if (rn) {-    assert(0 < rn && rn <= mn);-    memcpy(rp, r[0]._mp_d, rn*sizeof(mp_limb_t));-  }--  mpz_clear (r);--  if (!rn) {-    rp[0] = 0;-    return 1;-  }--  return rn;-}--/* version of integer_gmp_powm() for single-limb moduli */-mp_limb_t-integer_gmp_powm1(const mp_limb_t bp[], const mp_size_t bn, // base-                  const mp_limb_t ep[], const mp_size_t en, // exponent-                  const mp_limb_t m0) // mod-{-  assert(m0);--  if (m0==1) return 0;-  if (mp_limb_zero_p(ep,en)) return 1;--  const mpz_t b = CONST_MPZ_INIT(bp, mp_limb_zero_p(bp,bn) ? 0 : bn);-  const mpz_t e = CONST_MPZ_INIT(ep, en);-  const mpz_t m = CONST_MPZ_INIT(&m0, !!m0);--  mpz_t r;-  mpz_init (r);-  mpz_powm(r, b, e, m);--  assert(r[0]._mp_size == 0 || r[0]._mp_size == 1);-  const mp_limb_t result = r[0]._mp_size ? r[0]._mp_d[0] : 0;--  mpz_clear (r);--  return result;-}--/* version of integer_gmp_powm() for single-limb arguments */-mp_limb_t-integer_gmp_powm_word(const mp_limb_t b0, // base-                      const mp_limb_t e0, // exponent-                      const mp_limb_t m0) // mod-{-  return integer_gmp_powm1(&b0, !!b0, &e0, !!e0, m0);-}--/* version of integer_gmp_powm() based on mpz_powm_sec- *- * With GMP 5.0 or later execution time depends on size of arguments- * and size of result.- *- * 'M' must be odd and 'E' non-negative.- */-mp_size_t-integer_gmp_powm_sec(mp_limb_t rp[], // result-                     const mp_limb_t bp[], const mp_size_t bn, // base-                     const mp_limb_t ep[], const mp_size_t en, // exponent-                     const mp_limb_t mp[], const mp_size_t mn) // mod-{-  assert(!mp_limb_zero_p(mp,mn));-  assert(mp[0] & 1);--  if ((mn == 1 || mn == -1) && mp[0] == 1) {-    rp[0] = 0;-    return 1;-  }--  if (mp_limb_zero_p(ep,en)) {-    rp[0] = 1;-    return 1;-  }--  assert(en > 0);--  const mpz_t b = CONST_MPZ_INIT(bp, mp_limb_zero_p(bp,bn) ? 0 : bn);-  const mpz_t e = CONST_MPZ_INIT(ep, en);-  const mpz_t m = CONST_MPZ_INIT(mp, mn);--  mpz_t r;-  mpz_init (r);--#if HAVE_SECURE_POWM == 0-  mpz_powm(r, b, e, m);-#else-  mpz_powm_sec(r, b, e, m);-#endif--  const mp_size_t rn = r[0]._mp_size;--  if (rn) {-    assert(0 < rn && rn <= mn);-    memcpy(rp, r[0]._mp_d, rn*sizeof(mp_limb_t));-  }--  mpz_clear (r);--  if (!rn) {-    rp[0] = 0;-    return 1;-  }--  return rn;-}---/* wrapper around mpz_invert()- *- * Store '(1/X) mod abs(M)' in {rp,rn}- *- * rp must have allocated mn limbs; This function's return value is- * the actual number rn (0 < rn <= mn) of limbs written to the rp limb-array.- *- * Returns 0 if inverse does not exist.- */-mp_size_t-integer_gmp_invert(mp_limb_t rp[], // result-                   const mp_limb_t xp[], const mp_size_t xn, // base-                   const mp_limb_t mp[], const mp_size_t mn) // mod-{-  if (mp_limb_zero_p(xp,xn)-      || mp_limb_zero_p(mp,mn)-      || ((mn == 1 || mn == -1) && mp[0] == 1)) {-    rp[0] = 0;-    return 1;-  }--  const mpz_t x = CONST_MPZ_INIT(xp, xn);-  const mpz_t m = CONST_MPZ_INIT(mp, mn);--  mpz_t r;-  mpz_init (r);--  const int inv_exists = mpz_invert(r, x, m);--  const mp_size_t rn = inv_exists ? r[0]._mp_size : 0;--  if (rn) {-    assert(0 < rn && rn <= mn);-    memcpy(rp, r[0]._mp_d, rn*sizeof(mp_limb_t));-  }--  mpz_clear (r);--  if (!rn) {-    rp[0] = 0;-    return 1;-  }--  return rn;-}---/* Version of integer_gmp_invert() operating on single limbs */-mp_limb_t-integer_gmp_invert_word(const mp_limb_t x0, const mp_limb_t m0)-{-  if (!x0 || m0<=1) return 0;-  if (x0 == 1) return 1;--  const mpz_t x = CONST_MPZ_INIT(&x0, 1);-  const mpz_t m = CONST_MPZ_INIT(&m0, 1);--  mpz_t r;-  mpz_init (r);--  const int inv_exists = mpz_invert(r, x, m);-  const mp_size_t rn = inv_exists ? r[0]._mp_size : 0;--  assert (rn == 0 || rn == 1);-  const mp_limb_t r0 = rn ? r[0]._mp_d[0] : 0;--  mpz_clear (r);--  return r0;-}---/* Wrappers for GMP 4.x compat- *- * In GMP 5.0 the following operations were added:- *- *  mpn_sqr, mpn_and_n, mpn_ior_n, mpn_xor_n, mpn_nand_n, mpn_nior_n,- *  mpn_xnor_n, mpn_andn_n, mpn_iorn_n, mpn_com, mpn_neg, mpn_copyi,- *  mpn_copyd, mpn_zero- *- * We use some of those, but for GMP 4.x compatibility we need to- * emulate those (while incurring some overhead).- */-#if __GNU_MP_VERSION < 5--#define MPN_LOGIC_OP_WRAPPER(MPN_WRAPPER, MPZ_OP) \-void                                                               \-MPN_WRAPPER(mp_limb_t *rp, const mp_limb_t *s1p,                   \-            const mp_limb_t *s2p, mp_size_t n)                     \-{                                                                  \-  assert(n > 0);                                                   \-                                                                   \-  const mpz_t s1 = CONST_MPZ_INIT(s1p, n);                         \-  const mpz_t s2 = CONST_MPZ_INIT(s2p, n);                         \-                                                                   \-  mpz_t r;                                                         \-  mpz_init (r);                                                    \-  MPZ_OP (r, s1, s2);                                              \-                                                                   \-  const mp_size_t rn = r[0]._mp_size;                              \-  memset (rp, 0, n*sizeof(mp_limb_t));                             \-  memcpy (rp, r[0]._mp_d, mp_size_minabs(rn,n)*sizeof(mp_limb_t)); \-                                                                   \-  mpz_clear (r);                                                   \-}--static void-__mpz_andn(mpz_t r, const mpz_t s1, const mpz_t s2)-{-  mpz_t s2c;-  mpz_init (s2c);-  mpz_com (s2c, s2);-  mpz_and (r, s1, s2c);-  mpz_clear (s2c);-}--MPN_LOGIC_OP_WRAPPER(integer_gmp_mpn_and_n,  mpz_and)-MPN_LOGIC_OP_WRAPPER(integer_gmp_mpn_andn_n, __mpz_andn)-MPN_LOGIC_OP_WRAPPER(integer_gmp_mpn_ior_n,  mpz_ior)-MPN_LOGIC_OP_WRAPPER(integer_gmp_mpn_xor_n,  mpz_xor)--#else /* __GNU_MP_VERSION >= 5 */-void-integer_gmp_mpn_and_n(mp_limb_t *rp, const mp_limb_t *s1p,-                      const mp_limb_t *s2p, mp_size_t n)-{-  mpn_and_n(rp, s1p, s2p, n);-}--void-integer_gmp_mpn_andn_n(mp_limb_t *rp, const mp_limb_t *s1p,-                      const mp_limb_t *s2p, mp_size_t n)-{-  mpn_andn_n(rp, s1p, s2p, n);-}--void-integer_gmp_mpn_ior_n(mp_limb_t *rp, const mp_limb_t *s1p,-                      const mp_limb_t *s2p, mp_size_t n)-{-  mpn_ior_n(rp, s1p, s2p, n);-}--void-integer_gmp_mpn_xor_n(mp_limb_t *rp, const mp_limb_t *s1p,-                      const mp_limb_t *s2p, mp_size_t n)-{-  mpn_xor_n(rp, s1p, s2p, n);-}-#endif
− changelog.md
@@ -1,84 +0,0 @@-# Changelog for [`integer-gmp` package](http://hackage.haskell.org/package/integer-gmp)--## 1.0.3.0 *January 2019*--  * Bundled with GHC 8.10.1--  * Documentation changes--## 1.0.2.0 *April 2018*--  * Bundled with GHC 8.4.2--  * Define `powModSecInteger`, a "secure" version of `powModInteger` using the-    `mpz_powm_sec` function.--## 1.0.1.0 *July 2017*--  * Bundled with GHC 8.2.1--  * Optimize `minusInteger`--  * Fix the right-shift operation for negative big integers (fixes GHC #12136)--  * Make operations more strict--## 1.0.0.1  *Feb 2016*--  * Bundled with GHC 8.0.1--  * Optimise `bitBigNat`/`bigInteger`--  * Fix minor issue in `eqBigNatWord#`--  * Various minor optimisations--## 1.0.0.0  *Mar 2015*--  * Bundled with GHC 7.10.1--  * Complete rewrite of `integer-gmp`. For more details, see-    https://gitlab.haskell.org/ghc/ghc/wikis/design/integer-gmp2--## 0.5.1.0  *Feb 2014*--  * Bundled with GHC 7.8.1--  * Improved Haddock documentation--  * New [PrimBool](https://gitlab.haskell.org/ghc/ghc/wikis/prim-bool)-    versions of comparison predicates in `GHC.Integer`:--        eqInteger# :: Integer -> Integer -> Int#-        geInteger# :: Integer -> Integer -> Int#-        gtInteger# :: Integer -> Integer -> Int#-        leInteger# :: Integer -> Integer -> Int#-        ltInteger# :: Integer -> Integer -> Int#-        neqInteger# :: Integer -> Integer -> Int#--  * New `GHC.Integer.testBitInteger` primitive for use with `Data.Bits`--  * Reduce short-lived heap allocation and try to demote `J#` back-    to `S#` more aggressively.  See also-    [#8647](https://gitlab.haskell.org/ghc/ghc/issues/8647)-    for more details.--  * New GMP-specific binary (de)serialization primitives added to-    `GHC.Integer.GMP.Internals`:--        importIntegerFromByteArray-        importIntegerFromAddr-        exportIntegerToAddr-        exportIntegerToMutableByteArray-        sizeInBaseInteger--  * New GMP-implemented number-theoretic operations added to-    `GHC.Integer.GMP.Internals`:--        gcdExtInteger-        nextPrimeInteger-        testPrimeInteger-        powInteger-        powModInteger-        powModSecInteger-        recipModInteger
− config.guess
@@ -1,1667 +0,0 @@-#! /bin/sh-# Attempt to guess a canonical system name.-#   Copyright 1992-2019 Free Software Foundation, Inc.--timestamp='2019-12-21'--# This file is free software; you can redistribute it and/or modify it-# under the terms of the GNU General Public License as published by-# the Free Software Foundation; either version 3 of the License, or-# (at your option) any later version.-#-# This program is distributed in the hope that it will be useful, but-# WITHOUT ANY WARRANTY; without even the implied warranty of-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU-# General Public License for more details.-#-# You should have received a copy of the GNU General Public License-# along with this program; if not, see <https://www.gnu.org/licenses/>.-#-# As a special exception to the GNU General Public License, if you-# distribute this file as part of a program that contains a-# configuration script generated by Autoconf, you may include it under-# the same distribution terms that you use for the rest of that-# program.  This Exception is an additional permission under section 7-# of the GNU General Public License, version 3 ("GPLv3").-#-# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.-#-# You can get the latest version of this script from:-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess-#-# Please send patches to <config-patches@gnu.org>.---me=`echo "$0" | sed -e 's,.*/,,'`--usage="\-Usage: $0 [OPTION]--Output the configuration name of the system \`$me' is run on.--Options:-  -h, --help         print this help, then exit-  -t, --time-stamp   print date of last modification, then exit-  -v, --version      print version number, then exit--Report bugs and patches to <config-patches@gnu.org>."--version="\-GNU config.guess ($timestamp)--Originally written by Per Bothner.-Copyright 1992-2019 Free Software Foundation, Inc.--This is free software; see the source for copying conditions.  There is NO-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."--help="-Try \`$me --help' for more information."--# Parse command line-while test $# -gt 0 ; do-  case $1 in-    --time-stamp | --time* | -t )-       echo "$timestamp" ; exit ;;-    --version | -v )-       echo "$version" ; exit ;;-    --help | --h* | -h )-       echo "$usage"; exit ;;-    -- )     # Stop option processing-       shift; break ;;-    - )	# Use stdin as input.-       break ;;-    -* )-       echo "$me: invalid option $1$help" >&2-       exit 1 ;;-    * )-       break ;;-  esac-done--if test $# != 0; then-  echo "$me: too many arguments$help" >&2-  exit 1-fi--# CC_FOR_BUILD -- compiler used by this script. Note that the use of a-# compiler to aid in system detection is discouraged as it requires-# temporary files to be created and, as you can see below, it is a-# headache to deal with in a portable fashion.--# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still-# use `HOST_CC' if defined, but it is deprecated.--# Portable tmp directory creation inspired by the Autoconf team.--tmp=-# shellcheck disable=SC2172-trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15--set_cc_for_build() {-    # prevent multiple calls if $tmp is already set-    test "$tmp" && return 0-    : "${TMPDIR=/tmp}"-    # shellcheck disable=SC2039-    { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||-	{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||-	{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||-	{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }-    dummy=$tmp/dummy-    case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in-	,,)    echo "int x;" > "$dummy.c"-	       for driver in cc gcc c89 c99 ; do-		   if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then-		       CC_FOR_BUILD="$driver"-		       break-		   fi-	       done-	       if test x"$CC_FOR_BUILD" = x ; then-		   CC_FOR_BUILD=no_compiler_found-	       fi-	       ;;-	,,*)   CC_FOR_BUILD=$CC ;;-	,*,*)  CC_FOR_BUILD=$HOST_CC ;;-    esac-}--# This is needed to find uname on a Pyramid OSx when run in the BSD universe.-# (ghazi@noc.rutgers.edu 1994-08-24)-if test -f /.attbin/uname ; then-	PATH=$PATH:/.attbin ; export PATH-fi--UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown--case "$UNAME_SYSTEM" in-Linux|GNU|GNU/*)-	# If the system lacks a compiler, then just pick glibc.-	# We could probably try harder.-	LIBC=gnu--	set_cc_for_build-	cat <<-EOF > "$dummy.c"-	#include <features.h>-	#if defined(__UCLIBC__)-	LIBC=uclibc-	#elif defined(__dietlibc__)-	LIBC=dietlibc-	#else-	LIBC=gnu-	#endif-	EOF-	eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"--	# If ldd exists, use it to detect musl libc.-	if command -v ldd >/dev/null && \-		ldd --version 2>&1 | grep -q ^musl-	then-	    LIBC=musl-	fi-	;;-esac--# Note: order is significant - the case branches are not exclusive.--case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in-    *:NetBSD:*:*)-	# NetBSD (nbsd) targets should (where applicable) match one or-	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,-	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently-	# switched to ELF, *-*-netbsd* would select the old-	# object file format.  This provides both forward-	# compatibility and a consistent mechanism for selecting the-	# object file format.-	#-	# Note: NetBSD doesn't particularly care about the vendor-	# portion of the name.  We always set it to "unknown".-	sysctl="sysctl -n hw.machine_arch"-	UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \-	    "/sbin/$sysctl" 2>/dev/null || \-	    "/usr/sbin/$sysctl" 2>/dev/null || \-	    echo unknown)`-	case "$UNAME_MACHINE_ARCH" in-	    armeb) machine=armeb-unknown ;;-	    arm*) machine=arm-unknown ;;-	    sh3el) machine=shl-unknown ;;-	    sh3eb) machine=sh-unknown ;;-	    sh5el) machine=sh5le-unknown ;;-	    earmv*)-		arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`-		endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`-		machine="${arch}${endian}"-unknown-		;;-	    *) machine="$UNAME_MACHINE_ARCH"-unknown ;;-	esac-	# The Operating System including object format, if it has switched-	# to ELF recently (or will in the future) and ABI.-	case "$UNAME_MACHINE_ARCH" in-	    earm*)-		os=netbsdelf-		;;-	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)-		set_cc_for_build-		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \-			| grep -q __ELF__-		then-		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).-		    # Return netbsd for either.  FIX?-		    os=netbsd-		else-		    os=netbsdelf-		fi-		;;-	    *)-		os=netbsd-		;;-	esac-	# Determine ABI tags.-	case "$UNAME_MACHINE_ARCH" in-	    earm*)-		expr='s/^earmv[0-9]/-eabi/;s/eb$//'-		abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`-		;;-	esac-	# The OS release-	# Debian GNU/NetBSD machines have a different userland, and-	# thus, need a distinct triplet. However, they do not need-	# kernel version information, so it can be replaced with a-	# suitable tag, in the style of linux-gnu.-	case "$UNAME_VERSION" in-	    Debian*)-		release='-gnu'-		;;-	    *)-		release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`-		;;-	esac-	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:-	# contains redundant information, the shorter form:-	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.-	echo "$machine-${os}${release}${abi-}"-	exit ;;-    *:Bitrig:*:*)-	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`-	echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"-	exit ;;-    *:OpenBSD:*:*)-	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`-	echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"-	exit ;;-    *:LibertyBSD:*:*)-	UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`-	echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"-	exit ;;-    *:MidnightBSD:*:*)-	echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"-	exit ;;-    *:ekkoBSD:*:*)-	echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"-	exit ;;-    *:SolidBSD:*:*)-	echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"-	exit ;;-    *:OS108:*:*)-	echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE"-	exit ;;-    macppc:MirBSD:*:*)-	echo powerpc-unknown-mirbsd"$UNAME_RELEASE"-	exit ;;-    *:MirBSD:*:*)-	echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"-	exit ;;-    *:Sortix:*:*)-	echo "$UNAME_MACHINE"-unknown-sortix-	exit ;;-    *:Twizzler:*:*)-	echo "$UNAME_MACHINE"-unknown-twizzler-	exit ;;-    *:Redox:*:*)-	echo "$UNAME_MACHINE"-unknown-redox-	exit ;;-    mips:OSF1:*.*)-	echo mips-dec-osf1-	exit ;;-    alpha:OSF1:*:*)-	case $UNAME_RELEASE in-	*4.0)-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`-		;;-	*5.*)-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`-		;;-	esac-	# According to Compaq, /usr/sbin/psrinfo has been available on-	# OSF/1 and Tru64 systems produced since 1995.  I hope that-	# covers most systems running today.  This code pipes the CPU-	# types through head -n 1, so we only detect the type of CPU 0.-	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`-	case "$ALPHA_CPU_TYPE" in-	    "EV4 (21064)")-		UNAME_MACHINE=alpha ;;-	    "EV4.5 (21064)")-		UNAME_MACHINE=alpha ;;-	    "LCA4 (21066/21068)")-		UNAME_MACHINE=alpha ;;-	    "EV5 (21164)")-		UNAME_MACHINE=alphaev5 ;;-	    "EV5.6 (21164A)")-		UNAME_MACHINE=alphaev56 ;;-	    "EV5.6 (21164PC)")-		UNAME_MACHINE=alphapca56 ;;-	    "EV5.7 (21164PC)")-		UNAME_MACHINE=alphapca57 ;;-	    "EV6 (21264)")-		UNAME_MACHINE=alphaev6 ;;-	    "EV6.7 (21264A)")-		UNAME_MACHINE=alphaev67 ;;-	    "EV6.8CB (21264C)")-		UNAME_MACHINE=alphaev68 ;;-	    "EV6.8AL (21264B)")-		UNAME_MACHINE=alphaev68 ;;-	    "EV6.8CX (21264D)")-		UNAME_MACHINE=alphaev68 ;;-	    "EV6.9A (21264/EV69A)")-		UNAME_MACHINE=alphaev69 ;;-	    "EV7 (21364)")-		UNAME_MACHINE=alphaev7 ;;-	    "EV7.9 (21364A)")-		UNAME_MACHINE=alphaev79 ;;-	esac-	# A Pn.n version is a patched version.-	# A Vn.n version is a released version.-	# A Tn.n version is a released field test version.-	# A Xn.n version is an unreleased experimental baselevel.-	# 1.2 uses "1.2" for uname -r.-	echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"-	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.-	exitcode=$?-	trap '' 0-	exit $exitcode ;;-    Amiga*:UNIX_System_V:4.0:*)-	echo m68k-unknown-sysv4-	exit ;;-    *:[Aa]miga[Oo][Ss]:*:*)-	echo "$UNAME_MACHINE"-unknown-amigaos-	exit ;;-    *:[Mm]orph[Oo][Ss]:*:*)-	echo "$UNAME_MACHINE"-unknown-morphos-	exit ;;-    *:OS/390:*:*)-	echo i370-ibm-openedition-	exit ;;-    *:z/VM:*:*)-	echo s390-ibm-zvmoe-	exit ;;-    *:OS400:*:*)-	echo powerpc-ibm-os400-	exit ;;-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)-	echo arm-acorn-riscix"$UNAME_RELEASE"-	exit ;;-    arm*:riscos:*:*|arm*:RISCOS:*:*)-	echo arm-unknown-riscos-	exit ;;-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)-	echo hppa1.1-hitachi-hiuxmpp-	exit ;;-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)-	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.-	if test "`(/bin/universe) 2>/dev/null`" = att ; then-		echo pyramid-pyramid-sysv3-	else-		echo pyramid-pyramid-bsd-	fi-	exit ;;-    NILE*:*:*:dcosx)-	echo pyramid-pyramid-svr4-	exit ;;-    DRS?6000:unix:4.0:6*)-	echo sparc-icl-nx6-	exit ;;-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)-	case `/usr/bin/uname -p` in-	    sparc) echo sparc-icl-nx7; exit ;;-	esac ;;-    s390x:SunOS:*:*)-	echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"-	exit ;;-    sun4H:SunOS:5.*:*)-	echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"-	exit ;;-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)-	echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"-	exit ;;-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)-	echo i386-pc-auroraux"$UNAME_RELEASE"-	exit ;;-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)-	set_cc_for_build-	SUN_ARCH=i386-	# If there is a compiler, see if it is configured for 64-bit objects.-	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.-	# This test works for both compilers.-	if [ "$CC_FOR_BUILD" != no_compiler_found ]; then-	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \-		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \-		grep IS_64BIT_ARCH >/dev/null-	    then-		SUN_ARCH=x86_64-	    fi-	fi-	echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"-	exit ;;-    sun4*:SunOS:6*:*)-	# According to config.sub, this is the proper way to canonicalize-	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but-	# it's likely to be more like Solaris than SunOS4.-	echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"-	exit ;;-    sun4*:SunOS:*:*)-	case "`/usr/bin/arch -k`" in-	    Series*|S4*)-		UNAME_RELEASE=`uname -v`-		;;-	esac-	# Japanese Language versions have a version number like `4.1.3-JL'.-	echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"-	exit ;;-    sun3*:SunOS:*:*)-	echo m68k-sun-sunos"$UNAME_RELEASE"-	exit ;;-    sun*:*:4.2BSD:*)-	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`-	test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3-	case "`/bin/arch`" in-	    sun3)-		echo m68k-sun-sunos"$UNAME_RELEASE"-		;;-	    sun4)-		echo sparc-sun-sunos"$UNAME_RELEASE"-		;;-	esac-	exit ;;-    aushp:SunOS:*:*)-	echo sparc-auspex-sunos"$UNAME_RELEASE"-	exit ;;-    # The situation for MiNT is a little confusing.  The machine name-    # can be virtually everything (everything which is not-    # "atarist" or "atariste" at least should have a processor-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"-    # to the lowercase version "mint" (or "freemint").  Finally-    # the system name "TOS" denotes a system which is actually not-    # MiNT.  But MiNT is downward compatible to TOS, so this should-    # be no problem.-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)-	echo m68k-atari-mint"$UNAME_RELEASE"-	exit ;;-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)-	echo m68k-atari-mint"$UNAME_RELEASE"-	exit ;;-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)-	echo m68k-atari-mint"$UNAME_RELEASE"-	exit ;;-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)-	echo m68k-milan-mint"$UNAME_RELEASE"-	exit ;;-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)-	echo m68k-hades-mint"$UNAME_RELEASE"-	exit ;;-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)-	echo m68k-unknown-mint"$UNAME_RELEASE"-	exit ;;-    m68k:machten:*:*)-	echo m68k-apple-machten"$UNAME_RELEASE"-	exit ;;-    powerpc:machten:*:*)-	echo powerpc-apple-machten"$UNAME_RELEASE"-	exit ;;-    RISC*:Mach:*:*)-	echo mips-dec-mach_bsd4.3-	exit ;;-    RISC*:ULTRIX:*:*)-	echo mips-dec-ultrix"$UNAME_RELEASE"-	exit ;;-    VAX*:ULTRIX*:*:*)-	echo vax-dec-ultrix"$UNAME_RELEASE"-	exit ;;-    2020:CLIX:*:* | 2430:CLIX:*:*)-	echo clipper-intergraph-clix"$UNAME_RELEASE"-	exit ;;-    mips:*:*:UMIPS | mips:*:*:RISCos)-	set_cc_for_build-	sed 's/^	//' << EOF > "$dummy.c"-#ifdef __cplusplus-#include <stdio.h>  /* for printf() prototype */-	int main (int argc, char *argv[]) {-#else-	int main (argc, argv) int argc; char *argv[]; {-#endif-	#if defined (host_mips) && defined (MIPSEB)-	#if defined (SYSTYPE_SYSV)-	  printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);-	#endif-	#if defined (SYSTYPE_SVR4)-	  printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);-	#endif-	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)-	  printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);-	#endif-	#endif-	  exit (-1);-	}-EOF-	$CC_FOR_BUILD -o "$dummy" "$dummy.c" &&-	  dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&-	  SYSTEM_NAME=`"$dummy" "$dummyarg"` &&-	    { echo "$SYSTEM_NAME"; exit; }-	echo mips-mips-riscos"$UNAME_RELEASE"-	exit ;;-    Motorola:PowerMAX_OS:*:*)-	echo powerpc-motorola-powermax-	exit ;;-    Motorola:*:4.3:PL8-*)-	echo powerpc-harris-powermax-	exit ;;-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)-	echo powerpc-harris-powermax-	exit ;;-    Night_Hawk:Power_UNIX:*:*)-	echo powerpc-harris-powerunix-	exit ;;-    m88k:CX/UX:7*:*)-	echo m88k-harris-cxux7-	exit ;;-    m88k:*:4*:R4*)-	echo m88k-motorola-sysv4-	exit ;;-    m88k:*:3*:R3*)-	echo m88k-motorola-sysv3-	exit ;;-    AViiON:dgux:*:*)-	# DG/UX returns AViiON for all architectures-	UNAME_PROCESSOR=`/usr/bin/uname -p`-	if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]-	then-	    if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \-	       [ "$TARGET_BINARY_INTERFACE"x = x ]-	    then-		echo m88k-dg-dgux"$UNAME_RELEASE"-	    else-		echo m88k-dg-dguxbcs"$UNAME_RELEASE"-	    fi-	else-	    echo i586-dg-dgux"$UNAME_RELEASE"-	fi-	exit ;;-    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)-	echo m88k-dolphin-sysv3-	exit ;;-    M88*:*:R3*:*)-	# Delta 88k system running SVR3-	echo m88k-motorola-sysv3-	exit ;;-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)-	echo m88k-tektronix-sysv3-	exit ;;-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)-	echo m68k-tektronix-bsd-	exit ;;-    *:IRIX*:*:*)-	echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"-	exit ;;-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.-	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id-	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '-    i*86:AIX:*:*)-	echo i386-ibm-aix-	exit ;;-    ia64:AIX:*:*)-	if [ -x /usr/bin/oslevel ] ; then-		IBM_REV=`/usr/bin/oslevel`-	else-		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"-	fi-	echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"-	exit ;;-    *:AIX:2:3)-	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then-		set_cc_for_build-		sed 's/^		//' << EOF > "$dummy.c"-		#include <sys/systemcfg.h>--		main()-			{-			if (!__power_pc())-				exit(1);-			puts("powerpc-ibm-aix3.2.5");-			exit(0);-			}-EOF-		if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`-		then-			echo "$SYSTEM_NAME"-		else-			echo rs6000-ibm-aix3.2.5-		fi-	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then-		echo rs6000-ibm-aix3.2.4-	else-		echo rs6000-ibm-aix3.2-	fi-	exit ;;-    *:AIX:*:[4567])-	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`-	if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then-		IBM_ARCH=rs6000-	else-		IBM_ARCH=powerpc-	fi-	if [ -x /usr/bin/lslpp ] ; then-		IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |-			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`-	else-		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"-	fi-	echo "$IBM_ARCH"-ibm-aix"$IBM_REV"-	exit ;;-    *:AIX:*:*)-	echo rs6000-ibm-aix-	exit ;;-    ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)-	echo romp-ibm-bsd4.4-	exit ;;-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and-	echo romp-ibm-bsd"$UNAME_RELEASE"   # 4.3 with uname added to-	exit ;;                             # report: romp-ibm BSD 4.3-    *:BOSX:*:*)-	echo rs6000-bull-bosx-	exit ;;-    DPX/2?00:B.O.S.:*:*)-	echo m68k-bull-sysv3-	exit ;;-    9000/[34]??:4.3bsd:1.*:*)-	echo m68k-hp-bsd-	exit ;;-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)-	echo m68k-hp-bsd4.4-	exit ;;-    9000/[34678]??:HP-UX:*:*)-	HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`-	case "$UNAME_MACHINE" in-	    9000/31?)            HP_ARCH=m68000 ;;-	    9000/[34]??)         HP_ARCH=m68k ;;-	    9000/[678][0-9][0-9])-		if [ -x /usr/bin/getconf ]; then-		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`-		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`-		    case "$sc_cpu_version" in-		      523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0-		      528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1-		      532)                      # CPU_PA_RISC2_0-			case "$sc_kernel_bits" in-			  32) HP_ARCH=hppa2.0n ;;-			  64) HP_ARCH=hppa2.0w ;;-			  '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20-			esac ;;-		    esac-		fi-		if [ "$HP_ARCH" = "" ]; then-		    set_cc_for_build-		    sed 's/^		//' << EOF > "$dummy.c"--		#define _HPUX_SOURCE-		#include <stdlib.h>-		#include <unistd.h>--		int main ()-		{-		#if defined(_SC_KERNEL_BITS)-		    long bits = sysconf(_SC_KERNEL_BITS);-		#endif-		    long cpu  = sysconf (_SC_CPU_VERSION);--		    switch (cpu)-			{-			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;-			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;-			case CPU_PA_RISC2_0:-		#if defined(_SC_KERNEL_BITS)-			    switch (bits)-				{-				case 64: puts ("hppa2.0w"); break;-				case 32: puts ("hppa2.0n"); break;-				default: puts ("hppa2.0"); break;-				} break;-		#else  /* !defined(_SC_KERNEL_BITS) */-			    puts ("hppa2.0"); break;-		#endif-			default: puts ("hppa1.0"); break;-			}-		    exit (0);-		}-EOF-		    (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`-		    test -z "$HP_ARCH" && HP_ARCH=hppa-		fi ;;-	esac-	if [ "$HP_ARCH" = hppa2.0w ]-	then-	    set_cc_for_build--	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating-	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler-	    # generating 64-bit code.  GNU and HP use different nomenclature:-	    #-	    # $ CC_FOR_BUILD=cc ./config.guess-	    # => hppa2.0w-hp-hpux11.23-	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess-	    # => hppa64-hp-hpux11.23--	    if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |-		grep -q __LP64__-	    then-		HP_ARCH=hppa2.0w-	    else-		HP_ARCH=hppa64-	    fi-	fi-	echo "$HP_ARCH"-hp-hpux"$HPUX_REV"-	exit ;;-    ia64:HP-UX:*:*)-	HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`-	echo ia64-hp-hpux"$HPUX_REV"-	exit ;;-    3050*:HI-UX:*:*)-	set_cc_for_build-	sed 's/^	//' << EOF > "$dummy.c"-	#include <unistd.h>-	int-	main ()-	{-	  long cpu = sysconf (_SC_CPU_VERSION);-	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns-	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct-	     results, however.  */-	  if (CPU_IS_PA_RISC (cpu))-	    {-	      switch (cpu)-		{-		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;-		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;-		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;-		  default: puts ("hppa-hitachi-hiuxwe2"); break;-		}-	    }-	  else if (CPU_IS_HP_MC68K (cpu))-	    puts ("m68k-hitachi-hiuxwe2");-	  else puts ("unknown-hitachi-hiuxwe2");-	  exit (0);-	}-EOF-	$CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&-		{ echo "$SYSTEM_NAME"; exit; }-	echo unknown-hitachi-hiuxwe2-	exit ;;-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)-	echo hppa1.1-hp-bsd-	exit ;;-    9000/8??:4.3bsd:*:*)-	echo hppa1.0-hp-bsd-	exit ;;-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)-	echo hppa1.0-hp-mpeix-	exit ;;-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)-	echo hppa1.1-hp-osf-	exit ;;-    hp8??:OSF1:*:*)-	echo hppa1.0-hp-osf-	exit ;;-    i*86:OSF1:*:*)-	if [ -x /usr/sbin/sysversion ] ; then-	    echo "$UNAME_MACHINE"-unknown-osf1mk-	else-	    echo "$UNAME_MACHINE"-unknown-osf1-	fi-	exit ;;-    parisc*:Lites*:*:*)-	echo hppa1.1-hp-lites-	exit ;;-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)-	echo c1-convex-bsd-	exit ;;-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)-	if getsysinfo -f scalar_acc-	then echo c32-convex-bsd-	else echo c2-convex-bsd-	fi-	exit ;;-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)-	echo c34-convex-bsd-	exit ;;-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)-	echo c38-convex-bsd-	exit ;;-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)-	echo c4-convex-bsd-	exit ;;-    CRAY*Y-MP:*:*:*)-	echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'-	exit ;;-    CRAY*[A-Z]90:*:*:*)-	echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \-	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \-	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \-	      -e 's/\.[^.]*$/.X/'-	exit ;;-    CRAY*TS:*:*:*)-	echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'-	exit ;;-    CRAY*T3E:*:*:*)-	echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'-	exit ;;-    CRAY*SV1:*:*:*)-	echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'-	exit ;;-    *:UNICOS/mp:*:*)-	echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'-	exit ;;-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)-	FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`-	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`-	FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`-	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"-	exit ;;-    5000:UNIX_System_V:4.*:*)-	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`-	FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`-	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"-	exit ;;-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)-	echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"-	exit ;;-    sparc*:BSD/OS:*:*)-	echo sparc-unknown-bsdi"$UNAME_RELEASE"-	exit ;;-    *:BSD/OS:*:*)-	echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"-	exit ;;-    arm:FreeBSD:*:*)-	UNAME_PROCESSOR=`uname -p`-	set_cc_for_build-	if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \-	    | grep -q __ARM_PCS_VFP-	then-	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi-	else-	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf-	fi-	exit ;;-    *:FreeBSD:*:*)-	UNAME_PROCESSOR=`/usr/bin/uname -p`-	case "$UNAME_PROCESSOR" in-	    amd64)-		UNAME_PROCESSOR=x86_64 ;;-	    i386)-		UNAME_PROCESSOR=i586 ;;-	esac-	echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"-	exit ;;-    i*:CYGWIN*:*)-	echo "$UNAME_MACHINE"-pc-cygwin-	exit ;;-    *:MINGW64*:*)-	echo "$UNAME_MACHINE"-pc-mingw64-	exit ;;-    *:MINGW*:*)-	echo "$UNAME_MACHINE"-pc-mingw32-	exit ;;-    *:MSYS*:*)-	echo "$UNAME_MACHINE"-pc-msys-	exit ;;-    i*:PW*:*)-	echo "$UNAME_MACHINE"-pc-pw32-	exit ;;-    *:Interix*:*)-	case "$UNAME_MACHINE" in-	    x86)-		echo i586-pc-interix"$UNAME_RELEASE"-		exit ;;-	    authenticamd | genuineintel | EM64T)-		echo x86_64-unknown-interix"$UNAME_RELEASE"-		exit ;;-	    IA64)-		echo ia64-unknown-interix"$UNAME_RELEASE"-		exit ;;-	esac ;;-    i*:UWIN*:*)-	echo "$UNAME_MACHINE"-pc-uwin-	exit ;;-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)-	echo x86_64-pc-cygwin-	exit ;;-    prep*:SunOS:5.*:*)-	echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"-	exit ;;-    *:GNU:*:*)-	# the GNU system-	echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"-	exit ;;-    *:GNU/*:*:*)-	# other systems with GNU libc and userland-	echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"-	exit ;;-    *:Minix:*:*)-	echo "$UNAME_MACHINE"-unknown-minix-	exit ;;-    aarch64:Linux:*:*)-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    aarch64_be:Linux:*:*)-	UNAME_MACHINE=aarch64_be-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    alpha:Linux:*:*)-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in-	  EV5)   UNAME_MACHINE=alphaev5 ;;-	  EV56)  UNAME_MACHINE=alphaev56 ;;-	  PCA56) UNAME_MACHINE=alphapca56 ;;-	  PCA57) UNAME_MACHINE=alphapca56 ;;-	  EV6)   UNAME_MACHINE=alphaev6 ;;-	  EV67)  UNAME_MACHINE=alphaev67 ;;-	  EV68*) UNAME_MACHINE=alphaev68 ;;-	esac-	objdump --private-headers /bin/sh | grep -q ld.so.1-	if test "$?" = 0 ; then LIBC=gnulibc1 ; fi-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    arc:Linux:*:* | arceb:Linux:*:*)-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    arm*:Linux:*:*)-	set_cc_for_build-	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \-	    | grep -q __ARM_EABI__-	then-	    echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	else-	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \-		| grep -q __ARM_PCS_VFP-	    then-		echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi-	    else-		echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf-	    fi-	fi-	exit ;;-    avr32*:Linux:*:*)-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    cris:Linux:*:*)-	echo "$UNAME_MACHINE"-axis-linux-"$LIBC"-	exit ;;-    crisv32:Linux:*:*)-	echo "$UNAME_MACHINE"-axis-linux-"$LIBC"-	exit ;;-    e2k:Linux:*:*)-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    frv:Linux:*:*)-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    hexagon:Linux:*:*)-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    i*86:Linux:*:*)-	echo "$UNAME_MACHINE"-pc-linux-"$LIBC"-	exit ;;-    ia64:Linux:*:*)-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    k1om:Linux:*:*)-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    m32r*:Linux:*:*)-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    m68*:Linux:*:*)-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    mips:Linux:*:* | mips64:Linux:*:*)-	set_cc_for_build-	IS_GLIBC=0-	test x"${LIBC}" = xgnu && IS_GLIBC=1-	sed 's/^	//' << EOF > "$dummy.c"-	#undef CPU-	#undef mips-	#undef mipsel-	#undef mips64-	#undef mips64el-	#if ${IS_GLIBC} && defined(_ABI64)-	LIBCABI=gnuabi64-	#else-	#if ${IS_GLIBC} && defined(_ABIN32)-	LIBCABI=gnuabin32-	#else-	LIBCABI=${LIBC}-	#endif-	#endif--	#if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6-	CPU=mipsisa64r6-	#else-	#if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6-	CPU=mipsisa32r6-	#else-	#if defined(__mips64)-	CPU=mips64-	#else-	CPU=mips-	#endif-	#endif-	#endif--	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)-	MIPS_ENDIAN=el-	#else-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)-	MIPS_ENDIAN=-	#else-	MIPS_ENDIAN=-	#endif-	#endif-EOF-	eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`"-	test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }-	;;-    mips64el:Linux:*:*)-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    openrisc*:Linux:*:*)-	echo or1k-unknown-linux-"$LIBC"-	exit ;;-    or32:Linux:*:* | or1k*:Linux:*:*)-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    padre:Linux:*:*)-	echo sparc-unknown-linux-"$LIBC"-	exit ;;-    parisc64:Linux:*:* | hppa64:Linux:*:*)-	echo hppa64-unknown-linux-"$LIBC"-	exit ;;-    parisc:Linux:*:* | hppa:Linux:*:*)-	# Look for CPU level-	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in-	  PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;-	  PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;-	  *)    echo hppa-unknown-linux-"$LIBC" ;;-	esac-	exit ;;-    ppc64:Linux:*:*)-	echo powerpc64-unknown-linux-"$LIBC"-	exit ;;-    ppc:Linux:*:*)-	echo powerpc-unknown-linux-"$LIBC"-	exit ;;-    ppc64le:Linux:*:*)-	echo powerpc64le-unknown-linux-"$LIBC"-	exit ;;-    ppcle:Linux:*:*)-	echo powerpcle-unknown-linux-"$LIBC"-	exit ;;-    riscv32:Linux:*:* | riscv64:Linux:*:*)-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    s390:Linux:*:* | s390x:Linux:*:*)-	echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"-	exit ;;-    sh64*:Linux:*:*)-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    sh*:Linux:*:*)-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    sparc:Linux:*:* | sparc64:Linux:*:*)-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    tile*:Linux:*:*)-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    vax:Linux:*:*)-	echo "$UNAME_MACHINE"-dec-linux-"$LIBC"-	exit ;;-    x86_64:Linux:*:*)-	echo "$UNAME_MACHINE"-pc-linux-"$LIBC"-	exit ;;-    xtensa*:Linux:*:*)-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"-	exit ;;-    i*86:DYNIX/ptx:4*:*)-	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.-	# earlier versions are messed up and put the nodename in both-	# sysname and nodename.-	echo i386-sequent-sysv4-	exit ;;-    i*86:UNIX_SV:4.2MP:2.*)-	# Unixware is an offshoot of SVR4, but it has its own version-	# number series starting with 2...-	# I am not positive that other SVR4 systems won't match this,-	# I just have to hope.  -- rms.-	# Use sysv4.2uw... so that sysv4* matches it.-	echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"-	exit ;;-    i*86:OS/2:*:*)-	# If we were able to find `uname', then EMX Unix compatibility-	# is probably installed.-	echo "$UNAME_MACHINE"-pc-os2-emx-	exit ;;-    i*86:XTS-300:*:STOP)-	echo "$UNAME_MACHINE"-unknown-stop-	exit ;;-    i*86:atheos:*:*)-	echo "$UNAME_MACHINE"-unknown-atheos-	exit ;;-    i*86:syllable:*:*)-	echo "$UNAME_MACHINE"-pc-syllable-	exit ;;-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)-	echo i386-unknown-lynxos"$UNAME_RELEASE"-	exit ;;-    i*86:*DOS:*:*)-	echo "$UNAME_MACHINE"-pc-msdosdjgpp-	exit ;;-    i*86:*:4.*:*)-	UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`-	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then-		echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"-	else-		echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"-	fi-	exit ;;-    i*86:*:5:[678]*)-	# UnixWare 7.x, OpenUNIX and OpenServer 6.-	case `/bin/uname -X | grep "^Machine"` in-	    *486*)	     UNAME_MACHINE=i486 ;;-	    *Pentium)	     UNAME_MACHINE=i586 ;;-	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;-	esac-	echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"-	exit ;;-    i*86:*:3.2:*)-	if test -f /usr/options/cb.name; then-		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`-		echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"-	elif /bin/uname -X 2>/dev/null >/dev/null ; then-		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`-		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486-		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \-			&& UNAME_MACHINE=i586-		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \-			&& UNAME_MACHINE=i686-		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \-			&& UNAME_MACHINE=i686-		echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"-	else-		echo "$UNAME_MACHINE"-pc-sysv32-	fi-	exit ;;-    pc:*:*:*)-	# Left here for compatibility:-	# uname -m prints for DJGPP always 'pc', but it prints nothing about-	# the processor, so we play safe by assuming i586.-	# Note: whatever this is, it MUST be the same as what config.sub-	# prints for the "djgpp" host, or else GDB configure will decide that-	# this is a cross-build.-	echo i586-pc-msdosdjgpp-	exit ;;-    Intel:Mach:3*:*)-	echo i386-pc-mach3-	exit ;;-    paragon:*:*:*)-	echo i860-intel-osf1-	exit ;;-    i860:*:4.*:*) # i860-SVR4-	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then-	  echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4-	else # Add other i860-SVR4 vendors below as they are discovered.-	  echo i860-unknown-sysv"$UNAME_RELEASE"  # Unknown i860-SVR4-	fi-	exit ;;-    mini*:CTIX:SYS*5:*)-	# "miniframe"-	echo m68010-convergent-sysv-	exit ;;-    mc68k:UNIX:SYSTEM5:3.51m)-	echo m68k-convergent-sysv-	exit ;;-    M680?0:D-NIX:5.3:*)-	echo m68k-diab-dnix-	exit ;;-    M68*:*:R3V[5678]*:*)-	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)-	OS_REL=''-	test -r /etc/.relid \-	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \-	  && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \-	  && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \-	  && { echo i486-ncr-sysv4; exit; } ;;-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)-	OS_REL='.3'-	test -r /etc/.relid \-	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \-	    && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \-	    && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }-	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \-	    && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)-	echo m68k-unknown-lynxos"$UNAME_RELEASE"-	exit ;;-    mc68030:UNIX_System_V:4.*:*)-	echo m68k-atari-sysv4-	exit ;;-    TSUNAMI:LynxOS:2.*:*)-	echo sparc-unknown-lynxos"$UNAME_RELEASE"-	exit ;;-    rs6000:LynxOS:2.*:*)-	echo rs6000-unknown-lynxos"$UNAME_RELEASE"-	exit ;;-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)-	echo powerpc-unknown-lynxos"$UNAME_RELEASE"-	exit ;;-    SM[BE]S:UNIX_SV:*:*)-	echo mips-dde-sysv"$UNAME_RELEASE"-	exit ;;-    RM*:ReliantUNIX-*:*:*)-	echo mips-sni-sysv4-	exit ;;-    RM*:SINIX-*:*:*)-	echo mips-sni-sysv4-	exit ;;-    *:SINIX-*:*:*)-	if uname -p 2>/dev/null >/dev/null ; then-		UNAME_MACHINE=`(uname -p) 2>/dev/null`-		echo "$UNAME_MACHINE"-sni-sysv4-	else-		echo ns32k-sni-sysv-	fi-	exit ;;-    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort-			# says <Richard.M.Bartel@ccMail.Census.GOV>-	echo i586-unisys-sysv4-	exit ;;-    *:UNIX_System_V:4*:FTX*)-	# From Gerald Hewes <hewes@openmarket.com>.-	# How about differentiating between stratus architectures? -djm-	echo hppa1.1-stratus-sysv4-	exit ;;-    *:*:*:FTX*)-	# From seanf@swdc.stratus.com.-	echo i860-stratus-sysv4-	exit ;;-    i*86:VOS:*:*)-	# From Paul.Green@stratus.com.-	echo "$UNAME_MACHINE"-stratus-vos-	exit ;;-    *:VOS:*:*)-	# From Paul.Green@stratus.com.-	echo hppa1.1-stratus-vos-	exit ;;-    mc68*:A/UX:*:*)-	echo m68k-apple-aux"$UNAME_RELEASE"-	exit ;;-    news*:NEWS-OS:6*:*)-	echo mips-sony-newsos6-	exit ;;-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)-	if [ -d /usr/nec ]; then-		echo mips-nec-sysv"$UNAME_RELEASE"-	else-		echo mips-unknown-sysv"$UNAME_RELEASE"-	fi-	exit ;;-    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.-	echo powerpc-be-beos-	exit ;;-    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.-	echo powerpc-apple-beos-	exit ;;-    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.-	echo i586-pc-beos-	exit ;;-    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.-	echo i586-pc-haiku-	exit ;;-    x86_64:Haiku:*:*)-	echo x86_64-unknown-haiku-	exit ;;-    SX-4:SUPER-UX:*:*)-	echo sx4-nec-superux"$UNAME_RELEASE"-	exit ;;-    SX-5:SUPER-UX:*:*)-	echo sx5-nec-superux"$UNAME_RELEASE"-	exit ;;-    SX-6:SUPER-UX:*:*)-	echo sx6-nec-superux"$UNAME_RELEASE"-	exit ;;-    SX-7:SUPER-UX:*:*)-	echo sx7-nec-superux"$UNAME_RELEASE"-	exit ;;-    SX-8:SUPER-UX:*:*)-	echo sx8-nec-superux"$UNAME_RELEASE"-	exit ;;-    SX-8R:SUPER-UX:*:*)-	echo sx8r-nec-superux"$UNAME_RELEASE"-	exit ;;-    SX-ACE:SUPER-UX:*:*)-	echo sxace-nec-superux"$UNAME_RELEASE"-	exit ;;-    Power*:Rhapsody:*:*)-	echo powerpc-apple-rhapsody"$UNAME_RELEASE"-	exit ;;-    *:Rhapsody:*:*)-	echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"-	exit ;;-    *:Darwin:*:*)-	UNAME_PROCESSOR=`uname -p`-	case $UNAME_PROCESSOR in-	    unknown) UNAME_PROCESSOR=powerpc ;;-	esac-	if command -v xcode-select > /dev/null 2> /dev/null && \-		! xcode-select --print-path > /dev/null 2> /dev/null ; then-	    # Avoid executing cc if there is no toolchain installed as-	    # cc will be a stub that puts up a graphical alert-	    # prompting the user to install developer tools.-	    CC_FOR_BUILD=no_compiler_found-	else-	    set_cc_for_build-	fi-	if [ "$CC_FOR_BUILD" != no_compiler_found ]; then-	    if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \-		   (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \-		   grep IS_64BIT_ARCH >/dev/null-	    then-		case $UNAME_PROCESSOR in-		    i386) UNAME_PROCESSOR=x86_64 ;;-		    powerpc) UNAME_PROCESSOR=powerpc64 ;;-		esac-	    fi-	    # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc-	    if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \-		   (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \-		   grep IS_PPC >/dev/null-	    then-		UNAME_PROCESSOR=powerpc-	    fi-	elif test "$UNAME_PROCESSOR" = i386 ; then-	    # uname -m returns i386 or x86_64-	    UNAME_PROCESSOR=$UNAME_MACHINE-	fi-	echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"-	exit ;;-    *:procnto*:*:* | *:QNX:[0123456789]*:*)-	UNAME_PROCESSOR=`uname -p`-	if test "$UNAME_PROCESSOR" = x86; then-		UNAME_PROCESSOR=i386-		UNAME_MACHINE=pc-	fi-	echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"-	exit ;;-    *:QNX:*:4*)-	echo i386-pc-qnx-	exit ;;-    NEO-*:NONSTOP_KERNEL:*:*)-	echo neo-tandem-nsk"$UNAME_RELEASE"-	exit ;;-    NSE-*:NONSTOP_KERNEL:*:*)-	echo nse-tandem-nsk"$UNAME_RELEASE"-	exit ;;-    NSR-*:NONSTOP_KERNEL:*:*)-	echo nsr-tandem-nsk"$UNAME_RELEASE"-	exit ;;-    NSV-*:NONSTOP_KERNEL:*:*)-	echo nsv-tandem-nsk"$UNAME_RELEASE"-	exit ;;-    NSX-*:NONSTOP_KERNEL:*:*)-	echo nsx-tandem-nsk"$UNAME_RELEASE"-	exit ;;-    *:NonStop-UX:*:*)-	echo mips-compaq-nonstopux-	exit ;;-    BS2000:POSIX*:*:*)-	echo bs2000-siemens-sysv-	exit ;;-    DS/*:UNIX_System_V:*:*)-	echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"-	exit ;;-    *:Plan9:*:*)-	# "uname -m" is not consistent, so use $cputype instead. 386-	# is converted to i386 for consistency with other x86-	# operating systems.-	# shellcheck disable=SC2154-	if test "$cputype" = 386; then-	    UNAME_MACHINE=i386-	else-	    UNAME_MACHINE="$cputype"-	fi-	echo "$UNAME_MACHINE"-unknown-plan9-	exit ;;-    *:TOPS-10:*:*)-	echo pdp10-unknown-tops10-	exit ;;-    *:TENEX:*:*)-	echo pdp10-unknown-tenex-	exit ;;-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)-	echo pdp10-dec-tops20-	exit ;;-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)-	echo pdp10-xkl-tops20-	exit ;;-    *:TOPS-20:*:*)-	echo pdp10-unknown-tops20-	exit ;;-    *:ITS:*:*)-	echo pdp10-unknown-its-	exit ;;-    SEI:*:*:SEIUX)-	echo mips-sei-seiux"$UNAME_RELEASE"-	exit ;;-    *:DragonFly:*:*)-	echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"-	exit ;;-    *:*VMS:*:*)-	UNAME_MACHINE=`(uname -p) 2>/dev/null`-	case "$UNAME_MACHINE" in-	    A*) echo alpha-dec-vms ; exit ;;-	    I*) echo ia64-dec-vms ; exit ;;-	    V*) echo vax-dec-vms ; exit ;;-	esac ;;-    *:XENIX:*:SysV)-	echo i386-pc-xenix-	exit ;;-    i*86:skyos:*:*)-	echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"-	exit ;;-    i*86:rdos:*:*)-	echo "$UNAME_MACHINE"-pc-rdos-	exit ;;-    i*86:AROS:*:*)-	echo "$UNAME_MACHINE"-pc-aros-	exit ;;-    x86_64:VMkernel:*:*)-	echo "$UNAME_MACHINE"-unknown-esx-	exit ;;-    amd64:Isilon\ OneFS:*:*)-	echo x86_64-unknown-onefs-	exit ;;-    *:Unleashed:*:*)-	echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"-	exit ;;-esac--# No uname command or uname output not recognized.-set_cc_for_build-cat > "$dummy.c" <<EOF-#ifdef _SEQUENT_-#include <sys/types.h>-#include <sys/utsname.h>-#endif-#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)-#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)-#include <signal.h>-#if defined(_SIZE_T_) || defined(SIGLOST)-#include <sys/utsname.h>-#endif-#endif-#endif-main ()-{-#if defined (sony)-#if defined (MIPSEB)-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,-     I don't know....  */-  printf ("mips-sony-bsd\n"); exit (0);-#else-#include <sys/param.h>-  printf ("m68k-sony-newsos%s\n",-#ifdef NEWSOS4-  "4"-#else-  ""-#endif-  ); exit (0);-#endif-#endif--#if defined (NeXT)-#if !defined (__ARCHITECTURE__)-#define __ARCHITECTURE__ "m68k"-#endif-  int version;-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;-  if (version < 4)-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);-  else-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);-  exit (0);-#endif--#if defined (MULTIMAX) || defined (n16)-#if defined (UMAXV)-  printf ("ns32k-encore-sysv\n"); exit (0);-#else-#if defined (CMU)-  printf ("ns32k-encore-mach\n"); exit (0);-#else-  printf ("ns32k-encore-bsd\n"); exit (0);-#endif-#endif-#endif--#if defined (__386BSD__)-  printf ("i386-pc-bsd\n"); exit (0);-#endif--#if defined (sequent)-#if defined (i386)-  printf ("i386-sequent-dynix\n"); exit (0);-#endif-#if defined (ns32000)-  printf ("ns32k-sequent-dynix\n"); exit (0);-#endif-#endif--#if defined (_SEQUENT_)-  struct utsname un;--  uname(&un);-  if (strncmp(un.version, "V2", 2) == 0) {-    printf ("i386-sequent-ptx2\n"); exit (0);-  }-  if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */-    printf ("i386-sequent-ptx1\n"); exit (0);-  }-  printf ("i386-sequent-ptx\n"); exit (0);-#endif--#if defined (vax)-#if !defined (ultrix)-#include <sys/param.h>-#if defined (BSD)-#if BSD == 43-  printf ("vax-dec-bsd4.3\n"); exit (0);-#else-#if BSD == 199006-  printf ("vax-dec-bsd4.3reno\n"); exit (0);-#else-  printf ("vax-dec-bsd\n"); exit (0);-#endif-#endif-#else-  printf ("vax-dec-bsd\n"); exit (0);-#endif-#else-#if defined(_SIZE_T_) || defined(SIGLOST)-  struct utsname un;-  uname (&un);-  printf ("vax-dec-ultrix%s\n", un.release); exit (0);-#else-  printf ("vax-dec-ultrix\n"); exit (0);-#endif-#endif-#endif-#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)-#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)-#if defined(_SIZE_T_) || defined(SIGLOST)-  struct utsname *un;-  uname (&un);-  printf ("mips-dec-ultrix%s\n", un.release); exit (0);-#else-  printf ("mips-dec-ultrix\n"); exit (0);-#endif-#endif-#endif--#if defined (alliant) && defined (i860)-  printf ("i860-alliant-bsd\n"); exit (0);-#endif--  exit (1);-}-EOF--$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` &&-	{ echo "$SYSTEM_NAME"; exit; }--# Apollos put the system type in the environment.-test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }--echo "$0: unable to guess system type" >&2--case "$UNAME_MACHINE:$UNAME_SYSTEM" in-    mips:Linux | mips64:Linux)-	# If we got here on MIPS GNU/Linux, output extra information.-	cat >&2 <<EOF--NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize-the system type. Please install a C compiler and try again.-EOF-	;;-esac--cat >&2 <<EOF--This script (version $timestamp), has failed to recognize the-operating system you are using. If your script is old, overwrite *all*-copies of config.guess and config.sub with the latest versions from:--  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess-and-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub--If $0 has already been updated, send the following data and any-information you think might be pertinent to config-patches@gnu.org to-provide the necessary information to handle your system.--config.guess timestamp = $timestamp--uname -m = `(uname -m) 2>/dev/null || echo unknown`-uname -r = `(uname -r) 2>/dev/null || echo unknown`-uname -s = `(uname -s) 2>/dev/null || echo unknown`-uname -v = `(uname -v) 2>/dev/null || echo unknown`--/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`--hostinfo               = `(hostinfo) 2>/dev/null`-/bin/universe          = `(/bin/universe) 2>/dev/null`-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`-/bin/arch              = `(/bin/arch) 2>/dev/null`-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`--UNAME_MACHINE = "$UNAME_MACHINE"-UNAME_RELEASE = "$UNAME_RELEASE"-UNAME_SYSTEM  = "$UNAME_SYSTEM"-UNAME_VERSION = "$UNAME_VERSION"-EOF--exit 1--# Local variables:-# eval: (add-hook 'before-save-hook 'time-stamp)-# time-stamp-start: "timestamp='"-# time-stamp-format: "%:y-%02m-%02d"-# time-stamp-end: "'"-# End:
− config.mk.in
@@ -1,17 +0,0 @@-# NB: This file lives in the top-level integer-gmp folder, and not in-# the gmp subfolder, because of #14972, where we MUST NOT create a-# folder named 'gmp' in dist/build/--ifeq "$(HaveLibGmp)" ""- HaveLibGmp = @HaveLibGmp@-endif--ifeq "$(HaveFrameworkGMP)" ""- HaveFrameworkGMP = @HaveFrameworkGMP@-endif--GMP_FORCE_INTREE = @GMP_FORCE_INTREE@-GMP_PREFER_FRAMEWORK = @GMP_PREFER_FRAMEWORK@-GMP_INCLUDE_DIRS = @GMP_INCLUDE_DIRS@-GMP_LIB_DIRS = @GMP_LIB_DIRS@-
− config.sub
@@ -1,1793 +0,0 @@-#! /bin/sh-# Configuration validation subroutine script.-#   Copyright 1992-2019 Free Software Foundation, Inc.--timestamp='2019-06-30'--# This file is free software; you can redistribute it and/or modify it-# under the terms of the GNU General Public License as published by-# the Free Software Foundation; either version 3 of the License, or-# (at your option) any later version.-#-# This program is distributed in the hope that it will be useful, but-# WITHOUT ANY WARRANTY; without even the implied warranty of-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU-# General Public License for more details.-#-# You should have received a copy of the GNU General Public License-# along with this program; if not, see <https://www.gnu.org/licenses/>.-#-# As a special exception to the GNU General Public License, if you-# distribute this file as part of a program that contains a-# configuration script generated by Autoconf, you may include it under-# the same distribution terms that you use for the rest of that-# program.  This Exception is an additional permission under section 7-# of the GNU General Public License, version 3 ("GPLv3").---# Please send patches to <config-patches@gnu.org>.-#-# Configuration subroutine to validate and canonicalize a configuration type.-# Supply the specified configuration type as an argument.-# If it is invalid, we print an error message on stderr and exit with code 1.-# Otherwise, we print the canonical config type on stdout and succeed.--# You can get the latest version of this script from:-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub--# This file is supposed to be the same for all GNU packages-# and recognize all the CPU types, system types and aliases-# that are meaningful with *any* GNU software.-# Each package is responsible for reporting which valid configurations-# it does not support.  The user should be able to distinguish-# a failure to support a valid configuration from a meaningless-# configuration.--# The goal of this file is to map all the various variations of a given-# machine specification into a single specification in the form:-#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM-# or in some cases, the newer four-part form:-#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM-# It is wrong to echo any other type of specification.--me=`echo "$0" | sed -e 's,.*/,,'`--usage="\-Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS--Canonicalize a configuration name.--Options:-  -h, --help         print this help, then exit-  -t, --time-stamp   print date of last modification, then exit-  -v, --version      print version number, then exit--Report bugs and patches to <config-patches@gnu.org>."--version="\-GNU config.sub ($timestamp)--Copyright 1992-2019 Free Software Foundation, Inc.--This is free software; see the source for copying conditions.  There is NO-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."--help="-Try \`$me --help' for more information."--# Parse command line-while test $# -gt 0 ; do-  case $1 in-    --time-stamp | --time* | -t )-       echo "$timestamp" ; exit ;;-    --version | -v )-       echo "$version" ; exit ;;-    --help | --h* | -h )-       echo "$usage"; exit ;;-    -- )     # Stop option processing-       shift; break ;;-    - )	# Use stdin as input.-       break ;;-    -* )-       echo "$me: invalid option $1$help" >&2-       exit 1 ;;--    *local*)-       # First pass through any local machine types.-       echo "$1"-       exit ;;--    * )-       break ;;-  esac-done--case $# in- 0) echo "$me: missing argument$help" >&2-    exit 1;;- 1) ;;- *) echo "$me: too many arguments$help" >&2-    exit 1;;-esac--# Split fields of configuration type-# shellcheck disable=SC2162-IFS="-" read field1 field2 field3 field4 <<EOF-$1-EOF--# Separate into logical components for further validation-case $1 in-	*-*-*-*-*)-		echo Invalid configuration \`"$1"\': more than four components >&2-		exit 1-		;;-	*-*-*-*)-		basic_machine=$field1-$field2-		os=$field3-$field4-		;;-	*-*-*)-		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two-		# parts-		maybe_os=$field2-$field3-		case $maybe_os in-			nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \-			| linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \-			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \-			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \-			| storm-chaos* | os2-emx* | rtmk-nova*)-				basic_machine=$field1-				os=$maybe_os-				;;-			android-linux)-				basic_machine=$field1-unknown-				os=linux-android-				;;-			*)-				basic_machine=$field1-$field2-				os=$field3-				;;-		esac-		;;-	*-*)-		# A lone config we happen to match not fitting any pattern-		case $field1-$field2 in-			decstation-3100)-				basic_machine=mips-dec-				os=-				;;-			*-*)-				# Second component is usually, but not always the OS-				case $field2 in-					# Prevent following clause from handling this valid os-					sun*os*)-						basic_machine=$field1-						os=$field2-						;;-					# Manufacturers-					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \-					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \-					| unicom* | ibm* | next | hp | isi* | apollo | altos* \-					| convergent* | ncr* | news | 32* | 3600* | 3100* \-					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \-					| ultra | tti* | harris | dolphin | highlevel | gould \-					| cbm | ns | masscomp | apple | axis | knuth | cray \-					| microblaze* | sim | cisco \-					| oki | wec | wrs | winbond)-						basic_machine=$field1-$field2-						os=-						;;-					*)-						basic_machine=$field1-						os=$field2-						;;-				esac-			;;-		esac-		;;-	*)-		# Convert single-component short-hands not valid as part of-		# multi-component configurations.-		case $field1 in-			386bsd)-				basic_machine=i386-pc-				os=bsd-				;;-			a29khif)-				basic_machine=a29k-amd-				os=udi-				;;-			adobe68k)-				basic_machine=m68010-adobe-				os=scout-				;;-			alliant)-				basic_machine=fx80-alliant-				os=-				;;-			altos | altos3068)-				basic_machine=m68k-altos-				os=-				;;-			am29k)-				basic_machine=a29k-none-				os=bsd-				;;-			amdahl)-				basic_machine=580-amdahl-				os=sysv-				;;-			amiga)-				basic_machine=m68k-unknown-				os=-				;;-			amigaos | amigados)-				basic_machine=m68k-unknown-				os=amigaos-				;;-			amigaunix | amix)-				basic_machine=m68k-unknown-				os=sysv4-				;;-			apollo68)-				basic_machine=m68k-apollo-				os=sysv-				;;-			apollo68bsd)-				basic_machine=m68k-apollo-				os=bsd-				;;-			aros)-				basic_machine=i386-pc-				os=aros-				;;-			aux)-				basic_machine=m68k-apple-				os=aux-				;;-			balance)-				basic_machine=ns32k-sequent-				os=dynix-				;;-			blackfin)-				basic_machine=bfin-unknown-				os=linux-				;;-			cegcc)-				basic_machine=arm-unknown-				os=cegcc-				;;-			convex-c1)-				basic_machine=c1-convex-				os=bsd-				;;-			convex-c2)-				basic_machine=c2-convex-				os=bsd-				;;-			convex-c32)-				basic_machine=c32-convex-				os=bsd-				;;-			convex-c34)-				basic_machine=c34-convex-				os=bsd-				;;-			convex-c38)-				basic_machine=c38-convex-				os=bsd-				;;-			cray)-				basic_machine=j90-cray-				os=unicos-				;;-			crds | unos)-				basic_machine=m68k-crds-				os=-				;;-			da30)-				basic_machine=m68k-da30-				os=-				;;-			decstation | pmax | pmin | dec3100 | decstatn)-				basic_machine=mips-dec-				os=-				;;-			delta88)-				basic_machine=m88k-motorola-				os=sysv3-				;;-			dicos)-				basic_machine=i686-pc-				os=dicos-				;;-			djgpp)-				basic_machine=i586-pc-				os=msdosdjgpp-				;;-			ebmon29k)-				basic_machine=a29k-amd-				os=ebmon-				;;-			es1800 | OSE68k | ose68k | ose | OSE)-				basic_machine=m68k-ericsson-				os=ose-				;;-			gmicro)-				basic_machine=tron-gmicro-				os=sysv-				;;-			go32)-				basic_machine=i386-pc-				os=go32-				;;-			h8300hms)-				basic_machine=h8300-hitachi-				os=hms-				;;-			h8300xray)-				basic_machine=h8300-hitachi-				os=xray-				;;-			h8500hms)-				basic_machine=h8500-hitachi-				os=hms-				;;-			harris)-				basic_machine=m88k-harris-				os=sysv3-				;;-			hp300 | hp300hpux)-				basic_machine=m68k-hp-				os=hpux-				;;-			hp300bsd)-				basic_machine=m68k-hp-				os=bsd-				;;-			hppaosf)-				basic_machine=hppa1.1-hp-				os=osf-				;;-			hppro)-				basic_machine=hppa1.1-hp-				os=proelf-				;;-			i386mach)-				basic_machine=i386-mach-				os=mach-				;;-			isi68 | isi)-				basic_machine=m68k-isi-				os=sysv-				;;-			m68knommu)-				basic_machine=m68k-unknown-				os=linux-				;;-			magnum | m3230)-				basic_machine=mips-mips-				os=sysv-				;;-			merlin)-				basic_machine=ns32k-utek-				os=sysv-				;;-			mingw64)-				basic_machine=x86_64-pc-				os=mingw64-				;;-			mingw32)-				basic_machine=i686-pc-				os=mingw32-				;;-			mingw32ce)-				basic_machine=arm-unknown-				os=mingw32ce-				;;-			monitor)-				basic_machine=m68k-rom68k-				os=coff-				;;-			morphos)-				basic_machine=powerpc-unknown-				os=morphos-				;;-			moxiebox)-				basic_machine=moxie-unknown-				os=moxiebox-				;;-			msdos)-				basic_machine=i386-pc-				os=msdos-				;;-			msys)-				basic_machine=i686-pc-				os=msys-				;;-			mvs)-				basic_machine=i370-ibm-				os=mvs-				;;-			nacl)-				basic_machine=le32-unknown-				os=nacl-				;;-			ncr3000)-				basic_machine=i486-ncr-				os=sysv4-				;;-			netbsd386)-				basic_machine=i386-pc-				os=netbsd-				;;-			netwinder)-				basic_machine=armv4l-rebel-				os=linux-				;;-			news | news700 | news800 | news900)-				basic_machine=m68k-sony-				os=newsos-				;;-			news1000)-				basic_machine=m68030-sony-				os=newsos-				;;-			necv70)-				basic_machine=v70-nec-				os=sysv-				;;-			nh3000)-				basic_machine=m68k-harris-				os=cxux-				;;-			nh[45]000)-				basic_machine=m88k-harris-				os=cxux-				;;-			nindy960)-				basic_machine=i960-intel-				os=nindy-				;;-			mon960)-				basic_machine=i960-intel-				os=mon960-				;;-			nonstopux)-				basic_machine=mips-compaq-				os=nonstopux-				;;-			os400)-				basic_machine=powerpc-ibm-				os=os400-				;;-			OSE68000 | ose68000)-				basic_machine=m68000-ericsson-				os=ose-				;;-			os68k)-				basic_machine=m68k-none-				os=os68k-				;;-			paragon)-				basic_machine=i860-intel-				os=osf-				;;-			parisc)-				basic_machine=hppa-unknown-				os=linux-				;;-			pw32)-				basic_machine=i586-unknown-				os=pw32-				;;-			rdos | rdos64)-				basic_machine=x86_64-pc-				os=rdos-				;;-			rdos32)-				basic_machine=i386-pc-				os=rdos-				;;-			rom68k)-				basic_machine=m68k-rom68k-				os=coff-				;;-			sa29200)-				basic_machine=a29k-amd-				os=udi-				;;-			sei)-				basic_machine=mips-sei-				os=seiux-				;;-			sequent)-				basic_machine=i386-sequent-				os=-				;;-			sps7)-				basic_machine=m68k-bull-				os=sysv2-				;;-			st2000)-				basic_machine=m68k-tandem-				os=-				;;-			stratus)-				basic_machine=i860-stratus-				os=sysv4-				;;-			sun2)-				basic_machine=m68000-sun-				os=-				;;-			sun2os3)-				basic_machine=m68000-sun-				os=sunos3-				;;-			sun2os4)-				basic_machine=m68000-sun-				os=sunos4-				;;-			sun3)-				basic_machine=m68k-sun-				os=-				;;-			sun3os3)-				basic_machine=m68k-sun-				os=sunos3-				;;-			sun3os4)-				basic_machine=m68k-sun-				os=sunos4-				;;-			sun4)-				basic_machine=sparc-sun-				os=-				;;-			sun4os3)-				basic_machine=sparc-sun-				os=sunos3-				;;-			sun4os4)-				basic_machine=sparc-sun-				os=sunos4-				;;-			sun4sol2)-				basic_machine=sparc-sun-				os=solaris2-				;;-			sun386 | sun386i | roadrunner)-				basic_machine=i386-sun-				os=-				;;-			sv1)-				basic_machine=sv1-cray-				os=unicos-				;;-			symmetry)-				basic_machine=i386-sequent-				os=dynix-				;;-			t3e)-				basic_machine=alphaev5-cray-				os=unicos-				;;-			t90)-				basic_machine=t90-cray-				os=unicos-				;;-			toad1)-				basic_machine=pdp10-xkl-				os=tops20-				;;-			tpf)-				basic_machine=s390x-ibm-				os=tpf-				;;-			udi29k)-				basic_machine=a29k-amd-				os=udi-				;;-			ultra3)-				basic_machine=a29k-nyu-				os=sym1-				;;-			v810 | necv810)-				basic_machine=v810-nec-				os=none-				;;-			vaxv)-				basic_machine=vax-dec-				os=sysv-				;;-			vms)-				basic_machine=vax-dec-				os=vms-				;;-			vsta)-				basic_machine=i386-pc-				os=vsta-				;;-			vxworks960)-				basic_machine=i960-wrs-				os=vxworks-				;;-			vxworks68)-				basic_machine=m68k-wrs-				os=vxworks-				;;-			vxworks29k)-				basic_machine=a29k-wrs-				os=vxworks-				;;-			xbox)-				basic_machine=i686-pc-				os=mingw32-				;;-			ymp)-				basic_machine=ymp-cray-				os=unicos-				;;-			*)-				basic_machine=$1-				os=-				;;-		esac-		;;-esac--# Decode 1-component or ad-hoc basic machines-case $basic_machine in-	# Here we handle the default manufacturer of certain CPU types.  It is in-	# some cases the only manufacturer, in others, it is the most popular.-	w89k)-		cpu=hppa1.1-		vendor=winbond-		;;-	op50n)-		cpu=hppa1.1-		vendor=oki-		;;-	op60c)-		cpu=hppa1.1-		vendor=oki-		;;-	ibm*)-		cpu=i370-		vendor=ibm-		;;-	orion105)-		cpu=clipper-		vendor=highlevel-		;;-	mac | mpw | mac-mpw)-		cpu=m68k-		vendor=apple-		;;-	pmac | pmac-mpw)-		cpu=powerpc-		vendor=apple-		;;--	# Recognize the various machine names and aliases which stand-	# for a CPU type and a company and sometimes even an OS.-	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)-		cpu=m68000-		vendor=att-		;;-	3b*)-		cpu=we32k-		vendor=att-		;;-	bluegene*)-		cpu=powerpc-		vendor=ibm-		os=cnk-		;;-	decsystem10* | dec10*)-		cpu=pdp10-		vendor=dec-		os=tops10-		;;-	decsystem20* | dec20*)-		cpu=pdp10-		vendor=dec-		os=tops20-		;;-	delta | 3300 | motorola-3300 | motorola-delta \-	      | 3300-motorola | delta-motorola)-		cpu=m68k-		vendor=motorola-		;;-	dpx2*)-		cpu=m68k-		vendor=bull-		os=sysv3-		;;-	encore | umax | mmax)-		cpu=ns32k-		vendor=encore-		;;-	elxsi)-		cpu=elxsi-		vendor=elxsi-		os=${os:-bsd}-		;;-	fx2800)-		cpu=i860-		vendor=alliant-		;;-	genix)-		cpu=ns32k-		vendor=ns-		;;-	h3050r* | hiux*)-		cpu=hppa1.1-		vendor=hitachi-		os=hiuxwe2-		;;-	hp3k9[0-9][0-9] | hp9[0-9][0-9])-		cpu=hppa1.0-		vendor=hp-		;;-	hp9k2[0-9][0-9] | hp9k31[0-9])-		cpu=m68000-		vendor=hp-		;;-	hp9k3[2-9][0-9])-		cpu=m68k-		vendor=hp-		;;-	hp9k6[0-9][0-9] | hp6[0-9][0-9])-		cpu=hppa1.0-		vendor=hp-		;;-	hp9k7[0-79][0-9] | hp7[0-79][0-9])-		cpu=hppa1.1-		vendor=hp-		;;-	hp9k78[0-9] | hp78[0-9])-		# FIXME: really hppa2.0-hp-		cpu=hppa1.1-		vendor=hp-		;;-	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)-		# FIXME: really hppa2.0-hp-		cpu=hppa1.1-		vendor=hp-		;;-	hp9k8[0-9][13679] | hp8[0-9][13679])-		cpu=hppa1.1-		vendor=hp-		;;-	hp9k8[0-9][0-9] | hp8[0-9][0-9])-		cpu=hppa1.0-		vendor=hp-		;;-	i*86v32)-		cpu=`echo "$1" | sed -e 's/86.*/86/'`-		vendor=pc-		os=sysv32-		;;-	i*86v4*)-		cpu=`echo "$1" | sed -e 's/86.*/86/'`-		vendor=pc-		os=sysv4-		;;-	i*86v)-		cpu=`echo "$1" | sed -e 's/86.*/86/'`-		vendor=pc-		os=sysv-		;;-	i*86sol2)-		cpu=`echo "$1" | sed -e 's/86.*/86/'`-		vendor=pc-		os=solaris2-		;;-	j90 | j90-cray)-		cpu=j90-		vendor=cray-		os=${os:-unicos}-		;;-	iris | iris4d)-		cpu=mips-		vendor=sgi-		case $os in-		    irix*)-			;;-		    *)-			os=irix4-			;;-		esac-		;;-	miniframe)-		cpu=m68000-		vendor=convergent-		;;-	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)-		cpu=m68k-		vendor=atari-		os=mint-		;;-	news-3600 | risc-news)-		cpu=mips-		vendor=sony-		os=newsos-		;;-	next | m*-next)-		cpu=m68k-		vendor=next-		case $os in-		    openstep*)-		        ;;-		    nextstep*)-			;;-		    ns2*)-		      os=nextstep2-			;;-		    *)-		      os=nextstep3-			;;-		esac-		;;-	np1)-		cpu=np1-		vendor=gould-		;;-	op50n-* | op60c-*)-		cpu=hppa1.1-		vendor=oki-		os=proelf-		;;-	pa-hitachi)-		cpu=hppa1.1-		vendor=hitachi-		os=hiuxwe2-		;;-	pbd)-		cpu=sparc-		vendor=tti-		;;-	pbb)-		cpu=m68k-		vendor=tti-		;;-	pc532)-		cpu=ns32k-		vendor=pc532-		;;-	pn)-		cpu=pn-		vendor=gould-		;;-	power)-		cpu=power-		vendor=ibm-		;;-	ps2)-		cpu=i386-		vendor=ibm-		;;-	rm[46]00)-		cpu=mips-		vendor=siemens-		;;-	rtpc | rtpc-*)-		cpu=romp-		vendor=ibm-		;;-	sde)-		cpu=mipsisa32-		vendor=sde-		os=${os:-elf}-		;;-	simso-wrs)-		cpu=sparclite-		vendor=wrs-		os=vxworks-		;;-	tower | tower-32)-		cpu=m68k-		vendor=ncr-		;;-	vpp*|vx|vx-*)-		cpu=f301-		vendor=fujitsu-		;;-	w65)-		cpu=w65-		vendor=wdc-		;;-	w89k-*)-		cpu=hppa1.1-		vendor=winbond-		os=proelf-		;;-	none)-		cpu=none-		vendor=none-		;;-	leon|leon[3-9])-		cpu=sparc-		vendor=$basic_machine-		;;-	leon-*|leon[3-9]-*)-		cpu=sparc-		vendor=`echo "$basic_machine" | sed 's/-.*//'`-		;;--	*-*)-		# shellcheck disable=SC2162-		IFS="-" read cpu vendor <<EOF-$basic_machine-EOF-		;;-	# We use `pc' rather than `unknown'-	# because (1) that's what they normally are, and-	# (2) the word "unknown" tends to confuse beginning users.-	i*86 | x86_64)-		cpu=$basic_machine-		vendor=pc-		;;-	# These rules are duplicated from below for sake of the special case above;-	# i.e. things that normalized to x86 arches should also default to "pc"-	pc98)-		cpu=i386-		vendor=pc-		;;-	x64 | amd64)-		cpu=x86_64-		vendor=pc-		;;-	# Recognize the basic CPU types without company name.-	*)-		cpu=$basic_machine-		vendor=unknown-		;;-esac--unset -v basic_machine--# Decode basic machines in the full and proper CPU-Company form.-case $cpu-$vendor in-	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in-	# some cases the only manufacturer, in others, it is the most popular.-	craynv-unknown)-		vendor=cray-		os=${os:-unicosmp}-		;;-	c90-unknown | c90-cray)-		vendor=cray-		os=${os:-unicos}-		;;-	fx80-unknown)-		vendor=alliant-		;;-	romp-unknown)-		vendor=ibm-		;;-	mmix-unknown)-		vendor=knuth-		;;-	microblaze-unknown | microblazeel-unknown)-		vendor=xilinx-		;;-	rs6000-unknown)-		vendor=ibm-		;;-	vax-unknown)-		vendor=dec-		;;-	pdp11-unknown)-		vendor=dec-		;;-	we32k-unknown)-		vendor=att-		;;-	cydra-unknown)-		vendor=cydrome-		;;-	i370-ibm*)-		vendor=ibm-		;;-	orion-unknown)-		vendor=highlevel-		;;-	xps-unknown | xps100-unknown)-		cpu=xps100-		vendor=honeywell-		;;--	# Here we normalize CPU types with a missing or matching vendor-	dpx20-unknown | dpx20-bull)-		cpu=rs6000-		vendor=bull-		os=${os:-bosx}-		;;--	# Here we normalize CPU types irrespective of the vendor-	amd64-*)-		cpu=x86_64-		;;-	blackfin-*)-		cpu=bfin-		os=linux-		;;-	c54x-*)-		cpu=tic54x-		;;-	c55x-*)-		cpu=tic55x-		;;-	c6x-*)-		cpu=tic6x-		;;-	e500v[12]-*)-		cpu=powerpc-		os=$os"spe"-		;;-	mips3*-*)-		cpu=mips64-		;;-	ms1-*)-		cpu=mt-		;;-	m68knommu-*)-		cpu=m68k-		os=linux-		;;-	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)-		cpu=s12z-		;;-	openrisc-*)-		cpu=or32-		;;-	parisc-*)-		cpu=hppa-		os=linux-		;;-	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)-		cpu=i586-		;;-	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)-		cpu=i686-		;;-	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)-		cpu=i686-		;;-	pentium4-*)-		cpu=i786-		;;-	pc98-*)-		cpu=i386-		;;-	ppc-* | ppcbe-*)-		cpu=powerpc-		;;-	ppcle-* | powerpclittle-*)-		cpu=powerpcle-		;;-	ppc64-*)-		cpu=powerpc64-		;;-	ppc64le-* | powerpc64little-*)-		cpu=powerpc64le-		;;-	sb1-*)-		cpu=mipsisa64sb1-		;;-	sb1el-*)-		cpu=mipsisa64sb1el-		;;-	sh5e[lb]-*)-		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`-		;;-	spur-*)-		cpu=spur-		;;-	strongarm-* | thumb-*)-		cpu=arm-		;;-	tx39-*)-		cpu=mipstx39-		;;-	tx39el-*)-		cpu=mipstx39el-		;;-	x64-*)-		cpu=x86_64-		;;-	xscale-* | xscalee[bl]-*)-		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`-		;;--	# Recognize the canonical CPU Types that limit and/or modify the-	# company names they are paired with.-	cr16-*)-		os=${os:-elf}-		;;-	crisv32-* | etraxfs*-*)-		cpu=crisv32-		vendor=axis-		;;-	cris-* | etrax*-*)-		cpu=cris-		vendor=axis-		;;-	crx-*)-		os=${os:-elf}-		;;-	neo-tandem)-		cpu=neo-		vendor=tandem-		;;-	nse-tandem)-		cpu=nse-		vendor=tandem-		;;-	nsr-tandem)-		cpu=nsr-		vendor=tandem-		;;-	nsv-tandem)-		cpu=nsv-		vendor=tandem-		;;-	nsx-tandem)-		cpu=nsx-		vendor=tandem-		;;-	s390-*)-		cpu=s390-		vendor=ibm-		;;-	s390x-*)-		cpu=s390x-		vendor=ibm-		;;-	tile*-*)-		os=${os:-linux-gnu}-		;;--	*)-		# Recognize the canonical CPU types that are allowed with any-		# company name.-		case $cpu in-			1750a | 580 \-			| a29k \-			| aarch64 | aarch64_be \-			| abacus \-			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \-			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \-			| alphapca5[67] | alpha64pca5[67] \-			| am33_2.0 \-			| amdgcn \-			| arc | arceb \-			| arm  | arm[lb]e | arme[lb] | armv* \-			| avr | avr32 \-			| asmjs \-			| ba \-			| be32 | be64 \-			| bfin | bpf | bs2000 \-			| c[123]* | c30 | [cjt]90 | c4x \-			| c8051 | clipper | craynv | csky | cydra \-			| d10v | d30v | dlx | dsp16xx \-			| e2k | elxsi | epiphany \-			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \-			| h8300 | h8500 \-			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \-			| hexagon \-			| i370 | i*86 | i860 | i960 | ia16 | ia64 \-			| ip2k | iq2000 \-			| k1om \-			| le32 | le64 \-			| lm32 \-			| m32c | m32r | m32rle \-			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \-			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \-			| m88110 | m88k | maxq | mb | mcore | mep | metag \-			| microblaze | microblazeel \-			| mips | mipsbe | mipseb | mipsel | mipsle \-			| mips16 \-			| mips64 | mips64eb | mips64el \-			| mips64octeon | mips64octeonel \-			| mips64orion | mips64orionel \-			| mips64r5900 | mips64r5900el \-			| mips64vr | mips64vrel \-			| mips64vr4100 | mips64vr4100el \-			| mips64vr4300 | mips64vr4300el \-			| mips64vr5000 | mips64vr5000el \-			| mips64vr5900 | mips64vr5900el \-			| mipsisa32 | mipsisa32el \-			| mipsisa32r2 | mipsisa32r2el \-			| mipsisa32r6 | mipsisa32r6el \-			| mipsisa64 | mipsisa64el \-			| mipsisa64r2 | mipsisa64r2el \-			| mipsisa64r6 | mipsisa64r6el \-			| mipsisa64sb1 | mipsisa64sb1el \-			| mipsisa64sr71k | mipsisa64sr71kel \-			| mipsr5900 | mipsr5900el \-			| mipstx39 | mipstx39el \-			| mmix \-			| mn10200 | mn10300 \-			| moxie \-			| mt \-			| msp430 \-			| nds32 | nds32le | nds32be \-			| nfp \-			| nios | nios2 | nios2eb | nios2el \-			| none | np1 | ns16k | ns32k | nvptx \-			| open8 \-			| or1k* \-			| or32 \-			| orion \-			| picochip \-			| pdp10 | pdp11 | pj | pjl | pn | power \-			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \-			| pru \-			| pyramid \-			| riscv | riscv32 | riscv64 \-			| rl78 | romp | rs6000 | rx \-			| score \-			| sh | shl \-			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \-			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \-			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \-			| sparclite \-			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \-			| spu \-			| tahoe \-			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \-			| tron \-			| ubicom32 \-			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \-			| vax \-			| visium \-			| w65 \-			| wasm32 | wasm64 \-			| we32k \-			| x86 | x86_64 | xc16x | xgate | xps100 \-			| xstormy16 | xtensa* \-			| ymp \-			| z8k | z80)-				;;--			*)-				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2-				exit 1-				;;-		esac-		;;-esac--# Here we canonicalize certain aliases for manufacturers.-case $vendor in-	digital*)-		vendor=dec-		;;-	commodore*)-		vendor=cbm-		;;-	*)-		;;-esac--# Decode manufacturer-specific aliases for certain operating systems.--if [ x$os != x ]-then-case $os in-	# First match some system type aliases that might get confused-	# with valid system types.-	# solaris* is a basic system type, with this one exception.-	auroraux)-		os=auroraux-		;;-	bluegene*)-		os=cnk-		;;-	solaris1 | solaris1.*)-		os=`echo $os | sed -e 's|solaris1|sunos4|'`-		;;-	solaris)-		os=solaris2-		;;-	unixware*)-		os=sysv4.2uw-		;;-	gnu/linux*)-		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`-		;;-	# es1800 is here to avoid being matched by es* (a different OS)-	es1800*)-		os=ose-		;;-	# Some version numbers need modification-	chorusos*)-		os=chorusos-		;;-	isc)-		os=isc2.2-		;;-	sco6)-		os=sco5v6-		;;-	sco5)-		os=sco3.2v5-		;;-	sco4)-		os=sco3.2v4-		;;-	sco3.2.[4-9]*)-		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`-		;;-	sco3.2v[4-9]* | sco5v6*)-		# Don't forget version if it is 3.2v4 or newer.-		;;-	scout)-		# Don't match below-		;;-	sco*)-		os=sco3.2v2-		;;-	psos*)-		os=psos-		;;-	# Now accept the basic system types.-	# The portable systems comes first.-	# Each alternative MUST end in a * to match a version number.-	# sysv* is not here because it comes later, after sysvr4.-	gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \-	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\-	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \-	     | sym* | kopensolaris* | plan9* \-	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \-	     | aos* | aros* | cloudabi* | sortix* | twizzler* \-	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \-	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \-	     | knetbsd* | mirbsd* | netbsd* \-	     | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \-	     | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \-	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \-	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \-	     | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \-	     | chorusrdb* | cegcc* | glidix* \-	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \-	     | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \-	     | linux-newlib* | linux-musl* | linux-uclibc* \-	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \-	     | interix* | uwin* | mks* | rhapsody* | darwin* \-	     | openstep* | oskit* | conix* | pw32* | nonstopux* \-	     | storm-chaos* | tops10* | tenex* | tops20* | its* \-	     | os2* | vos* | palmos* | uclinux* | nucleus* \-	     | morphos* | superux* | rtmk* | windiss* \-	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \-	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \-	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \-	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \-	     | nsk* | powerunix)-	# Remember, each alternative MUST END IN *, to match a version number.-		;;-	qnx*)-		case $cpu in-		    x86 | i*86)-			;;-		    *)-			os=nto-$os-			;;-		esac-		;;-	hiux*)-		os=hiuxwe2-		;;-	nto-qnx*)-		;;-	nto*)-		os=`echo $os | sed -e 's|nto|nto-qnx|'`-		;;-	sim | xray | os68k* | v88r* \-	    | windows* | osx | abug | netware* | os9* \-	    | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)-		;;-	linux-dietlibc)-		os=linux-dietlibc-		;;-	linux*)-		os=`echo $os | sed -e 's|linux|linux-gnu|'`-		;;-	lynx*178)-		os=lynxos178-		;;-	lynx*5)-		os=lynxos5-		;;-	lynx*)-		os=lynxos-		;;-	mac*)-		os=`echo "$os" | sed -e 's|mac|macos|'`-		;;-	opened*)-		os=openedition-		;;-	os400*)-		os=os400-		;;-	sunos5*)-		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`-		;;-	sunos6*)-		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`-		;;-	wince*)-		os=wince-		;;-	utek*)-		os=bsd-		;;-	dynix*)-		os=bsd-		;;-	acis*)-		os=aos-		;;-	atheos*)-		os=atheos-		;;-	syllable*)-		os=syllable-		;;-	386bsd)-		os=bsd-		;;-	ctix* | uts*)-		os=sysv-		;;-	nova*)-		os=rtmk-nova-		;;-	ns2)-		os=nextstep2-		;;-	# Preserve the version number of sinix5.-	sinix5.*)-		os=`echo $os | sed -e 's|sinix|sysv|'`-		;;-	sinix*)-		os=sysv4-		;;-	tpf*)-		os=tpf-		;;-	triton*)-		os=sysv3-		;;-	oss*)-		os=sysv3-		;;-	svr4*)-		os=sysv4-		;;-	svr3)-		os=sysv3-		;;-	sysvr4)-		os=sysv4-		;;-	# This must come after sysvr4.-	sysv*)-		;;-	ose*)-		os=ose-		;;-	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)-		os=mint-		;;-	zvmoe)-		os=zvmoe-		;;-	dicos*)-		os=dicos-		;;-	pikeos*)-		# Until real need of OS specific support for-		# particular features comes up, bare metal-		# configurations are quite functional.-		case $cpu in-		    arm*)-			os=eabi-			;;-		    *)-			os=elf-			;;-		esac-		;;-	nacl*)-		;;-	ios)-		;;-	none)-		;;-	*-eabi)-		;;-	*)-		echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2-		exit 1-		;;-esac-else--# Here we handle the default operating systems that come with various machines.-# The value should be what the vendor currently ships out the door with their-# machine or put another way, the most popular os provided with the machine.--# Note that if you're going to try to match "-MANUFACTURER" here (say,-# "-sun"), then you have to tell the case statement up towards the top-# that MANUFACTURER isn't an operating system.  Otherwise, code above-# will signal an error saying that MANUFACTURER isn't an operating-# system, and we'll never get to this point.--case $cpu-$vendor in-	score-*)-		os=elf-		;;-	spu-*)-		os=elf-		;;-	*-acorn)-		os=riscix1.2-		;;-	arm*-rebel)-		os=linux-		;;-	arm*-semi)-		os=aout-		;;-	c4x-* | tic4x-*)-		os=coff-		;;-	c8051-*)-		os=elf-		;;-	clipper-intergraph)-		os=clix-		;;-	hexagon-*)-		os=elf-		;;-	tic54x-*)-		os=coff-		;;-	tic55x-*)-		os=coff-		;;-	tic6x-*)-		os=coff-		;;-	# This must come before the *-dec entry.-	pdp10-*)-		os=tops20-		;;-	pdp11-*)-		os=none-		;;-	*-dec | vax-*)-		os=ultrix4.2-		;;-	m68*-apollo)-		os=domain-		;;-	i386-sun)-		os=sunos4.0.2-		;;-	m68000-sun)-		os=sunos3-		;;-	m68*-cisco)-		os=aout-		;;-	mep-*)-		os=elf-		;;-	mips*-cisco)-		os=elf-		;;-	mips*-*)-		os=elf-		;;-	or32-*)-		os=coff-		;;-	*-tti)	# must be before sparc entry or we get the wrong os.-		os=sysv3-		;;-	sparc-* | *-sun)-		os=sunos4.1.1-		;;-	pru-*)-		os=elf-		;;-	*-be)-		os=beos-		;;-	*-ibm)-		os=aix-		;;-	*-knuth)-		os=mmixware-		;;-	*-wec)-		os=proelf-		;;-	*-winbond)-		os=proelf-		;;-	*-oki)-		os=proelf-		;;-	*-hp)-		os=hpux-		;;-	*-hitachi)-		os=hiux-		;;-	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)-		os=sysv-		;;-	*-cbm)-		os=amigaos-		;;-	*-dg)-		os=dgux-		;;-	*-dolphin)-		os=sysv3-		;;-	m68k-ccur)-		os=rtu-		;;-	m88k-omron*)-		os=luna-		;;-	*-next)-		os=nextstep-		;;-	*-sequent)-		os=ptx-		;;-	*-crds)-		os=unos-		;;-	*-ns)-		os=genix-		;;-	i370-*)-		os=mvs-		;;-	*-gould)-		os=sysv-		;;-	*-highlevel)-		os=bsd-		;;-	*-encore)-		os=bsd-		;;-	*-sgi)-		os=irix-		;;-	*-siemens)-		os=sysv4-		;;-	*-masscomp)-		os=rtu-		;;-	f30[01]-fujitsu | f700-fujitsu)-		os=uxpv-		;;-	*-rom68k)-		os=coff-		;;-	*-*bug)-		os=coff-		;;-	*-apple)-		os=macos-		;;-	*-atari*)-		os=mint-		;;-	*-wrs)-		os=vxworks-		;;-	*)-		os=none-		;;-esac-fi--# Here we handle the case where we know the os, and the CPU type, but not the-# manufacturer.  We pick the logical manufacturer.-case $vendor in-	unknown)-		case $os in-			riscix*)-				vendor=acorn-				;;-			sunos*)-				vendor=sun-				;;-			cnk*|-aix*)-				vendor=ibm-				;;-			beos*)-				vendor=be-				;;-			hpux*)-				vendor=hp-				;;-			mpeix*)-				vendor=hp-				;;-			hiux*)-				vendor=hitachi-				;;-			unos*)-				vendor=crds-				;;-			dgux*)-				vendor=dg-				;;-			luna*)-				vendor=omron-				;;-			genix*)-				vendor=ns-				;;-			clix*)-				vendor=intergraph-				;;-			mvs* | opened*)-				vendor=ibm-				;;-			os400*)-				vendor=ibm-				;;-			ptx*)-				vendor=sequent-				;;-			tpf*)-				vendor=ibm-				;;-			vxsim* | vxworks* | windiss*)-				vendor=wrs-				;;-			aux*)-				vendor=apple-				;;-			hms*)-				vendor=hitachi-				;;-			mpw* | macos*)-				vendor=apple-				;;-			*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)-				vendor=atari-				;;-			vos*)-				vendor=stratus-				;;-		esac-		;;-esac--echo "$cpu-$vendor-$os"-exit--# Local variables:-# eval: (add-hook 'before-save-hook 'time-stamp)-# time-stamp-start: "timestamp='"-# time-stamp-format: "%:y-%02m-%02d"-# time-stamp-end: "'"-# End:
− configure
@@ -1,5261 +0,0 @@-#! /bin/sh-# Guess values for system-dependent variables and create Makefiles.-# Generated by GNU Autoconf 2.69 for Haskell integer (GMP) 1.0.-#-# Report bugs to <libraries@haskell.org>.-#-#-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.-#-#-# This configure script is free software; the Free Software Foundation-# gives unlimited permission to copy, distribute and modify it.-## -------------------- ##-## M4sh Initialization. ##-## -------------------- ##--# Be more Bourne compatible-DUALCASE=1; export DUALCASE # for MKS sh-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :-  emulate sh-  NULLCMD=:-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which-  # is contrary to our usage.  Disable this feature.-  alias -g '${1+"$@"}'='"$@"'-  setopt NO_GLOB_SUBST-else-  case `(set -o) 2>/dev/null` in #(-  *posix*) :-    set -o posix ;; #(-  *) :-     ;;-esac-fi---as_nl='-'-export as_nl-# Printing a long string crashes Solaris 7 /usr/bin/printf.-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo-# Prefer a ksh shell builtin over an external printf program on Solaris,-# but without wasting forks for bash or zsh.-if test -z "$BASH_VERSION$ZSH_VERSION" \-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then-  as_echo='print -r --'-  as_echo_n='print -rn --'-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then-  as_echo='printf %s\n'-  as_echo_n='printf %s'-else-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'-    as_echo_n='/usr/ucb/echo -n'-  else-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'-    as_echo_n_body='eval-      arg=$1;-      case $arg in #(-      *"$as_nl"*)-	expr "X$arg" : "X\\(.*\\)$as_nl";-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;-      esac;-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"-    '-    export as_echo_n_body-    as_echo_n='sh -c $as_echo_n_body as_echo'-  fi-  export as_echo_body-  as_echo='sh -c $as_echo_body as_echo'-fi--# The user is always right.-if test "${PATH_SEPARATOR+set}" != set; then-  PATH_SEPARATOR=:-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||-      PATH_SEPARATOR=';'-  }-fi---# IFS-# We need space, tab and new line, in precisely that order.  Quoting is-# there to prevent editors from complaining about space-tab.-# (If _AS_PATH_WALK were called with IFS unset, it would disable word-# splitting by setting IFS to empty value.)-IFS=" ""	$as_nl"--# Find who we are.  Look in the path if we contain no directory separator.-as_myself=-case $0 in #((-  *[\\/]* ) as_myself=$0 ;;-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break-  done-IFS=$as_save_IFS--     ;;-esac-# We did not find ourselves, most probably we were run as `sh COMMAND'-# in which case we are not to be found in the path.-if test "x$as_myself" = x; then-  as_myself=$0-fi-if test ! -f "$as_myself"; then-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2-  exit 1-fi--# Unset variables that we do not need and which cause bugs (e.g. in-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"-# suppresses any "Segmentation fault" message there.  '((' could-# trigger a bug in pdksh 5.2.14.-for as_var in BASH_ENV ENV MAIL MAILPATH-do eval test x\${$as_var+set} = xset \-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :-done-PS1='$ '-PS2='> '-PS4='+ '--# NLS nuisances.-LC_ALL=C-export LC_ALL-LANGUAGE=C-export LANGUAGE--# CDPATH.-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH--# Use a proper internal environment variable to ensure we don't fall-  # into an infinite loop, continuously re-executing ourselves.-  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then-    _as_can_reexec=no; export _as_can_reexec;-    # We cannot yet assume a decent shell, so we have to provide a-# neutralization value for shells without unset; and this also-# works around shells that cannot unset nonexistent variables.-# Preserve -v and -x to the replacement shell.-BASH_ENV=/dev/null-ENV=/dev/null-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV-case $- in # ((((-  *v*x* | *x*v* ) as_opts=-vx ;;-  *v* ) as_opts=-v ;;-  *x* ) as_opts=-x ;;-  * ) as_opts= ;;-esac-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}-# Admittedly, this is quite paranoid, since all the known shells bail-# out after a failed `exec'.-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2-as_fn_exit 255-  fi-  # We don't want this to propagate to other subprocesses.-          { _as_can_reexec=; unset _as_can_reexec;}-if test "x$CONFIG_SHELL" = x; then-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :-  emulate sh-  NULLCMD=:-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which-  # is contrary to our usage.  Disable this feature.-  alias -g '\${1+\"\$@\"}'='\"\$@\"'-  setopt NO_GLOB_SUBST-else-  case \`(set -o) 2>/dev/null\` in #(-  *posix*) :-    set -o posix ;; #(-  *) :-     ;;-esac-fi-"-  as_required="as_fn_return () { (exit \$1); }-as_fn_success () { as_fn_return 0; }-as_fn_failure () { as_fn_return 1; }-as_fn_ret_success () { return 0; }-as_fn_ret_failure () { return 1; }--exitcode=0-as_fn_success || { exitcode=1; echo as_fn_success failed.; }-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :--else-  exitcode=1; echo positional parameters were not saved.-fi-test x\$exitcode = x0 || exit 1-test -x / || exit 1"-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1-test \$(( 1 + 1 )) = 2 || exit 1"-  if (eval "$as_required") 2>/dev/null; then :-  as_have_required=yes-else-  as_have_required=no-fi-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :--else-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-as_found=false-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-  as_found=:-  case $as_dir in #(-	 /*)-	   for as_base in sh bash ksh sh5; do-	     # Try only shells that exist, to save several forks.-	     as_shell=$as_dir/$as_base-	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&-		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :-  CONFIG_SHELL=$as_shell as_have_required=yes-		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :-  break 2-fi-fi-	   done;;-       esac-  as_found=false-done-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&-	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :-  CONFIG_SHELL=$SHELL as_have_required=yes-fi; }-IFS=$as_save_IFS---      if test "x$CONFIG_SHELL" != x; then :-  export CONFIG_SHELL-             # We cannot yet assume a decent shell, so we have to provide a-# neutralization value for shells without unset; and this also-# works around shells that cannot unset nonexistent variables.-# Preserve -v and -x to the replacement shell.-BASH_ENV=/dev/null-ENV=/dev/null-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV-case $- in # ((((-  *v*x* | *x*v* ) as_opts=-vx ;;-  *v* ) as_opts=-v ;;-  *x* ) as_opts=-x ;;-  * ) as_opts= ;;-esac-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}-# Admittedly, this is quite paranoid, since all the known shells bail-# out after a failed `exec'.-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2-exit 255-fi--    if test x$as_have_required = xno; then :-  $as_echo "$0: This script requires a shell more modern than all"-  $as_echo "$0: the shells that I found on your system."-  if test x${ZSH_VERSION+set} = xset ; then-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."-  else-    $as_echo "$0: Please tell bug-autoconf@gnu.org and-$0: libraries@haskell.org about your system, including any-$0: error possibly output before this message. Then install-$0: a modern shell, or manually run the script under such a-$0: shell if you do have one."-  fi-  exit 1-fi-fi-fi-SHELL=${CONFIG_SHELL-/bin/sh}-export SHELL-# Unset more variables known to interfere with behavior of common tools.-CLICOLOR_FORCE= GREP_OPTIONS=-unset CLICOLOR_FORCE GREP_OPTIONS--## --------------------- ##-## M4sh Shell Functions. ##-## --------------------- ##-# as_fn_unset VAR-# ----------------# Portably unset VAR.-as_fn_unset ()-{-  { eval $1=; unset $1;}-}-as_unset=as_fn_unset--# as_fn_set_status STATUS-# ------------------------# Set $? to STATUS, without forking.-as_fn_set_status ()-{-  return $1-} # as_fn_set_status--# as_fn_exit STATUS-# ------------------# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.-as_fn_exit ()-{-  set +e-  as_fn_set_status $1-  exit $1-} # as_fn_exit--# as_fn_mkdir_p-# --------------# Create "$as_dir" as a directory, including parents if necessary.-as_fn_mkdir_p ()-{--  case $as_dir in #(-  -*) as_dir=./$as_dir;;-  esac-  test -d "$as_dir" || eval $as_mkdir_p || {-    as_dirs=-    while :; do-      case $as_dir in #(-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(-      *) as_qdir=$as_dir;;-      esac-      as_dirs="'$as_qdir' $as_dirs"-      as_dir=`$as_dirname -- "$as_dir" ||-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \-	 X"$as_dir" : 'X\(//\)[^/]' \| \-	 X"$as_dir" : 'X\(//\)$' \| \-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||-$as_echo X"$as_dir" |-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)[^/].*/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\).*/{-	    s//\1/-	    q-	  }-	  s/.*/./; q'`-      test -d "$as_dir" && break-    done-    test -z "$as_dirs" || eval "mkdir $as_dirs"-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"---} # as_fn_mkdir_p--# as_fn_executable_p FILE-# ------------------------# Test if FILE is an executable regular file.-as_fn_executable_p ()-{-  test -f "$1" && test -x "$1"-} # as_fn_executable_p-# as_fn_append VAR VALUE-# -----------------------# Append the text in VALUE to the end of the definition contained in VAR. Take-# advantage of any shell optimizations that allow amortized linear growth over-# repeated appends, instead of the typical quadratic growth present in naive-# implementations.-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :-  eval 'as_fn_append ()-  {-    eval $1+=\$2-  }'-else-  as_fn_append ()-  {-    eval $1=\$$1\$2-  }-fi # as_fn_append--# as_fn_arith ARG...-# -------------------# Perform arithmetic evaluation on the ARGs, and store the result in the-# global $as_val. Take advantage of shells that can avoid forks. The arguments-# must be portable across $(()) and expr.-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :-  eval 'as_fn_arith ()-  {-    as_val=$(( $* ))-  }'-else-  as_fn_arith ()-  {-    as_val=`expr "$@" || test $? -eq 1`-  }-fi # as_fn_arith---# as_fn_error STATUS ERROR [LINENO LOG_FD]-# -----------------------------------------# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the-# script with STATUS, using 1 if that was 0.-as_fn_error ()-{-  as_status=$1; test $as_status -eq 0 && as_status=1-  if test "$4"; then-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4-  fi-  $as_echo "$as_me: error: $2" >&2-  as_fn_exit $as_status-} # as_fn_error--if expr a : '\(a\)' >/dev/null 2>&1 &&-   test "X`expr 00001 : '.*\(...\)'`" = X001; then-  as_expr=expr-else-  as_expr=false-fi--if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then-  as_basename=basename-else-  as_basename=false-fi--if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then-  as_dirname=dirname-else-  as_dirname=false-fi--as_me=`$as_basename -- "$0" ||-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \-	 X"$0" : 'X\(//\)$' \| \-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||-$as_echo X/"$0" |-    sed '/^.*\/\([^/][^/]*\)\/*$/{-	    s//\1/-	    q-	  }-	  /^X\/\(\/\/\)$/{-	    s//\1/-	    q-	  }-	  /^X\/\(\/\).*/{-	    s//\1/-	    q-	  }-	  s/.*/./; q'`--# Avoid depending upon Character Ranges.-as_cr_letters='abcdefghijklmnopqrstuvwxyz'-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'-as_cr_Letters=$as_cr_letters$as_cr_LETTERS-as_cr_digits='0123456789'-as_cr_alnum=$as_cr_Letters$as_cr_digits---  as_lineno_1=$LINENO as_lineno_1a=$LINENO-  as_lineno_2=$LINENO as_lineno_2a=$LINENO-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)-  sed -n '-    p-    /[$]LINENO/=-  ' <$as_myself |-    sed '-      s/[$]LINENO.*/&-/-      t lineno-      b-      :lineno-      N-      :loop-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/-      t loop-      s/-\n.*//-    ' >$as_me.lineno &&-  chmod +x "$as_me.lineno" ||-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }--  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have-  # already done that, so ensure we don't try to do so again and fall-  # in an infinite loop.  This has already happened in practice.-  _as_can_reexec=no; export _as_can_reexec-  # Don't try to exec as it changes $[0], causing all sort of problems-  # (the dirname of $[0] is not the place where we might find the-  # original and so on.  Autoconf is especially sensitive to this).-  . "./$as_me.lineno"-  # Exit status is that of the last command.-  exit-}--ECHO_C= ECHO_N= ECHO_T=-case `echo -n x` in #(((((--n*)-  case `echo 'xy\c'` in-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.-  xy)  ECHO_C='\c';;-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null-       ECHO_T='	';;-  esac;;-*)-  ECHO_N='-n';;-esac--rm -f conf$$ conf$$.exe conf$$.file-if test -d conf$$.dir; then-  rm -f conf$$.dir/conf$$.file-else-  rm -f conf$$.dir-  mkdir conf$$.dir 2>/dev/null-fi-if (echo >conf$$.file) 2>/dev/null; then-  if ln -s conf$$.file conf$$ 2>/dev/null; then-    as_ln_s='ln -s'-    # ... but there are two gotchas:-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.-    # In both cases, we have to default to `cp -pR'.-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||-      as_ln_s='cp -pR'-  elif ln conf$$.file conf$$ 2>/dev/null; then-    as_ln_s=ln-  else-    as_ln_s='cp -pR'-  fi-else-  as_ln_s='cp -pR'-fi-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file-rmdir conf$$.dir 2>/dev/null--if mkdir -p . 2>/dev/null; then-  as_mkdir_p='mkdir -p "$as_dir"'-else-  test -d ./-p && rmdir ./-p-  as_mkdir_p=false-fi--as_test_x='test -x'-as_executable_p=as_fn_executable_p--# Sed expression to map a string onto a valid CPP name.-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"--# Sed expression to map a string onto a valid variable name.-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"---test -n "$DJDIR" || exec 7<&0 </dev/null-exec 6>&1--# Name of the host.-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,-# so uname gets run too.-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`--#-# Initializations.-#-ac_default_prefix=/usr/local-ac_clean_files=-ac_config_libobj_dir=.-LIBOBJS=-cross_compiling=no-subdirs=-MFLAGS=-MAKEFLAGS=--# Identity of this package.-PACKAGE_NAME='Haskell integer (GMP)'-PACKAGE_TARNAME='integer'-PACKAGE_VERSION='1.0'-PACKAGE_STRING='Haskell integer (GMP) 1.0'-PACKAGE_BUGREPORT='libraries@haskell.org'-PACKAGE_URL=''--ac_unique_file="cbits/wrappers.c"-# Factoring default headers for most tests.-ac_includes_default="\-#include <stdio.h>-#ifdef HAVE_SYS_TYPES_H-# include <sys/types.h>-#endif-#ifdef HAVE_SYS_STAT_H-# include <sys/stat.h>-#endif-#ifdef STDC_HEADERS-# include <stdlib.h>-# include <stddef.h>-#else-# ifdef HAVE_STDLIB_H-#  include <stdlib.h>-# endif-#endif-#ifdef HAVE_STRING_H-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H-#  include <memory.h>-# endif-# include <string.h>-#endif-#ifdef HAVE_STRINGS_H-# include <strings.h>-#endif-#ifdef HAVE_INTTYPES_H-# include <inttypes.h>-#endif-#ifdef HAVE_STDINT_H-# include <stdint.h>-#endif-#ifdef HAVE_UNISTD_H-# include <unistd.h>-#endif"--ac_subst_vars='LTLIBOBJS-LIBOBJS-GhcGmpVerPl-GhcGmpVerMi-GhcGmpVerMj-UseIntreeGmp-HaveSecurePowm-HaveFrameworkGMP-HaveLibGmp-GMP_FRAMEWORK-GMP_LIB_DIRS-GMP_LIBS-GMP_INCLUDE_DIRS-EGREP-GREP-CPP-OBJEXT-EXEEXT-ac_ct_CC-CPPFLAGS-LDFLAGS-CFLAGS-CC-target_os-target_vendor-target_cpu-target-host_os-host_vendor-host_cpu-host-build_os-build_vendor-build_cpu-build-target_alias-host_alias-build_alias-LIBS-ECHO_T-ECHO_N-ECHO_C-DEFS-mandir-localedir-libdir-psdir-pdfdir-dvidir-htmldir-infodir-docdir-oldincludedir-includedir-localstatedir-sharedstatedir-sysconfdir-datadir-datarootdir-libexecdir-sbindir-bindir-program_transform_name-prefix-exec_prefix-PACKAGE_URL-PACKAGE_BUGREPORT-PACKAGE_STRING-PACKAGE_VERSION-PACKAGE_TARNAME-PACKAGE_NAME-PATH_SEPARATOR-SHELL'-ac_subst_files=''-ac_user_opts='-enable_option_checking-with_gmp_includes-with_gmp_libraries-with_gmp_framework_preferred-with_intree_gmp-'-      ac_precious_vars='build_alias-host_alias-target_alias-CC-CFLAGS-LDFLAGS-LIBS-CPPFLAGS-CPP'---# Initialize some variables set by options.-ac_init_help=-ac_init_version=false-ac_unrecognized_opts=-ac_unrecognized_sep=-# The variables have the same names as the options, with-# dashes changed to underlines.-cache_file=/dev/null-exec_prefix=NONE-no_create=-no_recursion=-prefix=NONE-program_prefix=NONE-program_suffix=NONE-program_transform_name=s,x,x,-silent=-site=-srcdir=-verbose=-x_includes=NONE-x_libraries=NONE--# Installation directory options.-# These are left unexpanded so users can "make install exec_prefix=/foo"-# and all the variables that are supposed to be based on exec_prefix-# by default will actually change.-# Use braces instead of parens because sh, perl, etc. also accept them.-# (The list follows the same order as the GNU Coding Standards.)-bindir='${exec_prefix}/bin'-sbindir='${exec_prefix}/sbin'-libexecdir='${exec_prefix}/libexec'-datarootdir='${prefix}/share'-datadir='${datarootdir}'-sysconfdir='${prefix}/etc'-sharedstatedir='${prefix}/com'-localstatedir='${prefix}/var'-includedir='${prefix}/include'-oldincludedir='/usr/include'-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'-infodir='${datarootdir}/info'-htmldir='${docdir}'-dvidir='${docdir}'-pdfdir='${docdir}'-psdir='${docdir}'-libdir='${exec_prefix}/lib'-localedir='${datarootdir}/locale'-mandir='${datarootdir}/man'--ac_prev=-ac_dashdash=-for ac_option-do-  # If the previous option needs an argument, assign it.-  if test -n "$ac_prev"; then-    eval $ac_prev=\$ac_option-    ac_prev=-    continue-  fi--  case $ac_option in-  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;-  *=)   ac_optarg= ;;-  *)    ac_optarg=yes ;;-  esac--  # Accept the important Cygnus configure options, so we can diagnose typos.--  case $ac_dashdash$ac_option in-  --)-    ac_dashdash=yes ;;--  -bindir | --bindir | --bindi | --bind | --bin | --bi)-    ac_prev=bindir ;;-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)-    bindir=$ac_optarg ;;--  -build | --build | --buil | --bui | --bu)-    ac_prev=build_alias ;;-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)-    build_alias=$ac_optarg ;;--  -cache-file | --cache-file | --cache-fil | --cache-fi \-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)-    ac_prev=cache_file ;;-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)-    cache_file=$ac_optarg ;;--  --config-cache | -C)-    cache_file=config.cache ;;--  -datadir | --datadir | --datadi | --datad)-    ac_prev=datadir ;;-  -datadir=* | --datadir=* | --datadi=* | --datad=*)-    datadir=$ac_optarg ;;--  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \-  | --dataroo | --dataro | --datar)-    ac_prev=datarootdir ;;-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)-    datarootdir=$ac_optarg ;;--  -disable-* | --disable-*)-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`-    # Reject names that are not valid shell variable names.-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&-      as_fn_error $? "invalid feature name: $ac_useropt"-    ac_useropt_orig=$ac_useropt-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`-    case $ac_user_opts in-      *"-"enable_$ac_useropt"-"*) ;;-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"-	 ac_unrecognized_sep=', ';;-    esac-    eval enable_$ac_useropt=no ;;--  -docdir | --docdir | --docdi | --doc | --do)-    ac_prev=docdir ;;-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)-    docdir=$ac_optarg ;;--  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)-    ac_prev=dvidir ;;-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)-    dvidir=$ac_optarg ;;--  -enable-* | --enable-*)-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`-    # Reject names that are not valid shell variable names.-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&-      as_fn_error $? "invalid feature name: $ac_useropt"-    ac_useropt_orig=$ac_useropt-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`-    case $ac_user_opts in-      *"-"enable_$ac_useropt"-"*) ;;-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"-	 ac_unrecognized_sep=', ';;-    esac-    eval enable_$ac_useropt=\$ac_optarg ;;--  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \-  | --exec | --exe | --ex)-    ac_prev=exec_prefix ;;-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \-  | --exec=* | --exe=* | --ex=*)-    exec_prefix=$ac_optarg ;;--  -gas | --gas | --ga | --g)-    # Obsolete; use --with-gas.-    with_gas=yes ;;--  -help | --help | --hel | --he | -h)-    ac_init_help=long ;;-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)-    ac_init_help=recursive ;;-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)-    ac_init_help=short ;;--  -host | --host | --hos | --ho)-    ac_prev=host_alias ;;-  -host=* | --host=* | --hos=* | --ho=*)-    host_alias=$ac_optarg ;;--  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)-    ac_prev=htmldir ;;-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \-  | --ht=*)-    htmldir=$ac_optarg ;;--  -includedir | --includedir | --includedi | --included | --include \-  | --includ | --inclu | --incl | --inc)-    ac_prev=includedir ;;-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \-  | --includ=* | --inclu=* | --incl=* | --inc=*)-    includedir=$ac_optarg ;;--  -infodir | --infodir | --infodi | --infod | --info | --inf)-    ac_prev=infodir ;;-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)-    infodir=$ac_optarg ;;--  -libdir | --libdir | --libdi | --libd)-    ac_prev=libdir ;;-  -libdir=* | --libdir=* | --libdi=* | --libd=*)-    libdir=$ac_optarg ;;--  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \-  | --libexe | --libex | --libe)-    ac_prev=libexecdir ;;-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \-  | --libexe=* | --libex=* | --libe=*)-    libexecdir=$ac_optarg ;;--  -localedir | --localedir | --localedi | --localed | --locale)-    ac_prev=localedir ;;-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)-    localedir=$ac_optarg ;;--  -localstatedir | --localstatedir | --localstatedi | --localstated \-  | --localstate | --localstat | --localsta | --localst | --locals)-    ac_prev=localstatedir ;;-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)-    localstatedir=$ac_optarg ;;--  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)-    ac_prev=mandir ;;-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)-    mandir=$ac_optarg ;;--  -nfp | --nfp | --nf)-    # Obsolete; use --without-fp.-    with_fp=no ;;--  -no-create | --no-create | --no-creat | --no-crea | --no-cre \-  | --no-cr | --no-c | -n)-    no_create=yes ;;--  -no-recursion | --no-recursion | --no-recursio | --no-recursi \-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)-    no_recursion=yes ;;--  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \-  | --oldin | --oldi | --old | --ol | --o)-    ac_prev=oldincludedir ;;-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)-    oldincludedir=$ac_optarg ;;--  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)-    ac_prev=prefix ;;-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)-    prefix=$ac_optarg ;;--  -program-prefix | --program-prefix | --program-prefi | --program-pref \-  | --program-pre | --program-pr | --program-p)-    ac_prev=program_prefix ;;-  -program-prefix=* | --program-prefix=* | --program-prefi=* \-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)-    program_prefix=$ac_optarg ;;--  -program-suffix | --program-suffix | --program-suffi | --program-suff \-  | --program-suf | --program-su | --program-s)-    ac_prev=program_suffix ;;-  -program-suffix=* | --program-suffix=* | --program-suffi=* \-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)-    program_suffix=$ac_optarg ;;--  -program-transform-name | --program-transform-name \-  | --program-transform-nam | --program-transform-na \-  | --program-transform-n | --program-transform- \-  | --program-transform | --program-transfor \-  | --program-transfo | --program-transf \-  | --program-trans | --program-tran \-  | --progr-tra | --program-tr | --program-t)-    ac_prev=program_transform_name ;;-  -program-transform-name=* | --program-transform-name=* \-  | --program-transform-nam=* | --program-transform-na=* \-  | --program-transform-n=* | --program-transform-=* \-  | --program-transform=* | --program-transfor=* \-  | --program-transfo=* | --program-transf=* \-  | --program-trans=* | --program-tran=* \-  | --progr-tra=* | --program-tr=* | --program-t=*)-    program_transform_name=$ac_optarg ;;--  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)-    ac_prev=pdfdir ;;-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)-    pdfdir=$ac_optarg ;;--  -psdir | --psdir | --psdi | --psd | --ps)-    ac_prev=psdir ;;-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)-    psdir=$ac_optarg ;;--  -q | -quiet | --quiet | --quie | --qui | --qu | --q \-  | -silent | --silent | --silen | --sile | --sil)-    silent=yes ;;--  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)-    ac_prev=sbindir ;;-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \-  | --sbi=* | --sb=*)-    sbindir=$ac_optarg ;;--  -sharedstatedir | --sharedstatedir | --sharedstatedi \-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \-  | --sharedst | --shareds | --shared | --share | --shar \-  | --sha | --sh)-    ac_prev=sharedstatedir ;;-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \-  | --sha=* | --sh=*)-    sharedstatedir=$ac_optarg ;;--  -site | --site | --sit)-    ac_prev=site ;;-  -site=* | --site=* | --sit=*)-    site=$ac_optarg ;;--  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)-    ac_prev=srcdir ;;-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)-    srcdir=$ac_optarg ;;--  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \-  | --syscon | --sysco | --sysc | --sys | --sy)-    ac_prev=sysconfdir ;;-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)-    sysconfdir=$ac_optarg ;;--  -target | --target | --targe | --targ | --tar | --ta | --t)-    ac_prev=target_alias ;;-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)-    target_alias=$ac_optarg ;;--  -v | -verbose | --verbose | --verbos | --verbo | --verb)-    verbose=yes ;;--  -version | --version | --versio | --versi | --vers | -V)-    ac_init_version=: ;;--  -with-* | --with-*)-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`-    # Reject names that are not valid shell variable names.-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&-      as_fn_error $? "invalid package name: $ac_useropt"-    ac_useropt_orig=$ac_useropt-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`-    case $ac_user_opts in-      *"-"with_$ac_useropt"-"*) ;;-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"-	 ac_unrecognized_sep=', ';;-    esac-    eval with_$ac_useropt=\$ac_optarg ;;--  -without-* | --without-*)-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`-    # Reject names that are not valid shell variable names.-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&-      as_fn_error $? "invalid package name: $ac_useropt"-    ac_useropt_orig=$ac_useropt-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`-    case $ac_user_opts in-      *"-"with_$ac_useropt"-"*) ;;-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"-	 ac_unrecognized_sep=', ';;-    esac-    eval with_$ac_useropt=no ;;--  --x)-    # Obsolete; use --with-x.-    with_x=yes ;;--  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \-  | --x-incl | --x-inc | --x-in | --x-i)-    ac_prev=x_includes ;;-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)-    x_includes=$ac_optarg ;;--  -x-libraries | --x-libraries | --x-librarie | --x-librari \-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)-    ac_prev=x_libraries ;;-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)-    x_libraries=$ac_optarg ;;--  -*) as_fn_error $? "unrecognized option: \`$ac_option'-Try \`$0 --help' for more information"-    ;;--  *=*)-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`-    # Reject names that are not valid shell variable names.-    case $ac_envvar in #(-      '' | [0-9]* | *[!_$as_cr_alnum]* )-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;-    esac-    eval $ac_envvar=\$ac_optarg-    export $ac_envvar ;;--  *)-    # FIXME: should be removed in autoconf 3.0.-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2-    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"-    ;;--  esac-done--if test -n "$ac_prev"; then-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`-  as_fn_error $? "missing argument to $ac_option"-fi--if test -n "$ac_unrecognized_opts"; then-  case $enable_option_checking in-    no) ;;-    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;-  esac-fi--# Check all directory arguments for consistency.-for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \-		datadir sysconfdir sharedstatedir localstatedir includedir \-		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \-		libdir localedir mandir-do-  eval ac_val=\$$ac_var-  # Remove trailing slashes.-  case $ac_val in-    */ )-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`-      eval $ac_var=\$ac_val;;-  esac-  # Be sure to have absolute directory names.-  case $ac_val in-    [\\/$]* | ?:[\\/]* )  continue;;-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;-  esac-  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"-done--# There might be people who depend on the old broken behavior: `$host'-# used to hold the argument of --host etc.-# FIXME: To remove some day.-build=$build_alias-host=$host_alias-target=$target_alias--# FIXME: To remove some day.-if test "x$host_alias" != x; then-  if test "x$build_alias" = x; then-    cross_compiling=maybe-  elif test "x$build_alias" != "x$host_alias"; then-    cross_compiling=yes-  fi-fi--ac_tool_prefix=-test -n "$host_alias" && ac_tool_prefix=$host_alias---test "$silent" = yes && exec 6>/dev/null---ac_pwd=`pwd` && test -n "$ac_pwd" &&-ac_ls_di=`ls -di .` &&-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||-  as_fn_error $? "working directory cannot be determined"-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||-  as_fn_error $? "pwd does not report name of working directory"---# Find the source files, if location was not specified.-if test -z "$srcdir"; then-  ac_srcdir_defaulted=yes-  # Try the directory containing this script, then the parent directory.-  ac_confdir=`$as_dirname -- "$as_myself" ||-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \-	 X"$as_myself" : 'X\(//\)[^/]' \| \-	 X"$as_myself" : 'X\(//\)$' \| \-	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||-$as_echo X"$as_myself" |-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)[^/].*/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\).*/{-	    s//\1/-	    q-	  }-	  s/.*/./; q'`-  srcdir=$ac_confdir-  if test ! -r "$srcdir/$ac_unique_file"; then-    srcdir=..-  fi-else-  ac_srcdir_defaulted=no-fi-if test ! -r "$srcdir/$ac_unique_file"; then-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."-  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"-fi-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"-ac_abs_confdir=`(-	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"-	pwd)`-# When building in place, set srcdir=.-if test "$ac_abs_confdir" = "$ac_pwd"; then-  srcdir=.-fi-# Remove unnecessary trailing slashes from srcdir.-# Double slashes in file names in object file debugging info-# mess up M-x gdb in Emacs.-case $srcdir in-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;-esac-for ac_var in $ac_precious_vars; do-  eval ac_env_${ac_var}_set=\${${ac_var}+set}-  eval ac_env_${ac_var}_value=\$${ac_var}-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}-  eval ac_cv_env_${ac_var}_value=\$${ac_var}-done--#-# Report the --help message.-#-if test "$ac_init_help" = "long"; then-  # Omit some internal or obsolete options to make the list less imposing.-  # This message is too long to be a string in the A/UX 3.1 sh.-  cat <<_ACEOF-\`configure' configures Haskell integer (GMP) 1.0 to adapt to many kinds of systems.--Usage: $0 [OPTION]... [VAR=VALUE]...--To assign environment variables (e.g., CC, CFLAGS...), specify them as-VAR=VALUE.  See below for descriptions of some of the useful variables.--Defaults for the options are specified in brackets.--Configuration:-  -h, --help              display this help and exit-      --help=short        display options specific to this package-      --help=recursive    display the short help of all the included packages-  -V, --version           display version information and exit-  -q, --quiet, --silent   do not print \`checking ...' messages-      --cache-file=FILE   cache test results in FILE [disabled]-  -C, --config-cache      alias for \`--cache-file=config.cache'-  -n, --no-create         do not create output files-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']--Installation directories:-  --prefix=PREFIX         install architecture-independent files in PREFIX-                          [$ac_default_prefix]-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX-                          [PREFIX]--By default, \`make install' will install all the files in-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify-an installation prefix other than \`$ac_default_prefix' using \`--prefix',-for instance \`--prefix=\$HOME'.--For better control, use the options below.--Fine tuning of the installation directories:-  --bindir=DIR            user executables [EPREFIX/bin]-  --sbindir=DIR           system admin executables [EPREFIX/sbin]-  --libexecdir=DIR        program executables [EPREFIX/libexec]-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]-  --libdir=DIR            object code libraries [EPREFIX/lib]-  --includedir=DIR        C header files [PREFIX/include]-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]-  --infodir=DIR           info documentation [DATAROOTDIR/info]-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]-  --mandir=DIR            man documentation [DATAROOTDIR/man]-  --docdir=DIR            documentation root [DATAROOTDIR/doc/integer]-  --htmldir=DIR           html documentation [DOCDIR]-  --dvidir=DIR            dvi documentation [DOCDIR]-  --pdfdir=DIR            pdf documentation [DOCDIR]-  --psdir=DIR             ps documentation [DOCDIR]-_ACEOF--  cat <<\_ACEOF--System types:-  --build=BUILD     configure for building on BUILD [guessed]-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]-  --target=TARGET   configure for building compilers for TARGET [HOST]-_ACEOF-fi--if test -n "$ac_init_help"; then-  case $ac_init_help in-     short | recursive ) echo "Configuration of Haskell integer (GMP) 1.0:";;-   esac-  cat <<\_ACEOF--Optional Packages:-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)-  --with-gmp-includes     directory containing gmp.h-  --with-gmp-libraries    directory containing gmp library-  --with-gmp-framework-preferred-                          on OSX, prefer the GMP framework to the gmp lib-  --with-intree-gmp       force using the in-tree GMP--Some influential environment variables:-  CC          C compiler command-  CFLAGS      C compiler flags-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a-              nonstandard directory <lib dir>-  LIBS        libraries to pass to the linker, e.g. -l<library>-  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if-              you have headers in a nonstandard directory <include dir>-  CPP         C preprocessor--Use these variables to override the choices made by `configure' or to help-it to find libraries and programs with nonstandard names/locations.--Report bugs to <libraries@haskell.org>.-_ACEOF-ac_status=$?-fi--if test "$ac_init_help" = "recursive"; then-  # If there are subdirs, report their specific --help.-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue-    test -d "$ac_dir" ||-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||-      continue-    ac_builddir=.--case "$ac_dir" in-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;-*)-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`-  # A ".." for each directory in $ac_dir_suffix.-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`-  case $ac_top_builddir_sub in-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;-  esac ;;-esac-ac_abs_top_builddir=$ac_pwd-ac_abs_builddir=$ac_pwd$ac_dir_suffix-# for backward compatibility:-ac_top_builddir=$ac_top_build_prefix--case $srcdir in-  .)  # We are building in place.-    ac_srcdir=.-    ac_top_srcdir=$ac_top_builddir_sub-    ac_abs_top_srcdir=$ac_pwd ;;-  [\\/]* | ?:[\\/]* )  # Absolute name.-    ac_srcdir=$srcdir$ac_dir_suffix;-    ac_top_srcdir=$srcdir-    ac_abs_top_srcdir=$srcdir ;;-  *) # Relative name.-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix-    ac_top_srcdir=$ac_top_build_prefix$srcdir-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;-esac-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix--    cd "$ac_dir" || { ac_status=$?; continue; }-    # Check for guested configure.-    if test -f "$ac_srcdir/configure.gnu"; then-      echo &&-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive-    elif test -f "$ac_srcdir/configure"; then-      echo &&-      $SHELL "$ac_srcdir/configure" --help=recursive-    else-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2-    fi || ac_status=$?-    cd "$ac_pwd" || { ac_status=$?; break; }-  done-fi--test -n "$ac_init_help" && exit $ac_status-if $ac_init_version; then-  cat <<\_ACEOF-Haskell integer (GMP) configure 1.0-generated by GNU Autoconf 2.69--Copyright (C) 2012 Free Software Foundation, Inc.-This configure script is free software; the Free Software Foundation-gives unlimited permission to copy, distribute and modify it.-_ACEOF-  exit-fi--## ------------------------ ##-## Autoconf initialization. ##-## ------------------------ ##--# ac_fn_c_try_compile LINENO-# ---------------------------# Try to compile conftest.$ac_ext, and return whether this succeeded.-ac_fn_c_try_compile ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  rm -f conftest.$ac_objext-  if { { ac_try="$ac_compile"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_compile") 2>conftest.err-  ac_status=$?-  if test -s conftest.err; then-    grep -v '^ *+' conftest.err >conftest.er1-    cat conftest.er1 >&5-    mv -f conftest.er1 conftest.err-  fi-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; } && {-	 test -z "$ac_c_werror_flag" ||-	 test ! -s conftest.err-       } && test -s conftest.$ac_objext; then :-  ac_retval=0-else-  $as_echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--	ac_retval=1-fi-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno-  as_fn_set_status $ac_retval--} # ac_fn_c_try_compile--# ac_fn_c_try_cpp LINENO-# -----------------------# Try to preprocess conftest.$ac_ext, and return whether this succeeded.-ac_fn_c_try_cpp ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  if { { ac_try="$ac_cpp conftest.$ac_ext"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err-  ac_status=$?-  if test -s conftest.err; then-    grep -v '^ *+' conftest.err >conftest.er1-    cat conftest.er1 >&5-    mv -f conftest.er1 conftest.err-  fi-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; } > conftest.i && {-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||-	 test ! -s conftest.err-       }; then :-  ac_retval=0-else-  $as_echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--    ac_retval=1-fi-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno-  as_fn_set_status $ac_retval--} # ac_fn_c_try_cpp--# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES-# --------------------------------------------------------# Tests whether HEADER exists, giving a warning if it cannot be compiled using-# the include files in INCLUDES and setting the cache variable VAR-# accordingly.-ac_fn_c_check_header_mongrel ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  if eval \${$3+:} false; then :-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5-$as_echo_n "checking for $2... " >&6; }-if eval \${$3+:} false; then :-  $as_echo_n "(cached) " >&6-fi-eval ac_res=\$$3-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5-$as_echo "$ac_res" >&6; }-else-  # Is the header compilable?-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5-$as_echo_n "checking $2 usability... " >&6; }-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$4-#include <$2>-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_header_compiler=yes-else-  ac_header_compiler=no-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5-$as_echo "$ac_header_compiler" >&6; }--# Is the header present?-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5-$as_echo_n "checking $2 presence... " >&6; }-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <$2>-_ACEOF-if ac_fn_c_try_cpp "$LINENO"; then :-  ac_header_preproc=yes-else-  ac_header_preproc=no-fi-rm -f conftest.err conftest.i conftest.$ac_ext-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5-$as_echo "$ac_header_preproc" >&6; }--# So?  What about this header?-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((-  yes:no: )-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}-    ;;-  no:yes:* )-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}-( $as_echo "## ------------------------------------ ##-## Report this to libraries@haskell.org ##-## ------------------------------------ ##"-     ) | sed "s/^/$as_me: WARNING:     /" >&2-    ;;-esac-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5-$as_echo_n "checking for $2... " >&6; }-if eval \${$3+:} false; then :-  $as_echo_n "(cached) " >&6-else-  eval "$3=\$ac_header_compiler"-fi-eval ac_res=\$$3-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5-$as_echo "$ac_res" >&6; }-fi-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno--} # ac_fn_c_check_header_mongrel--# ac_fn_c_try_run LINENO-# -----------------------# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes-# that executables *can* be run.-ac_fn_c_try_run ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  if { { ac_try="$ac_link"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_link") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'-  { { case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_try") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }; }; then :-  ac_retval=0-else-  $as_echo "$as_me: program exited with status $ac_status" >&5-       $as_echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--       ac_retval=$ac_status-fi-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno-  as_fn_set_status $ac_retval--} # ac_fn_c_try_run--# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES-# --------------------------------------------------------# Tests whether HEADER exists and can be compiled using the include files in-# INCLUDES, setting the cache variable VAR accordingly.-ac_fn_c_check_header_compile ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5-$as_echo_n "checking for $2... " >&6; }-if eval \${$3+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$4-#include <$2>-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  eval "$3=yes"-else-  eval "$3=no"-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-eval ac_res=\$$3-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5-$as_echo "$ac_res" >&6; }-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno--} # ac_fn_c_check_header_compile--# ac_fn_c_try_link LINENO-# ------------------------# Try to link conftest.$ac_ext, and return whether this succeeded.-ac_fn_c_try_link ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  rm -f conftest.$ac_objext conftest$ac_exeext-  if { { ac_try="$ac_link"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_link") 2>conftest.err-  ac_status=$?-  if test -s conftest.err; then-    grep -v '^ *+' conftest.err >conftest.er1-    cat conftest.er1 >&5-    mv -f conftest.er1 conftest.err-  fi-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; } && {-	 test -z "$ac_c_werror_flag" ||-	 test ! -s conftest.err-       } && test -s conftest$ac_exeext && {-	 test "$cross_compiling" = yes ||-	 test -x conftest$ac_exeext-       }; then :-  ac_retval=0-else-  $as_echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--	ac_retval=1-fi-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would-  # interfere with the next link command; also delete a directory that is-  # left behind by Apple's compiler.  We do this before executing the actions.-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno-  as_fn_set_status $ac_retval--} # ac_fn_c_try_link--# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES-# ---------------------------------------------# Tries to find the compile-time value of EXPR in a program that includes-# INCLUDES, setting VAR accordingly. Returns whether the value could be-# computed-ac_fn_c_compute_int ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  if test "$cross_compiling" = yes; then-    # Depending upon the size, compute the lo and hi bounds.-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$4-int-main ()-{-static int test_array [1 - 2 * !(($2) >= 0)];-test_array [0] = 0;-return test_array [0];--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_lo=0 ac_mid=0-  while :; do-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$4-int-main ()-{-static int test_array [1 - 2 * !(($2) <= $ac_mid)];-test_array [0] = 0;-return test_array [0];--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_hi=$ac_mid; break-else-  as_fn_arith $ac_mid + 1 && ac_lo=$as_val-			if test $ac_lo -le $ac_mid; then-			  ac_lo= ac_hi=-			  break-			fi-			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-  done-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$4-int-main ()-{-static int test_array [1 - 2 * !(($2) < 0)];-test_array [0] = 0;-return test_array [0];--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_hi=-1 ac_mid=-1-  while :; do-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$4-int-main ()-{-static int test_array [1 - 2 * !(($2) >= $ac_mid)];-test_array [0] = 0;-return test_array [0];--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_lo=$ac_mid; break-else-  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val-			if test $ac_mid -le $ac_hi; then-			  ac_lo= ac_hi=-			  break-			fi-			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-  done-else-  ac_lo= ac_hi=-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-# Binary search between lo and hi bounds.-while test "x$ac_lo" != "x$ac_hi"; do-  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$4-int-main ()-{-static int test_array [1 - 2 * !(($2) <= $ac_mid)];-test_array [0] = 0;-return test_array [0];--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_hi=$ac_mid-else-  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-done-case $ac_lo in #((-?*) eval "$3=\$ac_lo"; ac_retval=0 ;;-'') ac_retval=1 ;;-esac-  else-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$4-static long int longval () { return $2; }-static unsigned long int ulongval () { return $2; }-#include <stdio.h>-#include <stdlib.h>-int-main ()-{--  FILE *f = fopen ("conftest.val", "w");-  if (! f)-    return 1;-  if (($2) < 0)-    {-      long int i = longval ();-      if (i != ($2))-	return 1;-      fprintf (f, "%ld", i);-    }-  else-    {-      unsigned long int i = ulongval ();-      if (i != ($2))-	return 1;-      fprintf (f, "%lu", i);-    }-  /* Do not output a trailing newline, as this causes \r\n confusion-     on some platforms.  */-  return ferror (f) || fclose (f) != 0;--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_run "$LINENO"; then :-  echo >>conftest.val; read $3 <conftest.val; ac_retval=0-else-  ac_retval=1-fi-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \-  conftest.$ac_objext conftest.beam conftest.$ac_ext-rm -f conftest.val--  fi-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno-  as_fn_set_status $ac_retval--} # ac_fn_c_compute_int-cat >config.log <<_ACEOF-This file contains any messages produced by compilers while-running configure, to aid debugging if configure makes a mistake.--It was created by Haskell integer (GMP) $as_me 1.0, which was-generated by GNU Autoconf 2.69.  Invocation command line was--  $ $0 $@--_ACEOF-exec 5>>config.log-{-cat <<_ASUNAME-## --------- ##-## Platform. ##-## --------- ##--hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`-uname -m = `(uname -m) 2>/dev/null || echo unknown`-uname -r = `(uname -r) 2>/dev/null || echo unknown`-uname -s = `(uname -s) 2>/dev/null || echo unknown`-uname -v = `(uname -v) 2>/dev/null || echo unknown`--/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`--/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`--_ASUNAME--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    $as_echo "PATH: $as_dir"-  done-IFS=$as_save_IFS--} >&5--cat >&5 <<_ACEOF---## ----------- ##-## Core tests. ##-## ----------- ##--_ACEOF---# Keep a trace of the command line.-# Strip out --no-create and --no-recursion so they do not pile up.-# Strip out --silent because we don't want to record it for future runs.-# Also quote any args containing shell meta-characters.-# Make two passes to allow for proper duplicate-argument suppression.-ac_configure_args=-ac_configure_args0=-ac_configure_args1=-ac_must_keep_next=false-for ac_pass in 1 2-do-  for ac_arg-  do-    case $ac_arg in-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \-    | -silent | --silent | --silen | --sile | --sil)-      continue ;;-    *\'*)-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;-    esac-    case $ac_pass in-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;-    2)-      as_fn_append ac_configure_args1 " '$ac_arg'"-      if test $ac_must_keep_next = true; then-	ac_must_keep_next=false # Got value, back to normal.-      else-	case $ac_arg in-	  *=* | --config-cache | -C | -disable-* | --disable-* \-	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \-	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \-	  | -with-* | --with-* | -without-* | --without-* | --x)-	    case "$ac_configure_args0 " in-	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;-	    esac-	    ;;-	  -* ) ac_must_keep_next=true ;;-	esac-      fi-      as_fn_append ac_configure_args " '$ac_arg'"-      ;;-    esac-  done-done-{ ac_configure_args0=; unset ac_configure_args0;}-{ ac_configure_args1=; unset ac_configure_args1;}--# When interrupted or exit'd, cleanup temporary files, and complete-# config.log.  We remove comments because anyway the quotes in there-# would cause problems or look ugly.-# WARNING: Use '\'' to represent an apostrophe within the trap.-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.-trap 'exit_status=$?-  # Save into config.log some information that might help in debugging.-  {-    echo--    $as_echo "## ---------------- ##-## Cache variables. ##-## ---------------- ##"-    echo-    # The following way of writing the cache mishandles newlines in values,-(-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do-    eval ac_val=\$$ac_var-    case $ac_val in #(-    *${as_nl}*)-      case $ac_var in #(-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;-      esac-      case $ac_var in #(-      _ | IFS | as_nl) ;; #(-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(-      *) { eval $ac_var=; unset $ac_var;} ;;-      esac ;;-    esac-  done-  (set) 2>&1 |-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(-    *${as_nl}ac_space=\ *)-      sed -n \-	"s/'\''/'\''\\\\'\'''\''/g;-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"-      ;; #(-    *)-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"-      ;;-    esac |-    sort-)-    echo--    $as_echo "## ----------------- ##-## Output variables. ##-## ----------------- ##"-    echo-    for ac_var in $ac_subst_vars-    do-      eval ac_val=\$$ac_var-      case $ac_val in-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;-      esac-      $as_echo "$ac_var='\''$ac_val'\''"-    done | sort-    echo--    if test -n "$ac_subst_files"; then-      $as_echo "## ------------------- ##-## File substitutions. ##-## ------------------- ##"-      echo-      for ac_var in $ac_subst_files-      do-	eval ac_val=\$$ac_var-	case $ac_val in-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;-	esac-	$as_echo "$ac_var='\''$ac_val'\''"-      done | sort-      echo-    fi--    if test -s confdefs.h; then-      $as_echo "## ----------- ##-## confdefs.h. ##-## ----------- ##"-      echo-      cat confdefs.h-      echo-    fi-    test "$ac_signal" != 0 &&-      $as_echo "$as_me: caught signal $ac_signal"-    $as_echo "$as_me: exit $exit_status"-  } >&5-  rm -f core *.core core.conftest.* &&-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&-    exit $exit_status-' 0-for ac_signal in 1 2 13 15; do-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal-done-ac_signal=0--# confdefs.h avoids OS command line length limits that DEFS can exceed.-rm -f -r conftest* confdefs.h--$as_echo "/* confdefs.h */" > confdefs.h--# Predefined preprocessor variables.--cat >>confdefs.h <<_ACEOF-#define PACKAGE_NAME "$PACKAGE_NAME"-_ACEOF--cat >>confdefs.h <<_ACEOF-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"-_ACEOF--cat >>confdefs.h <<_ACEOF-#define PACKAGE_VERSION "$PACKAGE_VERSION"-_ACEOF--cat >>confdefs.h <<_ACEOF-#define PACKAGE_STRING "$PACKAGE_STRING"-_ACEOF--cat >>confdefs.h <<_ACEOF-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"-_ACEOF--cat >>confdefs.h <<_ACEOF-#define PACKAGE_URL "$PACKAGE_URL"-_ACEOF---# Let the site file select an alternate cache file if it wants to.-# Prefer an explicitly selected file to automatically selected ones.-ac_site_file1=NONE-ac_site_file2=NONE-if test -n "$CONFIG_SITE"; then-  # We do not want a PATH search for config.site.-  case $CONFIG_SITE in #((-    -*)  ac_site_file1=./$CONFIG_SITE;;-    */*) ac_site_file1=$CONFIG_SITE;;-    *)   ac_site_file1=./$CONFIG_SITE;;-  esac-elif test "x$prefix" != xNONE; then-  ac_site_file1=$prefix/share/config.site-  ac_site_file2=$prefix/etc/config.site-else-  ac_site_file1=$ac_default_prefix/share/config.site-  ac_site_file2=$ac_default_prefix/etc/config.site-fi-for ac_site_file in "$ac_site_file1" "$ac_site_file2"-do-  test "x$ac_site_file" = xNONE && continue-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5-$as_echo "$as_me: loading site script $ac_site_file" >&6;}-    sed 's/^/| /' "$ac_site_file" >&5-    . "$ac_site_file" \-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error $? "failed to load site script $ac_site_file-See \`config.log' for more details" "$LINENO" 5; }-  fi-done--if test -r "$cache_file"; then-  # Some versions of bash will fail to source /dev/null (special files-  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.-  if test /dev/null != "$cache_file" && test -f "$cache_file"; then-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5-$as_echo "$as_me: loading cache $cache_file" >&6;}-    case $cache_file in-      [\\/]* | ?:[\\/]* ) . "$cache_file";;-      *)                      . "./$cache_file";;-    esac-  fi-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5-$as_echo "$as_me: creating cache $cache_file" >&6;}-  >$cache_file-fi--# Check that the precious variables saved in the cache have kept the same-# value.-ac_cache_corrupted=false-for ac_var in $ac_precious_vars; do-  eval ac_old_set=\$ac_cv_env_${ac_var}_set-  eval ac_new_set=\$ac_env_${ac_var}_set-  eval ac_old_val=\$ac_cv_env_${ac_var}_value-  eval ac_new_val=\$ac_env_${ac_var}_value-  case $ac_old_set,$ac_new_set in-    set,)-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}-      ac_cache_corrupted=: ;;-    ,set)-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}-      ac_cache_corrupted=: ;;-    ,);;-    *)-      if test "x$ac_old_val" != "x$ac_new_val"; then-	# differences in whitespace do not lead to failure.-	ac_old_val_w=`echo x $ac_old_val`-	ac_new_val_w=`echo x $ac_new_val`-	if test "$ac_old_val_w" != "$ac_new_val_w"; then-	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}-	  ac_cache_corrupted=:-	else-	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}-	  eval $ac_var=\$ac_old_val-	fi-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}-      fi;;-  esac-  # Pass precious variables to config.status.-  if test "$ac_new_set" = set; then-    case $ac_new_val in-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;-    *) ac_arg=$ac_var=$ac_new_val ;;-    esac-    case " $ac_configure_args " in-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;-    esac-  fi-done-if $ac_cache_corrupted; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5-fi-## -------------------- ##-## Main body of script. ##-## -------------------- ##--ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu----# Safety check: Ensure that we are in the correct source directory.---ac_aux_dir=-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do-  if test -f "$ac_dir/install-sh"; then-    ac_aux_dir=$ac_dir-    ac_install_sh="$ac_aux_dir/install-sh -c"-    break-  elif test -f "$ac_dir/install.sh"; then-    ac_aux_dir=$ac_dir-    ac_install_sh="$ac_aux_dir/install.sh -c"-    break-  elif test -f "$ac_dir/shtool"; then-    ac_aux_dir=$ac_dir-    ac_install_sh="$ac_aux_dir/shtool install -c"-    break-  fi-done-if test -z "$ac_aux_dir"; then-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5-fi--# These three variables are undocumented and unsupported,-# and are intended to be withdrawn in a future Autoconf release.-# They can cause serious problems if a builder's source tree is in a directory-# whose full name contains unusual characters.-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.---# Make sure we can run config.sub.-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||-  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5-$as_echo_n "checking build system type... " >&6; }-if ${ac_cv_build+:} false; then :-  $as_echo_n "(cached) " >&6-else-  ac_build_alias=$build_alias-test "x$ac_build_alias" = x &&-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`-test "x$ac_build_alias" = x &&-  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||-  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5--fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5-$as_echo "$ac_cv_build" >&6; }-case $ac_cv_build in-*-*-*) ;;-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;-esac-build=$ac_cv_build-ac_save_IFS=$IFS; IFS='-'-set x $ac_cv_build-shift-build_cpu=$1-build_vendor=$2-shift; shift-# Remember, the first character of IFS is used to create $*,-# except with old shells:-build_os=$*-IFS=$ac_save_IFS-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac---{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5-$as_echo_n "checking host system type... " >&6; }-if ${ac_cv_host+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test "x$host_alias" = x; then-  ac_cv_host=$ac_cv_build-else-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5-fi--fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5-$as_echo "$ac_cv_host" >&6; }-case $ac_cv_host in-*-*-*) ;;-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;-esac-host=$ac_cv_host-ac_save_IFS=$IFS; IFS='-'-set x $ac_cv_host-shift-host_cpu=$1-host_vendor=$2-shift; shift-# Remember, the first character of IFS is used to create $*,-# except with old shells:-host_os=$*-IFS=$ac_save_IFS-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac---{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5-$as_echo_n "checking target system type... " >&6; }-if ${ac_cv_target+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test "x$target_alias" = x; then-  ac_cv_target=$ac_cv_host-else-  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5-fi--fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5-$as_echo "$ac_cv_target" >&6; }-case $ac_cv_target in-*-*-*) ;;-*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;-esac-target=$ac_cv_target-ac_save_IFS=$IFS; IFS='-'-set x $ac_cv_target-shift-target_cpu=$1-target_vendor=$2-shift; shift-# Remember, the first character of IFS is used to create $*,-# except with old shells:-target_os=$*-IFS=$ac_save_IFS-case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac---# The aliases save the names the user supplied, while $host etc.-# will get canonicalized.-test -n "$target_alias" &&-  test "$program_prefix$program_suffix$program_transform_name" = \-    NONENONEs,x,x, &&-  program_prefix=${target_alias}---ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu-if test -n "$ac_tool_prefix"; then-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.-set dummy ${ac_tool_prefix}gcc; ac_word=$2-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5-$as_echo_n "checking for $ac_word... " >&6; }-if ${ac_cv_prog_CC+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -n "$CC"; then-  ac_cv_prog_CC="$CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_exec_ext in '' $ac_executable_extensions; do-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    ac_cv_prog_CC="${ac_tool_prefix}gcc"-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-  done-IFS=$as_save_IFS--fi-fi-CC=$ac_cv_prog_CC-if test -n "$CC"; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5-$as_echo "$CC" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi---fi-if test -z "$ac_cv_prog_CC"; then-  ac_ct_CC=$CC-  # Extract the first word of "gcc", so it can be a program name with args.-set dummy gcc; ac_word=$2-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5-$as_echo_n "checking for $ac_word... " >&6; }-if ${ac_cv_prog_ac_ct_CC+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -n "$ac_ct_CC"; then-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_exec_ext in '' $ac_executable_extensions; do-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    ac_cv_prog_ac_ct_CC="gcc"-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-  done-IFS=$as_save_IFS--fi-fi-ac_ct_CC=$ac_cv_prog_ac_ct_CC-if test -n "$ac_ct_CC"; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5-$as_echo "$ac_ct_CC" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi--  if test "x$ac_ct_CC" = x; then-    CC=""-  else-    case $cross_compiling:$ac_tool_warned in-yes:)-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}-ac_tool_warned=yes ;;-esac-    CC=$ac_ct_CC-  fi-else-  CC="$ac_cv_prog_CC"-fi--if test -z "$CC"; then-          if test -n "$ac_tool_prefix"; then-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.-set dummy ${ac_tool_prefix}cc; ac_word=$2-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5-$as_echo_n "checking for $ac_word... " >&6; }-if ${ac_cv_prog_CC+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -n "$CC"; then-  ac_cv_prog_CC="$CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_exec_ext in '' $ac_executable_extensions; do-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    ac_cv_prog_CC="${ac_tool_prefix}cc"-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-  done-IFS=$as_save_IFS--fi-fi-CC=$ac_cv_prog_CC-if test -n "$CC"; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5-$as_echo "$CC" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi---  fi-fi-if test -z "$CC"; then-  # Extract the first word of "cc", so it can be a program name with args.-set dummy cc; ac_word=$2-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5-$as_echo_n "checking for $ac_word... " >&6; }-if ${ac_cv_prog_CC+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -n "$CC"; then-  ac_cv_prog_CC="$CC" # Let the user override the test.-else-  ac_prog_rejected=no-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_exec_ext in '' $ac_executable_extensions; do-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then-       ac_prog_rejected=yes-       continue-     fi-    ac_cv_prog_CC="cc"-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-  done-IFS=$as_save_IFS--if test $ac_prog_rejected = yes; then-  # We found a bogon in the path, so make sure we never use it.-  set dummy $ac_cv_prog_CC-  shift-  if test $# != 0; then-    # We chose a different compiler from the bogus one.-    # However, it has the same basename, so the bogon will be chosen-    # first if we set CC to just the basename; use the full file name.-    shift-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"-  fi-fi-fi-fi-CC=$ac_cv_prog_CC-if test -n "$CC"; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5-$as_echo "$CC" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi---fi-if test -z "$CC"; then-  if test -n "$ac_tool_prefix"; then-  for ac_prog in cl.exe-  do-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.-set dummy $ac_tool_prefix$ac_prog; ac_word=$2-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5-$as_echo_n "checking for $ac_word... " >&6; }-if ${ac_cv_prog_CC+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -n "$CC"; then-  ac_cv_prog_CC="$CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_exec_ext in '' $ac_executable_extensions; do-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-  done-IFS=$as_save_IFS--fi-fi-CC=$ac_cv_prog_CC-if test -n "$CC"; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5-$as_echo "$CC" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi---    test -n "$CC" && break-  done-fi-if test -z "$CC"; then-  ac_ct_CC=$CC-  for ac_prog in cl.exe-do-  # Extract the first word of "$ac_prog", so it can be a program name with args.-set dummy $ac_prog; ac_word=$2-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5-$as_echo_n "checking for $ac_word... " >&6; }-if ${ac_cv_prog_ac_ct_CC+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -n "$ac_ct_CC"; then-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_exec_ext in '' $ac_executable_extensions; do-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    ac_cv_prog_ac_ct_CC="$ac_prog"-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-  done-IFS=$as_save_IFS--fi-fi-ac_ct_CC=$ac_cv_prog_ac_ct_CC-if test -n "$ac_ct_CC"; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5-$as_echo "$ac_ct_CC" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi---  test -n "$ac_ct_CC" && break-done--  if test "x$ac_ct_CC" = x; then-    CC=""-  else-    case $cross_compiling:$ac_tool_warned in-yes:)-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}-ac_tool_warned=yes ;;-esac-    CC=$ac_ct_CC-  fi-fi--fi---test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error $? "no acceptable C compiler found in \$PATH-See \`config.log' for more details" "$LINENO" 5; }--# Provide some information about the compiler.-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5-set X $ac_compile-ac_compiler=$2-for ac_option in --version -v -V -qversion; do-  { { ac_try="$ac_compiler $ac_option >&5"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err-  ac_status=$?-  if test -s conftest.err; then-    sed '10a\-... rest of stderr output deleted ...-         10q' conftest.err >conftest.er1-    cat conftest.er1 >&5-  fi-  rm -f conftest.er1 conftest.err-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }-done--cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--int-main ()-{--  ;-  return 0;-}-_ACEOF-ac_clean_files_save=$ac_clean_files-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"-# Try to create an executable without -o first, disregard a.out.-# It will help us diagnose broken compilers, and finding out an intuition-# of exeext.-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5-$as_echo_n "checking whether the C compiler works... " >&6; }-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`--# The possible output files:-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"--ac_rmfiles=-for ac_file in $ac_files-do-  case $ac_file in-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;-  esac-done-rm -f $ac_rmfiles--if { { ac_try="$ac_link_default"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_link_default") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }; then :-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'-# in a Makefile.  We should not override ac_cv_exeext if it was cached,-# so that the user can short-circuit this test for compilers unknown to-# Autoconf.-for ac_file in $ac_files ''-do-  test -f "$ac_file" || continue-  case $ac_file in-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )-	;;-    [ab].out )-	# We found the default executable, but exeext='' is most-	# certainly right.-	break;;-    *.* )-	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;-	then :; else-	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`-	fi-	# We set ac_cv_exeext here because the later test for it is not-	# safe: cross compilers may not add the suffix if given an `-o'-	# argument, so we may need to know it at that point already.-	# Even if this section looks crufty: it has the advantage of-	# actually working.-	break;;-    * )-	break;;-  esac-done-test "$ac_cv_exeext" = no && ac_cv_exeext=--else-  ac_file=''-fi-if test -z "$ac_file"; then :-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-$as_echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error 77 "C compiler cannot create executables-See \`config.log' for more details" "$LINENO" 5; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5-$as_echo "yes" >&6; }-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5-$as_echo_n "checking for C compiler default output file name... " >&6; }-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5-$as_echo "$ac_file" >&6; }-ac_exeext=$ac_cv_exeext--rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out-ac_clean_files=$ac_clean_files_save-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5-$as_echo_n "checking for suffix of executables... " >&6; }-if { { ac_try="$ac_link"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_link") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }; then :-  # If both `conftest.exe' and `conftest' are `present' (well, observable)-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will-# work properly (i.e., refer to `conftest.exe'), while it won't with-# `rm'.-for ac_file in conftest.exe conftest conftest.*; do-  test -f "$ac_file" || continue-  case $ac_file in-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`-	  break;;-    * ) break;;-  esac-done-else-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error $? "cannot compute suffix of executables: cannot compile and link-See \`config.log' for more details" "$LINENO" 5; }-fi-rm -f conftest conftest$ac_cv_exeext-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5-$as_echo "$ac_cv_exeext" >&6; }--rm -f conftest.$ac_ext-EXEEXT=$ac_cv_exeext-ac_exeext=$EXEEXT-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <stdio.h>-int-main ()-{-FILE *f = fopen ("conftest.out", "w");- return ferror (f) || fclose (f) != 0;--  ;-  return 0;-}-_ACEOF-ac_clean_files="$ac_clean_files conftest.out"-# Check that the compiler produces executables we can run.  If not, either-# the compiler is broken, or we cross compile.-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5-$as_echo_n "checking whether we are cross compiling... " >&6; }-if test "$cross_compiling" != yes; then-  { { ac_try="$ac_link"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_link") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }-  if { ac_try='./conftest$ac_cv_exeext'-  { { case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_try") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }; }; then-    cross_compiling=no-  else-    if test "$cross_compiling" = maybe; then-	cross_compiling=yes-    else-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error $? "cannot run C compiled programs.-If you meant to cross compile, use \`--host'.-See \`config.log' for more details" "$LINENO" 5; }-    fi-  fi-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5-$as_echo "$cross_compiling" >&6; }--rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out-ac_clean_files=$ac_clean_files_save-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5-$as_echo_n "checking for suffix of object files... " >&6; }-if ${ac_cv_objext+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--int-main ()-{--  ;-  return 0;-}-_ACEOF-rm -f conftest.o conftest.obj-if { { ac_try="$ac_compile"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_compile") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }; then :-  for ac_file in conftest.o conftest.obj conftest.*; do-  test -f "$ac_file" || continue;-  case $ac_file in-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`-       break;;-  esac-done-else-  $as_echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error $? "cannot compute suffix of object files: cannot compile-See \`config.log' for more details" "$LINENO" 5; }-fi-rm -f conftest.$ac_cv_objext conftest.$ac_ext-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5-$as_echo "$ac_cv_objext" >&6; }-OBJEXT=$ac_cv_objext-ac_objext=$OBJEXT-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }-if ${ac_cv_c_compiler_gnu+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--int-main ()-{-#ifndef __GNUC__-       choke me-#endif--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_compiler_gnu=yes-else-  ac_compiler_gnu=no-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-ac_cv_c_compiler_gnu=$ac_compiler_gnu--fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5-$as_echo "$ac_cv_c_compiler_gnu" >&6; }-if test $ac_compiler_gnu = yes; then-  GCC=yes-else-  GCC=-fi-ac_test_CFLAGS=${CFLAGS+set}-ac_save_CFLAGS=$CFLAGS-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5-$as_echo_n "checking whether $CC accepts -g... " >&6; }-if ${ac_cv_prog_cc_g+:} false; then :-  $as_echo_n "(cached) " >&6-else-  ac_save_c_werror_flag=$ac_c_werror_flag-   ac_c_werror_flag=yes-   ac_cv_prog_cc_g=no-   CFLAGS="-g"-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--int-main ()-{--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_cv_prog_cc_g=yes-else-  CFLAGS=""-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--int-main ()-{--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :--else-  ac_c_werror_flag=$ac_save_c_werror_flag-	 CFLAGS="-g"-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--int-main ()-{--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_cv_prog_cc_g=yes-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-   ac_c_werror_flag=$ac_save_c_werror_flag-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5-$as_echo "$ac_cv_prog_cc_g" >&6; }-if test "$ac_test_CFLAGS" = set; then-  CFLAGS=$ac_save_CFLAGS-elif test $ac_cv_prog_cc_g = yes; then-  if test "$GCC" = yes; then-    CFLAGS="-g -O2"-  else-    CFLAGS="-g"-  fi-else-  if test "$GCC" = yes; then-    CFLAGS="-O2"-  else-    CFLAGS=-  fi-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }-if ${ac_cv_prog_cc_c89+:} false; then :-  $as_echo_n "(cached) " >&6-else-  ac_cv_prog_cc_c89=no-ac_save_CC=$CC-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <stdarg.h>-#include <stdio.h>-struct stat;-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */-struct buf { int x; };-FILE * (*rcsopen) (struct buf *, struct stat *, int);-static char *e (p, i)-     char **p;-     int i;-{-  return p[i];-}-static char *f (char * (*g) (char **, int), char **p, ...)-{-  char *s;-  va_list v;-  va_start (v,p);-  s = g (p, va_arg (v,int));-  va_end (v);-  return s;-}--/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has-   function prototypes and stuff, but not '\xHH' hex character constants.-   These don't provoke an error unfortunately, instead are silently treated-   as 'x'.  The following induces an error, until -std is added to get-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an-   array size at least.  It's necessary to write '\x00'==0 to get something-   that's true only with -std.  */-int osf4_cc_array ['\x00' == 0 ? 1 : -1];--/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters-   inside strings and character constants.  */-#define FOO(x) 'x'-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];--int test (int i, double x);-struct s1 {int (*f) (int a);};-struct s2 {int (*f) (double a);};-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);-int argc;-char **argv;-int-main ()-{-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];-  ;-  return 0;-}-_ACEOF-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"-do-  CC="$ac_save_CC $ac_arg"-  if ac_fn_c_try_compile "$LINENO"; then :-  ac_cv_prog_cc_c89=$ac_arg-fi-rm -f core conftest.err conftest.$ac_objext-  test "x$ac_cv_prog_cc_c89" != "xno" && break-done-rm -f conftest.$ac_ext-CC=$ac_save_CC--fi-# AC_CACHE_VAL-case "x$ac_cv_prog_cc_c89" in-  x)-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5-$as_echo "none needed" >&6; } ;;-  xno)-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5-$as_echo "unsupported" >&6; } ;;-  *)-    CC="$CC $ac_cv_prog_cc_c89"-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;-esac-if test "x$ac_cv_prog_cc_c89" != xno; then :--fi--ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu---ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5-$as_echo_n "checking how to run the C preprocessor... " >&6; }-# On Suns, sometimes $CPP names a directory.-if test -n "$CPP" && test -d "$CPP"; then-  CPP=-fi-if test -z "$CPP"; then-  if ${ac_cv_prog_CPP+:} false; then :-  $as_echo_n "(cached) " >&6-else-      # Double quotes because CPP needs to be expanded-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"-    do-      ac_preproc_ok=false-for ac_c_preproc_warn_flag in '' yes-do-  # Use a header file that comes with gcc, so configuring glibc-  # with a fresh cross-compiler works.-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since-  # <limits.h> exists even on freestanding compilers.-  # On the NeXT, cc -E runs the code through the compiler's parser,-  # not just through cpp. "Syntax error" is here to catch this case.-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#ifdef __STDC__-# include <limits.h>-#else-# include <assert.h>-#endif-		     Syntax error-_ACEOF-if ac_fn_c_try_cpp "$LINENO"; then :--else-  # Broken: fails on valid input.-continue-fi-rm -f conftest.err conftest.i conftest.$ac_ext--  # OK, works on sane cases.  Now check whether nonexistent headers-  # can be detected and how.-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <ac_nonexistent.h>-_ACEOF-if ac_fn_c_try_cpp "$LINENO"; then :-  # Broken: success on invalid input.-continue-else-  # Passes both tests.-ac_preproc_ok=:-break-fi-rm -f conftest.err conftest.i conftest.$ac_ext--done-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.-rm -f conftest.i conftest.err conftest.$ac_ext-if $ac_preproc_ok; then :-  break-fi--    done-    ac_cv_prog_CPP=$CPP--fi-  CPP=$ac_cv_prog_CPP-else-  ac_cv_prog_CPP=$CPP-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5-$as_echo "$CPP" >&6; }-ac_preproc_ok=false-for ac_c_preproc_warn_flag in '' yes-do-  # Use a header file that comes with gcc, so configuring glibc-  # with a fresh cross-compiler works.-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since-  # <limits.h> exists even on freestanding compilers.-  # On the NeXT, cc -E runs the code through the compiler's parser,-  # not just through cpp. "Syntax error" is here to catch this case.-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#ifdef __STDC__-# include <limits.h>-#else-# include <assert.h>-#endif-		     Syntax error-_ACEOF-if ac_fn_c_try_cpp "$LINENO"; then :--else-  # Broken: fails on valid input.-continue-fi-rm -f conftest.err conftest.i conftest.$ac_ext--  # OK, works on sane cases.  Now check whether nonexistent headers-  # can be detected and how.-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <ac_nonexistent.h>-_ACEOF-if ac_fn_c_try_cpp "$LINENO"; then :-  # Broken: success on invalid input.-continue-else-  # Passes both tests.-ac_preproc_ok=:-break-fi-rm -f conftest.err conftest.i conftest.$ac_ext--done-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.-rm -f conftest.i conftest.err conftest.$ac_ext-if $ac_preproc_ok; then :--else-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check-See \`config.log' for more details" "$LINENO" 5; }-fi--ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu---{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }-if ${ac_cv_path_GREP+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -z "$GREP"; then-  ac_path_GREP_found=false-  # Loop through the user's path and test for each of PROGNAME-LIST-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_prog in grep ggrep; do-    for ac_exec_ext in '' $ac_executable_extensions; do-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"-      as_fn_executable_p "$ac_path_GREP" || continue-# Check for GNU ac_path_GREP and select it if it is found.-  # Check for GNU $ac_path_GREP-case `"$ac_path_GREP" --version 2>&1` in-*GNU*)-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;-*)-  ac_count=0-  $as_echo_n 0123456789 >"conftest.in"-  while :-  do-    cat "conftest.in" "conftest.in" >"conftest.tmp"-    mv "conftest.tmp" "conftest.in"-    cp "conftest.in" "conftest.nl"-    $as_echo 'GREP' >> "conftest.nl"-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break-    as_fn_arith $ac_count + 1 && ac_count=$as_val-    if test $ac_count -gt ${ac_path_GREP_max-0}; then-      # Best one so far, save it but keep looking for a better one-      ac_cv_path_GREP="$ac_path_GREP"-      ac_path_GREP_max=$ac_count-    fi-    # 10*(2^10) chars as input seems more than enough-    test $ac_count -gt 10 && break-  done-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;-esac--      $ac_path_GREP_found && break 3-    done-  done-  done-IFS=$as_save_IFS-  if test -z "$ac_cv_path_GREP"; then-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5-  fi-else-  ac_cv_path_GREP=$GREP-fi--fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5-$as_echo "$ac_cv_path_GREP" >&6; }- GREP="$ac_cv_path_GREP"---{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5-$as_echo_n "checking for egrep... " >&6; }-if ${ac_cv_path_EGREP+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1-   then ac_cv_path_EGREP="$GREP -E"-   else-     if test -z "$EGREP"; then-  ac_path_EGREP_found=false-  # Loop through the user's path and test for each of PROGNAME-LIST-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_prog in egrep; do-    for ac_exec_ext in '' $ac_executable_extensions; do-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"-      as_fn_executable_p "$ac_path_EGREP" || continue-# Check for GNU ac_path_EGREP and select it if it is found.-  # Check for GNU $ac_path_EGREP-case `"$ac_path_EGREP" --version 2>&1` in-*GNU*)-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;-*)-  ac_count=0-  $as_echo_n 0123456789 >"conftest.in"-  while :-  do-    cat "conftest.in" "conftest.in" >"conftest.tmp"-    mv "conftest.tmp" "conftest.in"-    cp "conftest.in" "conftest.nl"-    $as_echo 'EGREP' >> "conftest.nl"-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break-    as_fn_arith $ac_count + 1 && ac_count=$as_val-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then-      # Best one so far, save it but keep looking for a better one-      ac_cv_path_EGREP="$ac_path_EGREP"-      ac_path_EGREP_max=$ac_count-    fi-    # 10*(2^10) chars as input seems more than enough-    test $ac_count -gt 10 && break-  done-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;-esac--      $ac_path_EGREP_found && break 3-    done-  done-  done-IFS=$as_save_IFS-  if test -z "$ac_cv_path_EGREP"; then-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5-  fi-else-  ac_cv_path_EGREP=$EGREP-fi--   fi-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5-$as_echo "$ac_cv_path_EGREP" >&6; }- EGREP="$ac_cv_path_EGREP"---{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5-$as_echo_n "checking for ANSI C header files... " >&6; }-if ${ac_cv_header_stdc+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <stdlib.h>-#include <stdarg.h>-#include <string.h>-#include <float.h>--int-main ()-{--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_cv_header_stdc=yes-else-  ac_cv_header_stdc=no-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext--if test $ac_cv_header_stdc = yes; then-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <string.h>--_ACEOF-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |-  $EGREP "memchr" >/dev/null 2>&1; then :--else-  ac_cv_header_stdc=no-fi-rm -f conftest*--fi--if test $ac_cv_header_stdc = yes; then-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <stdlib.h>--_ACEOF-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |-  $EGREP "free" >/dev/null 2>&1; then :--else-  ac_cv_header_stdc=no-fi-rm -f conftest*--fi--if test $ac_cv_header_stdc = yes; then-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.-  if test "$cross_compiling" = yes; then :-  :-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <ctype.h>-#include <stdlib.h>-#if ((' ' & 0x0FF) == 0x020)-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))-#else-# define ISLOWER(c) \-		   (('a' <= (c) && (c) <= 'i') \-		     || ('j' <= (c) && (c) <= 'r') \-		     || ('s' <= (c) && (c) <= 'z'))-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))-#endif--#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))-int-main ()-{-  int i;-  for (i = 0; i < 256; i++)-    if (XOR (islower (i), ISLOWER (i))-	|| toupper (i) != TOUPPER (i))-      return 2;-  return 0;-}-_ACEOF-if ac_fn_c_try_run "$LINENO"; then :--else-  ac_cv_header_stdc=no-fi-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \-  conftest.$ac_objext conftest.beam conftest.$ac_ext-fi--fi-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5-$as_echo "$ac_cv_header_stdc" >&6; }-if test $ac_cv_header_stdc = yes; then--$as_echo "#define STDC_HEADERS 1" >>confdefs.h--fi--# On IRIX 5.3, sys/types and inttypes.h are conflicting.-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \-		  inttypes.h stdint.h unistd.h-do :-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default-"-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :-  cat >>confdefs.h <<_ACEOF-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1-_ACEOF--fi--done----  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"-if test "x$ac_cv_header_minix_config_h" = xyes; then :-  MINIX=yes-else-  MINIX=-fi---  if test "$MINIX" = yes; then--$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h---$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h---$as_echo "#define _MINIX 1" >>confdefs.h--  fi---  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5-$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }-if ${ac_cv_safe_to_define___extensions__+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--#         define __EXTENSIONS__ 1-          $ac_includes_default-int-main ()-{--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_cv_safe_to_define___extensions__=yes-else-  ac_cv_safe_to_define___extensions__=no-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5-$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }-  test $ac_cv_safe_to_define___extensions__ = yes &&-    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h--  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h--  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h--  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h--  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h-------# Check whether --with-gmp-includes was given.-if test "${with_gmp_includes+set}" = set; then :-  withval=$with_gmp_includes; GMP_INCLUDE_DIRS=$withval; CPPFLAGS="-I$withval"-else-  GMP_INCLUDE_DIRS=-fi----# Check whether --with-gmp-libraries was given.-if test "${with_gmp_libraries+set}" = set; then :-  withval=$with_gmp_libraries; GMP_LIB_DIRS=$withval; LDFLAGS="-L$withval"-else-  GMP_LIB_DIRS=-fi----# Check whether --with-gmp-framework-preferred was given.-if test "${with_gmp_framework_preferred+set}" = set; then :-  withval=$with_gmp_framework_preferred; GMP_PREFER_FRAMEWORK=YES-else-  GMP_PREFER_FRAMEWORK=NO-fi----# Check whether --with-intree-gmp was given.-if test "${with_intree_gmp+set}" = set; then :-  withval=$with_intree_gmp; GMP_FORCE_INTREE=YES-else-  GMP_FORCE_INTREE=NO-fi----HaveLibGmp=NO-GMP_LIBS=-HaveFrameworkGMP=NO-GMP_FRAMEWORK=-HaveSecurePowm=0--if test "$GMP_FORCE_INTREE" != "YES"-then-    if test "$GMP_PREFER_FRAMEWORK" = "YES"-    then--    if test "$HaveLibGmp" = "NO"-    then-        case $target_os in-        darwin*)-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GMP.framework" >&5-$as_echo_n "checking for GMP.framework... " >&6; }-            save_libs="$LIBS"-            LIBS="-framework GMP"-            cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--/* Override any GCC internal prototype to avoid an error.-   Use char because int might match the return type of a GCC-   builtin and then its argument prototype would still apply.  */-#ifdef __cplusplus-extern "C"-#endif-char __gmpz_powm_sec ();-int-main ()-{-return __gmpz_powm_sec ();-  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_link "$LINENO"; then :-  HaveFrameworkGMP=YES; GMP_FRAMEWORK=GMP-fi-rm -f core conftest.err conftest.$ac_objext \-    conftest$ac_exeext conftest.$ac_ext-            LIBS="$save_libs"-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HaveFrameworkGMP" >&5-$as_echo "$HaveFrameworkGMP" >&6; }-            ;;-        esac-    fi---    if test "$HaveFrameworkGMP" = "NO"-    then-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __gmpz_powm in -lgmp" >&5-$as_echo_n "checking for __gmpz_powm in -lgmp... " >&6; }-if ${ac_cv_lib_gmp___gmpz_powm+:} false; then :-  $as_echo_n "(cached) " >&6-else-  ac_check_lib_save_LIBS=$LIBS-LIBS="-lgmp  $LIBS"-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--/* Override any GCC internal prototype to avoid an error.-   Use char because int might match the return type of a GCC-   builtin and then its argument prototype would still apply.  */-#ifdef __cplusplus-extern "C"-#endif-char __gmpz_powm ();-int-main ()-{-return __gmpz_powm ();-  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_link "$LINENO"; then :-  ac_cv_lib_gmp___gmpz_powm=yes-else-  ac_cv_lib_gmp___gmpz_powm=no-fi-rm -f core conftest.err conftest.$ac_objext \-    conftest$ac_exeext conftest.$ac_ext-LIBS=$ac_check_lib_save_LIBS-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gmp___gmpz_powm" >&5-$as_echo "$ac_cv_lib_gmp___gmpz_powm" >&6; }-if test "x$ac_cv_lib_gmp___gmpz_powm" = xyes; then :-  HaveLibGmp=YES; GMP_LIBS=gmp-fi--        if test "$HaveLibGmp" = "NO"-        then-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __gmpz_powm in -lgmp3" >&5-$as_echo_n "checking for __gmpz_powm in -lgmp3... " >&6; }-if ${ac_cv_lib_gmp3___gmpz_powm+:} false; then :-  $as_echo_n "(cached) " >&6-else-  ac_check_lib_save_LIBS=$LIBS-LIBS="-lgmp3  $LIBS"-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--/* Override any GCC internal prototype to avoid an error.-   Use char because int might match the return type of a GCC-   builtin and then its argument prototype would still apply.  */-#ifdef __cplusplus-extern "C"-#endif-char __gmpz_powm ();-int-main ()-{-return __gmpz_powm ();-  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_link "$LINENO"; then :-  ac_cv_lib_gmp3___gmpz_powm=yes-else-  ac_cv_lib_gmp3___gmpz_powm=no-fi-rm -f core conftest.err conftest.$ac_objext \-    conftest$ac_exeext conftest.$ac_ext-LIBS=$ac_check_lib_save_LIBS-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gmp3___gmpz_powm" >&5-$as_echo "$ac_cv_lib_gmp3___gmpz_powm" >&6; }-if test "x$ac_cv_lib_gmp3___gmpz_powm" = xyes; then :-  HaveLibGmp=YES; GMP_LIBS=gmp3-fi--        fi-        if test "$HaveLibGmp" = "YES"-        then-            as_ac_Lib=`$as_echo "ac_cv_lib_$GMP_LIBS''___gmpz_powm_sec" | $as_tr_sh`-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __gmpz_powm_sec in -l$GMP_LIBS" >&5-$as_echo_n "checking for __gmpz_powm_sec in -l$GMP_LIBS... " >&6; }-if eval \${$as_ac_Lib+:} false; then :-  $as_echo_n "(cached) " >&6-else-  ac_check_lib_save_LIBS=$LIBS-LIBS="-l$GMP_LIBS  $LIBS"-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--/* Override any GCC internal prototype to avoid an error.-   Use char because int might match the return type of a GCC-   builtin and then its argument prototype would still apply.  */-#ifdef __cplusplus-extern "C"-#endif-char __gmpz_powm_sec ();-int-main ()-{-return __gmpz_powm_sec ();-  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_link "$LINENO"; then :-  eval "$as_ac_Lib=yes"-else-  eval "$as_ac_Lib=no"-fi-rm -f core conftest.err conftest.$ac_objext \-    conftest$ac_exeext conftest.$ac_ext-LIBS=$ac_check_lib_save_LIBS-fi-eval ac_res=\$$as_ac_Lib-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5-$as_echo "$ac_res" >&6; }-if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :-  HaveSecurePowm=1-fi--        fi-    fi--    else--    if test "$HaveFrameworkGMP" = "NO"-    then-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __gmpz_powm in -lgmp" >&5-$as_echo_n "checking for __gmpz_powm in -lgmp... " >&6; }-if ${ac_cv_lib_gmp___gmpz_powm+:} false; then :-  $as_echo_n "(cached) " >&6-else-  ac_check_lib_save_LIBS=$LIBS-LIBS="-lgmp  $LIBS"-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--/* Override any GCC internal prototype to avoid an error.-   Use char because int might match the return type of a GCC-   builtin and then its argument prototype would still apply.  */-#ifdef __cplusplus-extern "C"-#endif-char __gmpz_powm ();-int-main ()-{-return __gmpz_powm ();-  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_link "$LINENO"; then :-  ac_cv_lib_gmp___gmpz_powm=yes-else-  ac_cv_lib_gmp___gmpz_powm=no-fi-rm -f core conftest.err conftest.$ac_objext \-    conftest$ac_exeext conftest.$ac_ext-LIBS=$ac_check_lib_save_LIBS-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gmp___gmpz_powm" >&5-$as_echo "$ac_cv_lib_gmp___gmpz_powm" >&6; }-if test "x$ac_cv_lib_gmp___gmpz_powm" = xyes; then :-  HaveLibGmp=YES; GMP_LIBS=gmp-fi--        if test "$HaveLibGmp" = "NO"-        then-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __gmpz_powm in -lgmp3" >&5-$as_echo_n "checking for __gmpz_powm in -lgmp3... " >&6; }-if ${ac_cv_lib_gmp3___gmpz_powm+:} false; then :-  $as_echo_n "(cached) " >&6-else-  ac_check_lib_save_LIBS=$LIBS-LIBS="-lgmp3  $LIBS"-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--/* Override any GCC internal prototype to avoid an error.-   Use char because int might match the return type of a GCC-   builtin and then its argument prototype would still apply.  */-#ifdef __cplusplus-extern "C"-#endif-char __gmpz_powm ();-int-main ()-{-return __gmpz_powm ();-  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_link "$LINENO"; then :-  ac_cv_lib_gmp3___gmpz_powm=yes-else-  ac_cv_lib_gmp3___gmpz_powm=no-fi-rm -f core conftest.err conftest.$ac_objext \-    conftest$ac_exeext conftest.$ac_ext-LIBS=$ac_check_lib_save_LIBS-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gmp3___gmpz_powm" >&5-$as_echo "$ac_cv_lib_gmp3___gmpz_powm" >&6; }-if test "x$ac_cv_lib_gmp3___gmpz_powm" = xyes; then :-  HaveLibGmp=YES; GMP_LIBS=gmp3-fi--        fi-        if test "$HaveLibGmp" = "YES"-        then-            as_ac_Lib=`$as_echo "ac_cv_lib_$GMP_LIBS''___gmpz_powm_sec" | $as_tr_sh`-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __gmpz_powm_sec in -l$GMP_LIBS" >&5-$as_echo_n "checking for __gmpz_powm_sec in -l$GMP_LIBS... " >&6; }-if eval \${$as_ac_Lib+:} false; then :-  $as_echo_n "(cached) " >&6-else-  ac_check_lib_save_LIBS=$LIBS-LIBS="-l$GMP_LIBS  $LIBS"-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--/* Override any GCC internal prototype to avoid an error.-   Use char because int might match the return type of a GCC-   builtin and then its argument prototype would still apply.  */-#ifdef __cplusplus-extern "C"-#endif-char __gmpz_powm_sec ();-int-main ()-{-return __gmpz_powm_sec ();-  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_link "$LINENO"; then :-  eval "$as_ac_Lib=yes"-else-  eval "$as_ac_Lib=no"-fi-rm -f core conftest.err conftest.$ac_objext \-    conftest$ac_exeext conftest.$ac_ext-LIBS=$ac_check_lib_save_LIBS-fi-eval ac_res=\$$as_ac_Lib-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5-$as_echo "$ac_res" >&6; }-if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :-  HaveSecurePowm=1-fi--        fi-    fi---    if test "$HaveLibGmp" = "NO"-    then-        case $target_os in-        darwin*)-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GMP.framework" >&5-$as_echo_n "checking for GMP.framework... " >&6; }-            save_libs="$LIBS"-            LIBS="-framework GMP"-            cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--/* Override any GCC internal prototype to avoid an error.-   Use char because int might match the return type of a GCC-   builtin and then its argument prototype would still apply.  */-#ifdef __cplusplus-extern "C"-#endif-char __gmpz_powm_sec ();-int-main ()-{-return __gmpz_powm_sec ();-  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_link "$LINENO"; then :-  HaveFrameworkGMP=YES; GMP_FRAMEWORK=GMP-fi-rm -f core conftest.err conftest.$ac_objext \-    conftest$ac_exeext conftest.$ac_ext-            LIBS="$save_libs"-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HaveFrameworkGMP" >&5-$as_echo "$HaveFrameworkGMP" >&6; }-            ;;-        esac-    fi--    fi-fi--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use in-tree GMP" >&5-$as_echo_n "checking whether to use in-tree GMP... " >&6; }-if test "$HaveFrameworkGMP" = "YES" || test "$HaveLibGmp" = "YES"-then-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-    UseIntreeGmp=0-    ac_fn_c_check_header_mongrel "$LINENO" "gmp.h" "ac_cv_header_gmp_h" "$ac_includes_default"-if test "x$ac_cv_header_gmp_h" = xyes; then :--else-  as_fn_error $? "Cannot find gmp.h" "$LINENO" 5-fi----    { $as_echo "$as_me:${as_lineno-$LINENO}: checking GMP version" >&5-$as_echo_n "checking GMP version... " >&6; }-    if ac_fn_c_compute_int "$LINENO" "__GNU_MP_VERSION" "GhcGmpVerMj"        "#include <gmp.h>"; then :--else-  as_fn_error $? "Unable to get value of __GNU_MP_VERSION" "$LINENO" 5-fi--    if ac_fn_c_compute_int "$LINENO" "__GNU_MP_VERSION_MINOR" "GhcGmpVerMi"        "#include <gmp.h>"; then :--else-  as_fn_error $? "Unable to get value of __GNU_MP_VERSION_MINOR" "$LINENO" 5-fi--    if ac_fn_c_compute_int "$LINENO" "__GNU_MP_VERSION_PATCHLEVEL" "GhcGmpVerPl"        "#include <gmp.h>"; then :--else-  as_fn_error $? "Unable to get value of __GNU_MP_VERSION_PATCHLEVEL" "$LINENO" 5-fi--    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GhcGmpVerMj.$GhcGmpVerMi.$GhcGmpVerPl" >&5-$as_echo "$GhcGmpVerMj.$GhcGmpVerMi.$GhcGmpVerPl" >&6; }--else-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5-$as_echo "yes" >&6; }-    UseIntreeGmp=1-    HaveSecurePowm=1--    { $as_echo "$as_me:${as_lineno-$LINENO}: checking GMP version" >&5-$as_echo_n "checking GMP version... " >&6; }-    GhcGmpVerMj=5-    GhcGmpVerMi=0-    GhcGmpVerPl=4-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GhcGmpVerMj.$GhcGmpVerMi.$GhcGmpVerPl" >&5-$as_echo "$GhcGmpVerMj.$GhcGmpVerMi.$GhcGmpVerPl" >&6; }-fi----------------ac_config_files="$ac_config_files integer-gmp.buildinfo config.mk include/HsIntegerGmp.h"----cat >confcache <<\_ACEOF-# This file is a shell script that caches the results of configure-# tests run on this system so they can be shared between configure-# scripts and configure runs, see configure's option --config-cache.-# It is not useful on other systems.  If it contains results you don't-# want to keep, you may remove or edit it.-#-# config.status only pays attention to the cache file if you give it-# the --recheck option to rerun configure.-#-# `ac_cv_env_foo' variables (set or unset) will be overridden when-# loading this file, other *unset* `ac_cv_foo' will be assigned the-# following values.--_ACEOF--# The following way of writing the cache mishandles newlines in values,-# but we know of no workaround that is simple, portable, and efficient.-# So, we kill variables containing newlines.-# Ultrix sh set writes to stderr and can't be redirected directly,-# and sets the high bit in the cache file unless we assign to the vars.-(-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do-    eval ac_val=\$$ac_var-    case $ac_val in #(-    *${as_nl}*)-      case $ac_var in #(-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;-      esac-      case $ac_var in #(-      _ | IFS | as_nl) ;; #(-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(-      *) { eval $ac_var=; unset $ac_var;} ;;-      esac ;;-    esac-  done--  (set) 2>&1 |-    case $as_nl`(ac_space=' '; set) 2>&1` in #(-    *${as_nl}ac_space=\ *)-      # `set' does not quote correctly, so add quotes: double-quote-      # substitution turns \\\\ into \\, and sed turns \\ into \.-      sed -n \-	"s/'/'\\\\''/g;-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"-      ;; #(-    *)-      # `set' quotes correctly as required by POSIX, so do not add quotes.-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"-      ;;-    esac |-    sort-) |-  sed '-     /^ac_cv_env_/b end-     t clear-     :clear-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/-     t end-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/-     :end' >>confcache-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else-  if test -w "$cache_file"; then-    if test "x$cache_file" != "x/dev/null"; then-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5-$as_echo "$as_me: updating cache $cache_file" >&6;}-      if test ! -f "$cache_file" || test -h "$cache_file"; then-	cat confcache >"$cache_file"-      else-        case $cache_file in #(-        */* | ?:*)-	  mv -f confcache "$cache_file"$$ &&-	  mv -f "$cache_file"$$ "$cache_file" ;; #(-        *)-	  mv -f confcache "$cache_file" ;;-	esac-      fi-    fi-  else-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}-  fi-fi-rm -f confcache--test "x$prefix" = xNONE && prefix=$ac_default_prefix-# Let make expand exec_prefix.-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'--# Transform confdefs.h into DEFS.-# Protect against shell expansion while executing Makefile rules.-# Protect against Makefile macro expansion.-#-# If the first sed substitution is executed (which looks for macros that-# take arguments), then branch to the quote section.  Otherwise,-# look for a macro that doesn't take arguments.-ac_script='-:mline-/\\$/{- N- s,\\\n,,- b mline-}-t clear-:clear-s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\)/-D\1=\2/g-t quote-s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)/-D\1=\2/g-t quote-b any-:quote-s/[	 `~#$^&*(){}\\|;'\''"<>?]/\\&/g-s/\[/\\&/g-s/\]/\\&/g-s/\$/$$/g-H-:any-${-	g-	s/^\n//-	s/\n/ /g-	p-}-'-DEFS=`sed -n "$ac_script" confdefs.h`---ac_libobjs=-ac_ltlibobjs=-U=-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue-  # 1. Remove the extension, and $U if already installed.-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR-  #    will be set to the directory where LIBOBJS objects are built.-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'-done-LIBOBJS=$ac_libobjs--LTLIBOBJS=$ac_ltlibobjs----: "${CONFIG_STATUS=./config.status}"-ac_write_fail=0-ac_clean_files_save=$ac_clean_files-ac_clean_files="$ac_clean_files $CONFIG_STATUS"-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}-as_write_fail=0-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1-#! $SHELL-# Generated by $as_me.-# Run this file to recreate the current configuration.-# Compiler output produced by configure, useful for debugging-# configure, is in config.log if it exists.--debug=false-ac_cs_recheck=false-ac_cs_silent=false--SHELL=\${CONFIG_SHELL-$SHELL}-export SHELL-_ASEOF-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1-## -------------------- ##-## M4sh Initialization. ##-## -------------------- ##--# Be more Bourne compatible-DUALCASE=1; export DUALCASE # for MKS sh-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :-  emulate sh-  NULLCMD=:-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which-  # is contrary to our usage.  Disable this feature.-  alias -g '${1+"$@"}'='"$@"'-  setopt NO_GLOB_SUBST-else-  case `(set -o) 2>/dev/null` in #(-  *posix*) :-    set -o posix ;; #(-  *) :-     ;;-esac-fi---as_nl='-'-export as_nl-# Printing a long string crashes Solaris 7 /usr/bin/printf.-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo-# Prefer a ksh shell builtin over an external printf program on Solaris,-# but without wasting forks for bash or zsh.-if test -z "$BASH_VERSION$ZSH_VERSION" \-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then-  as_echo='print -r --'-  as_echo_n='print -rn --'-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then-  as_echo='printf %s\n'-  as_echo_n='printf %s'-else-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'-    as_echo_n='/usr/ucb/echo -n'-  else-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'-    as_echo_n_body='eval-      arg=$1;-      case $arg in #(-      *"$as_nl"*)-	expr "X$arg" : "X\\(.*\\)$as_nl";-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;-      esac;-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"-    '-    export as_echo_n_body-    as_echo_n='sh -c $as_echo_n_body as_echo'-  fi-  export as_echo_body-  as_echo='sh -c $as_echo_body as_echo'-fi--# The user is always right.-if test "${PATH_SEPARATOR+set}" != set; then-  PATH_SEPARATOR=:-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||-      PATH_SEPARATOR=';'-  }-fi---# IFS-# We need space, tab and new line, in precisely that order.  Quoting is-# there to prevent editors from complaining about space-tab.-# (If _AS_PATH_WALK were called with IFS unset, it would disable word-# splitting by setting IFS to empty value.)-IFS=" ""	$as_nl"--# Find who we are.  Look in the path if we contain no directory separator.-as_myself=-case $0 in #((-  *[\\/]* ) as_myself=$0 ;;-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break-  done-IFS=$as_save_IFS--     ;;-esac-# We did not find ourselves, most probably we were run as `sh COMMAND'-# in which case we are not to be found in the path.-if test "x$as_myself" = x; then-  as_myself=$0-fi-if test ! -f "$as_myself"; then-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2-  exit 1-fi--# Unset variables that we do not need and which cause bugs (e.g. in-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"-# suppresses any "Segmentation fault" message there.  '((' could-# trigger a bug in pdksh 5.2.14.-for as_var in BASH_ENV ENV MAIL MAILPATH-do eval test x\${$as_var+set} = xset \-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :-done-PS1='$ '-PS2='> '-PS4='+ '--# NLS nuisances.-LC_ALL=C-export LC_ALL-LANGUAGE=C-export LANGUAGE--# CDPATH.-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH---# as_fn_error STATUS ERROR [LINENO LOG_FD]-# -----------------------------------------# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the-# script with STATUS, using 1 if that was 0.-as_fn_error ()-{-  as_status=$1; test $as_status -eq 0 && as_status=1-  if test "$4"; then-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4-  fi-  $as_echo "$as_me: error: $2" >&2-  as_fn_exit $as_status-} # as_fn_error---# as_fn_set_status STATUS-# ------------------------# Set $? to STATUS, without forking.-as_fn_set_status ()-{-  return $1-} # as_fn_set_status--# as_fn_exit STATUS-# ------------------# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.-as_fn_exit ()-{-  set +e-  as_fn_set_status $1-  exit $1-} # as_fn_exit--# as_fn_unset VAR-# ----------------# Portably unset VAR.-as_fn_unset ()-{-  { eval $1=; unset $1;}-}-as_unset=as_fn_unset-# as_fn_append VAR VALUE-# -----------------------# Append the text in VALUE to the end of the definition contained in VAR. Take-# advantage of any shell optimizations that allow amortized linear growth over-# repeated appends, instead of the typical quadratic growth present in naive-# implementations.-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :-  eval 'as_fn_append ()-  {-    eval $1+=\$2-  }'-else-  as_fn_append ()-  {-    eval $1=\$$1\$2-  }-fi # as_fn_append--# as_fn_arith ARG...-# -------------------# Perform arithmetic evaluation on the ARGs, and store the result in the-# global $as_val. Take advantage of shells that can avoid forks. The arguments-# must be portable across $(()) and expr.-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :-  eval 'as_fn_arith ()-  {-    as_val=$(( $* ))-  }'-else-  as_fn_arith ()-  {-    as_val=`expr "$@" || test $? -eq 1`-  }-fi # as_fn_arith---if expr a : '\(a\)' >/dev/null 2>&1 &&-   test "X`expr 00001 : '.*\(...\)'`" = X001; then-  as_expr=expr-else-  as_expr=false-fi--if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then-  as_basename=basename-else-  as_basename=false-fi--if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then-  as_dirname=dirname-else-  as_dirname=false-fi--as_me=`$as_basename -- "$0" ||-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \-	 X"$0" : 'X\(//\)$' \| \-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||-$as_echo X/"$0" |-    sed '/^.*\/\([^/][^/]*\)\/*$/{-	    s//\1/-	    q-	  }-	  /^X\/\(\/\/\)$/{-	    s//\1/-	    q-	  }-	  /^X\/\(\/\).*/{-	    s//\1/-	    q-	  }-	  s/.*/./; q'`--# Avoid depending upon Character Ranges.-as_cr_letters='abcdefghijklmnopqrstuvwxyz'-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'-as_cr_Letters=$as_cr_letters$as_cr_LETTERS-as_cr_digits='0123456789'-as_cr_alnum=$as_cr_Letters$as_cr_digits--ECHO_C= ECHO_N= ECHO_T=-case `echo -n x` in #(((((--n*)-  case `echo 'xy\c'` in-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.-  xy)  ECHO_C='\c';;-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null-       ECHO_T='	';;-  esac;;-*)-  ECHO_N='-n';;-esac--rm -f conf$$ conf$$.exe conf$$.file-if test -d conf$$.dir; then-  rm -f conf$$.dir/conf$$.file-else-  rm -f conf$$.dir-  mkdir conf$$.dir 2>/dev/null-fi-if (echo >conf$$.file) 2>/dev/null; then-  if ln -s conf$$.file conf$$ 2>/dev/null; then-    as_ln_s='ln -s'-    # ... but there are two gotchas:-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.-    # In both cases, we have to default to `cp -pR'.-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||-      as_ln_s='cp -pR'-  elif ln conf$$.file conf$$ 2>/dev/null; then-    as_ln_s=ln-  else-    as_ln_s='cp -pR'-  fi-else-  as_ln_s='cp -pR'-fi-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file-rmdir conf$$.dir 2>/dev/null---# as_fn_mkdir_p-# --------------# Create "$as_dir" as a directory, including parents if necessary.-as_fn_mkdir_p ()-{--  case $as_dir in #(-  -*) as_dir=./$as_dir;;-  esac-  test -d "$as_dir" || eval $as_mkdir_p || {-    as_dirs=-    while :; do-      case $as_dir in #(-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(-      *) as_qdir=$as_dir;;-      esac-      as_dirs="'$as_qdir' $as_dirs"-      as_dir=`$as_dirname -- "$as_dir" ||-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \-	 X"$as_dir" : 'X\(//\)[^/]' \| \-	 X"$as_dir" : 'X\(//\)$' \| \-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||-$as_echo X"$as_dir" |-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)[^/].*/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\).*/{-	    s//\1/-	    q-	  }-	  s/.*/./; q'`-      test -d "$as_dir" && break-    done-    test -z "$as_dirs" || eval "mkdir $as_dirs"-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"---} # as_fn_mkdir_p-if mkdir -p . 2>/dev/null; then-  as_mkdir_p='mkdir -p "$as_dir"'-else-  test -d ./-p && rmdir ./-p-  as_mkdir_p=false-fi---# as_fn_executable_p FILE-# ------------------------# Test if FILE is an executable regular file.-as_fn_executable_p ()-{-  test -f "$1" && test -x "$1"-} # as_fn_executable_p-as_test_x='test -x'-as_executable_p=as_fn_executable_p--# Sed expression to map a string onto a valid CPP name.-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"--# Sed expression to map a string onto a valid variable name.-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"---exec 6>&1-## ----------------------------------- ##-## Main body of $CONFIG_STATUS script. ##-## ----------------------------------- ##-_ASEOF-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1--cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-# Save the log message, to keep $0 and so on meaningful, and to-# report actual input values of CONFIG_FILES etc. instead of their-# values after options handling.-ac_log="-This file was extended by Haskell integer (GMP) $as_me 1.0, which was-generated by GNU Autoconf 2.69.  Invocation command line was--  CONFIG_FILES    = $CONFIG_FILES-  CONFIG_HEADERS  = $CONFIG_HEADERS-  CONFIG_LINKS    = $CONFIG_LINKS-  CONFIG_COMMANDS = $CONFIG_COMMANDS-  $ $0 $@--on `(hostname || uname -n) 2>/dev/null | sed 1q`-"--_ACEOF--case $ac_config_files in *"-"*) set x $ac_config_files; shift; ac_config_files=$*;;-esac----cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-# Files that config.status was made for.-config_files="$ac_config_files"--_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-ac_cs_usage="\-\`$as_me' instantiates files and other configuration actions-from templates according to the current configuration.  Unless the files-and actions are specified as TAGs, all are instantiated by default.--Usage: $0 [OPTION]... [TAG]...--  -h, --help       print this help, then exit-  -V, --version    print version number and configuration settings, then exit-      --config     print configuration, then exit-  -q, --quiet, --silent-                   do not print progress messages-  -d, --debug      don't remove temporary files-      --recheck    update $as_me by reconfiguring in the same conditions-      --file=FILE[:TEMPLATE]-                   instantiate the configuration file FILE--Configuration files:-$config_files--Report bugs to <libraries@haskell.org>."--_ACEOF-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"-ac_cs_version="\\-Haskell integer (GMP) config.status 1.0-configured by $0, generated by GNU Autoconf 2.69,-  with options \\"\$ac_cs_config\\"--Copyright (C) 2012 Free Software Foundation, Inc.-This config.status script is free software; the Free Software Foundation-gives unlimited permission to copy, distribute and modify it."--ac_pwd='$ac_pwd'-srcdir='$srcdir'-test -n "\$AWK" || AWK=awk-_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-# The default lists apply if the user does not specify any file.-ac_need_defaults=:-while test $# != 0-do-  case $1 in-  --*=?*)-    ac_option=`expr "X$1" : 'X\([^=]*\)='`-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`-    ac_shift=:-    ;;-  --*=)-    ac_option=`expr "X$1" : 'X\([^=]*\)='`-    ac_optarg=-    ac_shift=:-    ;;-  *)-    ac_option=$1-    ac_optarg=$2-    ac_shift=shift-    ;;-  esac--  case $ac_option in-  # Handling of the options.-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)-    ac_cs_recheck=: ;;-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )-    $as_echo "$ac_cs_version"; exit ;;-  --config | --confi | --conf | --con | --co | --c )-    $as_echo "$ac_cs_config"; exit ;;-  --debug | --debu | --deb | --de | --d | -d )-    debug=: ;;-  --file | --fil | --fi | --f )-    $ac_shift-    case $ac_optarg in-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;-    '') as_fn_error $? "missing file argument" ;;-    esac-    as_fn_append CONFIG_FILES " '$ac_optarg'"-    ac_need_defaults=false;;-  --he | --h |  --help | --hel | -h )-    $as_echo "$ac_cs_usage"; exit ;;-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \-  | -silent | --silent | --silen | --sile | --sil | --si | --s)-    ac_cs_silent=: ;;--  # This is an error.-  -*) as_fn_error $? "unrecognized option: \`$1'-Try \`$0 --help' for more information." ;;--  *) as_fn_append ac_config_targets " $1"-     ac_need_defaults=false ;;--  esac-  shift-done--ac_configure_extra_args=--if $ac_cs_silent; then-  exec 6>/dev/null-  ac_configure_extra_args="$ac_configure_extra_args --silent"-fi--_ACEOF-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-if \$ac_cs_recheck; then-  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion-  shift-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6-  CONFIG_SHELL='$SHELL'-  export CONFIG_SHELL-  exec "\$@"-fi--_ACEOF-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-exec 5>>config.log-{-  echo-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX-## Running $as_me. ##-_ASBOX-  $as_echo "$ac_log"-} >&5--_ACEOF-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1--# Handling of arguments.-for ac_config_target in $ac_config_targets-do-  case $ac_config_target in-    "integer-gmp.buildinfo") CONFIG_FILES="$CONFIG_FILES integer-gmp.buildinfo" ;;-    "config.mk") CONFIG_FILES="$CONFIG_FILES config.mk" ;;-    "include/HsIntegerGmp.h") CONFIG_FILES="$CONFIG_FILES include/HsIntegerGmp.h" ;;--  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;-  esac-done---# If the user did not use the arguments to specify the items to instantiate,-# then the envvar interface is used.  Set only those that are not.-# We use the long form for the default assignment because of an extremely-# bizarre bug on SunOS 4.1.3.-if $ac_need_defaults; then-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files-fi--# Have a temporary directory for convenience.  Make it in the build tree-# simply because there is no reason against having it here, and in addition,-# creating and moving files from /tmp can sometimes cause problems.-# Hook for its removal unless debugging.-# Note that there is a small window in which the directory will not be cleaned:-# after its creation but before its name has been assigned to `$tmp'.-$debug ||-{-  tmp= ac_tmp=-  trap 'exit_status=$?-  : "${ac_tmp:=$tmp}"-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status-' 0-  trap 'as_fn_exit 1' 1 2 13 15-}-# Create a (secure) tmp directory for tmp files.--{-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&-  test -d "$tmp"-}  ||-{-  tmp=./conf$$-$RANDOM-  (umask 077 && mkdir "$tmp")-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5-ac_tmp=$tmp--# Set up the scripts for CONFIG_FILES section.-# No need to generate them if there are no CONFIG_FILES.-# This happens for instance with `./config.status config.h'.-if test -n "$CONFIG_FILES"; then---ac_cr=`echo X | tr X '\015'`-# On cygwin, bash can eat \r inside `` if the user requested igncr.-# But we know of no other shell where ac_cr would be empty at this-# point, so we can use a bashism as a fallback.-if test "x$ac_cr" = x; then-  eval ac_cr=\$\'\\r\'-fi-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then-  ac_cs_awk_cr='\\r'-else-  ac_cs_awk_cr=$ac_cr-fi--echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&-_ACEOF---{-  echo "cat >conf$$subs.awk <<_ACEOF" &&-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&-  echo "_ACEOF"-} >conf$$subs.sh ||-  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`-ac_delim='%!_!# '-for ac_last_try in false false false false false :; do-  . ./conf$$subs.sh ||-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5--  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`-  if test $ac_delim_n = $ac_delim_num; then-    break-  elif $ac_last_try; then-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5-  else-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "-  fi-done-rm -f conf$$subs.sh--cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&-_ACEOF-sed -n '-h-s/^/S["/; s/!.*/"]=/-p-g-s/^[^!]*!//-:repl-t repl-s/'"$ac_delim"'$//-t delim-:nl-h-s/\(.\{148\}\)..*/\1/-t more1-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/-p-n-b repl-:more1-s/["\\]/\\&/g; s/^/"/; s/$/"\\/-p-g-s/.\{148\}//-t nl-:delim-h-s/\(.\{148\}\)..*/\1/-t more2-s/["\\]/\\&/g; s/^/"/; s/$/"/-p-b-:more2-s/["\\]/\\&/g; s/^/"/; s/$/"\\/-p-g-s/.\{148\}//-t delim-' <conf$$subs.awk | sed '-/^[^""]/{-  N-  s/\n//-}-' >>$CONFIG_STATUS || ac_write_fail=1-rm -f conf$$subs.awk-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-_ACAWK-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&-  for (key in S) S_is_set[key] = 1-  FS = ""--}-{-  line = $ 0-  nfields = split(line, field, "@")-  substed = 0-  len = length(field[1])-  for (i = 2; i < nfields; i++) {-    key = field[i]-    keylen = length(key)-    if (S_is_set[key]) {-      value = S[key]-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)-      len += length(value) + length(field[++i])-      substed = 1-    } else-      len += 1 + keylen-  }--  print line-}--_ACAWK-_ACEOF-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"-else-  cat-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \-  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5-_ACEOF--# VPATH may cause trouble with some makes, so we remove sole $(srcdir),-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and-# trailing colons and then remove the whole line if VPATH becomes empty-# (actually we leave an empty line to preserve line numbers).-if test "x$srcdir" = x.; then-  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{-h-s///-s/^/:/-s/[	 ]*$/:/-s/:\$(srcdir):/:/g-s/:\${srcdir}:/:/g-s/:@srcdir@:/:/g-s/^:*//-s/:*$//-x-s/\(=[	 ]*\).*/\1/-G-s/\n//-s/^[^=]*=[	 ]*$//-}'-fi--cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-fi # test -n "$CONFIG_FILES"---eval set X "  :F $CONFIG_FILES      "-shift-for ac_tag-do-  case $ac_tag in-  :[FHLC]) ac_mode=$ac_tag; continue;;-  esac-  case $ac_mode$ac_tag in-  :[FHL]*:*);;-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;-  :[FH]-) ac_tag=-:-;;-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;-  esac-  ac_save_IFS=$IFS-  IFS=:-  set x $ac_tag-  IFS=$ac_save_IFS-  shift-  ac_file=$1-  shift--  case $ac_mode in-  :L) ac_source=$1;;-  :[FH])-    ac_file_inputs=-    for ac_f-    do-      case $ac_f in-      -) ac_f="$ac_tmp/stdin";;-      *) # Look for the file first in the build tree, then in the source tree-	 # (if the path is not absolute).  The absolute path cannot be DOS-style,-	 # because $ac_f cannot contain `:'.-	 test -f "$ac_f" ||-	   case $ac_f in-	   [\\/$]*) false;;-	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;-	   esac ||-	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;-      esac-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac-      as_fn_append ac_file_inputs " '$ac_f'"-    done--    # Let's still pretend it is `configure' which instantiates (i.e., don't-    # use $as_me), people would be surprised to read:-    #    /* config.h.  Generated by config.status.  */-    configure_input='Generated from '`-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'-	`' by configure.'-    if test x"$ac_file" != x-; then-      configure_input="$ac_file.  $configure_input"-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5-$as_echo "$as_me: creating $ac_file" >&6;}-    fi-    # Neutralize special characters interpreted by sed in replacement strings.-    case $configure_input in #(-    *\&* | *\|* | *\\* )-       ac_sed_conf_input=`$as_echo "$configure_input" |-       sed 's/[\\\\&|]/\\\\&/g'`;; #(-    *) ac_sed_conf_input=$configure_input;;-    esac--    case $ac_tag in-    *:-:* | *:-) cat >"$ac_tmp/stdin" \-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;-    esac-    ;;-  esac--  ac_dir=`$as_dirname -- "$ac_file" ||-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \-	 X"$ac_file" : 'X\(//\)[^/]' \| \-	 X"$ac_file" : 'X\(//\)$' \| \-	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||-$as_echo X"$ac_file" |-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)[^/].*/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\).*/{-	    s//\1/-	    q-	  }-	  s/.*/./; q'`-  as_dir="$ac_dir"; as_fn_mkdir_p-  ac_builddir=.--case "$ac_dir" in-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;-*)-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`-  # A ".." for each directory in $ac_dir_suffix.-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`-  case $ac_top_builddir_sub in-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;-  esac ;;-esac-ac_abs_top_builddir=$ac_pwd-ac_abs_builddir=$ac_pwd$ac_dir_suffix-# for backward compatibility:-ac_top_builddir=$ac_top_build_prefix--case $srcdir in-  .)  # We are building in place.-    ac_srcdir=.-    ac_top_srcdir=$ac_top_builddir_sub-    ac_abs_top_srcdir=$ac_pwd ;;-  [\\/]* | ?:[\\/]* )  # Absolute name.-    ac_srcdir=$srcdir$ac_dir_suffix;-    ac_top_srcdir=$srcdir-    ac_abs_top_srcdir=$srcdir ;;-  *) # Relative name.-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix-    ac_top_srcdir=$ac_top_build_prefix$srcdir-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;-esac-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix---  case $ac_mode in-  :F)-  #-  # CONFIG_FILE-  #--_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-# If the template does not know about datarootdir, expand it.-# FIXME: This hack should be removed a few years after 2.60.-ac_datarootdir_hack=; ac_datarootdir_seen=-ac_sed_dataroot='-/datarootdir/ {-  p-  q-}-/@datadir@/p-/@docdir@/p-/@infodir@/p-/@localedir@/p-/@mandir@/p'-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in-*datarootdir*) ac_datarootdir_seen=yes;;-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}-_ACEOF-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-  ac_datarootdir_hack='-  s&@datadir@&$datadir&g-  s&@docdir@&$docdir&g-  s&@infodir@&$infodir&g-  s&@localedir@&$localedir&g-  s&@mandir@&$mandir&g-  s&\\\${datarootdir}&$datarootdir&g' ;;-esac-_ACEOF--# Neutralize VPATH when `$srcdir' = `.'.-# Shell code in configure.ac might set extrasub.-# FIXME: do we really want to maintain this feature?-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-ac_sed_extra="$ac_vpsub-$extrasub-_ACEOF-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-:t-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b-s|@configure_input@|$ac_sed_conf_input|;t t-s&@top_builddir@&$ac_top_builddir_sub&;t t-s&@top_build_prefix@&$ac_top_build_prefix&;t t-s&@srcdir@&$ac_srcdir&;t t-s&@abs_srcdir@&$ac_abs_srcdir&;t t-s&@top_srcdir@&$ac_top_srcdir&;t t-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t-s&@builddir@&$ac_builddir&;t t-s&@abs_builddir@&$ac_abs_builddir&;t t-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t-$ac_datarootdir_hack-"-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \-  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5--test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&-  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \-      "$ac_tmp/out"`; test -z "$ac_out"; } &&-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'-which seems to be undefined.  Please make sure it is defined" >&5-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'-which seems to be undefined.  Please make sure it is defined" >&2;}--  rm -f "$ac_tmp/stdin"-  case $ac_file in-  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;-  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;-  esac \-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5- ;;----  esac--done # for ac_tag---as_fn_exit 0-_ACEOF-ac_clean_files=$ac_clean_files_save--test $ac_write_fail = 0 ||-  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5---# configure is writing to config.log, and then calls config.status.-# config.status does its own redirection, appending to config.log.-# Unfortunately, on DOS this fails, as config.log is still kept open-# by configure, so config.status won't be able to write to it; its-# output is simply discarded.  So we exec the FD to /dev/null,-# effectively closing config.log, so it can be properly (re)opened and-# appended to by config.status.  When coming back to configure, we-# need to make the FD available again.-if test "$no_create" != yes; then-  ac_cs_success=:-  ac_config_status_args=-  test "$silent" = yes &&-    ac_config_status_args="$ac_config_status_args --quiet"-  exec 5>/dev/null-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false-  exec 5>>config.log-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which-  # would make configure fail if this is the last instruction.-  $ac_cs_success || as_fn_exit 1-fi-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}-fi-
− configure.ac
@@ -1,115 +0,0 @@-AC_PREREQ(2.69)-AC_INIT([Haskell integer (GMP)], [1.0], [libraries@haskell.org], [integer])--# Safety check: Ensure that we are in the correct source directory.-AC_CONFIG_SRCDIR([cbits/wrappers.c])--AC_CANONICAL_TARGET--AC_PROG_CC-dnl make extensions visible to allow feature-tests to detect them lateron-AC_USE_SYSTEM_EXTENSIONS---dnl---------------------------------------------------------------------dnl * Deal with arguments telling us gmp is somewhere odd-dnl----------------------------------------------------------------------AC_ARG_WITH([gmp-includes],-  [AC_HELP_STRING([--with-gmp-includes],-    [directory containing gmp.h])],-    [GMP_INCLUDE_DIRS=$withval; CPPFLAGS="-I$withval"],-    [GMP_INCLUDE_DIRS=])--AC_ARG_WITH([gmp-libraries],-  [AC_HELP_STRING([--with-gmp-libraries],-    [directory containing gmp library])],-    [GMP_LIB_DIRS=$withval; LDFLAGS="-L$withval"],-    [GMP_LIB_DIRS=])--AC_ARG_WITH([gmp-framework-preferred],-  [AC_HELP_STRING([--with-gmp-framework-preferred],-    [on OSX, prefer the GMP framework to the gmp lib])],-    [GMP_PREFER_FRAMEWORK=YES],-    [GMP_PREFER_FRAMEWORK=NO])--AC_ARG_WITH([intree-gmp],-  [AC_HELP_STRING([--with-intree-gmp],-    [force using the in-tree GMP])],-    [GMP_FORCE_INTREE=YES],-    [GMP_FORCE_INTREE=NO])--dnl---------------------------------------------------------------------dnl * Detect gmp-dnl----------------------------------------------------------------------HaveLibGmp=NO-GMP_LIBS=-HaveFrameworkGMP=NO-GMP_FRAMEWORK=-HaveSecurePowm=0--if test "$GMP_FORCE_INTREE" != "YES"-then-    if test "$GMP_PREFER_FRAMEWORK" = "YES"-    then-        LOOK_FOR_GMP_FRAMEWORK-        LOOK_FOR_GMP_LIB-    else-        LOOK_FOR_GMP_LIB-        LOOK_FOR_GMP_FRAMEWORK-    fi-fi--AC_MSG_CHECKING([whether to use in-tree GMP])-if test "$HaveFrameworkGMP" = "YES" || test "$HaveLibGmp" = "YES"-then-    AC_MSG_RESULT([no])-    UseIntreeGmp=0-    AC_CHECK_HEADER([gmp.h], , [AC_MSG_ERROR([Cannot find gmp.h])])--    AC_MSG_CHECKING([GMP version])-    AC_COMPUTE_INT(GhcGmpVerMj, __GNU_MP_VERSION, [#include <gmp.h>],-        AC_MSG_ERROR([Unable to get value of __GNU_MP_VERSION]))-    AC_COMPUTE_INT(GhcGmpVerMi, __GNU_MP_VERSION_MINOR, [#include <gmp.h>],-        AC_MSG_ERROR([Unable to get value of __GNU_MP_VERSION_MINOR]))-    AC_COMPUTE_INT(GhcGmpVerPl, __GNU_MP_VERSION_PATCHLEVEL, [#include <gmp.h>],-        AC_MSG_ERROR([Unable to get value of __GNU_MP_VERSION_PATCHLEVEL]))-    AC_MSG_RESULT([$GhcGmpVerMj.$GhcGmpVerMi.$GhcGmpVerPl])--else-    AC_MSG_RESULT([yes])-    UseIntreeGmp=1-    HaveSecurePowm=1--    AC_MSG_CHECKING([GMP version])-    GhcGmpVerMj=5-    GhcGmpVerMi=0-    GhcGmpVerPl=4-    AC_MSG_RESULT([$GhcGmpVerMj.$GhcGmpVerMi.$GhcGmpVerPl])-fi---dnl---------------------------------------------------------------------dnl * Make sure we got some form of gmp-dnl----------------------------------------------------------------------AC_SUBST(GMP_INCLUDE_DIRS)-AC_SUBST(GMP_LIBS)-AC_SUBST(GMP_LIB_DIRS)-AC_SUBST(GMP_FRAMEWORK)-AC_SUBST(HaveLibGmp)-AC_SUBST(HaveFrameworkGMP)-AC_SUBST(HaveSecurePowm)-AC_SUBST(UseIntreeGmp)-AC_SUBST(GhcGmpVerMj)-AC_SUBST(GhcGmpVerMi)-AC_SUBST(GhcGmpVerPl)--AC_CONFIG_FILES([integer-gmp.buildinfo config.mk include/HsIntegerGmp.h])--dnl---------------------------------------------------------------------dnl * Generate output files-dnl----------------------------------------------------------------------AC_OUTPUT
− include/HsIntegerGmp.h.in
@@ -1,14 +0,0 @@-#pragma once--/* Whether GMP is embedded into integer-gmp */-#define GHC_GMP_INTREE     @UseIntreeGmp@--/* The following values denote the GMP version used during GHC build-time */-#define GHC_GMP_VERSION_MJ @GhcGmpVerMj@-#define GHC_GMP_VERSION_MI @GhcGmpVerMi@-#define GHC_GMP_VERSION_PL @GhcGmpVerPl@-#define GHC_GMP_VERSION \-    (@GhcGmpVerMj@ * 10000 + @GhcGmpVerMi@ * 100 + @GhcGmpVerPl@)--/* Whether GMP supports mpz_powm_sec */-#define HAVE_SECURE_POWM @HaveSecurePowm@
− install-sh
@@ -1,527 +0,0 @@-#!/bin/sh-# install - install a program, script, or datafile--scriptversion=2011-11-20.07; # UTC--# This originates from X11R5 (mit/util/scripts/install.sh), which was-# later released in X11R6 (xc/config/util/install.sh) with the-# following copyright and license.-#-# Copyright (C) 1994 X Consortium-#-# Permission is hereby granted, free of charge, to any person obtaining a copy-# of this software and associated documentation files (the "Software"), to-# deal in the Software without restriction, including without limitation the-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or-# sell copies of the Software, and to permit persons to whom the Software is-# furnished to do so, subject to the following conditions:-#-# The above copyright notice and this permission notice shall be included in-# all copies or substantial portions of the Software.-#-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC--# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.-#-# Except as contained in this notice, the name of the X Consortium shall not-# be used in advertising or otherwise to promote the sale, use or other deal--# ings in this Software without prior written authorization from the X Consor--# tium.-#-#-# FSF changes to this file are in the public domain.-#-# Calling this script install-sh is preferred over install.sh, to prevent-# 'make' implicit rules from creating a file called install from it-# when there is no Makefile.-#-# This script is compatible with the BSD install script, but was written-# from scratch.--nl='-'-IFS=" ""	$nl"--# set DOITPROG to echo to test this script--# Don't use :- since 4.3BSD and earlier shells don't like it.-doit=${DOITPROG-}-if test -z "$doit"; then-  doit_exec=exec-else-  doit_exec=$doit-fi--# Put in absolute file names if you don't have them in your path;-# or use environment vars.--chgrpprog=${CHGRPPROG-chgrp}-chmodprog=${CHMODPROG-chmod}-chownprog=${CHOWNPROG-chown}-cmpprog=${CMPPROG-cmp}-cpprog=${CPPROG-cp}-mkdirprog=${MKDIRPROG-mkdir}-mvprog=${MVPROG-mv}-rmprog=${RMPROG-rm}-stripprog=${STRIPPROG-strip}--posix_glob='?'-initialize_posix_glob='-  test "$posix_glob" != "?" || {-    if (set -f) 2>/dev/null; then-      posix_glob=-    else-      posix_glob=:-    fi-  }-'--posix_mkdir=--# Desired mode of installed file.-mode=0755--chgrpcmd=-chmodcmd=$chmodprog-chowncmd=-mvcmd=$mvprog-rmcmd="$rmprog -f"-stripcmd=--src=-dst=-dir_arg=-dst_arg=--copy_on_change=false-no_target_directory=--usage="\-Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE-   or: $0 [OPTION]... SRCFILES... DIRECTORY-   or: $0 [OPTION]... -t DIRECTORY SRCFILES...-   or: $0 [OPTION]... -d DIRECTORIES...--In the 1st form, copy SRCFILE to DSTFILE.-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.-In the 4th, create DIRECTORIES.--Options:-     --help     display this help and exit.-     --version  display version info and exit.--  -c            (ignored)-  -C            install only if different (preserve the last data modification time)-  -d            create directories instead of installing files.-  -g GROUP      $chgrpprog installed files to GROUP.-  -m MODE       $chmodprog installed files to MODE.-  -o USER       $chownprog installed files to USER.-  -s            $stripprog installed files.-  -t DIRECTORY  install into DIRECTORY.-  -T            report an error if DSTFILE is a directory.--Environment variables override the default commands:-  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG-  RMPROG STRIPPROG-"--while test $# -ne 0; do-  case $1 in-    -c) ;;--    -C) copy_on_change=true;;--    -d) dir_arg=true;;--    -g) chgrpcmd="$chgrpprog $2"-	shift;;--    --help) echo "$usage"; exit $?;;--    -m) mode=$2-	case $mode in-	  *' '* | *'	'* | *'-'*	  | *'*'* | *'?'* | *'['*)-	    echo "$0: invalid mode: $mode" >&2-	    exit 1;;-	esac-	shift;;--    -o) chowncmd="$chownprog $2"-	shift;;--    -s) stripcmd=$stripprog;;--    -t) dst_arg=$2-	# Protect names problematic for 'test' and other utilities.-	case $dst_arg in-	  -* | [=\(\)!]) dst_arg=./$dst_arg;;-	esac-	shift;;--    -T) no_target_directory=true;;--    --version) echo "$0 $scriptversion"; exit $?;;--    --)	shift-	break;;--    -*)	echo "$0: invalid option: $1" >&2-	exit 1;;--    *)  break;;-  esac-  shift-done--if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then-  # When -d is used, all remaining arguments are directories to create.-  # When -t is used, the destination is already specified.-  # Otherwise, the last argument is the destination.  Remove it from $@.-  for arg-  do-    if test -n "$dst_arg"; then-      # $@ is not empty: it contains at least $arg.-      set fnord "$@" "$dst_arg"-      shift # fnord-    fi-    shift # arg-    dst_arg=$arg-    # Protect names problematic for 'test' and other utilities.-    case $dst_arg in-      -* | [=\(\)!]) dst_arg=./$dst_arg;;-    esac-  done-fi--if test $# -eq 0; then-  if test -z "$dir_arg"; then-    echo "$0: no input file specified." >&2-    exit 1-  fi-  # It's OK to call 'install-sh -d' without argument.-  # This can happen when creating conditional directories.-  exit 0-fi--if test -z "$dir_arg"; then-  do_exit='(exit $ret); exit $ret'-  trap "ret=129; $do_exit" 1-  trap "ret=130; $do_exit" 2-  trap "ret=141; $do_exit" 13-  trap "ret=143; $do_exit" 15--  # Set umask so as not to create temps with too-generous modes.-  # However, 'strip' requires both read and write access to temps.-  case $mode in-    # Optimize common cases.-    *644) cp_umask=133;;-    *755) cp_umask=22;;--    *[0-7])-      if test -z "$stripcmd"; then-	u_plus_rw=-      else-	u_plus_rw='% 200'-      fi-      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;-    *)-      if test -z "$stripcmd"; then-	u_plus_rw=-      else-	u_plus_rw=,u+rw-      fi-      cp_umask=$mode$u_plus_rw;;-  esac-fi--for src-do-  # Protect names problematic for 'test' and other utilities.-  case $src in-    -* | [=\(\)!]) src=./$src;;-  esac--  if test -n "$dir_arg"; then-    dst=$src-    dstdir=$dst-    test -d "$dstdir"-    dstdir_status=$?-  else--    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command-    # might cause directories to be created, which would be especially bad-    # if $src (and thus $dsttmp) contains '*'.-    if test ! -f "$src" && test ! -d "$src"; then-      echo "$0: $src does not exist." >&2-      exit 1-    fi--    if test -z "$dst_arg"; then-      echo "$0: no destination specified." >&2-      exit 1-    fi-    dst=$dst_arg--    # If destination is a directory, append the input filename; won't work-    # if double slashes aren't ignored.-    if test -d "$dst"; then-      if test -n "$no_target_directory"; then-	echo "$0: $dst_arg: Is a directory" >&2-	exit 1-      fi-      dstdir=$dst-      dst=$dstdir/`basename "$src"`-      dstdir_status=0-    else-      # Prefer dirname, but fall back on a substitute if dirname fails.-      dstdir=`-	(dirname "$dst") 2>/dev/null ||-	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \-	     X"$dst" : 'X\(//\)[^/]' \| \-	     X"$dst" : 'X\(//\)$' \| \-	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||-	echo X"$dst" |-	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{-		   s//\1/-		   q-		 }-		 /^X\(\/\/\)[^/].*/{-		   s//\1/-		   q-		 }-		 /^X\(\/\/\)$/{-		   s//\1/-		   q-		 }-		 /^X\(\/\).*/{-		   s//\1/-		   q-		 }-		 s/.*/./; q'-      `--      test -d "$dstdir"-      dstdir_status=$?-    fi-  fi--  obsolete_mkdir_used=false--  if test $dstdir_status != 0; then-    case $posix_mkdir in-      '')-	# Create intermediate dirs using mode 755 as modified by the umask.-	# This is like FreeBSD 'install' as of 1997-10-28.-	umask=`umask`-	case $stripcmd.$umask in-	  # Optimize common cases.-	  *[2367][2367]) mkdir_umask=$umask;;-	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;--	  *[0-7])-	    mkdir_umask=`expr $umask + 22 \-	      - $umask % 100 % 40 + $umask % 20 \-	      - $umask % 10 % 4 + $umask % 2-	    `;;-	  *) mkdir_umask=$umask,go-w;;-	esac--	# With -d, create the new directory with the user-specified mode.-	# Otherwise, rely on $mkdir_umask.-	if test -n "$dir_arg"; then-	  mkdir_mode=-m$mode-	else-	  mkdir_mode=-	fi--	posix_mkdir=false-	case $umask in-	  *[123567][0-7][0-7])-	    # POSIX mkdir -p sets u+wx bits regardless of umask, which-	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.-	    ;;-	  *)-	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$-	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0--	    if (umask $mkdir_umask &&-		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1-	    then-	      if test -z "$dir_arg" || {-		   # Check for POSIX incompatibilities with -m.-		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or-		   # other-writable bit of parent directory when it shouldn't.-		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.-		   ls_ld_tmpdir=`ls -ld "$tmpdir"`-		   case $ls_ld_tmpdir in-		     d????-?r-*) different_mode=700;;-		     d????-?--*) different_mode=755;;-		     *) false;;-		   esac &&-		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {-		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`-		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"-		   }-		 }-	      then posix_mkdir=:-	      fi-	      rmdir "$tmpdir/d" "$tmpdir"-	    else-	      # Remove any dirs left behind by ancient mkdir implementations.-	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null-	    fi-	    trap '' 0;;-	esac;;-    esac--    if-      $posix_mkdir && (-	umask $mkdir_umask &&-	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"-      )-    then :-    else--      # The umask is ridiculous, or mkdir does not conform to POSIX,-      # or it failed possibly due to a race condition.  Create the-      # directory the slow way, step by step, checking for races as we go.--      case $dstdir in-	/*) prefix='/';;-	[-=\(\)!]*) prefix='./';;-	*)  prefix='';;-      esac--      eval "$initialize_posix_glob"--      oIFS=$IFS-      IFS=/-      $posix_glob set -f-      set fnord $dstdir-      shift-      $posix_glob set +f-      IFS=$oIFS--      prefixes=--      for d-      do-	test X"$d" = X && continue--	prefix=$prefix$d-	if test -d "$prefix"; then-	  prefixes=-	else-	  if $posix_mkdir; then-	    (umask=$mkdir_umask &&-	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break-	    # Don't fail if two instances are running concurrently.-	    test -d "$prefix" || exit 1-	  else-	    case $prefix in-	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;-	      *) qprefix=$prefix;;-	    esac-	    prefixes="$prefixes '$qprefix'"-	  fi-	fi-	prefix=$prefix/-      done--      if test -n "$prefixes"; then-	# Don't fail if two instances are running concurrently.-	(umask $mkdir_umask &&-	 eval "\$doit_exec \$mkdirprog $prefixes") ||-	  test -d "$dstdir" || exit 1-	obsolete_mkdir_used=true-      fi-    fi-  fi--  if test -n "$dir_arg"; then-    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&-    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||-      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1-  else--    # Make a couple of temp file names in the proper directory.-    dsttmp=$dstdir/_inst.$$_-    rmtmp=$dstdir/_rm.$$_--    # Trap to clean up those temp files at exit.-    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0--    # Copy the file name to the temp name.-    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&--    # and set any options; do chmod last to preserve setuid bits.-    #-    # If any of these fail, we abort the whole thing.  If we want to-    # ignore errors from any of these, just make sure not to ignore-    # errors from the above "$doit $cpprog $src $dsttmp" command.-    #-    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&-    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&-    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&--    # If -C, don't bother to copy if it wouldn't change the file.-    if $copy_on_change &&-       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&-       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&--       eval "$initialize_posix_glob" &&-       $posix_glob set -f &&-       set X $old && old=:$2:$4:$5:$6 &&-       set X $new && new=:$2:$4:$5:$6 &&-       $posix_glob set +f &&--       test "$old" = "$new" &&-       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1-    then-      rm -f "$dsttmp"-    else-      # Rename the file to the real destination.-      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||--      # The rename failed, perhaps because mv can't rename something else-      # to itself, or perhaps because mv is so ancient that it does not-      # support -f.-      {-	# Now remove or move aside any old file at destination location.-	# We try this two ways since rm can't unlink itself on some-	# systems and the destination file might be busy for other-	# reasons.  In this case, the final cleanup might fail but the new-	# file should still install successfully.-	{-	  test ! -f "$dst" ||-	  $doit $rmcmd -f "$dst" 2>/dev/null ||-	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&-	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }-	  } ||-	  { echo "$0: cannot unlink or rename $dst" >&2-	    (exit 1); exit 1-	  }-	} &&--	# Now rename the file to the real destination.-	$doit $mvcmd "$dsttmp" "$dst"-      }-    fi || exit 1--    trap '' 0-  fi-done--# Local variables:-# eval: (add-hook 'write-file-hooks 'time-stamp)-# time-stamp-start: "scriptversion="-# time-stamp-format: "%:y-%02m-%02d.%02H"-# time-stamp-time-zone: "UTC"-# time-stamp-end: "; # UTC"-# End:
− integer-gmp.buildinfo.in
@@ -1,5 +0,0 @@-include-dirs: @GMP_INCLUDE_DIRS@-extra-lib-dirs: @GMP_LIB_DIRS@-extra-libraries: @GMP_LIBS@-frameworks: @GMP_FRAMEWORK@-install-includes: HsIntegerGmp.h ghc-gmp.h
integer-gmp.cabal view
@@ -1,6 +1,6 @@ cabal-version:       2.0 name:                integer-gmp-version:             1.0.3.0+version:             1.1  synopsis:            Integer library based on GMP license:             BSD3@@ -8,74 +8,34 @@ author:              Herbert Valerio Riedel maintainer:          hvr@gnu.org category:            Numeric, Algebra-build-type:          Configure+build-type:          Simple++homepage:            https://www.haskell.org/ghc/+bug-reports:         https://gitlab.haskell.org/ghc/ghc/issues/new+ description:-    This package provides the low-level implementation of the standard-    'Integer' type based on the+    This package used to provide an implementation of the standard 'Integer'+    type based on the     <http://gmplib.org/ GNU Multiple Precision Arithmetic Library (GMP)>.     .-    This package provides access to the internal representation of-    'Integer' as well as primitive operations with no proper error-    handling, and should only be used directly with the utmost care.--extra-source-files:-    aclocal.m4-    cbits/wrappers.c-    changelog.md-    config.guess-    config.sub-    configure-    configure.ac-    config.mk.in-    include/HsIntegerGmp.h.in-    install-sh-    integer-gmp.buildinfo.in+    It is now deprecated in favor of the 'ghc-bignum' package.+    .+    Its purpose is to provide backward compatibility for codes directly+    depending on the `integer-gmp` package. --- NB: Many of these tmp files no longer ever actually get plopped in--- the root directory post Cabal 2.4, thanks to a change that causes--- autoconf/configure to get run inside the dist directory.-extra-tmp-files:-    autom4te.cache-    config.log-    config.status-    config.mk-    integer-gmp.buildinfo-    include/HsIntegerGmp.h+source-repository head+    type:     git+    location: https://gitlab.haskell.org/ghc/ghc.git+    subdir:   libraries/integer-gmp  library   default-language:    Haskell2010-  other-extensions:-    BangPatterns-    CApiFFI-    CPP-    DeriveDataTypeable-    ExplicitForAll-    GHCForeignImportPrim-    MagicHash-    NegativeLiterals-    NoImplicitPrelude-    RebindableSyntax-    StandaloneDeriving-    UnboxedTuples-    UnliftedFFITypes-  build-depends:       ghc-prim ^>= 0.6.1   hs-source-dirs:      src/-  -- We need to set the unit ID to integer-wired-in-  -- (without a version number) as it's magic.-  -- See Note [The integer library] in PrelNames-  ghc-options: -this-unit-id integer-wired-in -Wall-  cc-options: -std=c99 -Wall--  include-dirs: include-  c-sources:-    cbits/wrappers.c+  ghc-options:         -Wall+  build-depends:+      base >= 4.11 && < 5+    , ghc-prim+    , ghc-bignum    exposed-modules:-    GHC.Integer-    GHC.Integer.Logarithms-    GHC.Integer.Logarithms.Internals-     GHC.Integer.GMP.Internals--  other-modules:-    GHC.Integer.Type
− src/GHC/Integer.hs
@@ -1,75 +0,0 @@-{-# LANGUAGE CPP #-}-{-# LANGUAGE MagicHash #-}-{-# LANGUAGE NoImplicitPrelude #-}--#include "MachDeps.h"---- |--- Module      :  GHC.Integer.Type--- Copyright   :  (c) Herbert Valerio Riedel 2014--- License     :  BSD3------ Maintainer  :  ghc-devs@haskell.org--- Stability   :  provisional--- Portability :  non-portable (GHC Extensions)------ The 'Integer' type.------ This module exposes the /portable/ 'Integer' API.  See--- "GHC.Integer.GMP.Internals" for the @integer-gmp@-specific internal--- representation of 'Integer' as well as optimized GMP-specific--- operations.--module GHC.Integer (-    Integer,--    -- * Construct 'Integer's-    mkInteger, smallInteger, wordToInteger,-#if WORD_SIZE_IN_BITS < 64-    word64ToInteger, int64ToInteger,-#endif-    -- * Conversion to other integral types-    integerToWord, integerToInt,-#if WORD_SIZE_IN_BITS < 64-    integerToWord64, integerToInt64,-#endif--    -- * Helpers for 'RealFloat' type-class operations-    encodeFloatInteger, floatFromInteger,-    encodeDoubleInteger, decodeDoubleInteger, doubleFromInteger,--    -- * Arithmetic operations-    plusInteger, minusInteger, timesInteger, negateInteger,-    absInteger, signumInteger,--    divModInteger, divInteger, modInteger,-    quotRemInteger, quotInteger, remInteger,--    -- * Comparison predicates-    eqInteger,  neqInteger,  leInteger,  gtInteger,  ltInteger,  geInteger,-    compareInteger,--    -- ** 'Int#'-boolean valued versions of comparison predicates-    ---    -- | These operations return @0#@ and @1#@ instead of 'False' and-    -- 'True' respectively.  See-    -- <https://gitlab.haskell.org/ghc/ghc/wikis/prim-bool PrimBool wiki-page>-    -- for more details-    eqInteger#, neqInteger#, leInteger#, gtInteger#, ltInteger#, geInteger#,---    -- * Bit-operations-    andInteger, orInteger, xorInteger,--    complementInteger,-    shiftLInteger, shiftRInteger, testBitInteger,--    popCountInteger, bitInteger,--    -- * Hashing-    hashInteger,-    ) where--import GHC.Integer.Type--default ()
src/GHC/Integer/GMP/Internals.hs view
@@ -1,13 +1,11 @@ {-# LANGUAGE BangPatterns #-}-{-# LANGUAGE CApiFFI #-} {-# LANGUAGE MagicHash #-} {-# LANGUAGE UnboxedTuples #-}-{-# LANGUAGE UnliftedFFITypes #-}-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE GHCForeignImportPrim #-} {-# LANGUAGE CPP #-}-{-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE ViewPatterns #-}+{-# LANGUAGE BlockArguments #-}  #include "MachDeps.h" @@ -20,20 +18,9 @@ -- Stability   :  provisional -- Portability :  non-portable (GHC Extensions) ----- This modules provides access to the 'Integer' constructors and--- exposes some highly optimized GMP-operations.------ Note that since @integer-gmp@ does not depend on `base`, error--- reporting via exceptions, 'error', or 'undefined' is not--- available. Instead, the low-level functions will crash the runtime--- if called with invalid arguments.------ See also--- <https://gitlab.haskell.org/ghc/ghc/wikis/commentary/libraries/integer GHC Commentary: Libraries/Integer>.- module GHC.Integer.GMP.Internals     ( -- * The 'Integer' type-      Integer(..)+      Integer (S#,Jn#,Jp#)     , isValidInteger#        -- ** Basic 'Integer' operations@@ -46,7 +33,6 @@     , lcmInteger     , sqrInteger     , powModInteger-    , powModSecInteger     , recipModInteger        -- ** Additional conversion operations to 'Integer'@@ -66,7 +52,6 @@     , sizeofBigNat#     , zeroBigNat     , oneBigNat-    , nullBigNat        -- ** Conversions to/from 'BigNat' @@ -96,11 +81,6 @@     , gcdBigNat     , gcdBigNatWord -    , powModBigNat-    , powModBigNatWord--    , recipModBigNat-       -- ** 'BigNat' logic operations     , shiftRBigNat     , shiftLBigNat@@ -116,7 +96,6 @@        -- ** 'BigNat' comparison predicates     , isZeroBigNat-    , isNullBigNat#      , compareBigNatWord     , compareBigNat@@ -126,21 +105,6 @@     , eqBigNat#     , gtBigNatWord# -      -- * Miscellaneous GMP-provided operations-    , gcdInt-    , gcdWord-    , powModWord-    , recipModWord--      -- * Primality tests-    , testPrimeInteger-    , testPrimeBigNat-    , testPrimeWord#--    , nextPrimeInteger-    , nextPrimeBigNat-    , nextPrimeWord#-       -- * Import/export functions       -- ** Compute size of serialisation     , sizeInBaseBigNat@@ -150,14 +114,11 @@       -- ** Export     , exportBigNatToAddr     , exportIntegerToAddr-    , exportWordToAddr      , exportBigNatToMutableByteArray     , exportIntegerToMutableByteArray-    , exportWordToMutableByteArray        -- ** Import-     , importBigNatFromAddr     , importIntegerFromAddr @@ -165,200 +126,329 @@     , importIntegerFromByteArray     ) where -import GHC.Integer.Type import GHC.Integer-import GHC.Prim+import GHC.Natural+import GHC.Num.Integer (Integer(..))+import qualified GHC.Num.Integer as I+import qualified GHC.Num.BigNat as B+import qualified GHC.Num.Primitives as P import GHC.Types+import GHC.Prim+import GHC.Exts (runRW#)+import Control.Exception -default ()+{-# COMPLETE S#, Jp#, Jn# #-} +{-# DEPRECATED S# "Use IS constructor instead" #-}+pattern S# :: Int# -> Integer+pattern S# i = IS i --- | Compute number of digits (without sign) in given @/base/@.------ This function wraps @mpz_sizeinbase()@ which has some--- implementation pecularities to take into account:------ * \"@'sizeInBaseInteger' 0 /base/ = 1@\"---   (see also comment in 'exportIntegerToMutableByteArray').------ * This function is only defined if @/base/ >= 2#@ and @/base/ <= 256#@---   (Note: the documentation claims that only @/base/ <= 62#@ is---   supported, however the actual implementation supports up to base 256).------ * If @/base/@ is a power of 2, the result will be exact. In other---   cases (e.g. for @/base/ = 10#@), the result /may/ be 1 digit too large---   sometimes.------ * \"@'sizeInBaseInteger' /i/ 2#@\" can be used to determine the most---   significant bit of @/i/@.------ @since 0.5.1.0-sizeInBaseInteger :: Integer -> Int# -> Word#-sizeInBaseInteger (S# i#)  = sizeInBaseWord# (int2Word# (absI# i#))-sizeInBaseInteger (Jp# bn) = sizeInBaseBigNat bn-sizeInBaseInteger (Jn# bn) = sizeInBaseBigNat bn+fromBN# :: BigNat -> ByteArray#+fromBN# (BN# x) = x --- | Version of 'sizeInBaseInteger' operating on 'BigNat'------ @since 1.0.0.0-sizeInBaseBigNat :: BigNat -> Int# -> Word#-sizeInBaseBigNat bn@(BN# ba#) = c_mpn_sizeinbase# ba# (sizeofBigNat# bn)+fromIP :: Integer -> (# () | BigNat #)+fromIP (IP x) = (# | BN# x #)+fromIP _      = (# () | #) -foreign import ccall unsafe "integer_gmp_mpn_sizeinbase"-  c_mpn_sizeinbase# :: ByteArray# -> GmpSize# -> Int# -> Word#+fromIN :: Integer -> (# () | BigNat #)+fromIN (IN x) = (# | BN# x #)+fromIN _      = (# () | #) --- | Version of 'sizeInBaseInteger' operating on 'Word#'------ @since 1.0.0.0-foreign import ccall unsafe "integer_gmp_mpn_sizeinbase1"-  sizeInBaseWord# :: Word# -> Int# -> Word#+{-# DEPRECATED Jp# "Use IP constructor instead" #-}+pattern Jp# :: BigNat -> Integer+pattern Jp# i <- (fromIP -> (# | i #))+   where+      Jp# i = IP (fromBN# i) --- | Dump 'Integer' (without sign) to @/addr/@ in base-256 representation.------ @'exportIntegerToAddr' /i/ /addr/ /e/@------ See description of 'exportIntegerToMutableByteArray' for more details.------ @since 1.0.0.0-exportIntegerToAddr :: Integer -> Addr# -> Int# -> IO Word-exportIntegerToAddr (S# i#)  = exportWordToAddr (W# (int2Word# (absI# i#)))-exportIntegerToAddr (Jp# bn) = exportBigNatToAddr bn-exportIntegerToAddr (Jn# bn) = exportBigNatToAddr bn+{-# DEPRECATED Jn# "Use IN constructor instead" #-}+pattern Jn# :: BigNat -> Integer+pattern Jn# i <- (fromIN -> (# | i #))+   where+      Jn# i = IN (fromBN# i) --- | Version of 'exportIntegerToAddr' operating on 'BigNat's.-exportBigNatToAddr :: BigNat -> Addr# -> Int# -> IO Word-exportBigNatToAddr bn@(BN# ba#) addr e-  = c_mpn_exportToAddr# ba# (sizeofBigNat# bn) addr 0# e+{-# DEPRECATED isValidInteger# "Use integerCheck# instead" #-}+isValidInteger# :: Integer -> Int#+isValidInteger# = I.integerCheck# -foreign import ccall unsafe "integer_gmp_mpn_export"-  c_mpn_exportToAddr# :: ByteArray# -> GmpSize# -> Addr# -> Int# -> Int#-                         -> IO Word+{-# DEPRECATED gcdInteger "Use integerGcd instead" #-}+gcdInteger :: Integer -> Integer -> Integer+gcdInteger = I.integerGcd --- | Version of 'exportIntegerToAddr' operating on 'Word's.-exportWordToAddr :: Word -> Addr# -> Int# -> IO Word-exportWordToAddr (W# w#) addr-  = c_mpn_export1ToAddr# w# addr 0# -- TODO: we don't calling GMP for that+{-# DEPRECATED gcdExtInteger "Use integerGcde instead" #-}+gcdExtInteger :: Integer -> Integer -> (# Integer, Integer #)+gcdExtInteger a b = case I.integerGcde# a b of+   (# g, s, _t #) -> (# g, s #) -foreign import ccall unsafe "integer_gmp_mpn_export1"-  c_mpn_export1ToAddr# :: GmpLimb# -> Addr# -> Int# -> Int#-                          -> IO Word --- | Dump 'Integer' (without sign) to mutable byte-array in base-256--- representation.------ The call------ @'exportIntegerToMutableByteArray' /i/ /mba/ /offset/ /msbf/@------ writes------ * the 'Integer' @/i/@------ * into the 'MutableByteArray#' @/mba/@ starting at @/offset/@------ * with most significant byte first if @msbf@ is @1#@ or least---   significant byte first if @msbf@ is @0#@, and------ * returns number of bytes written.------ Use \"@'sizeInBaseInteger' /i/ 256#@\" to compute the exact number of--- bytes written in advance for @/i/ /= 0@. In case of @/i/ == 0@,--- 'exportIntegerToMutableByteArray' will write and report zero bytes--- written, whereas 'sizeInBaseInteger' report one byte.------ It's recommended to avoid calling 'exportIntegerToMutableByteArray' for small--- integers as this function would currently convert those to big--- integers in msbf to call @mpz_export()@.------ @since 1.0.0.0-exportIntegerToMutableByteArray :: Integer -> MutableByteArray# RealWorld-                                -> Word# -> Int# -> IO Word-exportIntegerToMutableByteArray (S# i#)-    = exportWordToMutableByteArray (W# (int2Word# (absI# i#)))-exportIntegerToMutableByteArray (Jp# bn) = exportBigNatToMutableByteArray bn-exportIntegerToMutableByteArray (Jn# bn) = exportBigNatToMutableByteArray bn+{-# DEPRECATED lcmInteger "Use integerLcm instead" #-}+lcmInteger :: Integer -> Integer -> Integer+lcmInteger = I.integerLcm --- | Version of 'exportIntegerToMutableByteArray' operating on 'BigNat's.------ @since 1.0.0.0-exportBigNatToMutableByteArray :: BigNat -> MutableByteArray# RealWorld -> Word#-                               -> Int# -> IO Word-exportBigNatToMutableByteArray bn@(BN# ba#)-  = c_mpn_exportToMutableByteArray# ba# (sizeofBigNat# bn)+{-# DEPRECATED sqrInteger "Use integerSqr instead" #-}+sqrInteger :: Integer -> Integer+sqrInteger = I.integerSqr -foreign import ccall unsafe "integer_gmp_mpn_export"-  c_mpn_exportToMutableByteArray# :: ByteArray# -> GmpSize#-                                  -> MutableByteArray# RealWorld -> Word#-                                  -> Int# -> IO Word+{-# DEPRECATED recipModInteger "Use integerRecipMod# instead" #-}+recipModInteger :: Integer -> Integer -> Integer+recipModInteger x m = case I.integerRecipMod# x (I.integerToNatural m) of+   (# y |    #) -> I.integerFromNatural y+   (#   | () #) -> 0 --- | Version of 'exportIntegerToMutableByteArray' operating on 'Word's.------ @since 1.0.0.0-exportWordToMutableByteArray :: Word -> MutableByteArray# RealWorld -> Word#-                             -> Int# -> IO Word-exportWordToMutableByteArray (W# w#) = c_mpn_export1ToMutableByteArray# w#+{-# DEPRECATED powModInteger "Use integerPowMod# instead" #-}+powModInteger :: Integer -> Integer -> Integer -> Integer+powModInteger b e m = case I.integerPowMod# b e (I.integerToNatural m) of+   (# r  | #) -> I.integerFromNatural r+   (# | () #) -> 0 -foreign import ccall unsafe "integer_gmp_mpn_export1"-  c_mpn_export1ToMutableByteArray# :: GmpLimb# -> MutableByteArray# RealWorld-                                   -> Word# -> Int# -> IO Word+{-# DEPRECATED wordToNegInteger "Use integerFromWordNeg# instead" #-}+wordToNegInteger :: Word# -> Integer+wordToNegInteger = I.integerFromWordNeg# +{-# DEPRECATED bigNatToInteger "Use integerFromBigNat# instead" #-}+bigNatToInteger :: BigNat -> Integer+bigNatToInteger (BN# i) = I.integerFromBigNat# i --- | Probalistic Miller-Rabin primality test.------ \"@'testPrimeInteger' /n/ /k/@\" determines whether @/n/@ is prime--- and returns one of the following results:------ * @2#@ is returned if @/n/@ is definitely prime,------ * @1#@ if @/n/@ is a /probable prime/, or------ * @0#@ if @/n/@ is definitely not a prime.------ The @/k/@ argument controls how many test rounds are performed for--- determining a /probable prime/. For more details, see--- <http://gmplib.org/manual/Number-Theoretic-Functions.html#index-mpz_005fprobab_005fprime_005fp-360 GMP documentation for `mpz_probab_prime_p()`>.------ @since 0.5.1.0-{-# NOINLINE testPrimeInteger #-}-testPrimeInteger :: Integer -> Int# -> Int#-testPrimeInteger (S# i#) = testPrimeWord# (int2Word# (absI# i#))-testPrimeInteger (Jp# n) = testPrimeBigNat n-testPrimeInteger (Jn# n) = testPrimeBigNat n+{-# DEPRECATED bigNatToNegInteger "Use integerFromBigNatNeg# instead" #-}+bigNatToNegInteger :: BigNat -> Integer+bigNatToNegInteger (BN# i) = I.integerFromBigNatNeg# i --- | Version of 'testPrimeInteger' operating on 'BigNat's------ @since 1.0.0.0-testPrimeBigNat :: BigNat -> Int# -> Int#-testPrimeBigNat bn@(BN# ba#) = c_integer_gmp_test_prime# ba# (sizeofBigNat# bn)+type GmpLimb = Word+type GmpLimb# = Word#+type GmpSize = Int+type GmpSize# = Int# -foreign import ccall unsafe "integer_gmp_test_prime"-  c_integer_gmp_test_prime# :: ByteArray# -> GmpSize# -> Int# -> Int#+{-# DEPRECATED sizeofBigNat# "Use bigNatSize# instead" #-}+sizeofBigNat# :: BigNat -> GmpSize#+sizeofBigNat# (BN# i) = B.bigNatSize# i --- | Version of 'testPrimeInteger' operating on 'Word#'s------ @since 1.0.0.0-foreign import ccall unsafe "integer_gmp_test_prime1"-  testPrimeWord# :: GmpLimb# -> Int# -> Int#+{-# DEPRECATED isValidBigNat# "Use bigNatCheck# instead" #-}+isValidBigNat# :: BigNat -> Int#+isValidBigNat# (BN# i) = B.bigNatCheck# i +{-# DEPRECATED zeroBigNat "Use bigNatZero instead" #-}+zeroBigNat :: BigNat+zeroBigNat = B.bigNatZero --- | Compute next prime greater than @/n/@ probalistically.------ According to the GMP documentation, the underlying function--- @mpz_nextprime()@ \"uses a probabilistic algorithm to identify--- primes. For practical purposes it's adequate, the chance of a--- composite passing will be extremely small.\"------ @since 0.5.1.0-{-# NOINLINE nextPrimeInteger #-}-nextPrimeInteger :: Integer -> Integer-nextPrimeInteger (S# i#)-  | isTrue# (i# ># 1#)    = wordToInteger (nextPrimeWord# (int2Word# i#))-  | True                  = S# 2#-nextPrimeInteger (Jp# bn) = Jp# (nextPrimeBigNat bn)-nextPrimeInteger (Jn# _)  = S# 2#+{-# DEPRECATED oneBigNat "Use bigNatOne instead" #-}+oneBigNat :: BigNat+oneBigNat = B.bigNatOne --- | Version of 'nextPrimeInteger' operating on 'Word#'s------ @since 1.0.0.0-foreign import ccall unsafe "integer_gmp_next_prime1"-  nextPrimeWord# :: GmpLimb# -> GmpLimb#+{-# DEPRECATED plusBigNat "Use bigNatAdd instead" #-}+plusBigNat :: BigNat -> BigNat -> BigNat+plusBigNat (BN# a) (BN# b) = BN# (B.bigNatAdd a b)++{-# DEPRECATED plusBigNatWord "Use bigNatAddWord# instead" #-}+plusBigNatWord :: BigNat -> GmpLimb# -> BigNat+plusBigNatWord (BN# a) w = BN# (B.bigNatAddWord# a w)++{-# DEPRECATED minusBigNat "Use bigNatSub instead" #-}+minusBigNat :: BigNat -> BigNat -> BigNat+minusBigNat (BN# a) (BN# b) = case B.bigNatSub a b of+   (# (# #) | #)   -> throw Underflow+   (#       | r #) -> BN# r++{-# DEPRECATED minusBigNatWord "Use bigNatSubWord# instead" #-}+minusBigNatWord :: BigNat -> GmpLimb# -> BigNat+minusBigNatWord (BN# a) b = case B.bigNatSubWord# a b of+   (# (# #) | #)   -> throw Underflow+   (#       | r #) -> BN# r+++{-# DEPRECATED timesBigNat "Use bigNatMul instead" #-}+timesBigNat :: BigNat -> BigNat -> BigNat+timesBigNat (BN# a) (BN# b) = BN# (B.bigNatMul a b)++{-# DEPRECATED timesBigNatWord "Use bigNatMulWord# instead" #-}+timesBigNatWord :: BigNat -> GmpLimb# -> BigNat+timesBigNatWord (BN# a) w = BN# (B.bigNatMulWord# a w)++{-# DEPRECATED sqrBigNat "Use bigNatSqr instead" #-}+sqrBigNat :: BigNat -> BigNat+sqrBigNat (BN# a) = BN# (B.bigNatSqr a)++{-# DEPRECATED quotRemBigNat "Use bigNatQuotRem# instead" #-}+quotRemBigNat :: BigNat -> BigNat -> (# BigNat,BigNat #)+quotRemBigNat (BN# a) (BN# b) = case B.bigNatQuotRem# a b of+   (# q, r #) -> (# BN# q, BN# r #)++{-# DEPRECATED quotRemBigNatWord "Use bigNatQuotRemWord# instead" #-}+quotRemBigNatWord :: BigNat -> GmpLimb# -> (# BigNat, GmpLimb# #)+quotRemBigNatWord (BN# a) b = case B.bigNatQuotRemWord# a b of+   (# q, r #) -> (# BN# q, r #)++{-# DEPRECATED quotBigNat "Use bigNatQuot instead" #-}+quotBigNat :: BigNat -> BigNat -> BigNat+quotBigNat (BN# a) (BN# b) = BN# (B.bigNatQuot a b)++{-# DEPRECATED quotBigNatWord "Use bigNatQuotWord# instead" #-}+quotBigNatWord :: BigNat -> GmpLimb# -> BigNat+quotBigNatWord (BN# a) b = BN# (B.bigNatQuotWord# a b)++{-# DEPRECATED remBigNat "Use bigNatRem instead" #-}+remBigNat :: BigNat -> BigNat -> BigNat+remBigNat (BN# a) (BN# b) = BN# (B.bigNatRem a b)++{-# DEPRECATED remBigNatWord "Use bigNatRemWord# instead" #-}+remBigNatWord :: BigNat -> GmpLimb# -> Word#+remBigNatWord (BN# a) b = B.bigNatRemWord# a b++{-# DEPRECATED gcdBigNatWord "Use bigNatGcdWord# instead" #-}+gcdBigNatWord :: BigNat -> Word# -> Word#+gcdBigNatWord (BN# a) b = B.bigNatGcdWord# a b++{-# DEPRECATED gcdBigNat "Use bigNatGcd instead" #-}+gcdBigNat:: BigNat -> BigNat -> BigNat+gcdBigNat (BN# a) (BN# b) = BN# (B.bigNatGcd a b)++{-# DEPRECATED shiftRBigNat "Use bigNatShiftR# instead" #-}+shiftRBigNat :: BigNat -> Int# -> BigNat+shiftRBigNat (BN# a) i = BN# (B.bigNatShiftR# a (int2Word# i))++{-# DEPRECATED shiftLBigNat "Use bigNatShiftL# instead" #-}+shiftLBigNat :: BigNat -> Int# -> BigNat+shiftLBigNat (BN# a) i = BN# (B.bigNatShiftL# a (int2Word# i))++{-# DEPRECATED testBitBigNat "Use bigNatTestBit# instead" #-}+testBitBigNat :: BigNat -> Int# -> Bool+testBitBigNat (BN# a) i = isTrue# (B.bigNatTestBit# a (int2Word# i))++{-# DEPRECATED clearBitBigNat "Use bigNatClearBit# instead" #-}+clearBitBigNat :: BigNat -> Int# -> BigNat+clearBitBigNat (BN# a) i = BN# (B.bigNatClearBit# a (int2Word# i))++{-# DEPRECATED complementBitBigNat "Use bigNatComplementBit# instead" #-}+complementBitBigNat :: BigNat -> Int# -> BigNat+complementBitBigNat (BN# a) i = BN# (B.bigNatComplementBit# a (int2Word# i))++{-# DEPRECATED setBitBigNat "Use bigNatSetBit# instead" #-}+setBitBigNat :: BigNat -> Int# -> BigNat+setBitBigNat (BN# a) i = BN# (B.bigNatSetBit# a (int2Word# i))++{-# DEPRECATED andBigNat "Use bigNatAnd instead" #-}+andBigNat :: BigNat -> BigNat -> BigNat+andBigNat (BN# a) (BN# b) = BN# (B.bigNatAnd a b)++{-# DEPRECATED orBigNat "Use bigNatOr instead" #-}+orBigNat :: BigNat -> BigNat -> BigNat+orBigNat (BN# a) (BN# b) = BN# (B.bigNatOr a b)++{-# DEPRECATED xorBigNat "Use bigNatXor instead" #-}+xorBigNat :: BigNat -> BigNat -> BigNat+xorBigNat (BN# a) (BN# b) = BN# (B.bigNatXor a b)++{-# DEPRECATED popCountBigNat "Use bigNatPopCount# instead" #-}+popCountBigNat :: BigNat -> Int#+popCountBigNat (BN# a) = word2Int# (B.bigNatPopCount# a)++{-# DEPRECATED bitBigNat "Use bigNatBit# instead" #-}+bitBigNat :: Int# -> BigNat+bitBigNat i = BN# (B.bigNatBit# (int2Word# i))++{-# DEPRECATED isZeroBigNat "Use bigNatIsZero instead" #-}+isZeroBigNat :: BigNat -> Bool+isZeroBigNat (BN# a) = B.bigNatIsZero a++{-# DEPRECATED compareBigNat "Use bigNatCompare instead" #-}+compareBigNat :: BigNat -> BigNat -> Ordering+compareBigNat (BN# a) (BN# b) = B.bigNatCompare a b++{-# DEPRECATED compareBigNatWord "Use bigNatCompareWord# instead" #-}+compareBigNatWord :: BigNat -> GmpLimb# -> Ordering+compareBigNatWord (BN# a) w = B.bigNatCompareWord# a w++{-# DEPRECATED eqBigNatWord "Use bigNatEqWord# instead" #-}+eqBigNatWord :: BigNat -> GmpLimb# -> Bool+eqBigNatWord (BN# a) w = isTrue# (B.bigNatEqWord# a w)++{-# DEPRECATED eqBigNatWord# "Use bigNatEqWord# instead" #-}+eqBigNatWord# :: BigNat -> GmpLimb# -> Int#+eqBigNatWord# (BN# a) w = B.bigNatEqWord# a w++{-# DEPRECATED eqBigNat# "Use bigNatEq# instead" #-}+eqBigNat# :: BigNat -> BigNat -> Int#+eqBigNat# (BN# a) (BN# b) = B.bigNatEq# a b++{-# DEPRECATED eqBigNat "Use bigNatEq instead" #-}+eqBigNat :: BigNat -> BigNat -> Bool+eqBigNat (BN# a) (BN# b) = B.bigNatEq a b++{-# DEPRECATED gtBigNatWord# "Use bigNatGtWord# instead" #-}+gtBigNatWord# :: BigNat -> GmpLimb# -> Int#+gtBigNatWord# (BN# a) w = B.bigNatGtWord# a w++{-# DEPRECATED sizeInBaseBigNat "Use bigNatSizeInBase# instead" #-}+sizeInBaseBigNat :: BigNat -> Int# -> Word#+sizeInBaseBigNat (BN# a) b = B.bigNatSizeInBase# (int2Word# b) a++{-# DEPRECATED sizeInBaseInteger "Use integerSizeInBase# instead" #-}+sizeInBaseInteger :: Integer -> Int# -> Word#+sizeInBaseInteger i b = I.integerSizeInBase# (int2Word# b) i++{-# DEPRECATED sizeInBaseWord# "Use wordSizeInBase# instead" #-}+sizeInBaseWord# :: Word# -> Int# -> Word#+sizeInBaseWord# a b = P.wordSizeInBase# (int2Word# b) a++{-# DEPRECATED importBigNatFromAddr "Use bigNatFromAddr# instead" #-}+importBigNatFromAddr :: Addr# -> Word# -> Int# -> IO BigNat+importBigNatFromAddr addr sz endian = IO \s ->+   case B.bigNatFromAddr# sz addr endian s of+      (# s', b #) -> (# s', BN# b #)++{-# DEPRECATED exportBigNatToAddr "Use bigNatToAddr# instead" #-}+exportBigNatToAddr :: BigNat -> Addr# -> Int# -> IO Word+exportBigNatToAddr (BN# b) addr endian = IO \s ->+   case B.bigNatToAddr# b addr endian s of+      (# s', w #) -> (# s', W# w #)++{-# DEPRECATED importIntegerFromAddr "Use integerFromAddr# instead" #-}+importIntegerFromAddr :: Addr# -> Word# -> Int# -> IO Integer+importIntegerFromAddr addr sz endian = IO \s ->+   case I.integerFromAddr# sz addr endian s of+      (# s', i #) -> (# s', i #)++{-# DEPRECATED exportIntegerToAddr "Use integerToAddr# instead" #-}+exportIntegerToAddr :: Integer -> Addr# -> Int# -> IO Word+exportIntegerToAddr i addr endian = IO \s ->+   case I.integerToAddr# i addr endian s of+      (# s', w #) -> (# s', W# w #)++wordToBigNat :: Word# -> BigNat+wordToBigNat w = BN# (B.bigNatFromWord# w)++wordToBigNat2 :: Word# -> Word# -> BigNat+wordToBigNat2 h l = BN# (B.bigNatFromWord2# h l)++bigNatToInt :: BigNat -> Int#+bigNatToInt (BN# b) = B.bigNatToInt# b++bigNatToWord :: BigNat -> Word#+bigNatToWord (BN# b) = B.bigNatToWord# b++{-# DEPRECATED indexBigNat# "Use bigNatIndex# instead" #-}+indexBigNat# :: BigNat -> GmpSize# -> GmpLimb#+indexBigNat# (BN# b) i = B.bigNatIndex# b i++{-# DEPRECATED importBigNatFromByteArray "Use bigNatFromByteArray# instead" #-}+importBigNatFromByteArray :: ByteArray# -> Word# -> Word# -> Int# -> BigNat+importBigNatFromByteArray ba off sz endian = case runRW# (B.bigNatFromByteArray# sz ba off endian) of+   (# _, r #) -> BN# r++{-# DEPRECATED exportBigNatToMutableByteArray "Use bigNatToMutableByteArray# instead" #-}+exportBigNatToMutableByteArray :: BigNat -> MutableByteArray# RealWorld -> Word# -> Int# -> IO Word+exportBigNatToMutableByteArray (BN# ba) mba off endian = IO (\s -> case B.bigNatToMutableByteArray# ba mba off endian s of+   (# s', r #) -> (# s', W# r #))++{-# DEPRECATED importIntegerFromByteArray "Use integerFromByteArray# instead" #-}+importIntegerFromByteArray :: ByteArray# -> Word# -> Word# -> Int# -> Integer+importIntegerFromByteArray ba off sz endian = case runRW# (I.integerFromByteArray# sz ba off endian) of+   (# _, r #) -> r++{-# DEPRECATED exportIntegerToMutableByteArray "Use integerToMutableByteArray# instead" #-}+exportIntegerToMutableByteArray :: Integer -> MutableByteArray# RealWorld -> Word# -> Int# -> IO Word+exportIntegerToMutableByteArray i mba off endian = IO (\s -> case I.integerToMutableByteArray# i mba off endian s of+   (# s', r #) -> (# s', W# r #))+++{-# DEPRECATED byteArrayToBigNat# "Use bigNatFromWordArray instead" #-}+byteArrayToBigNat# :: ByteArray# -> GmpSize# -> BigNat+byteArrayToBigNat# ba n = B.bigNatFromWordArray ba (int2Word# n)
− src/GHC/Integer/Logarithms.hs
@@ -1,74 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE MagicHash #-}-{-# LANGUAGE UnboxedTuples #-}-{-# LANGUAGE UnliftedFFITypes #-}-{-# LANGUAGE CPP #-}-{-# LANGUAGE BangPatterns #-}--module GHC.Integer.Logarithms-    ( wordLog2#-    , integerLog2#-    , integerLogBase#-    ) where--#include "MachDeps.h"--#if WORD_SIZE_IN_BITS == 32-# define LD_WORD_SIZE_IN_BITS 5-#elif WORD_SIZE_IN_BITS == 64-# define LD_WORD_SIZE_IN_BITS 6-#else-# error unsupported WORD_SIZE_IN_BITS-#endif--import GHC.Integer.Type--import GHC.Prim--default ()---- | Calculate the integer logarithm for an arbitrary base.------ The base must be greater than @1@, the second argument, the number--- whose logarithm is sought, shall be positive, otherwise the--- result is meaningless.------ The following property holds------ @base ^ 'integerLogBase#' base m <= m < base ^('integerLogBase#' base m + 1)@------ for @base > 1@ and @m > 0@.------ Note: Internally uses 'integerLog2#' for base 2-integerLogBase# :: Integer -> Integer -> Int#-integerLogBase# (S# 2#) m = integerLog2# m-integerLogBase# b m = e'-  where-    !(# _, e' #) = go b--    go pw | m `ltInteger` pw = (# m, 0# #)-    go pw = case go (sqrInteger pw) of-              (# q, e #) | q `ltInteger` pw -> (# q, 2# *# e #)-              (# q, e #) -> (# q `quotInteger` pw, 2# *# e +# 1# #)----- | Calculate the integer base 2 logarithm of an 'Integer'.  The--- calculation is more efficient than for the general case, on--- platforms with 32- or 64-bit words much more efficient.------ The argument must be strictly positive, that condition is /not/ checked.-integerLog2# :: Integer -> Int#-integerLog2# (S# i#) = wordLog2# (int2Word# i#)-integerLog2# (Jn#  _) = -1#-integerLog2# (Jp# bn) = go (s -# 1#)-  where-    s = sizeofBigNat# bn-    go i = case indexBigNat# bn i of-               0## -> go (i -# 1#)-               w   -> wordLog2# w +# (uncheckedIShiftL# i LD_WORD_SIZE_IN_BITS#)---- | Compute base-2 log of 'Word#'------ This is internally implemented as count-leading-zeros machine instruction.-wordLog2# :: Word# -> Int#-wordLog2# w# = (WORD_SIZE_IN_BITS# -# 1#) -# (word2Int# (clz# w#))
− src/GHC/Integer/Logarithms/Internals.hs
@@ -1,118 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE MagicHash #-}-{-# LANGUAGE UnboxedTuples #-}-{-# LANGUAGE CPP #-}--{-# OPTIONS_HADDOCK not-home #-}--#include "MachDeps.h"--#if WORD_SIZE_IN_BITS == 32-# define WSHIFT 5-# define MMASK 31-#elif WORD_SIZE_IN_BITS == 64-# define WSHIFT 6-# define MMASK 63-#else-# error unsupported WORD_SIZE_IN_BITS-#endif---- | Fast 'Integer' logarithms to base 2.  'integerLog2#' and--- 'wordLog2#' are of general usefulness, the others are only needed--- for a fast implementation of 'fromRational'.  Since they are needed--- in "GHC.Float", we must expose this module, but it should not show--- up in the docs.------ See https://gitlab.haskell.org/ghc/ghc/issues/5122--- for the origin of the code in this module-module GHC.Integer.Logarithms.Internals-    ( wordLog2#-    , integerLog2IsPowerOf2#-    , integerLog2#-    , roundingMode#-    ) where--import GHC.Integer.Type-import GHC.Integer.Logarithms--import GHC.Types-import GHC.Prim--default ()---- | Extended version of 'integerLog2#'------ Assumption: Integer is strictly positive------ First component of result is @log2 n@, second is @0#@ iff /n/ is a--- power of two.-integerLog2IsPowerOf2# :: Integer -> (# Int#, Int# #)--- The power of 2 test is n&(n-1) == 0, thus powers of 2--- are indicated bythe second component being zero.-integerLog2IsPowerOf2# (S# i#) = case int2Word# i# of-      w -> (# wordLog2# w, word2Int# (w `and#` (w `minusWord#` 1##)) #)-integerLog2IsPowerOf2# (Jn# _) = (# -1#, -1# #)--- Find the log2 as above, test whether that word is a power--- of 2, if so, check whether only zero bits follow.-integerLog2IsPowerOf2# (Jp# bn) = check (s -# 1#)-  where-    s = sizeofBigNat# bn-    check :: Int# -> (# Int#, Int# #)-    check i = case indexBigNat# bn i of-                0## -> check (i -# 1#)-                w   -> (# wordLog2# w +# (uncheckedIShiftL# i WSHIFT#)-                        , case w `and#` (w `minusWord#` 1##) of-                            0## -> test (i -# 1#)-                            _   -> 1# #)-    test :: Int# -> Int#-    test i = if isTrue# (i <# 0#)-                then 0#-                else case indexBigNat# bn i of-                        0## -> test (i -# 1#)-                        _   -> 1#----- Assumption: Integer and Int# are strictly positive, Int# is less--- than logBase 2 of Integer, otherwise havoc ensues.--- Used only for the numerator in fromRational when the denominator--- is a power of 2.--- The Int# argument is log2 n minus the number of bits in the mantissa--- of the target type, i.e. the index of the first non-integral bit in--- the quotient.------ 0# means round down (towards zero)--- 1# means we have a half-integer, round to even--- 2# means round up (away from zero)-roundingMode# :: Integer -> Int# -> Int#-roundingMode# (S# i#) t =-    case int2Word# i# `and#` ((uncheckedShiftL# 2## t) `minusWord#` 1##) of-      k -> case uncheckedShiftL# 1## t of-            c -> if isTrue# (c `gtWord#` k)-                    then 0#-                    else if isTrue# (c `ltWord#` k)-                            then 2#-                            else 1#--roundingMode# (Jn# bn) t = roundingMode# (Jp# bn) t -- dummy-roundingMode# (Jp# bn) t =-    case word2Int# (int2Word# t `and#` MMASK##) of-      j ->      -- index of relevant bit in word-        case uncheckedIShiftRA# t WSHIFT# of-          k ->  -- index of relevant word-            case indexBigNat# bn k `and#`-                    ((uncheckedShiftL# 2## j) `minusWord#` 1##) of-              r ->-                case uncheckedShiftL# 1## j of-                  c -> if isTrue# (c `gtWord#` r)-                        then 0#-                        else if isTrue# (c `ltWord#` r)---                                then 2#-                                else test (k -# 1#)-  where-    test i = if isTrue# (i <# 0#)-                then 1#-                else case indexBigNat# bn i of-                        0## -> test (i -# 1#)-                        _   -> 2#
− src/GHC/Integer/Type.hs
@@ -1,2187 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE BangPatterns #-}-{-# LANGUAGE CPP #-}-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE GHCForeignImportPrim #-}-{-# LANGUAGE MagicHash #-}-{-# LANGUAGE UnboxedTuples #-}-{-# LANGUAGE UnliftedFFITypes #-}-{-# LANGUAGE RebindableSyntax #-}-{-# LANGUAGE NegativeLiterals #-}-{-# LANGUAGE ExplicitForAll #-}---- |--- Module      :  GHC.Integer.Type--- Copyright   :  (c) Herbert Valerio Riedel 2014--- License     :  BSD3------ Maintainer  :  ghc-devs@haskell.org--- Stability   :  provisional--- Portability :  non-portable (GHC Extensions)------ GHC needs this module to be named "GHC.Integer.Type" and provide--- all the low-level 'Integer' operations.--module GHC.Integer.Type where--#include "MachDeps.h"-#include "HsIntegerGmp.h"---- Sanity check as CPP defines are implicitly 0-valued when undefined-#if !(defined(SIZEOF_LONG) && defined(SIZEOF_HSWORD) \-           && defined(WORD_SIZE_IN_BITS))-# error missing defines-#endif--import GHC.Classes-import GHC.Magic-import GHC.Prim-import GHC.Types-#if WORD_SIZE_IN_BITS < 64-import GHC.IntWord64-#endif--default ()---- Most high-level operations need to be marked `NOINLINE` as--- otherwise GHC doesn't recognize them and fails to apply constant--- folding to `Integer`-typed expression.------ To this end, the CPP hack below allows to write the pseudo-pragma------   {-# CONSTANT_FOLDED plusInteger #-}------ which is simply expaned into a------   {-# NOINLINE plusInteger #-}----#define CONSTANT_FOLDED NOINLINE--------------------------------------------------------------------------------- type definitions---- NB: all code assumes GMP_LIMB_BITS == WORD_SIZE_IN_BITS--- The C99 code in cbits/wrappers.c will fail to compile if this doesn't hold---- | Type representing a GMP Limb-type GmpLimb = Word -- actually, 'CULong'-type GmpLimb# = Word#---- | Count of 'GmpLimb's, must be positive (unless specified otherwise).-type GmpSize = Int  -- actually, a 'CLong'-type GmpSize# = Int#--narrowGmpSize# :: Int# -> Int#-#if SIZEOF_LONG == SIZEOF_HSWORD-narrowGmpSize# x = x-#elif (SIZEOF_LONG == 4) && (SIZEOF_HSWORD == 8)--- On IL32P64 (i.e. Win64), we have to be careful with CLong not being--- 64bit.  This is mostly an issue on values returned from C functions--- due to sign-extension.-narrowGmpSize# = narrow32Int#-#endif---type GmpBitCnt = Word -- actually, 'CULong'-type GmpBitCnt# = Word# -- actually, 'CULong'---- Pseudo FFI CType-type CInt = Int-type CInt# = Int#--narrowCInt# :: Int# -> Int#-narrowCInt# = narrow32Int#---- | Bits in a 'GmpLimb'. Same as @WORD_SIZE_IN_BITS@.-gmpLimbBits :: Word -- 8 `shiftL` gmpLimbShift-gmpLimbBits = W# WORD_SIZE_IN_BITS##--#if WORD_SIZE_IN_BITS == 64-# define GMP_LIMB_SHIFT   3-# define GMP_LIMB_BYTES   8-# define GMP_LIMB_BITS    64-# define INT_MINBOUND     -0x8000000000000000-# define INT_MAXBOUND      0x7fffffffffffffff-# define ABS_INT_MINBOUND  0x8000000000000000-# define SQRT_INT_MAXBOUND 0xb504f333-#elif WORD_SIZE_IN_BITS == 32-# define GMP_LIMB_SHIFT   2-# define GMP_LIMB_BYTES   4-# define GMP_LIMB_BITS    32-# define INT_MINBOUND     -0x80000000-# define INT_MAXBOUND      0x7fffffff-# define ABS_INT_MINBOUND  0x80000000-# define SQRT_INT_MAXBOUND 0xb504-#else-# error unsupported WORD_SIZE_IN_BITS config-#endif---- | Type representing /raw/ arbitrary-precision Naturals------ This is common type used by 'Natural' and 'Integer'.  As this type--- consists of a single constructor wrapping a 'ByteArray#' it can be--- unpacked.------ Essential invariants:------  - 'ByteArray#' size is an exact multiple of 'Word#' size---  - limbs are stored in least-significant-limb-first order,---  - the most-significant limb must be non-zero, except for---  - @0@ which is represented as a 1-limb.-data BigNat = BN# ByteArray#--instance Eq BigNat where-    (==) = eqBigNat--instance Ord BigNat where-    compare = compareBigNat---- [Implementation notes]------ Invariant: 'Jn#' and 'Jp#' are used iff value doesn't fit in 'S#'------ Useful properties resulting from the invariants:------  - @abs ('S#' _) <= abs ('Jp#' _)@---  - @abs ('S#' _) <  abs ('Jn#' _)@---- | Arbitrary precision integers. In contrast with fixed-size integral types--- such as 'Int', the 'Integer' type represents the entire infinite range of--- integers.------ For more information about this type's representation, see the comments in--- its implementation.-data Integer  = S#                !Int#-                -- ^ iff value in @[minBound::'Int', maxBound::'Int']@ range-              | Jp# {-# UNPACK #-} !BigNat-                -- ^ iff value in @]maxBound::'Int', +inf[@ range-              | Jn# {-# UNPACK #-} !BigNat-                -- ^ iff value in @]-inf, minBound::'Int'[@ range---- NOTE: the above representation is baked into the GHCi debugger in--- compiler/ghci/RtClosureInspect.hs. If you change it here, fixes--- will be required over there too. Tests for this are in--- testsuite/tests/ghci.debugger.---- TODO: experiment with different constructor-ordering--instance Eq Integer where-    (==)    = eqInteger-    (/=)    = neqInteger--instance Ord Integer where-    compare = compareInteger-    (>)     = gtInteger-    (>=)    = geInteger-    (<)     = ltInteger-    (<=)    = leInteger---------------------------------------------------------------------------------- | Construct 'Integer' value from list of 'Int's.------ This function is used by GHC for constructing 'Integer' literals.-mkInteger :: Bool   -- ^ sign of integer ('True' if non-negative)-          -> [Int]  -- ^ absolute value expressed in 31 bit chunks, least-                    --   significant first (ideally these would be machine-word-                    --   'Word's rather than 31-bit truncated 'Int's)-          -> Integer-mkInteger nonNegative is-  | nonNegative = f is-  | True        = negateInteger (f is)-  where-    f [] = S# 0#-    f (I# i : is') = smallInteger (i `andI#` 0x7fffffff#) `orInteger`-                         shiftLInteger (f is') 31#-{-# CONSTANT_FOLDED mkInteger #-}---- | Test whether all internal invariants are satisfied by 'Integer' value------ Returns @1#@ if valid, @0#@ otherwise.------ This operation is mostly useful for test-suites and/or code which--- constructs 'Integer' values directly.-isValidInteger# :: Integer -> Int#-isValidInteger# (S#  _) = 1#-isValidInteger# (Jp# bn)-    = isValidBigNat# bn `andI#` (bn `gtBigNatWord#` INT_MAXBOUND##)-isValidInteger# (Jn# bn)-    = isValidBigNat# bn `andI#` (bn `gtBigNatWord#` ABS_INT_MINBOUND##)---- | Should rather be called @intToInteger@-smallInteger :: Int# -> Integer-smallInteger i# = S# i#-{-# CONSTANT_FOLDED smallInteger #-}--------------------------------------------------------------------------------- Int64/Word64 specific primitives--#if WORD_SIZE_IN_BITS < 64-int64ToInteger :: Int64# -> Integer-int64ToInteger i-  | isTrue# (i `leInt64#` intToInt64#  0x7FFFFFFF#)-  , isTrue# (i `geInt64#` intToInt64# -0x80000000#)-    = S# (int64ToInt# i)-  | isTrue# (i `geInt64#` intToInt64# 0#)-    = Jp# (word64ToBigNat (int64ToWord64# i))-  | True-    = Jn# (word64ToBigNat (int64ToWord64# (negateInt64# i)))-{-# CONSTANT_FOLDED int64ToInteger #-}--word64ToInteger :: Word64# -> Integer-word64ToInteger w-  | isTrue# (w `leWord64#` wordToWord64# 0x7FFFFFFF##)-    = S# (int64ToInt# (word64ToInt64# w))-  | True-    = Jp# (word64ToBigNat w)-{-# CONSTANT_FOLDED word64ToInteger #-}--integerToInt64 :: Integer -> Int64#-integerToInt64 (S# i#)  = intToInt64# i#-integerToInt64 (Jp# bn) = word64ToInt64# (bigNatToWord64 bn)-integerToInt64 (Jn# bn) = negateInt64# (word64ToInt64# (bigNatToWord64 bn))-{-# CONSTANT_FOLDED integerToInt64 #-}--integerToWord64 :: Integer -> Word64#-integerToWord64 (S# i#)  = int64ToWord64# (intToInt64# i#)-integerToWord64 (Jp# bn) = bigNatToWord64 bn-integerToWord64 (Jn# bn)-    = int64ToWord64# (negateInt64# (word64ToInt64# (bigNatToWord64 bn)))-{-# CONSTANT_FOLDED integerToWord64 #-}--#if GMP_LIMB_BITS == 32-word64ToBigNat :: Word64# -> BigNat-word64ToBigNat w64 = wordToBigNat2 wh# wl#-  where-    wh# = word64ToWord# (uncheckedShiftRL64# w64 32#)-    wl# = word64ToWord# w64--bigNatToWord64 :: BigNat -> Word64#-bigNatToWord64 bn-  | isTrue# (sizeofBigNat# bn ># 1#)-    = let wh# = wordToWord64# (indexBigNat# bn 1#)-      in uncheckedShiftL64# wh# 32# `or64#` wl#-  | True = wl#-  where-    wl# = wordToWord64# (bigNatToWord bn)-#endif-#endif---- End of Int64/Word64 specific primitives--------------------------------------------------------------------------------- | Truncates 'Integer' to least-significant 'Int#'-integerToInt :: Integer -> Int#-integerToInt (S# i#)  = i#-integerToInt (Jp# bn) = bigNatToInt bn-integerToInt (Jn# bn) = negateInt# (bigNatToInt bn)-{-# CONSTANT_FOLDED integerToInt #-}--hashInteger :: Integer -> Int#-hashInteger = integerToInt -- emulating what integer-{simple,gmp} already do--integerToWord :: Integer -> Word#-integerToWord (S# i#)  = int2Word# i#-integerToWord (Jp# bn) = bigNatToWord bn-integerToWord (Jn# bn) = int2Word# (negateInt# (bigNatToInt bn))-{-# CONSTANT_FOLDED integerToWord #-}--wordToInteger :: Word# -> Integer-wordToInteger w#-  | isTrue# (i# >=# 0#) = S# i#-  | True                = Jp# (wordToBigNat w#)-  where-    i# = word2Int# w#-{-# CONSTANT_FOLDED wordToInteger #-}--wordToNegInteger :: Word# -> Integer-wordToNegInteger w#-  | isTrue# (i# <=# 0#) = S# i#-  | True                = Jn# (wordToBigNat w#)-  where-    i# = negateInt# (word2Int# w#)---- we could almost auto-derive Ord if it wasn't for the Jn#-Jn# case-compareInteger :: Integer -> Integer -> Ordering-compareInteger (Jn# x)  (Jn# y) = compareBigNat y x-compareInteger (S#  x)  (S#  y) = compareInt#   x y-compareInteger (Jp# x)  (Jp# y) = compareBigNat x y-compareInteger (Jn# _)  _       = LT-compareInteger (S#  _)  (Jp# _) = LT-compareInteger (S#  _)  (Jn# _) = GT-compareInteger (Jp# _)  _       = GT-{-# CONSTANT_FOLDED compareInteger #-}--isNegInteger# :: Integer -> Int#-isNegInteger# (S# i#) = i# <# 0#-isNegInteger# (Jp# _)  = 0#-isNegInteger# (Jn# _)  = 1#---- | Not-equal predicate.-neqInteger :: Integer -> Integer -> Bool-neqInteger x y = isTrue# (neqInteger# x y)--eqInteger, leInteger, ltInteger, gtInteger, geInteger-  :: Integer -> Integer -> Bool-eqInteger  x y = isTrue# (eqInteger#  x y)-leInteger  x y = isTrue# (leInteger#  x y)-ltInteger  x y = isTrue# (ltInteger#  x y)-gtInteger  x y = isTrue# (gtInteger#  x y)-geInteger  x y = isTrue# (geInteger#  x y)--eqInteger#, neqInteger#, leInteger#, ltInteger#, gtInteger#, geInteger#-  :: Integer -> Integer -> Int#-eqInteger# (S# x#) (S# y#)   = x# ==# y#-eqInteger# (Jn# x) (Jn# y)   = eqBigNat# x y-eqInteger# (Jp# x) (Jp# y)   = eqBigNat# x y-eqInteger# _       _         = 0#-{-# CONSTANT_FOLDED eqInteger# #-}--neqInteger# (S# x#) (S# y#)  = x# /=# y#-neqInteger# (Jn# x) (Jn# y)  = neqBigNat# x y-neqInteger# (Jp# x) (Jp# y)  = neqBigNat# x y-neqInteger# _       _        = 1#-{-# CONSTANT_FOLDED neqInteger# #-}---gtInteger# (S# x#) (S# y#)   = x# ># y#-gtInteger# x y | inline compareInteger x y == GT  = 1#-gtInteger# _ _                                    = 0#-{-# CONSTANT_FOLDED gtInteger# #-}--leInteger# (S# x#) (S# y#)   = x# <=# y#-leInteger# x y | inline compareInteger x y /= GT  = 1#-leInteger# _ _                             = 0#-{-# CONSTANT_FOLDED leInteger# #-}--ltInteger# (S# x#) (S# y#)   = x# <# y#-ltInteger# x y | inline compareInteger x y == LT  = 1#-ltInteger# _ _                             = 0#-{-# CONSTANT_FOLDED ltInteger# #-}--geInteger# (S# x#) (S# y#)   = x# >=# y#-geInteger# x y | inline compareInteger x y /= LT  = 1#-geInteger# _ _                             = 0#-{-# CONSTANT_FOLDED geInteger# #-}---- | Compute absolute value of an 'Integer'-absInteger :: Integer -> Integer-absInteger (Jn# n)                       = Jp# n-absInteger (S# INT_MINBOUND#)            = Jp# (wordToBigNat ABS_INT_MINBOUND##)-absInteger (S# i#) | isTrue# (i# <# 0#)  = S# (negateInt# i#)-absInteger i@(S# _)                      = i-absInteger i@(Jp# _)                     = i-{-# CONSTANT_FOLDED absInteger #-}---- | Return @-1@, @0@, and @1@ depending on whether argument is--- negative, zero, or positive, respectively-signumInteger :: Integer -> Integer-signumInteger j = S# (signumInteger# j)-{-# CONSTANT_FOLDED signumInteger #-}---- | Return @-1#@, @0#@, and @1#@ depending on whether argument is--- negative, zero, or positive, respectively-signumInteger# :: Integer -> Int#-signumInteger# (Jn# _)  = -1#-signumInteger# (S# i#) = sgnI# i#-signumInteger# (Jp# _ ) =  1#---- | Negate 'Integer'-negateInteger :: Integer -> Integer-negateInteger (Jn# n)      = Jp# n-negateInteger (S# INT_MINBOUND#) = Jp# (wordToBigNat ABS_INT_MINBOUND##)-negateInteger (S# i#)             = S# (negateInt# i#)-negateInteger (Jp# bn)-  | isTrue# (eqBigNatWord# bn ABS_INT_MINBOUND##) = S# INT_MINBOUND#-  | True                                        = Jn# bn-{-# CONSTANT_FOLDED negateInteger #-}---- one edge-case issue to take into account is that Int's range is not--- symmetric around 0.  I.e. @minBound+maxBound = -1@------ Jp# is used iff n > maxBound::Int--- Jn# is used iff n < minBound::Int---- | Add two 'Integer's-plusInteger :: Integer -> Integer -> Integer-plusInteger x    (S# 0#)  = x-plusInteger (S# 0#) y     = y-plusInteger (S# x#) (S# y#)-  = case addIntC# x# y# of-    (# z#, 0# #) -> S# z#-    (# 0#, _  #) -> Jn# (wordToBigNat2 1## 0##) -- 2*minBound::Int-    (# z#, _  #)-      | isTrue# (z# ># 0#) -> Jn# (wordToBigNat ( (int2Word# (negateInt# z#))))-      | True               -> Jp# (wordToBigNat ( (int2Word# z#)))-plusInteger y@(S# _) x = plusInteger x y--- no S# as first arg from here on-plusInteger (Jp# x) (Jp# y) = Jp# (plusBigNat x y)-plusInteger (Jn# x) (Jn# y) = Jn# (plusBigNat x y)-plusInteger (Jp# x) (S# y#) -- edge-case: @(maxBound+1) + minBound == 0@-  | isTrue# (y# >=# 0#) = Jp# (plusBigNatWord x (int2Word# y#))-  | True                = bigNatToInteger (minusBigNatWord x (int2Word#-                                                              (negateInt# y#)))-plusInteger (Jn# x) (S# y#) -- edge-case: @(minBound-1) + maxBound == -2@-  | isTrue# (y# >=# 0#) = bigNatToNegInteger (minusBigNatWord x (int2Word# y#))-  | True                = Jn# (plusBigNatWord x (int2Word# (negateInt# y#)))-plusInteger y@(Jn# _) x@(Jp# _) = plusInteger x y-plusInteger (Jp# x) (Jn# y)-    = case compareBigNat x y of-      LT -> bigNatToNegInteger (minusBigNat y x)-      EQ -> S# 0#-      GT -> bigNatToInteger (minusBigNat x y)-{-# CONSTANT_FOLDED plusInteger #-}---- | Subtract one 'Integer' from another.-minusInteger :: Integer -> Integer -> Integer-minusInteger x       (S# 0#)            = x-minusInteger (S# x#) (S# y#)-  = case subIntC# x# y# of-    (# z#, 0# #) -> S# z#-    (# 0#, _  #) -> Jn# (wordToBigNat2 1## 0##)-    (# z#, _  #)-      | isTrue# (z# ># 0#) -> Jn# (wordToBigNat ( (int2Word# (negateInt# z#))))-      | True               -> Jp# (wordToBigNat ( (int2Word# z#)))-minusInteger (S# x#) (Jp# y)-  | isTrue# (x# >=# 0#) = bigNatToNegInteger (minusBigNatWord y (int2Word# x#))-  | True                = Jn# (plusBigNatWord y (int2Word# (negateInt# x#)))-minusInteger (S# x#) (Jn# y)-  | isTrue# (x# >=# 0#) = Jp# (plusBigNatWord y (int2Word# x#))-  | True                = bigNatToInteger (minusBigNatWord y (int2Word#-                                                              (negateInt# x#)))-minusInteger (Jp# x) (Jp# y)-    = case compareBigNat x y of-      LT -> bigNatToNegInteger (minusBigNat y x)-      EQ -> S# 0#-      GT -> bigNatToInteger (minusBigNat x y)-minusInteger (Jp# x) (Jn# y) = Jp# (plusBigNat x y)-minusInteger (Jn# x) (Jp# y) = Jn# (plusBigNat x y)-minusInteger (Jn# x) (Jn# y)-    = case compareBigNat x y of-      LT -> bigNatToInteger (minusBigNat y x)-      EQ -> S# 0#-      GT -> bigNatToNegInteger (minusBigNat x y)-minusInteger (Jp# x) (S# y#)-  | isTrue# (y# >=# 0#) = bigNatToInteger (minusBigNatWord x (int2Word# y#))-  | True                = Jp# (plusBigNatWord x (int2Word# (negateInt# y#)))-minusInteger (Jn# x) (S# y#)-  | isTrue# (y# >=# 0#) = Jn# (plusBigNatWord x (int2Word# y#))-  | True                = bigNatToNegInteger (minusBigNatWord x-                                              (int2Word# (negateInt# y#)))-{-# CONSTANT_FOLDED minusInteger #-}---- | Multiply two 'Integer's-timesInteger :: Integer -> Integer -> Integer-timesInteger !_      (S# 0#) = S# 0#-timesInteger (S# 0#) _       = S# 0#-timesInteger x       (S# 1#) = x-timesInteger (S# 1#) y       = y-timesInteger x      (S# -1#) = negateInteger x-timesInteger (S# -1#) y      = negateInteger y-timesInteger (S# x#) (S# y#)-  = case mulIntMayOflo# x# y# of-    0# -> S# (x# *# y#)-    _  -> timesInt2Integer x# y#-timesInteger x@(S# _) y      = timesInteger y x--- no S# as first arg from here on-timesInteger (Jp# x) (Jp# y) = Jp# (timesBigNat x y)-timesInteger (Jp# x) (Jn# y) = Jn# (timesBigNat x y)-timesInteger (Jp# x) (S# y#)-  | isTrue# (y# >=# 0#) = Jp# (timesBigNatWord x (int2Word# y#))-  | True       = Jn# (timesBigNatWord x (int2Word# (negateInt# y#)))-timesInteger (Jn# x) (Jn# y) = Jp# (timesBigNat x y)-timesInteger (Jn# x) (Jp# y) = Jn# (timesBigNat x y)-timesInteger (Jn# x) (S# y#)-  | isTrue# (y# >=# 0#) = Jn# (timesBigNatWord x (int2Word# y#))-  | True       = Jp# (timesBigNatWord x (int2Word# (negateInt# y#)))-{-# CONSTANT_FOLDED timesInteger #-}---- | Square 'Integer'-sqrInteger :: Integer -> Integer-sqrInteger (S# INT_MINBOUND#) = timesInt2Integer INT_MINBOUND# INT_MINBOUND#-sqrInteger (S# j#) | isTrue# (absI# j# <=# SQRT_INT_MAXBOUND#) = S# (j# *# j#)-sqrInteger (S# j#) = timesInt2Integer j# j#-sqrInteger (Jp# bn) = Jp# (sqrBigNat bn)-sqrInteger (Jn# bn) = Jp# (sqrBigNat bn)---- | Construct 'Integer' from the product of two 'Int#'s-timesInt2Integer :: Int# -> Int# -> Integer-timesInt2Integer x# y# = case (# isTrue# (x# >=# 0#), isTrue# (y# >=# 0#) #) of-    (# False, False #) -> case timesWord2# (int2Word# (negateInt# x#))-                                     (int2Word# (negateInt# y#)) of-        (# 0##,l #) -> inline wordToInteger l-        (# h  ,l #) -> Jp# (wordToBigNat2 h l)--    (#  True, False #) -> case timesWord2# (int2Word# x#)-                                     (int2Word# (negateInt# y#)) of-        (# 0##,l #) -> wordToNegInteger l-        (# h  ,l #) -> Jn# (wordToBigNat2 h l)--    (# False,  True #) -> case timesWord2# (int2Word# (negateInt# x#))-                                     (int2Word# y#) of-        (# 0##,l #) -> wordToNegInteger l-        (# h  ,l #) -> Jn# (wordToBigNat2 h l)--    (#  True,  True #) -> case timesWord2# (int2Word# x#)-                                     (int2Word# y#) of-        (# 0##,l #) -> inline wordToInteger l-        (# h  ,l #) -> Jp# (wordToBigNat2 h l)--bigNatToInteger :: BigNat -> Integer-bigNatToInteger bn-  | isTrue# ((sizeofBigNat# bn ==# 1#) `andI#` (i# >=# 0#)) = S# i#-  | True                                                    = Jp# bn-  where-    i# = word2Int# (bigNatToWord bn)--bigNatToNegInteger :: BigNat -> Integer-bigNatToNegInteger bn-  | isTrue# ((sizeofBigNat# bn ==# 1#) `andI#` (i# <=# 0#)) = S# i#-  | True                                                    = Jn# bn-  where-    i# = negateInt# (word2Int# (bigNatToWord bn))---- | Count number of set bits. For negative arguments returns negative--- population count of negated argument.-popCountInteger :: Integer -> Int#-popCountInteger (S# i#)-  | isTrue# (i# >=# 0#) = popCntI# i#-  | True                = negateInt# (popCntI# (negateInt# i#))-popCountInteger (Jp# bn)  = popCountBigNat bn-popCountInteger (Jn# bn)  = negateInt# (popCountBigNat bn)-{-# CONSTANT_FOLDED popCountInteger #-}---- | 'Integer' for which only /n/-th bit is set. Undefined behaviour--- for negative /n/ values.-bitInteger :: Int# -> Integer-bitInteger i#-  | isTrue# (i# <# (GMP_LIMB_BITS# -# 1#)) = S# (uncheckedIShiftL# 1# i#)-  | True = Jp# (bitBigNat i#)-{-# CONSTANT_FOLDED bitInteger #-}---- | Test if /n/-th bit is set.-testBitInteger :: Integer -> Int# -> Bool-testBitInteger !_  n# | isTrue# (n# <# 0#) = False-testBitInteger (S# i#) n#-  | isTrue# (n# <# GMP_LIMB_BITS#) = isTrue# (((uncheckedIShiftL# 1# n#)-                                               `andI#` i#) /=# 0#)-  | True                          = isTrue# (i# <# 0#)-testBitInteger (Jp# bn) n = testBitBigNat bn n-testBitInteger (Jn# bn) n = testBitNegBigNat bn n-{-# CONSTANT_FOLDED testBitInteger #-}---- | Bitwise @NOT@ operation-complementInteger :: Integer -> Integer-complementInteger (S# i#) = S# (notI# i#)-complementInteger (Jp# bn) = Jn# (plusBigNatWord  bn 1##)-complementInteger (Jn# bn) = Jp# (minusBigNatWord bn 1##)-{-# CONSTANT_FOLDED complementInteger #-}---- | Arithmetic shift-right operation------ Even though the shift-amount is expressed as `Int#`, the result is--- undefined for negative shift-amounts.-shiftRInteger :: Integer -> Int# -> Integer-shiftRInteger x        0# = x-shiftRInteger (S# i#)  n# = S# (iShiftRA# i# n#)-  where-    iShiftRA# a b-      | isTrue# (b >=# WORD_SIZE_IN_BITS#) = (a <# 0#) *# (-1#)-      | True                               = a `uncheckedIShiftRA#` b-shiftRInteger (Jp# bn) n# = bigNatToInteger (shiftRBigNat bn n#)-shiftRInteger (Jn# bn) n#-    = case bigNatToNegInteger (shiftRNegBigNat bn n#) of-        S# 0# -> S# -1#-        r           -> r-{-# CONSTANT_FOLDED shiftRInteger #-}---- | Shift-left operation------ Even though the shift-amount is expressed as `Int#`, the result is--- undefined for negative shift-amounts.-shiftLInteger :: Integer -> Int# -> Integer-shiftLInteger x       0# = x-shiftLInteger (S# 0#) _  = S# 0#-shiftLInteger (S# 1#) n# = bitInteger n#-shiftLInteger (S# i#) n#-  | isTrue# (i# >=# 0#)  = bigNatToInteger (shiftLBigNat-                                            (wordToBigNat (int2Word# i#)) n#)-  | True                 = bigNatToNegInteger (shiftLBigNat-                                               (wordToBigNat (int2Word#-                                                              (negateInt# i#))) n#)-shiftLInteger (Jp# bn) n# = Jp# (shiftLBigNat bn n#)-shiftLInteger (Jn# bn) n# = Jn# (shiftLBigNat bn n#)-{-# CONSTANT_FOLDED shiftLInteger #-}---- | Bitwise OR operation-orInteger :: Integer -> Integer -> Integer--- short-cuts-orInteger  (S# 0#)     y         = y-orInteger  x           (S# 0#)   = x-orInteger  (S# -1#)    _         = S# -1#-orInteger  _           (S# -1#)  = S# -1#--- base-cases-orInteger  (S# x#)     (S# y#)   = S# (orI# x# y#)-orInteger  (Jp# x)     (Jp# y)   = Jp# (orBigNat x y)-orInteger  (Jn# x)     (Jn# y)-    = bigNatToNegInteger (plusBigNatWord (andBigNat-                                          (minusBigNatWord x 1##)-                                          (minusBigNatWord y 1##)) 1##)-orInteger  x@(Jn# _)   y@(Jp# _)  = orInteger y x -- retry with swapped args-orInteger  (Jp# x)     (Jn# y)-    = bigNatToNegInteger (plusBigNatWord (andnBigNat (minusBigNatWord y 1##) x)-                                         1##)--- TODO/FIXpromotion-hack-orInteger  x@(S# _)   y          = orInteger (unsafePromote x) y-orInteger  x           y {- S# -}= orInteger x (unsafePromote y)-{-# CONSTANT_FOLDED orInteger #-}---- | Bitwise XOR operation-xorInteger :: Integer -> Integer -> Integer--- short-cuts-xorInteger (S# 0#)     y          = y-xorInteger x           (S# 0#)    = x--- TODO: (S# -1) cases--- base-cases-xorInteger (S# x#)     (S# y#)    = S# (xorI# x# y#)-xorInteger (Jp# x)     (Jp# y)    = bigNatToInteger (xorBigNat x y)-xorInteger (Jn# x)     (Jn# y)-    = bigNatToInteger (xorBigNat (minusBigNatWord x 1##)-                                 (minusBigNatWord y 1##))-xorInteger x@(Jn# _)   y@(Jp# _)  = xorInteger y x -- retry with swapped args-xorInteger (Jp# x)     (Jn# y)-    = bigNatToNegInteger (plusBigNatWord (xorBigNat x (minusBigNatWord y 1##))-                                         1##)--- TODO/FIXME promotion-hack-xorInteger x@(S# _)    y          = xorInteger (unsafePromote x) y-xorInteger x           y {- S# -} = xorInteger x (unsafePromote y)-{-# CONSTANT_FOLDED xorInteger #-}---- | Bitwise AND operation-andInteger :: Integer -> Integer -> Integer--- short-cuts-andInteger (S# 0#)     !_        = S# 0#-andInteger _           (S# 0#)   = S# 0#-andInteger (S# -1#)   y          = y-andInteger x           (S# -1#)  = x--- base-cases-andInteger (S# x#)     (S# y#)   = S# (andI# x# y#)-andInteger (Jp# x)     (Jp# y)   = bigNatToInteger (andBigNat x y)-andInteger (Jn# x)     (Jn# y)-    = bigNatToNegInteger (plusBigNatWord (orBigNat (minusBigNatWord x 1##)-                                                   (minusBigNatWord y 1##)) 1##)-andInteger x@(Jn# _)   y@(Jp# _)  = andInteger y x-andInteger (Jp# x)     (Jn# y)-    = bigNatToInteger (andnBigNat x (minusBigNatWord y 1##))--- TODO/FIXME promotion-hack-andInteger x@(S# _)   y          = andInteger (unsafePromote x) y-andInteger x           y {- S# -}= andInteger x (unsafePromote y)-{-# CONSTANT_FOLDED andInteger #-}---- HACK warning! breaks invariant on purpose-unsafePromote :: Integer -> Integer-unsafePromote (S# x#)-    | isTrue# (x# >=# 0#) = Jp# (wordToBigNat (int2Word# x#))-    | True                = Jn# (wordToBigNat (int2Word# (negateInt# x#)))-unsafePromote x = x---- | Simultaneous 'quotInteger' and 'remInteger'.------ Divisor must be non-zero otherwise the GHC runtime will terminate--- with a division-by-zero fault.-quotRemInteger :: Integer -> Integer -> (# Integer, Integer #)-quotRemInteger n       (S# 1#) = (# n, S# 0# #)-quotRemInteger n      (S# -1#) = let !q = negateInteger n in (# q, (S# 0#) #)-quotRemInteger !_      (S# 0#) = (# S# (quotInt# 0# 0#),S# (remInt# 0# 0#) #)-quotRemInteger (S# 0#) _       = (# S# 0#, S# 0# #)-quotRemInteger (S# n#) (S# d#) = case quotRemInt# n# d# of-    (# q#, r# #) -> (# S# q#, S# r# #)-quotRemInteger (Jp# n)  (Jp# d)  = case quotRemBigNat n d of-    (# q, r #) -> (# bigNatToInteger q, bigNatToInteger r #)-quotRemInteger (Jp# n)  (Jn# d)  = case quotRemBigNat n d of-    (# q, r #) -> (# bigNatToNegInteger q, bigNatToInteger r #)-quotRemInteger (Jn# n)  (Jn# d)  = case quotRemBigNat n d of-    (# q, r #) -> (# bigNatToInteger q, bigNatToNegInteger r #)-quotRemInteger (Jn# n)  (Jp# d)  = case quotRemBigNat n d of-    (# q, r #) -> (# bigNatToNegInteger q, bigNatToNegInteger r #)-quotRemInteger (Jp# n)  (S# d#)-  | isTrue# (d# >=# 0#) = case quotRemBigNatWord n (int2Word# d#) of-      (# q, r# #) -> (# bigNatToInteger q, inline wordToInteger r# #)-  | True               = case quotRemBigNatWord n (int2Word# (negateInt# d#)) of-      (# q, r# #) -> (# bigNatToNegInteger q, inline wordToInteger r# #)-quotRemInteger (Jn# n)  (S# d#)-  | isTrue# (d# >=# 0#) = case quotRemBigNatWord n (int2Word# d#) of-      (# q, r# #) -> (# bigNatToNegInteger q, wordToNegInteger r# #)-  | True               = case quotRemBigNatWord n (int2Word# (negateInt# d#)) of-      (# q, r# #) -> (# bigNatToInteger q, wordToNegInteger r# #)-quotRemInteger n@(S# _) (Jn# _) = (# S# 0#, n #) -- since @n < d@-quotRemInteger n@(S# n#) (Jp# d) -- need to account for (S# minBound)-    | isTrue# (n# ># 0#)                                    = (# S# 0#, n #)-    | isTrue# (gtBigNatWord# d (int2Word# (negateInt# n#))) = (# S# 0#, n #)-    | True {- abs(n) == d -}                          = (# S# -1#, S# 0# #)-{-# CONSTANT_FOLDED quotRemInteger #-}---quotInteger :: Integer -> Integer -> Integer-quotInteger n       (S# 1#) = n-quotInteger n      (S# -1#) = negateInteger n-quotInteger !_      (S# 0#) = S# (quotInt# 0# 0#)-quotInteger (S# 0#) _       = S# 0#-quotInteger (S# n#)  (S# d#) = S# (quotInt# n# d#)-quotInteger (Jp# n)   (S# d#)-  | isTrue# (d# >=# 0#) = bigNatToInteger    (quotBigNatWord n (int2Word# d#))-  | True                = bigNatToNegInteger (quotBigNatWord n-                                              (int2Word# (negateInt# d#)))-quotInteger (Jn# n)   (S# d#)-  | isTrue# (d# >=# 0#) = bigNatToNegInteger (quotBigNatWord n (int2Word# d#))-  | True                = bigNatToInteger    (quotBigNatWord n-                                              (int2Word# (negateInt# d#)))-quotInteger (Jp# n) (Jp# d) = bigNatToInteger    (quotBigNat n d)-quotInteger (Jp# n) (Jn# d) = bigNatToNegInteger (quotBigNat n d)-quotInteger (Jn# n) (Jp# d) = bigNatToNegInteger (quotBigNat n d)-quotInteger (Jn# n) (Jn# d) = bigNatToInteger    (quotBigNat n d)--- handle remaining non-allocating cases-quotInteger n d = case inline quotRemInteger n d of (# q, _ #) -> q-{-# CONSTANT_FOLDED quotInteger #-}--remInteger :: Integer -> Integer -> Integer-remInteger !_       (S# 1#) = S# 0#-remInteger _       (S# -1#) = S# 0#-remInteger _        (S# 0#) = S# (remInt# 0# 0#)-remInteger (S# 0#) _        = S# 0#-remInteger (S# n#) (S# d#) = S# (remInt# n# d#)-remInteger (Jp# n)  (S# d#)-    = wordToInteger    (remBigNatWord n (int2Word# (absI# d#)))-remInteger (Jn# n)  (S# d#)-    = wordToNegInteger (remBigNatWord n (int2Word# (absI# d#)))-remInteger (Jp# n)  (Jp# d)  = bigNatToInteger    (remBigNat n d)-remInteger (Jp# n)  (Jn# d)  = bigNatToInteger    (remBigNat n d)-remInteger (Jn# n)  (Jp# d)  = bigNatToNegInteger (remBigNat n d)-remInteger (Jn# n)  (Jn# d)  = bigNatToNegInteger (remBigNat n d)--- handle remaining non-allocating cases-remInteger n d = case inline quotRemInteger n d of (# _, r #) -> r-{-# CONSTANT_FOLDED remInteger #-}---- | Simultaneous 'divInteger' and 'modInteger'.------ Divisor must be non-zero otherwise the GHC runtime will terminate--- with a division-by-zero fault.-divModInteger :: Integer -> Integer -> (# Integer, Integer #)-divModInteger n d-  | isTrue# (signumInteger# r ==# negateInt# (signumInteger# d))-     = let !q' = plusInteger q (S# -1#) -- TODO: optimize-           !r' = plusInteger r d-       in (# q', r' #)-  | True = qr-  where-    !qr@(# q, r #) = quotRemInteger n d-{-# CONSTANT_FOLDED divModInteger #-}--divInteger :: Integer -> Integer -> Integer--- same-sign ops can be handled by more efficient 'quotInteger'-divInteger n d | isTrue# (isNegInteger# n ==# isNegInteger# d) = quotInteger n d-divInteger n d = case inline divModInteger n d of (# q, _ #) -> q-{-# CONSTANT_FOLDED divInteger #-}--modInteger :: Integer -> Integer -> Integer--- same-sign ops can be handled by more efficient 'remInteger'-modInteger n d | isTrue# (isNegInteger# n ==# isNegInteger# d) = remInteger n d-modInteger n d = case inline divModInteger n d of (# _, r #) -> r-{-# CONSTANT_FOLDED modInteger #-}---- | Compute greatest common divisor.-gcdInteger :: Integer -> Integer -> Integer-gcdInteger (S# 0#)        b = absInteger b-gcdInteger a        (S# 0#) = absInteger a-gcdInteger (S# 1#)        _ = S# 1#-gcdInteger (S# -1#)       _ = S# 1#-gcdInteger _        (S# 1#) = S# 1#-gcdInteger _       (S# -1#) = S# 1#-gcdInteger (S# a#) (S# b#)-    = wordToInteger (gcdWord# (int2Word# (absI# a#)) (int2Word# (absI# b#)))-gcdInteger a@(S# _) b = gcdInteger b a-gcdInteger (Jn# a) b = gcdInteger (Jp# a) b-gcdInteger (Jp# a) (Jp# b) = bigNatToInteger (gcdBigNat a b)-gcdInteger (Jp# a) (Jn# b) = bigNatToInteger (gcdBigNat a b)-gcdInteger (Jp# a) (S# b#)-    = wordToInteger (gcdBigNatWord a (int2Word# (absI# b#)))-{-# CONSTANT_FOLDED gcdInteger #-}---- | Compute least common multiple.-lcmInteger :: Integer -> Integer -> Integer-lcmInteger (S# 0#) !_  = S# 0#-lcmInteger (S# 1#)  b  = absInteger b-lcmInteger (S# -1#) b  = absInteger b-lcmInteger _ (S# 0#)   = S# 0#-lcmInteger a (S# 1#)   = absInteger a-lcmInteger a (S# -1#)  = absInteger a-lcmInteger a b = (aa `quotInteger` (aa `gcdInteger` ab)) `timesInteger` ab-  where-    aa = absInteger a-    ab = absInteger b-{-# CONSTANT_FOLDED lcmInteger #-}---- | Compute greatest common divisor.------ __Warning__: result may become negative if (at least) one argument--- is 'minBound'-gcdInt :: Int# -> Int# -> Int#-gcdInt x# y#-    = word2Int# (gcdWord# (int2Word# (absI# x#)) (int2Word# (absI# y#)))---- | Compute greatest common divisor.------ @since 1.0.0.0-gcdWord :: Word# -> Word# -> Word#-gcdWord = gcdWord#--------------------------------------------------------------------------------- BigNat operations--compareBigNat :: BigNat -> BigNat -> Ordering-compareBigNat x@(BN# x#) y@(BN# y#)-  | isTrue# (nx# ==# ny#)-      = compareInt# (narrowCInt# (c_mpn_cmp x# y# nx#)) 0#-  | isTrue# (nx# <#  ny#) = LT-  | True                  = GT-  where-    nx# = sizeofBigNat# x-    ny# = sizeofBigNat# y--compareBigNatWord :: BigNat -> GmpLimb# -> Ordering-compareBigNatWord bn w#-  | isTrue# (sizeofBigNat# bn ==# 1#) = cmpW# (bigNatToWord bn) w#-  | True                              = GT--gtBigNatWord# :: BigNat -> GmpLimb# -> Int#-gtBigNatWord# bn w#-    = (sizeofBigNat# bn ># 1#) `orI#` (bigNatToWord bn `gtWord#` w#)--eqBigNat :: BigNat -> BigNat -> Bool-eqBigNat x y = isTrue# (eqBigNat# x y)--eqBigNat# :: BigNat -> BigNat -> Int#-eqBigNat# x@(BN# x#) y@(BN# y#)-  | isTrue# (nx# ==# ny#) = c_mpn_cmp x# y# nx# ==# 0#-  | True                  = 0#-  where-    nx# = sizeofBigNat# x-    ny# = sizeofBigNat# y--neqBigNat# :: BigNat -> BigNat -> Int#-neqBigNat# x@(BN# x#) y@(BN# y#)-  | isTrue# (nx# ==# ny#) = c_mpn_cmp x# y# nx# /=# 0#-  | True                  = 1#-  where-    nx# = sizeofBigNat# x-    ny# = sizeofBigNat# y--eqBigNatWord :: BigNat -> GmpLimb# -> Bool-eqBigNatWord bn w# = isTrue# (eqBigNatWord# bn w#)--eqBigNatWord# :: BigNat -> GmpLimb# -> Int#-eqBigNatWord# bn w#-    = (sizeofBigNat# bn ==# 1#) `andI#` (bigNatToWord bn `eqWord#` w#)----- | Same as @'indexBigNat#' bn 0\#@-bigNatToWord :: BigNat -> Word#-bigNatToWord bn = indexBigNat# bn 0#---- | Equivalent to @'word2Int#' . 'bigNatToWord'@-bigNatToInt :: BigNat -> Int#-bigNatToInt (BN# ba#) = indexIntArray# ba# 0#---- | CAF representing the value @0 :: BigNat@-zeroBigNat :: BigNat-zeroBigNat = runS $ do-    mbn <- newBigNat# 1#-    _ <- svoid (writeBigNat# mbn 0# 0##)-    unsafeFreezeBigNat# mbn-{-# NOINLINE zeroBigNat #-}---- | Test if 'BigNat' value is equal to zero.-isZeroBigNat :: BigNat -> Bool-isZeroBigNat bn = eqBigNatWord bn 0##---- | CAF representing the value @1 :: BigNat@-oneBigNat :: BigNat-oneBigNat = runS $ do-    mbn <- newBigNat# 1#-    _ <- svoid (writeBigNat# mbn 0# 1##)-    unsafeFreezeBigNat# mbn-{-# NOINLINE oneBigNat #-}--czeroBigNat :: BigNat-czeroBigNat = runS $ do-    mbn <- newBigNat# 1#-    _ <- svoid (writeBigNat# mbn 0# (not# 0##))-    unsafeFreezeBigNat# mbn-{-# NOINLINE czeroBigNat #-}---- | Special 0-sized bigNat returned in case of arithmetic underflow------ This is currently only returned by the following operations:------  - 'minusBigNat'---  - 'minusBigNatWord'------ Other operations such as 'quotBigNat' may return 'nullBigNat' as--- well as a dummy/place-holder value instead of 'undefined' since we--- can't throw exceptions. But that behaviour should not be relied--- upon.------ NB: @isValidBigNat# nullBigNat@ is false-nullBigNat :: BigNat-nullBigNat = runS (newBigNat# 0# >>= unsafeFreezeBigNat#)-{-# NOINLINE nullBigNat #-}---- | Test for special 0-sized 'BigNat' representing underflows.-isNullBigNat# :: BigNat -> Int#-isNullBigNat# (BN# ba#) = sizeofByteArray# ba# ==# 0#---- | Construct 1-limb 'BigNat' from 'Word#'-wordToBigNat :: Word# -> BigNat-wordToBigNat 0## = zeroBigNat-wordToBigNat 1## = oneBigNat-wordToBigNat w#-  | isTrue# (not# w# `eqWord#` 0##) = czeroBigNat-  | True = runS $ do-    mbn <- newBigNat# 1#-    _ <- svoid (writeBigNat# mbn 0# w#)-    unsafeFreezeBigNat# mbn---- | Construct BigNat from 2 limbs.--- The first argument is the most-significant limb.-wordToBigNat2 :: Word# -> Word# -> BigNat-wordToBigNat2 0## lw# = wordToBigNat lw#-wordToBigNat2 hw# lw# = runS $ do-    mbn <- newBigNat# 2#-    _ <- svoid (writeBigNat# mbn 0# lw#)-    _ <- svoid (writeBigNat# mbn 1# hw#)-    unsafeFreezeBigNat# mbn--plusBigNat :: BigNat -> BigNat -> BigNat-plusBigNat x y-  | isTrue# (eqBigNatWord# x 0##) = y-  | isTrue# (eqBigNatWord# y 0##) = x-  | isTrue# (nx# >=# ny#) = go x nx# y ny#-  | True                  = go y ny# x nx#-  where-    go (BN# a#) na# (BN# b#) nb# = runS $ do-        mbn@(MBN# mba#) <- newBigNat# na#-        (W# c#) <- liftIO (c_mpn_add mba# a# na# b# nb#)-        case c# of-              0## -> unsafeFreezeBigNat# mbn-              _   -> unsafeSnocFreezeBigNat# mbn c#--    nx# = sizeofBigNat# x-    ny# = sizeofBigNat# y--plusBigNatWord :: BigNat -> GmpLimb# -> BigNat-plusBigNatWord x          0## = x-plusBigNatWord x@(BN# x#) y# = runS $ do-    mbn@(MBN# mba#) <- newBigNat# nx#-    (W# c#) <- liftIO (c_mpn_add_1 mba# x# nx# y#)-    case c# of-        0## -> unsafeFreezeBigNat# mbn-        _   -> unsafeSnocFreezeBigNat# mbn c#-  where-    nx# = sizeofBigNat# x---- | Returns 'nullBigNat' (see 'isNullBigNat#') in case of underflow-minusBigNat :: BigNat -> BigNat -> BigNat-minusBigNat x@(BN# x#) y@(BN# y#)-  | isZeroBigNat y = x-  | isTrue# (nx# >=# ny#) = runS $ do-    mbn@(MBN# mba#) <- newBigNat# nx#-    (W# b#) <- liftIO (c_mpn_sub mba# x# nx# y# ny#)-    case b# of-        0## -> unsafeRenormFreezeBigNat# mbn-        _   -> return nullBigNat--  | True = nullBigNat-  where-    nx# = sizeofBigNat# x-    ny# = sizeofBigNat# y---- | Returns 'nullBigNat' (see 'isNullBigNat#') in case of underflow-minusBigNatWord :: BigNat -> GmpLimb# -> BigNat-minusBigNatWord x 0## = x-minusBigNatWord x@(BN# x#) y# = runS $ do-    mbn@(MBN# mba#) <- newBigNat# nx#-    (W# b#) <- liftIO $ c_mpn_sub_1 mba# x# nx# y#-    case b# of-        0## -> unsafeRenormFreezeBigNat# mbn-        _   -> return nullBigNat-  where-    nx# = sizeofBigNat# x---timesBigNat :: BigNat -> BigNat -> BigNat-timesBigNat x y-  | isZeroBigNat x = zeroBigNat-  | isZeroBigNat y = zeroBigNat-  | isTrue# (nx# >=# ny#) = go x nx# y ny#-  | True                  = go y ny# x nx#-  where-    go (BN# a#) na# (BN# b#) nb# = runS $ do-        let n# = nx# +# ny#-        mbn@(MBN# mba#) <- newBigNat# n#-        (W# msl#) <- liftIO (c_mpn_mul mba# a# na# b# nb#)-        case msl# of-              0## -> unsafeShrinkFreezeBigNat# mbn (n# -# 1#)-              _   -> unsafeFreezeBigNat# mbn--    nx# = sizeofBigNat# x-    ny# = sizeofBigNat# y---- | Square 'BigNat'-sqrBigNat :: BigNat -> BigNat-sqrBigNat x-  | isZeroBigNat x = zeroBigNat-  -- TODO: 1-limb BigNats below sqrt(maxBound::GmpLimb)-sqrBigNat x = timesBigNat x x -- TODO: mpn_sqr--timesBigNatWord :: BigNat -> GmpLimb# -> BigNat-timesBigNatWord !_ 0## = zeroBigNat-timesBigNatWord x 1## = x-timesBigNatWord x@(BN# x#) y#-  | isTrue# (nx# ==# 1#) =-      let !(# !h#, !l# #) = timesWord2# (bigNatToWord x) y#-      in wordToBigNat2 h# l#-  | True = runS $ do-        mbn@(MBN# mba#) <- newBigNat# nx#-        (W# msl#) <- liftIO (c_mpn_mul_1 mba# x# nx# y#)-        case msl# of-              0## -> unsafeFreezeBigNat# mbn-              _   -> unsafeSnocFreezeBigNat# mbn msl#--  where-    nx# = sizeofBigNat# x---- | Specialised version of------ > bitBigNat = shiftLBigNat (wordToBigNat 1##)------ avoiding a few redundant allocations-bitBigNat :: Int# -> BigNat-bitBigNat i#-  | isTrue# (i#  <#  0#) = zeroBigNat -- or maybe 'nullBigNat'?-  | isTrue# (i# ==#  0#) = oneBigNat-  | True = runS $ do-      mbn@(MBN# mba#) <- newBigNat# (li# +# 1#)-      -- FIXME: do we really need to zero-init MBAs returned by 'newByteArray#'?-      -- clear all limbs (except for the most-significant limb)-      _ <- svoid (clearWordArray# mba# 0# li#)-      -- set single bit in most-significant limb-      _ <- svoid (writeBigNat# mbn li# (uncheckedShiftL# 1## bi#))-      unsafeFreezeBigNat# mbn-  where-    !(# li#, bi# #) = quotRemInt# i# GMP_LIMB_BITS#--testBitBigNat :: BigNat -> Int# -> Bool-testBitBigNat bn i#-  | isTrue# (i#  <#  0#) = False-  | isTrue# (li# <# nx#) = isTrue# (testBitWord# (indexBigNat# bn li#) bi#)-  | True                 = False-  where-    !(# li#, bi# #) = quotRemInt# i# GMP_LIMB_BITS#-    nx# = sizeofBigNat# bn--testBitNegBigNat :: BigNat -> Int# -> Bool-testBitNegBigNat bn i#-  | isTrue# (i#  <#  0#)  = False-  | isTrue# (li# >=# nx#) = True-  | allZ li# = isTrue# ((testBitWord#-                         (indexBigNat# bn li# `minusWord#` 1##) bi#) ==# 0#)-  | True     = isTrue# ((testBitWord# (indexBigNat# bn li#) bi#) ==# 0#)-  where-    !(# li#, bi# #) = quotRemInt# i# GMP_LIMB_BITS#-    nx# = sizeofBigNat# bn--    allZ 0# = True-    allZ j | isTrue# (indexBigNat# bn (j -# 1#) `eqWord#` 0##) = allZ (j -# 1#)-           | True                 = False---clearBitBigNat :: BigNat -> Int# -> BigNat-clearBitBigNat bn i#-  | not (inline testBitBigNat bn i#) = bn-  | isTrue# (nx# ==# 1#)        = wordToBigNat (bigNatToWord bn `xor#` bitWord# bi#)-  | isTrue# (li# +# 1# ==# nx#) = -- special case, operating on most-sig limb-      case indexBigNat# bn li# `xor#` bitWord# bi# of-        0## -> do -- most-sig limb became zero -> result has less limbs-            case fmssl bn (li# -# 1#) of-              0# -> zeroBigNat-              n# -> runS $ do-                  mbn <- newBigNat# n#-                  _ <- copyWordArray bn 0# mbn 0# n#-                  unsafeFreezeBigNat# mbn-        newlimb# -> runS $ do -- no shrinking-            mbn <- newBigNat# nx#-            _ <- copyWordArray bn 0# mbn 0# li#-            _ <- svoid (writeBigNat# mbn li# newlimb#)-            unsafeFreezeBigNat# mbn--  | True = runS $ do-        mbn <- newBigNat# nx#-        _ <- copyWordArray bn 0# mbn 0# nx#-        let newlimb# = indexBigNat# bn li# `xor#` bitWord# bi#-        _ <- svoid (writeBigNat# mbn li# newlimb#)-        unsafeFreezeBigNat# mbn--  where-    !(# li#, bi# #) = quotRemInt# i# GMP_LIMB_BITS#-    nx# = sizeofBigNat# bn----setBitBigNat :: BigNat -> Int# -> BigNat-setBitBigNat bn i#-  | inline testBitBigNat bn i# = bn-  | isTrue# (d# ># 0#) = runS $ do -- result BigNat will have more limbs-        mbn@(MBN# mba#) <- newBigNat# (li# +# 1#)-        _ <- copyWordArray bn 0# mbn 0# nx#-        _ <- svoid (clearWordArray# mba# nx# (d# -# 1#))-        _ <- svoid (writeBigNat# mbn li# (bitWord# bi#))-        unsafeFreezeBigNat# mbn--  | True = runS $ do-        mbn <- newBigNat# nx#-        _ <- copyWordArray bn 0# mbn 0# nx#-        _ <- svoid (writeBigNat# mbn li# (indexBigNat# bn li#-                                          `or#` bitWord# bi#))-        unsafeFreezeBigNat# mbn--  where-    !(# li#, bi# #) = quotRemInt# i# GMP_LIMB_BITS#-    nx# = sizeofBigNat# bn-    d# = li# +# 1# -# nx#---complementBitBigNat :: BigNat -> Int# -> BigNat-complementBitBigNat bn i#-  | testBitBigNat bn i# = clearBitBigNat bn i#-  | True                = setBitBigNat bn i#--popCountBigNat :: BigNat -> Int#-popCountBigNat bn@(BN# ba#) = word2Int# (c_mpn_popcount ba# (sizeofBigNat# bn))---shiftLBigNat :: BigNat -> Int# -> BigNat-shiftLBigNat x 0# = x-shiftLBigNat x _ | isZeroBigNat x = zeroBigNat-shiftLBigNat x@(BN# xba#) n# = runS $ do-    ymbn@(MBN# ymba#) <- newBigNat# yn#-    W# ymsl <- liftIO (c_mpn_lshift ymba# xba# xn# (int2Word# n#))-    case ymsl of-        0## -> unsafeShrinkFreezeBigNat# ymbn (yn# -# 1#)-        _   -> unsafeFreezeBigNat# ymbn-  where-    xn# = sizeofBigNat# x-    yn# = xn# +# nlimbs# +# (nbits# /=# 0#)-    !(# nlimbs#, nbits# #) = quotRemInt# n# GMP_LIMB_BITS#----shiftRBigNat :: BigNat -> Int# -> BigNat-shiftRBigNat x 0# = x-shiftRBigNat x _ | isZeroBigNat x = zeroBigNat-shiftRBigNat x@(BN# xba#) n#-  | isTrue# (nlimbs# >=# xn#) = zeroBigNat-  | True = runS $ do-      ymbn@(MBN# ymba#) <- newBigNat# yn#-      W# ymsl <- liftIO (c_mpn_rshift ymba# xba# xn# (int2Word# n#))-      case ymsl of-          0## -> unsafeRenormFreezeBigNat# ymbn -- may shrink more than one-          _   -> unsafeFreezeBigNat# ymbn-  where-    xn# = sizeofBigNat# x-    yn# = xn# -# nlimbs#-    nlimbs# = quotInt# n# GMP_LIMB_BITS#--shiftRNegBigNat :: BigNat -> Int# -> BigNat-shiftRNegBigNat x 0# = x-shiftRNegBigNat x _ | isZeroBigNat x = zeroBigNat-shiftRNegBigNat x@(BN# xba#) n#-  | isTrue# (nlimbs# >=# xn#) = zeroBigNat-  | True = runS $ do-      ymbn@(MBN# ymba#) <- newBigNat# yn#-      W# ymsl <- liftIO (c_mpn_rshift_2c ymba# xba# xn# (int2Word# n#))-      case ymsl of-          0## -> unsafeRenormFreezeBigNat# ymbn -- may shrink more than one-          _   -> unsafeFreezeBigNat# ymbn-  where-    xn# = sizeofBigNat# x-    yn# = xn# -# nlimbs#-    nlimbs# = quotInt# (n# -# 1#) GMP_LIMB_BITS#---orBigNat :: BigNat -> BigNat -> BigNat-orBigNat x@(BN# x#) y@(BN# y#)-  | isZeroBigNat x = y-  | isZeroBigNat y = x-  | isTrue# (nx# >=# ny#) = runS (ior' x# nx# y# ny#)-  | True                  = runS (ior' y# ny# x# nx#)-  where-    ior' a# na# b# nb# = do -- na >= nb-        mbn@(MBN# mba#) <- newBigNat# na#-        _ <- liftIO (c_mpn_ior_n mba# a# b# nb#)-        _ <- case isTrue# (na# ==# nb#) of-            False -> svoid (copyWordArray# a# nb# mba# nb# (na# -# nb#))-            True  -> return ()-        unsafeFreezeBigNat# mbn--    nx# = sizeofBigNat# x-    ny# = sizeofBigNat# y---xorBigNat :: BigNat -> BigNat -> BigNat-xorBigNat x@(BN# x#) y@(BN# y#)-  | isZeroBigNat x = y-  | isZeroBigNat y = x-  | isTrue# (nx# >=# ny#) = runS (xor' x# nx# y# ny#)-  | True                  = runS (xor' y# ny# x# nx#)-  where-    xor' a# na# b# nb# = do -- na >= nb-        mbn@(MBN# mba#) <- newBigNat# na#-        _ <- liftIO (c_mpn_xor_n mba# a# b# nb#)-        case isTrue# (na# ==# nb#) of-            False -> do _ <- svoid (copyWordArray# a# nb# mba# nb# (na# -# nb#))-                        unsafeFreezeBigNat# mbn-            True  -> unsafeRenormFreezeBigNat# mbn--    nx# = sizeofBigNat# x-    ny# = sizeofBigNat# y---- | aka @\x y -> x .&. (complement y)@-andnBigNat :: BigNat -> BigNat -> BigNat-andnBigNat x@(BN# x#) y@(BN# y#)-  | isZeroBigNat x = zeroBigNat-  | isZeroBigNat y = x-  | True = runS $ do-      mbn@(MBN# mba#) <- newBigNat# nx#-      _ <- liftIO (c_mpn_andn_n mba# x# y# n#)-      _ <- case isTrue# (nx# ==# n#) of-            False -> svoid (copyWordArray# x# n# mba# n# (nx# -# n#))-            True  -> return ()-      unsafeRenormFreezeBigNat# mbn-  where-    n# | isTrue# (nx# <# ny#) = nx#-       | True                 = ny#-    nx# = sizeofBigNat# x-    ny# = sizeofBigNat# y---andBigNat :: BigNat -> BigNat -> BigNat-andBigNat x@(BN# x#) y@(BN# y#)-  | isZeroBigNat x = zeroBigNat-  | isZeroBigNat y = zeroBigNat-  | True = runS $ do-      mbn@(MBN# mba#) <- newBigNat# n#-      _ <- liftIO (c_mpn_and_n mba# x# y# n#)-      unsafeRenormFreezeBigNat# mbn-  where-    n# | isTrue# (nx# <# ny#) = nx#-       | True                 = ny#-    nx# = sizeofBigNat# x-    ny# = sizeofBigNat# y---- | If divisor is zero, @(\# 'nullBigNat', 'nullBigNat' \#)@ is returned-quotRemBigNat :: BigNat -> BigNat -> (# BigNat,BigNat #)-quotRemBigNat n@(BN# nba#) d@(BN# dba#)-  | isZeroBigNat d     = (# nullBigNat, nullBigNat #)-  | eqBigNatWord d 1## = (# n, zeroBigNat #)-  | n < d              = (# zeroBigNat, n #)-  | True = case runS go of (!q,!r) -> (# q, r #)-  where-    nn# = sizeofBigNat# n-    dn# = sizeofBigNat# d-    qn# = 1# +# nn# -# dn#-    rn# = dn#--    go = do-      qmbn@(MBN# qmba#) <- newBigNat# qn#-      rmbn@(MBN# rmba#) <- newBigNat# rn#--      _ <- liftIO (c_mpn_tdiv_qr qmba# rmba# 0# nba# nn# dba# dn#)--      q <- unsafeRenormFreezeBigNat# qmbn-      r <- unsafeRenormFreezeBigNat# rmbn-      return (q, r)--quotBigNat :: BigNat -> BigNat -> BigNat-quotBigNat n@(BN# nba#) d@(BN# dba#)-  | isZeroBigNat d     = nullBigNat-  | eqBigNatWord d 1## = n-  | n < d              = zeroBigNat-  | True = runS $ do-      let nn# = sizeofBigNat# n-      let dn# = sizeofBigNat# d-      let qn# = 1# +# nn# -# dn#-      qmbn@(MBN# qmba#) <- newBigNat# qn#-      _ <- liftIO (c_mpn_tdiv_q qmba# nba# nn# dba# dn#)-      unsafeRenormFreezeBigNat# qmbn--remBigNat :: BigNat -> BigNat -> BigNat-remBigNat n@(BN# nba#) d@(BN# dba#)-  | isZeroBigNat d     = nullBigNat-  | eqBigNatWord d 1## = zeroBigNat-  | n < d              = n-  | True = runS $ do-      let nn# = sizeofBigNat# n-      let dn# = sizeofBigNat# d-      rmbn@(MBN# rmba#) <- newBigNat# dn#-      _ <- liftIO (c_mpn_tdiv_r rmba# nba# nn# dba# dn#)-      unsafeRenormFreezeBigNat# rmbn---- | Note: Result of div/0 undefined-quotRemBigNatWord :: BigNat -> GmpLimb# -> (# BigNat, GmpLimb# #)-quotRemBigNatWord !_           0## = (# nullBigNat, 0## #)-quotRemBigNatWord n            1## = (# n,          0## #)-quotRemBigNatWord n@(BN# nba#) d# = case compareBigNatWord n d# of-    LT -> (# zeroBigNat, bigNatToWord n #)-    EQ -> (# oneBigNat, 0## #)-    GT -> case runS go of (!q,!(W# r#)) -> (# q, r# #) -- TODO: handle word/word-  where-    go = do-      let nn# = sizeofBigNat# n-      qmbn@(MBN# qmba#) <- newBigNat# nn#-      r <- liftIO (c_mpn_divrem_1 qmba# 0# nba# nn# d#)-      q <- unsafeRenormFreezeBigNat# qmbn-      return (q,r)--quotBigNatWord :: BigNat -> GmpLimb# -> BigNat-quotBigNatWord n d# = case inline quotRemBigNatWord n d# of (# q, _ #) -> q---- | div/0 not checked-remBigNatWord :: BigNat -> GmpLimb# -> Word#-remBigNatWord n@(BN# nba#) d# = c_mpn_mod_1 nba# (sizeofBigNat# n) d#--gcdBigNatWord :: BigNat -> Word# -> Word#-gcdBigNatWord bn@(BN# ba#) = c_mpn_gcd_1# ba# (sizeofBigNat# bn)--gcdBigNat :: BigNat -> BigNat -> BigNat-gcdBigNat x@(BN# x#) y@(BN# y#)-  | isZeroBigNat x = y-  | isZeroBigNat y = x-  | isTrue# (nx# >=# ny#) = runS (gcd' x# nx# y# ny#)-  | True                  = runS (gcd' y# ny# x# nx#)-  where-    gcd' a# na# b# nb# = do -- na >= nb-        mbn@(MBN# mba#) <- newBigNat# nb#-        I# rn'# <- liftIO (c_mpn_gcd# mba# a# na# b# nb#)-        let rn# = narrowGmpSize# rn'#-        case isTrue# (rn# ==# nb#) of-            False -> unsafeShrinkFreezeBigNat# mbn rn#-            True  -> unsafeFreezeBigNat# mbn--    nx# = sizeofBigNat# x-    ny# = sizeofBigNat# y---- | Extended euclidean algorithm.------ For @/a/@ and @/b/@, compute their greatest common divisor @/g/@--- and the coefficient @/s/@ satisfying @/a//s/ + /b//t/ = /g/@.------ @since 0.5.1.0-{-# NOINLINE gcdExtInteger #-}-gcdExtInteger :: Integer -> Integer -> (# Integer, Integer #)-gcdExtInteger a b = case gcdExtSBigNat a' b' of-    (# g, s #) -> let !g' = bigNatToInteger  g-                      !s' = sBigNatToInteger s-                  in (# g', s' #)-  where-    a' = integerToSBigNat a-    b' = integerToSBigNat b---- internal helper-gcdExtSBigNat :: SBigNat -> SBigNat -> (# BigNat, SBigNat #)-gcdExtSBigNat x y = case runS go of (g,s) -> (# g, s #)-  where-    go = do-        g@(MBN# g#) <- newBigNat# gn0#-        -- According to https://gmplib.org/manual/Number-Theoretic-Functions.html#index-mpz_005fgcdext-        -- abs(s) < abs(y) / (2 g)-        s@(MBN# s#) <- newBigNat# (absI# yn#)-        I# ssn_# <- liftIO (integer_gmp_gcdext# s# g# x# xn# y# yn#)-        let ssn# = narrowGmpSize# ssn_#-            sn#  = absI# ssn#-        s' <- unsafeShrinkFreezeBigNat# s sn#-        g' <- unsafeRenormFreezeBigNat# g-        case isTrue# (ssn# >=# 0#) of-            False -> return ( g', NegBN s' )-            True  -> return ( g', PosBN s' )--    !(BN# x#) = absSBigNat x-    !(BN# y#) = absSBigNat y-    xn# = ssizeofSBigNat# x-    yn# = ssizeofSBigNat# y--    gn0# = minI# (absI# xn#) (absI# yn#)--------------------------------------------------------------------------------- modular exponentiation---- | \"@'powModInteger' /b/ /e/ /m/@\" computes base @/b/@ raised to--- exponent @/e/@ modulo @abs(/m/)@.------ Negative exponents are supported if an inverse modulo @/m/@--- exists.------ __Warning__: It's advised to avoid calling this primitive with--- negative exponents unless it is guaranteed the inverse exists, as--- failure to do so will likely cause program abortion due to a--- divide-by-zero fault. See also 'recipModInteger'.------ Future versions of @integer_gmp@ may not support negative @/e/@--- values anymore.------ @since 0.5.1.0-{-# NOINLINE powModInteger #-}-powModInteger :: Integer -> Integer -> Integer -> Integer-powModInteger (S# b#) (S# e#) (S# m#)-  | isTrue# (b# >=# 0#), isTrue# (e# >=# 0#)-  = wordToInteger (powModWord (int2Word# b#) (int2Word# e#)-                              (int2Word# (absI# m#)))-powModInteger b e m = case m of-    (S# m#) -> wordToInteger (powModSBigNatWord b' e' (int2Word# (absI# m#)))-    (Jp# m') -> bigNatToInteger (powModSBigNat b' e' m')-    (Jn# m') -> bigNatToInteger (powModSBigNat b' e' m')-  where-    b' = integerToSBigNat b-    e' = integerToSBigNat e---- | \"@'powModSecInteger' /b/ /e/ /m/@\" computes base @/b/@ raised to--- exponent @/e/@ modulo @/m/@. It is required that @/e/ >= 0@ and--- @/m/@ is odd.------ This is a \"secure\" variant of 'powModInteger' using the--- @mpz_powm_sec()@ function which is designed to be resilient to side--- channel attacks and is therefore intended for cryptographic--- applications.------ This primitive is only available when the underlying GMP library--- supports it (GMP >= 5). Otherwise, it internally falls back to--- @'powModInteger'@, and a warning will be emitted when used.------ @since 1.0.2.0-{-# NOINLINE powModSecInteger #-}-powModSecInteger :: Integer -> Integer -> Integer -> Integer-powModSecInteger b e m = bigNatToInteger (powModSecSBigNat b' e' m')-  where-    b' = integerToSBigNat b-    e' = integerToSBigNat e-    m' = absSBigNat (integerToSBigNat m)--#if HAVE_SECURE_POWM == 0-{-# WARNING powModSecInteger "The underlying GMP library does not support a secure version of powModInteger which is side-channel resistant - you need at least GMP version 5 to support this" #-}-#endif---- | Version of 'powModInteger' operating on 'BigNat's------ @since 1.0.0.0-powModBigNat :: BigNat -> BigNat -> BigNat -> BigNat-powModBigNat b e m = inline powModSBigNat (PosBN b) (PosBN e) m---- | Version of 'powModInteger' for 'Word#'-sized moduli------ @since 1.0.0.0-powModBigNatWord :: BigNat -> BigNat -> GmpLimb# -> GmpLimb#-powModBigNatWord b e m# = inline powModSBigNatWord (PosBN b) (PosBN e) m#---- | Version of 'powModInteger' operating on 'Word#'s------ @since 1.0.0.0-foreign import ccall unsafe "integer_gmp_powm_word"-  powModWord :: GmpLimb# -> GmpLimb# -> GmpLimb# -> GmpLimb#---- internal non-exported helper-powModSBigNat :: SBigNat -> SBigNat -> BigNat -> BigNat-powModSBigNat b e m@(BN# m#) = runS $ do-    r@(MBN# r#) <- newBigNat# mn#-    I# rn_# <- liftIO (integer_gmp_powm# r# b# bn# e# en# m# mn#)-    let rn# = narrowGmpSize# rn_#-    case isTrue# (rn# ==# mn#) of-        False -> unsafeShrinkFreezeBigNat# r rn#-        True  -> unsafeFreezeBigNat# r-  where-    !(BN# b#) = absSBigNat b-    !(BN# e#) = absSBigNat e-    bn# = ssizeofSBigNat# b-    en# = ssizeofSBigNat# e-    mn# = sizeofBigNat# m--foreign import ccall unsafe "integer_gmp_powm"-  integer_gmp_powm# :: MutableByteArray# RealWorld-                       -> ByteArray# -> GmpSize# -> ByteArray# -> GmpSize#-                       -> ByteArray# -> GmpSize# -> IO GmpSize---- internal non-exported helper-powModSBigNatWord :: SBigNat -> SBigNat -> GmpLimb# -> GmpLimb#-powModSBigNatWord b e m# = integer_gmp_powm1# b# bn# e# en# m#-  where-    !(BN# b#) = absSBigNat b-    !(BN# e#) = absSBigNat e-    bn# = ssizeofSBigNat# b-    en# = ssizeofSBigNat# e--foreign import ccall unsafe "integer_gmp_powm1"-  integer_gmp_powm1# :: ByteArray# -> GmpSize# -> ByteArray# -> GmpSize#-                        -> GmpLimb# -> GmpLimb#---- internal non-exported helper-powModSecSBigNat :: SBigNat -> SBigNat -> BigNat -> BigNat-powModSecSBigNat b e m@(BN# m#) = runS $ do-    r@(MBN# r#) <- newBigNat# mn#-    I# rn_# <- liftIO (integer_gmp_powm_sec# r# b# bn# e# en# m# mn#)-    let rn# = narrowGmpSize# rn_#-    case isTrue# (rn# ==# mn#) of-        False -> unsafeShrinkFreezeBigNat# r rn#-        True  -> unsafeFreezeBigNat# r-  where-    !(BN# b#) = absSBigNat b-    !(BN# e#) = absSBigNat e-    bn# = ssizeofSBigNat# b-    en# = ssizeofSBigNat# e-    mn# = sizeofBigNat# m--foreign import ccall unsafe "integer_gmp_powm_sec"-  integer_gmp_powm_sec# :: MutableByteArray# RealWorld-                           -> ByteArray# -> GmpSize# -> ByteArray# -> GmpSize#-                           -> ByteArray# -> GmpSize# -> IO GmpSize----- | \"@'recipModInteger' /x/ /m/@\" computes the inverse of @/x/@ modulo @/m/@. If--- the inverse exists, the return value @/y/@ will satisfy @0 < /y/ <--- abs(/m/)@, otherwise the result is @0@.------ @since 0.5.1.0-{-# NOINLINE recipModInteger #-}-recipModInteger :: Integer -> Integer -> Integer-recipModInteger (S# x#) (S# m#)-  | isTrue# (x# >=# 0#)-  = wordToInteger (recipModWord (int2Word# x#) (int2Word# (absI# m#)))-recipModInteger x m = bigNatToInteger (recipModSBigNat x' m')-  where-    x' = integerToSBigNat x-    m' = absSBigNat (integerToSBigNat m)---- | Version of 'recipModInteger' operating on 'BigNat's------ @since 1.0.0.0-recipModBigNat :: BigNat -> BigNat -> BigNat-recipModBigNat x m = inline recipModSBigNat (PosBN x) m---- | Version of 'recipModInteger' operating on 'Word#'s------ @since 1.0.0.0-foreign import ccall unsafe "integer_gmp_invert_word"-  recipModWord :: GmpLimb# -> GmpLimb# -> GmpLimb#---- internal non-exported helper-recipModSBigNat :: SBigNat -> BigNat -> BigNat-recipModSBigNat x m@(BN# m#) = runS $ do-    r@(MBN# r#) <- newBigNat# mn#-    I# rn_# <- liftIO (integer_gmp_invert# r# x# xn# m# mn#)-    let rn# = narrowGmpSize# rn_#-    case isTrue# (rn# ==# mn#) of-        False -> unsafeShrinkFreezeBigNat# r rn#-        True  -> unsafeFreezeBigNat# r-  where-    !(BN# x#) = absSBigNat x-    xn# = ssizeofSBigNat# x-    mn# = sizeofBigNat# m--foreign import ccall unsafe "integer_gmp_invert"-  integer_gmp_invert# :: MutableByteArray# RealWorld-                         -> ByteArray# -> GmpSize#-                         -> ByteArray# -> GmpSize# -> IO GmpSize--------------------------------------------------------------------------------- Conversions to/from floating point--decodeDoubleInteger :: Double# -> (# Integer, Int# #)--- decodeDoubleInteger 0.0## = (# S# 0#, 0# #)-#if WORD_SIZE_IN_BITS == 64-decodeDoubleInteger x = case decodeDouble_Int64# x of-                          (# m#, e# #) -> (# S# m#, e# #)-#elif WORD_SIZE_IN_BITS == 32-decodeDoubleInteger x = case decodeDouble_Int64# x of-                          (# m#, e# #) -> (# int64ToInteger m#, e# #)-#endif-{-# CONSTANT_FOLDED decodeDoubleInteger #-}---- provided by GHC's RTS-foreign import ccall unsafe "__int_encodeDouble"-  int_encodeDouble# :: Int# -> Int# -> Double#--encodeDoubleInteger :: Integer -> Int# -> Double#-encodeDoubleInteger (S# m#) 0# = int2Double# m#-encodeDoubleInteger (S# m#) e# = int_encodeDouble# m# e#-encodeDoubleInteger (Jp# bn@(BN# bn#)) e#-    = c_mpn_get_d bn# (sizeofBigNat# bn) e#-encodeDoubleInteger (Jn# bn@(BN# bn#)) e#-    = c_mpn_get_d bn# (negateInt# (sizeofBigNat# bn)) e#-{-# CONSTANT_FOLDED encodeDoubleInteger #-}---- double integer_gmp_mpn_get_d (const mp_limb_t sp[], const mp_size_t sn)-foreign import ccall unsafe "integer_gmp_mpn_get_d"-  c_mpn_get_d :: ByteArray# -> GmpSize# -> Int# -> Double#--doubleFromInteger :: Integer -> Double#-doubleFromInteger (S# m#) = int2Double# m#-doubleFromInteger (Jp# bn@(BN# bn#))-    = c_mpn_get_d bn# (sizeofBigNat# bn) 0#-doubleFromInteger (Jn# bn@(BN# bn#))-    = c_mpn_get_d bn# (negateInt# (sizeofBigNat# bn)) 0#-{-# CONSTANT_FOLDED doubleFromInteger #-}---- TODO: Not sure if it's worth to write 'Float' optimized versions here-floatFromInteger :: Integer -> Float#-floatFromInteger i = double2Float# (doubleFromInteger i)--encodeFloatInteger :: Integer -> Int# -> Float#-encodeFloatInteger m e = double2Float# (encodeDoubleInteger m e)--------------------------------------------------------------------------------- FFI ccall imports--foreign import ccall unsafe "integer_gmp_gcd_word"-  gcdWord# :: GmpLimb# -> GmpLimb# -> GmpLimb#--foreign import ccall unsafe "integer_gmp_mpn_gcd_1"-  c_mpn_gcd_1# :: ByteArray# -> GmpSize# -> GmpLimb# -> GmpLimb#--foreign import ccall unsafe "integer_gmp_mpn_gcd"-  c_mpn_gcd# :: MutableByteArray# s -> ByteArray# -> GmpSize#-                -> ByteArray# -> GmpSize# -> IO GmpSize--foreign import ccall unsafe "integer_gmp_gcdext"-  integer_gmp_gcdext# :: MutableByteArray# s -> MutableByteArray# s-                         -> ByteArray# -> GmpSize#-                         -> ByteArray# -> GmpSize# -> IO GmpSize---- mp_limb_t mpn_add_1 (mp_limb_t *rp, const mp_limb_t *s1p, mp_size_t n,---                      mp_limb_t s2limb)-foreign import ccall unsafe "gmp.h __gmpn_add_1"-  c_mpn_add_1 :: MutableByteArray# s -> ByteArray# -> GmpSize# -> GmpLimb#-                 -> IO GmpLimb---- mp_limb_t mpn_sub_1 (mp_limb_t *rp, const mp_limb_t *s1p, mp_size_t n,---                      mp_limb_t s2limb)-foreign import ccall unsafe "gmp.h __gmpn_sub_1"-  c_mpn_sub_1 :: MutableByteArray# s -> ByteArray# -> GmpSize# -> GmpLimb#-                 -> IO GmpLimb---- mp_limb_t mpn_mul_1 (mp_limb_t *rp, const mp_limb_t *s1p, mp_size_t n,---                      mp_limb_t s2limb)-foreign import ccall unsafe "gmp.h __gmpn_mul_1"-  c_mpn_mul_1 :: MutableByteArray# s -> ByteArray# -> GmpSize# -> GmpLimb#-                 -> IO GmpLimb---- mp_limb_t mpn_add (mp_limb_t *rp, const mp_limb_t *s1p, mp_size_t s1n,---                    const mp_limb_t *s2p, mp_size_t s2n)-foreign import ccall unsafe "gmp.h __gmpn_add"-  c_mpn_add :: MutableByteArray# s -> ByteArray# -> GmpSize#-               -> ByteArray# -> GmpSize# -> IO GmpLimb---- mp_limb_t mpn_sub (mp_limb_t *rp, const mp_limb_t *s1p, mp_size_t s1n,---                    const mp_limb_t *s2p, mp_size_t s2n)-foreign import ccall unsafe "gmp.h __gmpn_sub"-  c_mpn_sub :: MutableByteArray# s -> ByteArray# -> GmpSize# -> ByteArray#-               -> GmpSize# -> IO GmpLimb---- mp_limb_t mpn_mul (mp_limb_t *rp, const mp_limb_t *s1p, mp_size_t s1n,---                    const mp_limb_t *s2p, mp_size_t s2n)-foreign import ccall unsafe "gmp.h __gmpn_mul"-  c_mpn_mul :: MutableByteArray# s -> ByteArray# -> GmpSize# -> ByteArray#-               -> GmpSize# -> IO GmpLimb---- int mpn_cmp (const mp_limb_t *s1p, const mp_limb_t *s2p, mp_size_t n)-foreign import ccall unsafe "gmp.h __gmpn_cmp"-  c_mpn_cmp :: ByteArray# -> ByteArray# -> GmpSize# -> CInt#---- void mpn_tdiv_qr (mp_limb_t *qp, mp_limb_t *rp, mp_size_t qxn,---                   const mp_limb_t *np, mp_size_t nn,---                   const mp_limb_t *dp, mp_size_t dn)-foreign import ccall unsafe "gmp.h __gmpn_tdiv_qr"-  c_mpn_tdiv_qr :: MutableByteArray# s -> MutableByteArray# s -> GmpSize#-                   -> ByteArray# -> GmpSize# -> ByteArray# -> GmpSize# -> IO ()--foreign import ccall unsafe "integer_gmp_mpn_tdiv_q"-  c_mpn_tdiv_q :: MutableByteArray# s -> ByteArray# -> GmpSize# -> ByteArray#-                  -> GmpSize# -> IO ()--foreign import ccall unsafe "integer_gmp_mpn_tdiv_r"-  c_mpn_tdiv_r :: MutableByteArray# s -> ByteArray# -> GmpSize# -> ByteArray#-                  -> GmpSize# -> IO ()---- mp_limb_t mpn_divrem_1 (mp_limb_t *r1p, mp_size_t qxn, mp_limb_t *s2p,---                         mp_size_t s2n, mp_limb_t s3limb)-foreign import ccall unsafe "gmp.h __gmpn_divrem_1"-  c_mpn_divrem_1 :: MutableByteArray# s -> GmpSize# -> ByteArray# -> GmpSize#-                    -> GmpLimb# -> IO GmpLimb---- mp_limb_t mpn_mod_1 (const mp_limb_t *s1p, mp_size_t s1n, mp_limb_t s2limb)-foreign import ccall unsafe "gmp.h __gmpn_mod_1"-  c_mpn_mod_1 :: ByteArray# -> GmpSize# -> GmpLimb# -> GmpLimb#---- mp_limb_t integer_gmp_mpn_rshift (mp_limb_t rp[], const mp_limb_t sp[],---                                   mp_size_t sn, mp_bitcnt_t count)-foreign import ccall unsafe "integer_gmp_mpn_rshift"-  c_mpn_rshift :: MutableByteArray# s -> ByteArray# -> GmpSize# -> GmpBitCnt#-                  -> IO GmpLimb---- mp_limb_t integer_gmp_mpn_rshift (mp_limb_t rp[], const mp_limb_t sp[],---                                   mp_size_t sn, mp_bitcnt_t count)-foreign import ccall unsafe "integer_gmp_mpn_rshift_2c"-  c_mpn_rshift_2c :: MutableByteArray# s -> ByteArray# -> GmpSize# -> GmpBitCnt#-                     -> IO GmpLimb---- mp_limb_t integer_gmp_mpn_lshift (mp_limb_t rp[], const mp_limb_t sp[],---                                   mp_size_t sn, mp_bitcnt_t count)-foreign import ccall unsafe "integer_gmp_mpn_lshift"-  c_mpn_lshift :: MutableByteArray# s -> ByteArray# -> GmpSize# -> GmpBitCnt#-                  -> IO GmpLimb---- void mpn_and_n (mp_limb_t *rp, const mp_limb_t *s1p, const mp_limb_t *s2p,---                 mp_size_t n)-foreign import ccall unsafe "integer_gmp_mpn_and_n"-  c_mpn_and_n :: MutableByteArray# s -> ByteArray# -> ByteArray# -> GmpSize#-                 -> IO ()---- void mpn_andn_n (mp_limb_t *rp, const mp_limb_t *s1p, const mp_limb_t *s2p,---                  mp_size_t n)-foreign import ccall unsafe "integer_gmp_mpn_andn_n"-  c_mpn_andn_n :: MutableByteArray# s -> ByteArray# -> ByteArray# -> GmpSize#-                  -> IO ()---- void mpn_ior_n (mp_limb_t *rp, const mp_limb_t *s1p, const mp_limb_t *s2p,---                 mp_size_t n)-foreign import ccall unsafe "integer_gmp_mpn_ior_n"-  c_mpn_ior_n :: MutableByteArray# s -> ByteArray# -> ByteArray# -> GmpSize#-                 -> IO ()---- void mpn_xor_n (mp_limb_t *rp, const mp_limb_t *s1p, const mp_limb_t *s2p,---                 mp_size_t n)-foreign import ccall unsafe "integer_gmp_mpn_xor_n"-  c_mpn_xor_n :: MutableByteArray# s -> ByteArray# -> ByteArray# -> GmpSize#-                 -> IO ()---- mp_bitcnt_t mpn_popcount (const mp_limb_t *s1p, mp_size_t n)-foreign import ccall unsafe "gmp.h __gmpn_popcount"-  c_mpn_popcount :: ByteArray# -> GmpSize# -> GmpBitCnt#--------------------------------------------------------------------------------- BigNat-wrapped ByteArray#-primops---- | Return number of limbs contained in 'BigNat'.------ The result is always @>= 1@ since even zero is encoded with 1 limb.-sizeofBigNat# :: BigNat -> GmpSize#-sizeofBigNat# (BN# x#)-    = sizeofByteArray# x# `uncheckedIShiftRL#` GMP_LIMB_SHIFT#--data MutBigNat s = MBN# !(MutableByteArray# s)--getSizeofMutBigNat# :: MutBigNat s -> State# s -> (# State# s, GmpSize# #)---getSizeofMutBigNat# :: MutBigNat s -> S s GmpSize#-getSizeofMutBigNat# (MBN# x#) s =-    case getSizeofMutableByteArray# x# s of-        (# s', n# #) -> (# s', n# `uncheckedIShiftRL#` GMP_LIMB_SHIFT# #)--newBigNat# :: GmpSize# -> S s (MutBigNat s)-newBigNat# limbs# s =-    case newByteArray# (limbs# `uncheckedIShiftL#` GMP_LIMB_SHIFT#) s of-        (# s', mba# #) -> (# s', MBN# mba# #)--writeBigNat# :: MutBigNat s -> GmpSize# -> GmpLimb# -> State# s -> State# s-writeBigNat# (MBN# mba#) = writeWordArray# mba#---- | Extract /n/-th (0-based) limb in 'BigNat'.--- /n/ must be less than size as reported by 'sizeofBigNat#'.-indexBigNat# :: BigNat -> GmpSize# -> GmpLimb#-indexBigNat# (BN# ba#) = indexWordArray# ba#--unsafeFreezeBigNat# :: MutBigNat s -> S s BigNat-unsafeFreezeBigNat# (MBN# mba#) s = case unsafeFreezeByteArray# mba# s of-                                      (# s', ba# #) -> (# s', BN# ba# #)--resizeMutBigNat# :: MutBigNat s -> GmpSize# -> S s (MutBigNat s)-resizeMutBigNat# (MBN# mba0#) nsz# s-  | isTrue# (bsz# ==# n#) = (# s', MBN# mba0# #)-  | True =-    case resizeMutableByteArray# mba0# bsz# s' of-        (# s'', mba# #) -> (# s'', MBN# mba# #)-  where-    bsz# = nsz# `uncheckedIShiftL#` GMP_LIMB_SHIFT#-    !(# s', n# #) = getSizeofMutableByteArray# mba0# s--shrinkMutBigNat# :: MutBigNat s -> GmpSize# -> State# s -> State# s-shrinkMutBigNat# (MBN# mba0#) nsz# s-  | isTrue# (bsz# ==# n#) = s' -- no-op-  | True                  = shrinkMutableByteArray# mba0# bsz# s'-  where-    bsz# = nsz# `uncheckedIShiftL#` GMP_LIMB_SHIFT#-    !(# s', n# #) = getSizeofMutableByteArray# mba0# s--unsafeSnocFreezeBigNat# :: MutBigNat s -> GmpLimb# -> S s BigNat-unsafeSnocFreezeBigNat# mbn0@(MBN# mba0#) limb# s = go s'-  where-    n#   = nb0# `uncheckedIShiftRL#` GMP_LIMB_SHIFT#-    !(# s', nb0# #) = getSizeofMutableByteArray# mba0# s-    go = do-        (MBN# mba#) <- resizeMutBigNat# mbn0 (n# +# 1#)-        _ <- svoid (writeWordArray# mba# n# limb#)-        unsafeFreezeBigNat# (MBN# mba#)---- | May shrink underlyng 'ByteArray#' if needed to satisfy BigNat invariant-unsafeRenormFreezeBigNat# :: MutBigNat s -> S s BigNat-unsafeRenormFreezeBigNat# mbn s-  | isTrue# (n0# ==# 0#)  = (# s'', nullBigNat #)-  | isTrue# (n#  ==# 0#)  = (# s'', zeroBigNat #)-  | isTrue# (n#  ==# n0#) = (unsafeFreezeBigNat# mbn) s''-  | True                  = (unsafeShrinkFreezeBigNat# mbn n#) s''-  where-    !(# s', n0# #) = getSizeofMutBigNat# mbn s-    !(# s'', n# #) = normSizeofMutBigNat'# mbn n0# s'---- | Shrink MBN-unsafeShrinkFreezeBigNat# :: MutBigNat s -> GmpSize# -> S s BigNat-unsafeShrinkFreezeBigNat# x@(MBN# xmba) 1#-    = \s -> case readWordArray# xmba 0# s of-        (# s', w#   #) -> freezeOneLimb w# s'-  where-    freezeOneLimb 0## = return zeroBigNat-    freezeOneLimb 1## = return oneBigNat-    freezeOneLimb w# | isTrue# (not# w# `eqWord#` 0##) = return czeroBigNat-    freezeOneLimb _   = do-        _ <- svoid (shrinkMutBigNat# x 1#)-        unsafeFreezeBigNat# x-unsafeShrinkFreezeBigNat# x y# = do-    _ <- svoid (shrinkMutBigNat# x y#)-    unsafeFreezeBigNat# x---copyWordArray# :: ByteArray# -> Int# -> MutableByteArray# s -> Int# -> Int#-                  -> State# s -> State# s-copyWordArray# src src_ofs dst dst_ofs len-  = copyByteArray# src (src_ofs `uncheckedIShiftL#` GMP_LIMB_SHIFT#)-                   dst (dst_ofs `uncheckedIShiftL#` GMP_LIMB_SHIFT#)-                   (len `uncheckedIShiftL#` GMP_LIMB_SHIFT#)--copyWordArray :: BigNat -> Int# -> MutBigNat s -> Int# -> Int# -> S s ()-copyWordArray (BN# ba#) ofs_ba# (MBN# mba#) ofs_mba# len#-  = svoid (copyWordArray# ba# ofs_ba# mba# ofs_mba# len#)--clearWordArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s-clearWordArray# mba ofs len-  = setByteArray# mba (ofs `uncheckedIShiftL#` GMP_LIMB_SHIFT#)-                      (len `uncheckedIShiftL#` GMP_LIMB_SHIFT#) 0#---- | Version of 'normSizeofMutBigNat'#' which scans all allocated 'MutBigNat#'-normSizeofMutBigNat# :: MutBigNat s -> State# s -> (# State# s, Int# #)-normSizeofMutBigNat# mbn@(MBN# mba) s = normSizeofMutBigNat'# mbn sz# s'-  where-    !(# s', n# #) = getSizeofMutableByteArray# mba s-    sz# = n# `uncheckedIShiftRA#` GMP_LIMB_SHIFT#---- | Find most-significant non-zero limb and return its index-position--- plus one. Start scanning downward from the initial limb-size--- (i.e. start-index plus one) given as second argument.------ NB: The 'normSizeofMutBigNat' of 'zeroBigNat' would be @0#@-normSizeofMutBigNat'# :: MutBigNat s -> GmpSize#-                         -> State# s -> (# State# s, GmpSize# #)-normSizeofMutBigNat'# (MBN# mba) = go-  where-    go  0# s = (# s, 0# #)-    go i0# s = case readWordArray# mba (i0# -# 1#) s of-        (# s', 0## #) -> go (i0# -# 1#) s'-        (# s', _  #) -> (# s', i0# #)---- | Construct 'BigNat' from existing 'ByteArray#' containing /n/--- 'GmpLimb's in least-significant-first order.------ If possible 'ByteArray#', will be used directly (i.e. shared--- /without/ cloning the 'ByteArray#' into a newly allocated one)------ Note: size parameter (times @sizeof(GmpLimb)@) must be less or--- equal to its 'sizeofByteArray#'.-byteArrayToBigNat# :: ByteArray# -> GmpSize# -> BigNat-byteArrayToBigNat# ba# n0#-  | isTrue# (n#  ==# 0#)    = zeroBigNat-  | isTrue# (baszr# ==# 0#) -- i.e. ba# is multiple of limb-size-  , isTrue# (baszq# ==# n#) = (BN# ba#)-  | True = runS $ \s ->-      let !(# s', mbn@(MBN# mba#) #) = newBigNat# n# s-          !(# s'', ba_sz# #) = getSizeofMutableByteArray# mba# s'-          go = do _ <- svoid (copyByteArray# ba# 0# mba# 0# ba_sz# )-                  unsafeFreezeBigNat# mbn-      in go s''-  where-    !(# baszq#, baszr# #) = quotRemInt# (sizeofByteArray# ba#) GMP_LIMB_BYTES#--    n#  = fmssl (BN# ba#) (n0# -# 1#)---- | Read 'Integer' (without sign) from memory location at @/addr/@ in--- base-256 representation.------ @'importIntegerFromAddr' /addr/ /size/ /msbf/@------ See description of 'importIntegerFromByteArray' for more details.------ @since 1.0.0.0-importIntegerFromAddr :: Addr# -> Word# -> Int# -> IO Integer-importIntegerFromAddr addr len msbf = IO $ do-    bn <- liftIO (importBigNatFromAddr addr len msbf)-    return (bigNatToInteger bn)---- | Version of 'importIntegerFromAddr' constructing a 'BigNat'-importBigNatFromAddr :: Addr# -> Word# -> Int# -> IO BigNat-importBigNatFromAddr _ 0## _ = IO (\s -> (# s, zeroBigNat #))-importBigNatFromAddr addr len0 1# = IO $ do -- MSBF-    W# ofs <- liftIO (c_scan_nzbyte_addr addr 0## len0)-    let len = len0 `minusWord#` ofs-        addr' = addr `plusAddr#` (word2Int# ofs)-    importBigNatFromAddr# addr' len 1#-importBigNatFromAddr addr len0 _ = IO $ do -- LSBF-    W# len <- liftIO (c_rscan_nzbyte_addr addr 0## len0)-    importBigNatFromAddr# addr len 0#--foreign import ccall unsafe "integer_gmp_scan_nzbyte"-    c_scan_nzbyte_addr :: Addr# -> Word# -> Word# -> IO Word--foreign import ccall unsafe "integer_gmp_rscan_nzbyte"-    c_rscan_nzbyte_addr :: Addr# -> Word# -> Word# -> IO Word---- | Helper for 'importBigNatFromAddr'-importBigNatFromAddr# :: Addr# -> Word# -> Int# -> S RealWorld BigNat-importBigNatFromAddr# _ 0## _ = return zeroBigNat-importBigNatFromAddr# addr len msbf = do-    mbn@(MBN# mba#) <- newBigNat# n#-    () <- liftIO (c_mpn_import_addr mba# addr 0## len msbf)-    unsafeFreezeBigNat# mbn-  where-    -- n = ceiling(len / SIZEOF_HSWORD), i.e. number of limbs required-    n# = (word2Int# len +# (SIZEOF_HSWORD# -# 1#)) `quotInt#` SIZEOF_HSWORD#--foreign import ccall unsafe "integer_gmp_mpn_import"-    c_mpn_import_addr :: MutableByteArray# RealWorld -> Addr# -> Word# -> Word#-                      -> Int# -> IO ()---- | Read 'Integer' (without sign) from byte-array in base-256 representation.------ The call------ @'importIntegerFromByteArray' /ba/ /offset/ /size/ /msbf/@------ reads------ * @/size/@ bytes from the 'ByteArray#' @/ba/@ starting at @/offset/@------ * with most significant byte first if @/msbf/@ is @1#@ or least---   significant byte first if @/msbf/@ is @0#@, and------ * returns a new 'Integer'------ @since 1.0.0.0-importIntegerFromByteArray :: ByteArray# -> Word# -> Word# -> Int# -> Integer-importIntegerFromByteArray ba ofs len msbf-    = bigNatToInteger (importBigNatFromByteArray ba ofs len msbf)---- | Version of 'importIntegerFromByteArray' constructing a 'BigNat'-importBigNatFromByteArray :: ByteArray# -> Word# -> Word# -> Int# -> BigNat-importBigNatFromByteArray _  _    0##  _  = zeroBigNat-importBigNatFromByteArray ba ofs0 len0 1# = runS $ do -- MSBF-    W# ofs <- liftIO (c_scan_nzbyte_bytearray ba ofs0 len0)-    let len = (len0 `plusWord#` ofs0) `minusWord#` ofs-    importBigNatFromByteArray# ba ofs len 1#-importBigNatFromByteArray ba ofs  len0 _  = runS $ do -- LSBF-    W# len <- liftIO (c_rscan_nzbyte_bytearray ba ofs len0)-    importBigNatFromByteArray# ba ofs len 0#--foreign import ccall unsafe "integer_gmp_scan_nzbyte"-    c_scan_nzbyte_bytearray :: ByteArray# -> Word# -> Word# -> IO Word--foreign import ccall unsafe "integer_gmp_rscan_nzbyte"-    c_rscan_nzbyte_bytearray :: ByteArray# -> Word# -> Word# -> IO Word---- | Helper for 'importBigNatFromByteArray'-importBigNatFromByteArray# :: ByteArray# -> Word# -> Word# -> Int#-                           -> S RealWorld BigNat-importBigNatFromByteArray# _ _ 0## _ = return zeroBigNat-importBigNatFromByteArray# ba ofs len msbf = do-    mbn@(MBN# mba#) <- newBigNat# n#-    () <- liftIO (c_mpn_import_bytearray mba# ba ofs len msbf)-    unsafeFreezeBigNat# mbn-  where-    -- n = ceiling(len / SIZEOF_HSWORD), i.e. number of limbs required-    n# = (word2Int# len +# (SIZEOF_HSWORD# -# 1#)) `quotInt#` SIZEOF_HSWORD#--foreign import ccall unsafe "integer_gmp_mpn_import"-    c_mpn_import_bytearray :: MutableByteArray# RealWorld -> ByteArray# -> Word#-                           -> Word# -> Int# -> IO ()---- | Test whether all internal invariants are satisfied by 'BigNat' value------ Returns @1#@ if valid, @0#@ otherwise.------ This operation is mostly useful for test-suites and/or code which--- constructs 'Integer' values directly.-isValidBigNat# :: BigNat -> Int#-isValidBigNat# (BN# ba#)-  = (szq# ># 0#) `andI#` (szr# ==# 0#) `andI#` isNorm#-  where-    isNorm#-      | isTrue# (szq# ># 1#) = (indexWordArray# ba# (szq# -# 1#)) `neWord#` 0##-      | True                 = 1#--    sz# = sizeofByteArray# ba#--    !(# szq#, szr# #) = quotRemInt# sz# GMP_LIMB_BYTES#---- | Version of 'nextPrimeInteger' operating on 'BigNat's------ @since 1.0.0.0-nextPrimeBigNat :: BigNat -> BigNat-nextPrimeBigNat bn@(BN# ba#) = runS $ do-    mbn@(MBN# mba#) <- newBigNat# n#-    (W# c#) <- liftIO (nextPrime# mba# ba# n#)-    case c# of-        0## -> unsafeFreezeBigNat# mbn-        _   -> unsafeSnocFreezeBigNat# mbn c#-  where-    n# = sizeofBigNat# bn--foreign import ccall unsafe "integer_gmp_next_prime"-  nextPrime# :: MutableByteArray# RealWorld -> ByteArray# -> GmpSize#-                -> IO GmpLimb--------------------------------------------------------------------------------- monadic combinators for low-level state threading--type S s a = State# s -> (# State# s, a #)--infixl 1 >>=-infixl 1 >>-infixr 0 $--{-# INLINE ($) #-}-($)                     :: (a -> b) -> a -> b-f $ x                   =  f x--{-# INLINE (>>=) #-}-(>>=) :: S s a -> (a -> S s b) -> S s b-(>>=) m k = \s -> case m s of (# s', a #) -> k a s'--{-# INLINE (>>) #-}-(>>) :: S s a -> S s b -> S s b-(>>) m k = \s -> case m s of (# s', _ #) -> k s'--{-# INLINE svoid #-}-svoid :: (State# s -> State# s) -> S s ()-svoid m0 = \s -> case m0 s of s' -> (# s', () #)--{-# INLINE return #-}-return :: a -> S s a-return a = \s -> (# s, a #)--{-# INLINE liftIO #-}-liftIO :: IO a -> S RealWorld a-liftIO (IO m) = m---- NB: equivalent of GHC.IO.unsafeDupablePerformIO, see notes there-runS :: S RealWorld a -> a-runS m = case runRW# m of (# _, a #) -> a---- stupid hack-fail :: [Char] -> S s a-fail s = return (raise# s)---------------------------------------------------------------------------------- | Internal helper type for "signed" 'BigNat's------ This is a useful abstraction for operations which support negative--- mp_size_t arguments.-data SBigNat = NegBN !BigNat | PosBN !BigNat---- | Absolute value of 'SBigNat'-absSBigNat :: SBigNat -> BigNat-absSBigNat (NegBN bn) = bn-absSBigNat (PosBN bn) = bn---- | /Signed/ limb count. Negative sizes denote negative integers-ssizeofSBigNat# :: SBigNat -> GmpSize#-ssizeofSBigNat# (NegBN bn) = negateInt# (sizeofBigNat# bn)-ssizeofSBigNat# (PosBN bn) = sizeofBigNat# bn---- | Construct 'SBigNat' from 'Int#' value-intToSBigNat# :: Int# -> SBigNat-intToSBigNat# 0#     = PosBN zeroBigNat-intToSBigNat# 1#     = PosBN oneBigNat-intToSBigNat# (-1#)  = NegBN oneBigNat-intToSBigNat# i# | isTrue# (i# ># 0#) = PosBN (wordToBigNat (int2Word# i#))-                 | True   = NegBN (wordToBigNat (int2Word# (negateInt# i#)))---- | Convert 'Integer' into 'SBigNat'-integerToSBigNat :: Integer -> SBigNat-integerToSBigNat (S#  i#) = intToSBigNat# i#-integerToSBigNat (Jp# bn) = PosBN bn-integerToSBigNat (Jn# bn) = NegBN bn---- | Convert 'SBigNat' into 'Integer'-sBigNatToInteger :: SBigNat -> Integer-sBigNatToInteger (NegBN bn) = bigNatToNegInteger bn-sBigNatToInteger (PosBN bn) = bigNatToInteger bn--------------------------------------------------------------------------------- misc helpers, some of these should rather be primitives exported by ghc-prim--cmpW# :: Word# -> Word# -> Ordering-cmpW# x# y#-  | isTrue# (x# `ltWord#` y#) = LT-  | isTrue# (x# `eqWord#` y#) = EQ-  | True                      = GT-{-# INLINE cmpW# #-}--bitWord# :: Int# -> Word#-bitWord# = uncheckedShiftL# 1##-{-# INLINE bitWord# #-}--testBitWord# :: Word# -> Int# -> Int#-testBitWord# w# i# = (bitWord# i# `and#` w#) `neWord#` 0##-{-# INLINE testBitWord# #-}--popCntI# :: Int# -> Int#-popCntI# i# = word2Int# (popCnt# (int2Word# i#))-{-# INLINE popCntI# #-}---- branchless version-absI# :: Int# -> Int#-absI# i# = (i# `xorI#` nsign) -# nsign-  where-    -- nsign = negateInt# (i# <# 0#)-    nsign = uncheckedIShiftRA# i# (WORD_SIZE_IN_BITS# -# 1#)---- branchless version-sgnI# :: Int# -> Int#-sgnI# x# = (x# ># 0#) -# (x# <# 0#)--cmpI# :: Int# -> Int# -> Int#-cmpI# x# y# = (x# ># y#) -# (x# <# y#)--minI# :: Int# -> Int# -> Int#-minI# x# y# | isTrue# (x# <=# y#) = x#-            | True                = y#---- find most-sig set limb, starting at given index-fmssl :: BigNat -> Int# -> Int#-fmssl !bn i0# = go i0#-  where-    go i# | isTrue# (i# <# 0#)                         = 0#-          | isTrue# (neWord# (indexBigNat# bn i#) 0##) = i# +# 1#-          | True                                       = go (i# -# 1#)