File: gmp.m4

package info (click to toggle)
gretl 2025b-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 64,984 kB
  • sloc: ansic: 426,435; sh: 4,916; makefile: 3,257; cpp: 2,777; xml: 610; perl: 364
file content (139 lines) | stat: -rw-r--r-- 4,279 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# Configure paths for GMP
# Hans Petter Jansson     2001-04-29
# Modified slightly by Allin Cottrell, April 2003

# Based on macros by Owen Taylor.

dnl AM_PATH_GMP([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
dnl Test for GMP, and define GMP_CFLAGS and GMP_LIBS.
dnl
AC_DEFUN([AM_PATH_GMP],
[dnl 
AC_ARG_WITH(gmp-prefix,[  --with-gmp-prefix=PFX   Prefix where GMP is installed (optional)],
            gmp_config_prefix="$withval", gmp_config_prefix="")

  if test x$gmp_config_prefix != x ; then
     gmp_config_args="$gmp_config_args --prefix=$gmp_config_prefix"
  fi

  min_gmp_version=ifelse([$1], ,1.0.0,$1)

  AC_MSG_CHECKING(for GMP - version >= $min_gmp_version)

  GMP_CFLAGS="-I$gmp_config_prefix/include"
  GMP_LIBS="-L$gmp_config_prefix/lib -lgmp"

  ac_save_CFLAGS="$CFLAGS"
  ac_save_LIBS="$LIBS"
  CFLAGS="$CFLAGS $GMP_CFLAGS"
  LIBS="$GMP_LIBS $LIBS"

dnl
dnl Now check if the installed GMP is sufficiently new.
dnl
  rm -f conf.gmptest
  AC_TRY_RUN([
#include <gmp.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int 
main ()
{
  int gmp_major_version = 0, gmp_minor_version = 0, gmp_micro_version = 0;
  int major, minor, micro;
  char *tmp_version;
  mpz_t a, b, c;

  mpz_init(a);
  mpz_init(b);
  mpz_init(c);
  mpz_mul(c, a, b);

  system("touch conf.gmptest");

#ifdef __GNU_MP_VERSION
  gmp_major_version = __GNU_MP_VERSION;
#endif

#ifdef __GNU_MP_VERSION_MINOR
  gmp_minor_version = __GNU_MP_VERSION_MINOR;
#endif

#ifdef __GNU_MP_VERSION_PATCHLEVEL
  gmp_micro_version = __GNU_MP_VERSION_PATCHLEVEL;
#endif

  /* HP/UX 9 (%@#!) writes to sscanf strings */
  tmp_version = strdup("$min_gmp_version");
  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
     printf("%s, bad version string\n", "$min_gmp_version");
     exit(1);
  }

  if ((gmp_major_version > major) ||
     ((gmp_major_version == major) && (gmp_minor_version > minor)) ||
     ((gmp_major_version == major) && (gmp_minor_version == minor) && (gmp_micro_version >= micro))) {
    return 0;
  } else {
     printf("\n*** An old version of GNU MP (%d.%d.%d) was found.\n",
           gmp_major_version, gmp_minor_version, gmp_micro_version);
    printf("*** You need a version of GNU MP newer than %d.%d.%d. The latest version of\n",
           major, minor, micro);

    printf("*** GNU MP is always available from ftp://ftp.gnu.org.\n");
    printf("***\n");
  }

  return 1;
}
],, no_gmp=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
  CFLAGS="$ac_save_CFLAGS"
  LIBS="$ac_save_LIBS"

  if test "x$no_gmp" = x ; then
     AC_MSG_RESULT(yes)
     ifelse([$2], , :, [$2])     
  else
     AC_MSG_RESULT(no)
     if test -f conf.gmptest ; then
       :
     else
       echo "*** Could not run GNU MP test program, checking why..."
       CFLAGS="$CFLAGS $GMP_CFLAGS"
       LIBS="$LIBS $GMP_LIBS"
       AC_TRY_LINK([
#include <gmp.h>
#include <stdio.h>
],     [ return (1); ],
       [ echo "*** The test program compiled, but did not run. This usually means"
         echo "*** that the run-time linker is not finding GNU MP or finding the wrong"
         echo "*** version of GNU MP. If it is not finding GNU MP, you'll need to set your"
         echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
         echo "*** to the installed location  Also, make sure you have run ldconfig if that"
         echo "*** is required on your system"
         echo "***"
         echo "*** If you have an old version installed, it is best to remove it, although"
         echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
         echo "***" ],
       [ echo "*** The test program failed to compile or link. See the file config.log for the"
         echo "*** exact error that occured. This usually means GNU MP was incorrectly installed"
         echo "*** or that you have moved GNU MP since it was installed." ])
         CFLAGS="$ac_save_CFLAGS"
         LIBS="$ac_save_LIBS"
     fi
     GMP_CFLAGS=""
     GMP_LIBS=""
     ifelse([$3], , :, [$3])
  fi
  if test "$GMP_CFLAGS" = "-I/include" ; then 
     GMP_CFLAGS=""
  fi
  if test "$GMP_LIBS" = "-L/lib -lgmp" ; then 
     GMP_LIBS="-lgmp"
  fi
  AC_SUBST(GMP_CFLAGS)
  AC_SUBST(GMP_LIBS)
  rm -f conf.gmptest
])