Fix http://gcc.gnu.org/PR43012
[cloog-ppl.git] / configure.in
blobecfc73839100f8ed836efae985325f0a187b6083
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)
45 dnl Every other copy of the package version number gets its value from here.
46 AM_INIT_AUTOMAKE(cloog, 0.15)
47 AC_CONFIG_HEADER(include/cloog/cloog-config.h)
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)
106 AC_CHECK_HEADER(sys/resource.h,[AC_DEFINE([HAS_SYS_RESOURCE_H],1,[presence of sys/resource.h])],
107                 [AC_MSG_RESULT([no])])
109 dnl /**************************************************************************
110 dnl  *                             Option setting                             *
111 dnl  **************************************************************************/
113 dnl Some default values cause I'm not sure whether autoconf set them, while
114 dnl documentation says it does...
115 gmp_package="yes"
116 gmp_include_package="yes"
117 gmp_library_package="yes"
119 MP_BITS="MP"
120 AC_DEFINE([LINEAR_VALUE_IS_MP], 1, [Empty comment])
121 NEED_MP="no"
123 dnl --with-ppl=ppl-path
124 AC_ARG_WITH(ppl,
125             [AS_HELP_STRING([--with-ppl=DIR],
126                             [Prefix of Parma Polyhedral Library installation])])
128 dnl --with-polylib=polylib-path
129 AC_ARG_WITH(polylib_prefix,
130             [AS_HELP_STRING([--with-polylib-prefix=DIR],
131                             [Prefix of PolyLib installation])])
132 AC_ARG_WITH(polylib_exec_prefix,
133             [AS_HELP_STRING([--with-polylib-exec-prefix=DIR],
134                             [Exec prefix of PolyLib installation])])
135 AC_ARG_WITH(polylib_builddir,
136             [AS_HELP_STRING([--with-polylib-builddir=DIR],
137                             [Location of PolyLib builddir])])
138 AC_ARG_WITH(bits,
139             [  --with-bits=32|64|gmp   PolyLib library type to use],
140             [ echo "polylib$withval"; BITS=$withval ])
142 dnl --with-gmp=gmp-path
143 AC_ARG_WITH(gmp,
144         [  --with-gmp=DIR          DIR where the gmp package is installed],
145         [ echo "Package gmp : $withval" &&
146           gmp_package=$withval &&
147           GMP_INC=$gmp_package/include &&
148           GMP_LIB=$gmp_package/lib &&
149           NEED_MP="yes"])
151 AC_ARG_WITH(gmp-include,
152         [  --with-gmp-include=DIR  DIR where gmp.h is installed],
153         [ echo "Package gmp-include : $withval" &&
154           gmp_include_package=$withval &&
155           GMP_INC=$gmp_include_package &&
156           NEED_MP="yes"])
158 AC_ARG_WITH(gmp-library,
159         [  --with-gmp-library=DIR  DIR where the gmp library is installed],
160         [ echo "Package gmp-library : $withval" &&
161           gmp_library_package=$withval &&
162           GMP_LIB=$gmp_library_package &&
163           NEED_MP="yes"])
166 dnl /**************************************************************************
167 dnl  *                            Where is GMP?                               *
168 dnl  **************************************************************************/
171 dnl Checking for gmp
172 AC_MSG_CHECKING(whether gmp works)
173 if test "$gmp_package" = "no"; then
174   echo "GMP package not defined"
175   AC_MSG_RESULT(no)
176   TO_BUILD_MP=""
177 else
178   if test "$NEED_MP" = "no"; then
179     echo "Mode normal GMP"
180     TO_BUILD="$TO_BUILD MP"
181     AC_CHECK_HEADER(gmp.h,
182                     [AC_CHECK_LIB(gmp,
183                                   __gmpz_init,
184                                   [LIBS="$LIBS -lgmp"],
185                                   [echo "Can't find gmp library." &&
186                                    echo "MP version will not be builded." &&
187                                    TO_BUILD_MP=""])],
188                     [echo "Can't find gmp headers." &&
189                      echo "MP version will not be builded." &&
190                      TO_BUILD_MP=""])
191   else
192     dnl Default given by --with-X is "yes", --without-X is "no". We also
193     dnl initialized manually all gmp_package* variables to "yes" (thus they are
194     dnl supposed to be "yes" except if the user set them himself).
195     
196     if test "$gmp_package" != "yes" ; then
197       echo "(GMP path has been set by user)"
198       GMP_DIR=$gmp_package
199       dnl Useful for AC_CHECK_X to find what we want.
200       CPPFLAGS="-I$GMP_DIR/include $CPPFLAGS"
201       LDFLAGS="-L$GMP_DIR/lib $LDFLAGS"
202     fi
203     
204     if test "$gmp_include_package" != "yes" ; then
205       CPPFLAGS="-I$GMP_INC $CPPFLAGS"
206     fi
207     
208     if test "$gmp_library_package" != "yes" ; then
209       LDFLAGS="-L$GMP_LIB $LDFLAGS"
210     fi
211      
212     AC_CHECK_HEADER(gmp.h,
213                     [],
214                     [AC_MSG_ERROR(Can't find gmp headers.)])
215     AC_CHECK_LIB(gmp,
216                  __gmpz_init,
217                  [LIBS="$LIBS -lgmp"],
218                  [AC_MSG_ERROR(Can't find gmp library.)])
219     
220     AC_MSG_RESULT(yes)
221   fi
224 dnl /**************************************************************************
225 dnl  *                          Where is PolyLib?                             *
226 dnl  **************************************************************************/
228 polylibs="64 32"
229 case "$BITS" in
230     32|64|gmp)
231         polylibs=$BITS
232     ;;
233 esac
235 dnl Checking for PolyLib
236 AC_SUBST(cl_cv_polylib)
237 AC_SUBST(POLYLIB_CPPFLAGS)
238 AC_SUBST(POLYLIB_LDFLAGS)
239 AC_SUBST(POLYLIB_LIBS)
241 if test "x$with_polylib_prefix" != "x" -a "x$with_polylib_exec_prefix" = "x"
242 then
243         with_polylib_exec_prefix=$with_polylib_prefix
245 if test "x$with_polylib_prefix" != "x" -a "x$with_polylib_builddir" != "x"; then
246         AC_MSG_ERROR(
247         [--with-polylib-prefix and --with-polylib-builddir are mutually exclusive])
250 AC_MSG_CHECKING(for location of PolyLib)
251 if test "x$with_polylib_builddir" != "x"; then
252         AC_MSG_RESULT(built in $with_polylib_builddir)
253         polylib_srcdir=`echo @srcdir@ | $with_polylib_builddir/config.status --file=-`
254         AC_MSG_NOTICE(PolyLib sources in $polylib_srcdir)
255         polylib_polylibs=`echo @polylibs@ | $with_polylib_builddir/config.status --file=-`
256         AC_MSG_NOTICE(Configured polylibs: $polylib_polylibs)
257         CPPFLAGS="-I$with_polylib_builddir/include -I$polylib_srcdir/include $CPPFLAGS"
258         for BITS in $polylibs; do
259                 cl_cv_polylib=missing
260                 for PL in $polylib_polylibs; do
261                         if test "libpolylib$BITS.la" = $PL; then
262                                 cl_cv_polylib="polylib$BITS"
263                                 break;
264                         fi
265                 done
266                 if test "$cl_cv_polylib" != "missing"; then
267                         LIBS="$with_polylib_builddir/lib$cl_cv_polylib.la $LIBS"
268                         break;
269                 fi
270         done
271 else
272         if test "x$with_polylib_prefix" != "x"; then
273                 AC_MSG_RESULT(installed in $with_polylib_exec_prefix)
274                 CPPFLAGS="-I$with_polylib_prefix/include $CPPFLAGS"
275                 LDFLAGS="-L$with_polylib_exec_prefix/lib $LDFLAGS"
276                 LD_LIBRARY_PATH="$with_polylib_exec_prefix/lib:$LD_LIBRARY_PATH"
277                 export LD_LIBRARY_PATH
278         else
279                 AC_MSG_RESULT(installed in standard location)
280         fi
281         for BITS in $polylibs; do
282                 cl_cv_polylib="polylib$BITS"
283                 AC_CHECK_LIB($cl_cv_polylib,PolyhedronTSort,[
284                         LIBS="-l$cl_cv_polylib $LIBS"
285                         break
286                 ])
287                 cl_cv_polylib=missing
288         done
290 if test "$cl_cv_polylib" = "missing"; then
291         AC_MSG_RESULT(Can't find PolyLib.)
292 else
293         AC_CHECK_HEADER(polylib/$cl_cv_polylib.h,[],
294                         [AC_MSG_ERROR(Can't find PolyLib headers.)])
297 AC_SUBST(GIT_INDEX)
298 if test -f $srcdir/.git/HEAD; then
299         GIT_INDEX="\$(top_srcdir)/.git/index"
303 dnl /**************************************************************************
304 dnl  *                     Where is Parma Polyhedral Library?                 *
305 dnl  **************************************************************************/
307 # The default back-end for polyhedral operations is PolyLib, unless
308 # -with-ppl is used.
309 AC_SUBST(POLYHEDRAL_BACKEND)
310 POLYHEDRAL_BACKEND=polylib
312 dnl Checking for PPL
313 ppl_major_version=0
314 ppl_minor_version=10
315 AC_SUBST(PPL_CPPFLAGS)
316 AC_SUBST(PPL_LDFLAGS)
317 AC_SUBST(PPL_LIBS)
319 AC_MSG_CHECKING(for Parma Polyhedral Library (PPL))
320 if test "x$with_ppl" != "x" -a "x$with_ppl" != "xno"; then
322         if test "x$with_polylib_prefix" != "x" -o "x$with_polylib_exec_prefix" != "x" -o "x$with_polylib_builddir" != "x"; then
323                 AC_MSG_ERROR([--with-polylib and --with-ppl are mutually exclusive])
324         fi
326         if test "x$with_ppl" != "xyes" ; then
327             ppl_prefix=$with_ppl
328             AC_MSG_RESULT(installed in $ppl_prefix)
329             CPPFLAGS="-I$ppl_prefix/include $CPPFLAGS"
330             LDFLAGS="-L$ppl_prefix/lib $LDFLAGS"
331             LD_LIBRARY_PATH="$ppl_prefix/lib:$LD_LIBRARY_PATH"
332             export LD_LIBRARY_PATH
333         else
334             AC_MSG_RESULT(installed at system prefix)
335         fi
336         POLYHEDRAL_BACKEND=ppl
338         AC_CHECK_HEADER(ppl_c.h,[],
339                         [AC_MSG_ERROR(Can't find PPL headers.)])
341         AC_MSG_CHECKING([for version $ppl_major_version.$ppl_minor_version of PPL])
342         AC_TRY_COMPILE([#include "ppl_c.h"],[
343         #if PPL_VERSION_MAJOR != $ppl_major_version || PPL_VERSION_MINOR != $ppl_minor_version
344         choke me
345         #endif
346         ], [AC_MSG_RESULT([yes])], [AC_MSG_ERROR(Can't find correct version of PPL.) ])
348         LIBS="$LIBS -lppl_c -lppl -lgmpxx"
349         AC_DEFINE([CLOOG_PPL_BACKEND], 1, [Use the PPL backend])
351 else
352         AC_MSG_RESULT(not using PPL)
355 # Allow host libstdc++ to be specified for static linking with PPL.
356 AC_ARG_WITH(host-libstdcxx, [  --with-host-libstdcxx=L Use linker arguments L to link with libstdc++
357                           when linking with PPL])
359 case $with_host_libstdcxx in
360   no|yes) AC_MSG_ERROR([-with-host-libstdcxx needs an argument]) ;;
361   *) LIBS="$LIBS $with_host_libstdcxx" ;;
362 esac
364 dnl /**************************************************************************
365 dnl  *                            Substitutions                               *
366 dnl  **************************************************************************/
369 dnl Substitutions to do in Makefile.in.
370 AC_SUBST(target)
371 AC_SUBST(CC)
372 AC_SUBST(LN_S)
373 AC_SUBST(SHEXT)
375 AC_SUBST(prefix)
376 AC_SUBST(exec_prefix)
377 AC_SUBST(INSTALL)
379 AC_SUBST(BITS)
381 AC_CONFIG_FILES(Makefile test/Makefile include/cloog/cloog.h autoconf/Doxyfile)
382 AC_CONFIG_FILES(doc/Makefile)
383 dnl AC_CONFIG_FILES(include/cloog/version.h)
384 AC_CONFIG_FILES([genversion.sh], [chmod +x genversion.sh])
385 AC_CONFIG_COMMANDS([version.h],
386         [echo '#define CLOOG_HEAD "'`./genversion.sh`'"' > version.h])
387 AC_CONFIG_COMMANDS([doc/gitversion.texi],
388         [echo '@set VERSION '`./genversion.sh`'' > doc/gitversion.texi])
389 AC_OUTPUT
392 echo "             /*-----------------------------------------------*"
393 echo "              *           CLooG configuration is OK           *"
394 echo "              *-----------------------------------------------*/"
395 echo "It appears that your system is OK to start CLooG compilation. You need"
396 echo "now to type \"make\". After compilation, you should check CLooG by typing"
397 echo "\"make check\". If no problem occur, you can type \"make uninstall\" if"
398 echo "you are upgrading an old version. Lastly type \"make install\" to install"
399 echo "CLooG on your system (log as root if necessary)."