Expect PPL version 0.10.
[cloog-ppl.git] / configure.in
blobfde060810f06fa33015e4a8956daca5f65505184
2 dnl /**-------------------------------------------------------------------**
3 dnl  **                              CLooG                                **
4 dnl  **-------------------------------------------------------------------**
5 dnl  **                           configure.in                            **
6 dnl  **-------------------------------------------------------------------**
7 dnl  **                   First version: august 7th 2002                  **
8 dnl  **-------------------------------------------------------------------**/
9 dnl
10 dnl Input file for autoconf to build a configuration shellscript.
11 dnl To build the configure script from the CLooG's top-level directory, use
12 dnl autoconf -l autoconf autoconf/configure.in > configure
13 dnl if it doesn't work (invalid option -l) try -I instead
14 dnl autoconf -I autoconf autoconf/configure.in > configure
16 dnl /**************************************************************************
17 dnl *               CLooG : the Chunky Loop Generator (experimental)          *
18 dnl ***************************************************************************
19 dnl *                                                                         *
20 dnl * Copyright (C) 2001 Cedric Bastoul                                       *
21 dnl *                                                                         *
22 dnl * This is free software; you can redistribute it and/or modify it under   *
23 dnl * the terms of the GNU General Public License as published by the Free    *
24 dnl * Software Foundation; either version 2 of the License, or (at your       *
25 dnl * option) any later version.                                              *
26 dnl *                                                                         *
27 dnl * This software is distributed in the hope that it will be useful, but    *
28 dnl * WITHOUT ANY WARRANTY; without even the implied warranty of              *
29 dnl * MERCHANTABILITYor FITNESS FOR A PARTICULAR PURPOSE.  See the GNU        *
30 dnl * General Public License for more details.                                *
31 dnl *                                                                         *
32 dnl * You should have received a copy of the GNU General Public License along *
33 dnl * with software; if not, write to the Free Software Foundation, Inc.,     *
34 dnl * 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA                  *
35 dnl *                                                                         *
36 dnl * CLooG, the Chunky Loop Generator                                        *
37 dnl * Written by Cedric Bastoul, Cedric.Bastoul@inria.fr                      *
38 dnl *                                                                         *
39 dnl ***************************************************************************/
41 AC_PREREQ(2.13)
42 AC_INIT(source/cloog.c)
43 AC_CONFIG_AUX_DIR(autoconf)
44 AC_CONFIG_MACRO_DIR([m4])
46 dnl Every other copy of the package version number gets its value from here.
47 AM_INIT_AUTOMAKE(cloog, 0.15)
49 dnl default version
50 BITS="64"
52 AC_SUBST(VERSION)
54 # Version number machinery.
55 changequote(<<, >>)dnl
56 if test -n "`expr $VERSION : '\([0-9]*\)\.[0-9]*\.[0-9]*'`"
57 then
58   CLOOG_VERSION_MAJOR=`expr $VERSION : '\([0-9]*\)\.[0-9]*\.[0-9]*'`
59   CLOOG_VERSION_MINOR=`expr $VERSION : '[0-9]*\.\([0-9]*\)\.[0-9]*'`
60   CLOOG_VERSION_REVISION=`expr $VERSION : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
61   CLOOG_VERSION_BETA=`expr $VERSION : '[0-9]*\.[0-9]*\.[0-9]*pre\([0-9]*\)'`
62 else
63   CLOOG_VERSION_MAJOR=`expr $VERSION : '\([0-9]*\)\.[0-9]*'`
64   CLOOG_VERSION_MINOR=`expr $VERSION : '[0-9]*\.\([0-9]*\)'`
65   CLOOG_VERSION_REVISION=0
66   CLOOG_VERSION_BETA=`expr $VERSION : '[0-9]*\.[0-9]*pre\([0-9]*\)'`
68 if test -z "$CLOOG_VERSION_BETA"
69 then
70   CLOOG_VERSION_BETA=0
72 changequote([, ])dnl
73 AC_SUBST(CLOOG_VERSION_MAJOR)
74 AC_SUBST(CLOOG_VERSION_MINOR)
75 AC_SUBST(CLOOG_VERSION_REVISION)
76 AC_SUBST(CLOOG_VERSION_BETA)
79 dnl /**************************************************************************
80 dnl  *                              Checking                                  *
81 dnl  **************************************************************************/
83 dnl Checks for programs.
84 AC_PROG_CC
85 AC_PROG_LN_S
86 AC_PROG_MAKE_SET
87 AC_CHECK_PROG(CD, cd)
88 dnl Configure needs an empty install.sh file with this, i HATE that...
89 AC_PROG_INSTALL
90 AC_PROG_LIBTOOL
93 dnl Checks for typedefs, structures, and compiler characteristics.
94 AC_C_CONST
95 AC_TYPE_SIZE_T
99 dnl Checks for header files.
100 AC_HEADER_STDC
103 dnl Checks for library functions.
104 AC_CHECK_FUNCS(strtol)
107 dnl /**************************************************************************
108 dnl  *                             Option setting                             *
109 dnl  **************************************************************************/
111 dnl Some default values cause I'm not sure whether autoconf set them, while
112 dnl documentation says it does...
113 gmp_package="yes"
114 gmp_include_package="yes"
115 gmp_library_package="yes"
117 MP_BITS="MP"
118 MP_DFLAGS=-DLINEAR_VALUE_IS_MP
119 NEED_MP="no"
121 dnl --with-ppl=ppl-path
122 AC_ARG_WITH(ppl,
123             [AS_HELP_STRING([--with-ppl=DIR],
124                             [Prefix of Parma Polyhedral Library installation])])
126 dnl --with-polylib=polylib-path
127 AC_ARG_WITH(polylib_prefix,
128             [AS_HELP_STRING([--with-polylib-prefix=DIR],
129                             [Prefix of PolyLib installation])])
130 AC_ARG_WITH(polylib_exec_prefix,
131             [AS_HELP_STRING([--with-polylib-exec-prefix=DIR],
132                             [Exec prefix of PolyLib installation])])
133 AC_ARG_WITH(polylib_builddir,
134             [AS_HELP_STRING([--with-polylib-builddir=DIR],
135                             [Location of PolyLib builddir])])
136 AC_ARG_WITH(bits,
137             [  --with-bits=32|64|gmp   PolyLib library type to use],
138             [ echo "polylib$withval"; BITS=$withval ])
140 dnl --with-gmp=gmp-path
141 AC_ARG_WITH(gmp,
142         [  --with-gmp=DIR          DIR where the gmp package is installed],
143         [ echo "Package gmp : $withval" &&
144           gmp_package=$withval &&
145           GMP_INC=$gmp_package/include &&
146           GMP_LIB=$gmp_package/lib &&
147           NEED_MP="yes"])
149 AC_ARG_WITH(gmp-include,
150         [  --with-gmp-include=DIR  DIR where gmp.h is installed],
151         [ echo "Package gmp-include : $withval" &&
152           gmp_include_package=$withval &&
153           GMP_INC=$gmp_include_package &&
154           NEED_MP="yes"])
156 AC_ARG_WITH(gmp-library,
157         [  --with-gmp-library=DIR  DIR where the gmp library is installed],
158         [ echo "Package gmp-library : $withval" &&
159           gmp_library_package=$withval &&
160           GMP_LIB=$gmp_library_package &&
161           NEED_MP="yes"])
164 dnl /**************************************************************************
165 dnl  *                            Where is GMP?                               *
166 dnl  **************************************************************************/
169 dnl Checking for gmp
170 AC_MSG_CHECKING(whether gmp works)
171 if test "$gmp_package" = "no"; then
172   echo "GMP package not defined"
173   AC_MSG_RESULT(no)
174   TO_BUILD_MP=""
175 else
176   if test "$NEED_MP" = "no"; then
177     echo "Mode normal GMP"
178     TO_BUILD="$TO_BUILD MP"
179     AC_CHECK_HEADER(gmp.h,
180                     [AC_CHECK_LIB(gmp,
181                                   __gmpz_init,
182                                   [LIBS="$LIBS -lgmp"],
183                                   [echo "Can't find gmp library." &&
184                                    echo "MP version will not be builded." &&
185                                    TO_BUILD_MP=""])],
186                     [echo "Can't find gmp headers." &&
187                      echo "MP version will not be builded." &&
188                      TO_BUILD_MP=""])
189   else
190     dnl Default given by --with-X is "yes", --without-X is "no". We also
191     dnl initialized manually all gmp_package* variables to "yes" (thus they are
192     dnl supposed to be "yes" except if the user set them himself).
193     
194     if test "$gmp_package" != "yes" ; then
195       echo "(GMP path has been set by user)"
196       GMP_DIR=$gmp_package
197       dnl Useful for AC_CHECK_X to find what we want.
198       CPPFLAGS="-I$GMP_DIR/include $CPPFLAGS"
199       LDFLAGS="-L$GMP_DIR/lib $LDFLAGS"
200     fi
201     
202     if test "$gmp_include_package" != "yes" ; then
203       CPPFLAGS="-I$GMP_INC $CPPFLAGS"
204     fi
205     
206     if test "$gmp_library_package" != "yes" ; then
207       LDFLAGS="-L$GMP_LIB $LDFLAGS"
208     fi
209      
210     AC_CHECK_HEADER(gmp.h,
211                     [],
212                     [AC_MSG_ERROR(Can't find gmp headers.)])
213     AC_CHECK_LIB(gmp,
214                  __gmpz_init,
215                  [LIBS="$LIBS -lgmp"],
216                  [AC_MSG_ERROR(Can't find gmp library.)])
217     
218     AC_MSG_RESULT(yes)
219   fi
222 dnl /**************************************************************************
223 dnl  *                          Where is PolyLib?                             *
224 dnl  **************************************************************************/
226 polylibs="64 32"
227 case "$BITS" in
228     32|64|gmp)
229         polylibs=$BITS
230     ;;
231 esac
233 dnl Checking for PolyLib
234 AC_SUBST(cl_cv_polylib)
235 AC_SUBST(POLYLIB_CPPFLAGS)
236 AC_SUBST(POLYLIB_LDFLAGS)
237 AC_SUBST(POLYLIB_LIBS)
239 if test "x$with_polylib_prefix" != "x" -a "x$with_polylib_exec_prefix" = "x"
240 then
241         with_polylib_exec_prefix=$with_polylib_prefix
243 if test "x$with_polylib_prefix" != "x" -a "x$with_polylib_builddir" != "x"; then
244         AC_MSG_ERROR(
245         [--with-polylib-prefix and --with-polylib-builddir are mutually exclusive])
248 AC_MSG_CHECKING(for location of PolyLib)
249 if test "x$with_polylib_builddir" != "x"; then
250         AC_MSG_RESULT(built in $with_polylib_builddir)
251         polylib_srcdir=`echo @srcdir@ | $with_polylib_builddir/config.status --file=-`
252         AC_MSG_NOTICE(PolyLib sources in $polylib_srcdir)
253         polylib_polylibs=`echo @polylibs@ | $with_polylib_builddir/config.status --file=-`
254         AC_MSG_NOTICE(Configured polylibs: $polylib_polylibs)
255         CPPFLAGS="-I$with_polylib_builddir/include -I$polylib_srcdir/include $CPPFLAGS"
256         for BITS in $polylibs; do
257                 cl_cv_polylib=missing
258                 for PL in $polylib_polylibs; do
259                         if test "libpolylib$BITS.la" = $PL; then
260                                 cl_cv_polylib="polylib$BITS"
261                                 break;
262                         fi
263                 done
264                 if test "$cl_cv_polylib" != "missing"; then
265                         LIBS="$with_polylib_builddir/lib$cl_cv_polylib.la $LIBS"
266                         break;
267                 fi
268         done
269 else
270         if test "x$with_polylib_prefix" != "x"; then
271                 AC_MSG_RESULT(installed in $with_polylib_exec_prefix)
272                 CPPFLAGS="-I$with_polylib_prefix/include $CPPFLAGS"
273                 LDFLAGS="-L$with_polylib_exec_prefix/lib $LDFLAGS"
274                 LD_LIBRARY_PATH="$with_polylib_exec_prefix/lib:$LD_LIBRARY_PATH"
275                 export LD_LIBRARY_PATH
276         else
277                 AC_MSG_RESULT(installed in standard location)
278         fi
279         for BITS in $polylibs; do
280                 cl_cv_polylib="polylib$BITS"
281                 AC_CHECK_LIB($cl_cv_polylib,PolyhedronTSort,[
282                         LIBS="-l$cl_cv_polylib $LIBS"
283                         break
284                 ])
285                 cl_cv_polylib=missing
286         done
288 if test "$cl_cv_polylib" = "missing"; then
289         AC_MSG_RESULT(Can't find PolyLib.)
290 else
291         AC_CHECK_HEADER(polylib/$cl_cv_polylib.h,[],
292                         [AC_MSG_ERROR(Can't find PolyLib headers.)])
295 AC_SUBST(GIT_INDEX)
296 if test -f $srcdir/.git/HEAD; then
297         GIT_INDEX="\$(top_srcdir)/.git/index"
301 dnl /**************************************************************************
302 dnl  *                     Where is Parma Polyhedral Library?                 *
303 dnl  **************************************************************************/
305 # The default back-end for polyhedral operations is PolyLib, unless
306 # -with-ppl is used.
307 AC_SUBST(POLYHEDRAL_BACKEND)
308 POLYHEDRAL_BACKEND=polylib
310 dnl Checking for PPL
311 ppl_major_version=0
312 ppl_minor_version=10
313 AC_SUBST(PPL_CPPFLAGS)
314 AC_SUBST(PPL_LDFLAGS)
315 AC_SUBST(PPL_LIBS)
317 AC_MSG_CHECKING(for Parma Polyhedral Library (PPL))
318 if test "x$with_ppl" != "x"; then
320         if test "x$with_polylib_prefix" != "x" -o "x$with_polylib_exec_prefix" != "x" -o "x$with_polylib_builddir" != "x"; then
321                 AC_MSG_ERROR([--with-polylib and --with-ppl are mutually exclusive])
322         fi
324         AC_MSG_RESULT(installed in $with_ppl)
325         POLYHEDRAL_BACKEND=ppl
326         CPPFLAGS="-I$with_ppl/include -DCLOOG_PPL_BACKEND $CPPFLAGS"
327         LDFLAGS="-L$with_ppl/lib $LDFLAGS"
328         LD_LIBRARY_PATH="$with_ppl/lib:$LD_LIBRARY_PATH"
329         export LD_LIBRARY_PATH
331         AC_CHECK_HEADER(ppl_c.h,[],
332                         [AC_MSG_ERROR(Can't find PPL headers.)])
334         AC_MSG_CHECKING([for version $ppl_major_version.$ppl_minor_version of PPL])
335         AC_TRY_COMPILE([#include "ppl_c.h"],[
336         #if PPL_VERSION_MAJOR != $ppl_major_version || PPL_VERSION_MINOR != $ppl_minor_version
337         choke me
338         #endif
339         ], [AC_MSG_RESULT([yes])], [AC_MSG_ERROR(Can't find correct version of PPL.) ])
341         LIBS="$LIBS -lppl_c -lppl -lgmpxx"
343 else
344         AC_MSG_RESULT(not using PPL)
347 dnl /**************************************************************************
348 dnl  *                            Substitutions                               *
349 dnl  **************************************************************************/
352 dnl Substitutions to do in Makefile.in.
353 AC_SUBST(target)
354 AC_SUBST(CC)
355 AC_SUBST(LN_S)
356 AC_SUBST(SHEXT)
358 AC_SUBST(prefix)
359 AC_SUBST(exec_prefix)
360 AC_SUBST(INSTALL)
362 AC_SUBST(BITS)
364 AC_CONFIG_FILES(Makefile test/Makefile include/cloog/cloog.h autoconf/Doxyfile)
365 AC_CONFIG_FILES(doc/Makefile)
366 dnl AC_CONFIG_FILES(include/cloog/version.h)
367 AC_CONFIG_FILES([genversion.sh], [chmod +x genversion.sh])
368 AC_CONFIG_COMMANDS([version.h],
369         [echo '#define CLOOG_HEAD "'`./genversion.sh`'"' > version.h])
370 AC_CONFIG_COMMANDS([doc/gitversion.texi],
371         [echo '@set VERSION '`./genversion.sh`'' > doc/gitversion.texi])
372 AC_OUTPUT
375 echo "             /*-----------------------------------------------*"
376 echo "              *           CLooG configuration is OK           *"
377 echo "              *-----------------------------------------------*/"
378 echo "It appears that your system is OK to start CLooG compilation. You need"
379 echo "now to type \"make\". After compilation, you should check CLooG by typing"
380 echo "\"make check\". If no problem occur, you can type \"make uninstall\" if"
381 echo "you are upgrading an old version. Lastly type \"make install\" to install"
382 echo "CLooG on your system (log as root if necessary)."