hooks to count the input and output size in bits
[barvinok.git] / configure.in
blobc4b4c0aa3fd5171e46ef27f58d9101479a8a1226
1 AC_INIT
2 AM_INIT_AUTOMAKE(barvinok, 0.10)
3 AC_PROG_LIBTOOL
4 AC_PROG_CXX
5 AC_SUBST(versioninfo)
6 versioninfo=4:0:0
8 AC_CHECK_HEADERS(getopt.h)
10 dnl Check for GMP library
11 AC_MSG_CHECKING(whether to use GMP)
12 AC_ARG_WITH(libgmp, 
13         [  --with-libgmp           DIR Location of the GMP Distribution], 
14         gmp_package=$withval, gmp_package=yes)
15 if test "x$gmp_package" = "xno"; then
16         AC_MSG_RESULT(no)
17         AC_MSG_ERROR(Need gmp)
18 else
19         AC_MSG_RESULT(yes)
20         if test "x$gmp_package" != "xyes"; then
21             GMP_DIR=$gmp_package
22             if test ! -d "$GMP_DIR"; then
23                 AC_ERROR(Directory given for GMP Distribution is not a directory)
24             fi
25             CPPFLAGS="-I$GMP_DIR/include $CPPFLAGS"
26             LDFLAGS="-L$GMP_DIR/lib $LDFLAGS"
27         fi
28         poly_cv_gmpfatal="no"
29         AC_CHECK_HEADER(gmp.h,
30                 [AC_CHECK_LIB(gmp,main,
31                     [],
32                     [poly_cv_gmpfatal="yes"])],
33                 [poly_cv_gmpfatal="yes"])
34         if test "$poly_cv_gmpfatal" = "yes"; then
35                 AC_MSG_ERROR([GMP not found])
36         fi
38 AC_CHECK_DECL(mpz_divisible_p,[],[AC_LIBOBJ(mpz_divisible_p)],[#include <gmp.h>])
40 AC_ARG_WITH(polylib,
41             [  --with-polylib=DIR      DIR Location of PolyLib],
42             [ echo "Package polylib : $withval" && polylib_package=$withval],  
43             [ polylib_package=yes ])
45 if test "$polylib_package" = "no"; then
46     AC_MSG_ERROR(Need polylib)
49 if test "$polylib_package" != "yes"; then
50     CPPFLAGS="-I$polylib_package/include $CPPFLAGS"
51     LDFLAGS="-L$polylib_package/lib $LDFLAGS"
52     LD_LIBRARY_PATH="$polylib_package/lib:$LD_LIBRARY_PATH"
53     export LD_LIBRARY_PATH
56 AC_CHECK_LIB(polylibgmp, PolyhedronTSort,[],[
57     AC_MSG_ERROR(Need polylib)
59 AC_REPLACE_FUNCS(Enumeration_Free reduce_evalue)
60 AC_TRY_RUN([
61 #include <polylib/polylibgmp.h>
63 int main()
65     int i, j;
66     Polyhedron *P;
67     Matrix *M = Matrix_Alloc(6,5);
68     for (i = 0; i < 6; ++i) {
69         value_set_si(M->p[i][0], 1);
70         for (j = 1; j < 4; ++j)
71             value_set_si(M->p[i][j], (j-1 == i/2) * (1-2*(i%2)));
72         value_set_si(M->p[i][4], i%2);
73     }
74     P = Constraints2Polyhedron(M, 6);
75     return !(P->NbRays == 8);
77 ],,
78 AC_MSG_WARN([This version of polylib does not automatically])
79 AC_MSG_WARN([enlarge the chernikova table space]))
81 AC_TRY_RUN([
82 #include <polylib/polylibgmp.h>
84 int main()
86     enode *en = new_enode(polynomial, 1, 1);
87     return !(en->arr[0].x.p == NULL);
89 ],,
90 AC_MSG_WARN([This version of polylib leaks]))
92 AC_TRY_RUN([
93 #include <stdio.h>
94 #include <polylib/polylibgmp.h>
96 int main()
98     Matrix *M;
99     Polyhedron *P, *C;
100     Param_Polyhedron *PP;
101     int i;
102     Param_Vertices *V;
104     freopen("$srcdir/tests/ehrhart/t12.in", "r", stdin);
105     M = Matrix_Read();
106     P = Constraints2Polyhedron(M, 1024);
107     M = Matrix_Read();
108     C = Constraints2Polyhedron(M, 1024);
109     PP = Polyhedron2Param_SimplifiedDomain(&P, C, 1024, NULL, NULL);
110     for (i = 0, V = PP->V; V; ++i, V = V->next)
111         ;
112     return !(i == 10);
115 AC_MSG_WARN([This version of polylib produces incorrect vertices.]))
117 AC_MSG_CHECKING([number of arguments of Polyhedron_Enumerate])
118 AC_TRY_COMPILE([#include <polylib/polylibgmp.h>], 
119                [Polyhedron_Enumerate(NULL,NULL,0,NULL)],
120                [AC_MSG_RESULT(4)
121                 AC_DEFINE(HAVE_ENUMERATE4,[],
122                           [Polyhedron_Enumerate takes four arguments])],
123                [AC_MSG_RESULT(3)])
125 AC_MSG_CHECKING([number of arguments of count_points])
126 AC_TRY_COMPILE([#include <polylib/polylibgmp.h>], 
127                [count_points(0,NULL,NULL,NULL)],
128                [AC_MSG_RESULT(4)
129                 AC_DEFINE(HAVE_COUNT_POINTS4,[],
130                           [count_points takes four arguments])],
131                [AC_MSG_RESULT(3)])
133 AC_ARG_WITH(piplib,
134             [  --with-piplib=DIR       DIR Location of PolyLib],
135             [ echo "Package piplib : $withval" && piplib_package=$withval],  
136             [ piplib_package=yes ])
138 AC_SUBST(bv_extra_programs)
139 if test "$piplib_package" != "no"; then
140     if test "$piplib_package" != "yes"; then
141         CPPFLAGS="-I$piplib_package/include $CPPFLAGS"
142         LDFLAGS="-L$piplib_package/lib $LDFLAGS"
143     fi
145     AC_CHECK_LIB(piplibMP, pip_solve,[
146         AC_DEFINE(HAVE_PIPLIB,[],[use piplib])
147         LIBS="-lpiplibMP $LIBS"
148         AC_LIBOBJ(piputil)
149         bv_extra_programs="piptest $bv_extra_programs"
150     ],[
151         AC_MSG_WARN([Piplib not found])
152     ])
156 AC_MSG_CHECKING(if --enable-fractional option specified)
157 AC_ARG_ENABLE(fractional,
158             [  --enable-fractional     Use fractional representation],
159             [bv_cv_fractional=$enableval], [bv_cv_fractional="no"])
160 AC_MSG_RESULT($bv_cv_fractional)
161 AC_MSG_CHECKING(if --enable-modulo option specified)
162 AC_ARG_ENABLE(modulo,
163             [  --enable-modulo         Use fractional representation],
164             [bv_cv_modulo=$enableval], [bv_cv_modulo="no"])
165 AC_MSG_RESULT($bv_cv_modulo)
166 if test "x$bv_cv_modulo" != "xno" -o "x$bv_cv_fractional" != "xno"; then
167         AC_DEFINE(USE_MODULO,[], [Use fractional representation])
170 AC_ARG_WITH(ntl,
171             [  --with-ntl=DIR          DIR Location of NTL],
172             [ echo "Package ntl : $withval" && ntl_package=$withval],  
173             [ ntl_package=yes ])
175 if test "$ntl_package" = "no"; then
176     AC_MSG_ERROR(Need ntl)
179 if test "$ntl_package" != "yes"; then
180     CPPFLAGS="-I$ntl_package/include $CPPFLAGS"
181     LDFLAGS="-L$ntl_package/lib $LDFLAGS"
184 AC_CHECK_LIB(ntl, main,[],[
185     AC_MSG_ERROR(Need ntl)
188 AC_CONFIG_HEADERS(config.h)
189 AC_OUTPUT(Makefile)