source: git/m4/ntl-check.m4 @ 807b30

spielwiese
Last change on this file since 807b30 was 807b30, checked in by Hans Schoenemann <hannes@…>, 3 years ago
fix: ntl check
  • Property mode set to 100644
File size: 4.4 KB
Line 
1# Check for NTL
2# Bradford Hovinen, 2001-06-13
3# Modified by Pascal Giorgi, 2003-12-03
4# Inspired by gnome-bonobo-check.m4 by Miguel de Icaza, 99-04-12
5# Stolen from Chris Lahey       99-2-5
6# stolen from Manish Singh again
7# stolen back from Frank Belew
8# stolen from Manish Singh
9# Shamelessly stolen from Owen Taylor
10
11dnl LB_CHECK_NTL ([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
12dnl
13dnl Test for Victor Shoup's NTL (Number Theory Library) and define
14dnl NTL_CPPFLAGS and NTL_LIBS
15
16AC_DEFUN([LB_CHECK_NTL],
17[
18DEFAULT_CHECKING_PATH="/usr /usr/local /sw /opt/local"
19
20AC_ARG_WITH(ntl,
21[  --with-ntl=<path>|yes|no  Use NTL library. If argument is no, you do not have
22                            the library installed on your machine (set as
23                            default). If argument is yes or <empty> that means
24                            the library is reachable with the standard search
25                            path (/usr or /usr/local). Otherwise you give the
26                            <path> to the directory which contain the library.
27             ],
28             [if test "$withval" = yes ; then
29                        NTL_HOME_PATH="${DEFAULT_CHECKING_PATH}"
30              elif test "$withval" != no ; then
31                        NTL_HOME_PATH="$withval"
32                        NTL_SHOULD_BE_PRESENT="yes"
33             fi],
34             [NTL_HOME_PATH="${DEFAULT_CHECKING_PATH}"])
35
36min_ntl_version=ifelse([$1], ,1.0,$1)
37
38
39dnl Check for existence
40BACKUP_CXXFLAGS=${CXXFLAGS}
41BACKUP_CFLAGS=${CFLAGS}
42BACKUP_LIBS=${LIBS}
43
44AC_LANG_PUSH(C++)
45
46if test -n "$NTL_HOME_PATH"; then
47AC_MSG_CHECKING(for NTL >= $min_ntl_version)
48fi
49
50for NTL_HOME in ${NTL_HOME_PATH}
51 do
52if test -r "$NTL_HOME/include/NTL/ZZ.h"; then
53
54        if test "x$NTL_HOME" != "x/usr"; then
55          if test -e  $NTL_HOME/include/NTL/mat_ZZ.h; then
56                NTL_CPPFLAGS="-I${NTL_HOME}/include"
57                NTL_LIBS="-L${NTL_HOME}/lib -lntl"
58          fi
59        else
60                NTL_CPPFLAGS=""
61                NTL_LIBS="-lntl"
62        fi
63###     CFLAGS="${BACKUP_CFLAGS} ${NTL_CPPFLAGS} ${GMP_CPPFLAGS}"
64        CXXFLAGS="${BACKUP_CXXFLAGS} ${NTL_CPPFLAGS} ${GMP_CPPFLAGS}"
65        LIBS="${NTL_LIBS} ${GMP_LIBS} ${BACKUP_LIBS}"
66
67        AC_TRY_LINK(
68        [#include <NTL/ZZ.h>],
69        [NTL::ZZ a;],
70        [
71        AC_TRY_RUN(
72        [#include <NTL/version.h>
73        #include <NTL/config.h>
74        #ifndef NTL_GMP_LIP
75        int main() {return -1;}
76        #else
77        int main () { if (NTL_MAJOR_VERSION < 5) return -1; else return 0;}
78        #endif
79        ],[
80        ntl_found="yes"
81        break
82        ],[
83        ntl_problem="$problem $NTL_HOME"
84        unset NTL_CPPFLAGS
85        unset NTL_LIBS
86        ],[
87        ntl_found="yes"
88        ntl_cross="yes"
89        break
90        ])
91        ],
92        [
93        ntl_found="no"
94        ntl_checked="$checked $NTL_HOME"
95        unset NTL_CPPFLAGS
96        unset NTL_LIBS
97        ])
98dnl try again with -std=c++11 (for NTL >=10 with threads)
99        if test "x$NTL_HOME" != "x/usr"; then
100                NTL_CPPFLAGS="-std=c++11 -I${NTL_HOME}/include"
101                NTL_LIBS="-L${NTL_HOME}/lib -lntl"
102        else
103                NTL_CPPFLAGS="-std=c++11"
104                NTL_LIBS="-lntl"
105        fi
106###     CFLAGS="${BACKUP_CFLAGS} ${NTL_CPPFLAGS} ${GMP_CPPFLAGS}"
107        CXXFLAGS="${BACKUP_CXXFLAGS} ${NTL_CPPFLAGS} ${GMP_CPPFLAGS}"
108        LIBS="${BACKUP_LIBS} ${NTL_LIBS} ${GMP_LIBS}"
109
110        AC_TRY_LINK(
111        [#include <NTL/ZZ.h>],
112        [NTL::ZZ a;],
113        [
114        AC_TRY_RUN(
115        [#include <NTL/version.h>
116        #include <NTL/config.h>
117        #ifndef NTL_GMP_LIP
118        int main() {return -1;}
119        #else
120        int main () { if (NTL_MAJOR_VERSION < 5) return -1; else return 0;}
121        #endif
122        ],[
123        ntl_found="yes"
124        break
125        ],[
126        ntl_problem="$problem $NTL_HOME"
127        unset NTL_CPPFLAGS
128        unset NTL_LIBS
129        ],[
130        ntl_found="yes"
131        ntl_cross="yes"
132        break
133        ])
134        ],
135        [
136        ntl_found="no"
137        ntl_checked="$checked $NTL_HOME"
138        unset NTL_CPPFLAGS
139        unset NTL_LIBS
140        ])
141else
142        ntl_found="no"
143fi
144done
145
146if test "x$ntl_found" = "xyes" ; then
147        AC_SUBST(NTL_CPPFLAGS)
148        AC_SUBST(NTL_LIBS)
149        AC_DEFINE(HAVE_NTL,1,[Define if NTL is installed])
150        HAVE_NTL=yes
151        if test "x$ntl_cross" != "xyes"; then
152                AC_MSG_RESULT(found)
153        else
154                AC_MSG_RESULT(unknown)
155                echo "WARNING: You appear to be cross compiling, so there is no way to determine"
156                echo "whether your NTL version is new enough. I am assuming it is."
157        fi
158        ifelse([$2], , :, [$2])
159elif test -n "$ntl_problem"; then
160        AC_MSG_RESULT(problem)
161        echo "Sorry, your NTL version is too old or not configured with NTL_GMP_LIP=on. Disabling."
162        ifelse([$3], , :, [$3])
163elif test   "x$ntl_found" = "xno";  then
164        if test "x$NTL_SHOULD_BE_PRESENT" = "xyes"; then
165                AC_MSG_ERROR([NTL support was requested but NTL could not be detected])
166        fi
167        AC_MSG_RESULT(not found)
168        ifelse([$3], , :, [$3])
169fi
170
171AC_LANG_POP
172
173AM_CONDITIONAL(SING_HAVE_NTL, test "x$HAVE_NTL" = "xyes")
174
175# TODO: The following seems to set CXXFLAGS even if it was not defined previously!!!!
176CXXFLAGS=${BACKUP_CXXFLAGS}
177LIBS=${BACKUP_LIBS}
178#unset LD_LIBRARY_PATH
179
180])
181
Note: See TracBrowser for help on using the repository browser.