diff mbox

Support official CLooG.org versions.

Message ID 1286534202-21612-1-git-send-email-simbuerg@googlemail.com
State New
Headers show

Commit Message

Andreas Simbürger Oct. 8, 2010, 10:36 a.m. UTC
Changes to previous patch:
  * Refactored CLooG-Checks in their own .m4 file (config/cloog.m4).
  * Switched back from ${var+name} = name notation to "x${var}" != x.

Add support for official CLooG releases.
CLooG's configuration gets detected within 2 stages:

Stage 1: Detect the installed CLooG version.
  This is done by linking test programs against the various
  CLooG libraries. As CLooG's library sonames depend on the
  used backend, this is sufficient to detect the used backend.

  We only detect this backends, in order:
    1) CLooG-PPL (Legacy): The "old" CLooG.
    2) CLooG-ISL: The "new" CLooG.
    3) CLooG-Parma: An alternative backend, to compare it with
    CLooG-ISL.

  CLooG-Poly is not detected, as the PolyLib may conflict
  with GCC's license.

Stage 2: Version checks.
  After detecting the right configuration, we finally check
  if the installed version is usable. There are 2 different
  checks: One for CLooG-PPL (Legacy) and one for CLooG-ISL.

  * CLooG-ISL:
    As the "new" CLooG provides methods to check for its version at
    both compile and run time, we use this feature. First
    we check for the constants to verify the header's compatibility.
    Finally we verify the compatibility of our headers with
    the library that will get linked with GCC.
    As stated in autoconf's documentation, the run time check
    is not usable when cross-compiling, so we skip this check
    then.

  * CLooG-PPL (Legacy):
    This version check provides the same semantics as before.
    As CLooG-PPL (Legacy) provides the same constants as the
    official CLooG, we can use the same test program for the
    compile time check.

Tested with CLooG-ISL and CLooG-PPL (Legacy).
As for now, CLooG-Parma fails to build.

2010-08-11  Andreas Simbuerger  <simbuerg@fim.uni-passau.de>

	* configure.ac: Support official CLooG.org versions.
	* configure: Regenerate.
	* config/cloog.m4: New.
---
 ChangeLog.graphite |    6 +
 config/cloog.m4    |  189 +++++++++++++++++++++++++
 configure          |  392 ++++++++++++++++++++++++++++++++++++++++------------
 configure.ac       |   70 ++++------
 4 files changed, 530 insertions(+), 127 deletions(-)
 create mode 100644 config/cloog.m4

Comments

Jack Howarth Oct. 8, 2010, 1:07 p.m. UTC | #1
On Fri, Oct 08, 2010 at 12:36:42PM +0200, Andreas Simbürger wrote:
> Changes to previous patch:
>   * Refactored CLooG-Checks in their own .m4 file (config/cloog.m4).
>   * Switched back from ${var+name} = name notation to "x${var}" != x.
> 
> Add support for official CLooG releases.
> CLooG's configuration gets detected within 2 stages:
> 
> Stage 1: Detect the installed CLooG version.
>   This is done by linking test programs against the various
>   CLooG libraries. As CLooG's library sonames depend on the
>   used backend, this is sufficient to detect the used backend.
> 
>   We only detect this backends, in order:
>     1) CLooG-PPL (Legacy): The "old" CLooG.
>     2) CLooG-ISL: The "new" CLooG.
>     3) CLooG-Parma: An alternative backend, to compare it with
>     CLooG-ISL.
> 
>   CLooG-Poly is not detected, as the PolyLib may conflict
>   with GCC's license.
> 
> Stage 2: Version checks.
>   After detecting the right configuration, we finally check
>   if the installed version is usable. There are 2 different
>   checks: One for CLooG-PPL (Legacy) and one for CLooG-ISL.
> 
>   * CLooG-ISL:
>     As the "new" CLooG provides methods to check for its version at
>     both compile and run time, we use this feature. First
>     we check for the constants to verify the header's compatibility.
>     Finally we verify the compatibility of our headers with
>     the library that will get linked with GCC.
>     As stated in autoconf's documentation, the run time check
>     is not usable when cross-compiling, so we skip this check
>     then.
> 
>   * CLooG-PPL (Legacy):
>     This version check provides the same semantics as before.
>     As CLooG-PPL (Legacy) provides the same constants as the
>     official CLooG, we can use the same test program for the
>     compile time check.
> 
> Tested with CLooG-ISL and CLooG-PPL (Legacy).
> As for now, CLooG-Parma fails to build.
> 

Andreas,
   Is there a tentative release date yet for cloog.org's cloog
0.16 release?
  Jack

> 2010-08-11  Andreas Simbuerger  <simbuerg@fim.uni-passau.de>
> 
> 	* configure.ac: Support official CLooG.org versions.
> 	* configure: Regenerate.
> 	* config/cloog.m4: New.
> ---
>  ChangeLog.graphite |    6 +
>  config/cloog.m4    |  189 +++++++++++++++++++++++++
>  configure          |  392 ++++++++++++++++++++++++++++++++++++++++------------
>  configure.ac       |   70 ++++------
>  4 files changed, 530 insertions(+), 127 deletions(-)
>  create mode 100644 config/cloog.m4
> 
> diff --git a/ChangeLog.graphite b/ChangeLog.graphite
> index b9d0723..c797dd3 100644
> --- a/ChangeLog.graphite
> +++ b/ChangeLog.graphite
> @@ -1,3 +1,9 @@
> +2010-08-11  Andreas Simbuerger  <simbuerg@fim.uni-passau.de>
> +
> +	* configure.ac: Support official CLooG.org versions.
> +	* configure: Regenerate.
> +	* config/cloog.m4: New.
> +
>  2010-09-24  Sebastian Pop  <sebastian.pop@amd.com>
>  
>  	* Merge from mainline (163495:164578).
> diff --git a/config/cloog.m4 b/config/cloog.m4
> new file mode 100644
> index 0000000..a435f8e
> --- /dev/null
> +++ b/config/cloog.m4
> @@ -0,0 +1,189 @@
> +dnl Copyright (C) 2010 Free Software Foundation, Inc.
> +dnl This file is free software, distributed under the terms of the GNU
> +dnl General Public License.  As a special exception to the GNU General
> +dnl Public License, this file may be distributed as part of a program
> +dnl that contains a configuration script generated by Autoconf, under
> +dnl the same distribution terms as the rest of that program.
> +
> +dnl From Andreas Simbuerger.
> +
> +dnl Test program for detecting CLooG.org's backend.
> +m4_define([CLOOG_ORG_PROG],[AC_LANG_PROGRAM(
> +  [#include <cloog/cloog.h>],
> +  [cloog_version ()])])
> +
> +dnl Test program for detecting CLooG-Legacy (CLooG-PPL).
> +m4_define([CLOOG_PPL_LEGACY_PROG], [AC_LANG_PROGRAM(
> +  [#include <cloog/cloog.h>],
> +  [ppl_version_major ()])])
> +
> +dnl Test CLooG's version (compile time).
> +m4_define([CLOOG_CHECK_CT_PROG],[AC_LANG_PROGRAM(
> +  [#include "cloog/cloog.h"],
> +  [#if CLOOG_VERSION_MAJOR != $1 \
> +    || CLOOG_VERSION_MINOR != $2 \
> +    || CLOOG_VERSION_REVISION < $3
> +    choke me
> +   #endif])])
> +
> +dnl Test CLooG's version (run time).
> +m4_define([CLOOG_CHECK_RT_PROG],[AC_LANG_PROGRAM(
> +  [#include <stdlib.h>
> +   #include "cloog/cloog.h"],
> +  [if ((cloog_version_major () != CLOOG_VERSION_MAJOR)
> +    && (cloog_version_minor () != CLOOG_VERSION_MINOR)
> +    && (cloog_version_revision () != CLOOG_VERSION_REVISION))
> +    {
> +      exit (1);
> +    }])])
> +
> +dnl Initialize clooglibs/clooginc according to the user input.
> +AC_DEFUN([CLOOG_INIT_FLAGS],
> +[
> +  case $with_cloog in
> +    no)
> +      clooglibs=
> +      clooginc=
> +      ;;
> +    "" | yes)
> +      ;;
> +    *)
> +      clooglibs="-L$with_cloog/lib"
> +      clooginc="-I$with_cloog/include"
> +      ;;
> +  esac
> +  if test "x${with_cloog_include}" != x ; then
> +    clooginc="-I$with_cloog_include"
> +  fi
> +  if test "x${with_cloog_lib}" != x; then
> +    clooglibs="-L$with_cloog_lib"
> +  fi
> +  if test "x${with_cloog}" != x && test "x${with_cloog_include}" != x \
> +    && test "x${with_cloog_lib}" != x && test -d ${srcdir}/cloog; then
> +    clooglibs='-L$$r/$(HOST_SUBDIR)/cloog/'"$lt_cv_objdir"' '
> +    clooginc='-I$$r/$(HOST_SUBDIR)/cloog/include -I$$s/cloog/include '
> +    enable_cloog_version_check=no
> +  fi
> +]
> +)
> +
> +dnl CLOOG_REQUESTED([ACTION-IF-REQUESTED], [ACTION-IF-NOT])
> +AC_DEFUN([CLOOG_REQUESTED],
> +[
> +  if test "x${with_cloog}" != x \
> +    || test "x${with_cloog_include}" != x \
> +    || test "x${with_cloog_lib}" != x ; then
> +    $1
> +  else
> +    $2
> +  fi
> +]
> +)
> +
> +dnl Detect the used CLooG-backend and set clooginc/clooglibs/cloog_org.
> +dnl Preference: CLooG-PPL (Legacy) > CLooG-ISL > CLooG-PPL
> +AC_DEFUN([CLOOG_SET_FLAGS],
> +[
> +  clooglegacyinc="-DCLOOG_PPL_BACKEND"
> +  cloogorginc="-DCLOOG_INT_GMP -DCLOOG_ORG"
> +
> +  CFLAGS="${CFLAGS} ${clooginc} ${cloogorginc} ${gmpinc} ${pplinc}"
> +  LDFLAGS="${LDFLAGS} ${clooglibs}"
> +
> +  AC_CACHE_CHECK([for installed CLooG type],
> +                 [gcc_cv_cloog_type],
> +    [LIBS="-lcloog ${saved_libs}"
> +     AC_LINK_IFELSE([CLOOG_PPL_LEGACY_PROG],
> +      [gcc_cv_cloog_type="PPL Legacy"],
> +      [LIBS="-lcloog-isl -lisl ${saved_libs}"
> +       AC_LINK_IFELSE([CLOOG_ORG_PROG],
> +        [gcc_cv_cloog_type=ISL],
> +        [LIBS="-lcloog-ppl ${saved_libs}"
> +         AC_LINK_IFELSE([CLOOG_ORG_PROG],
> +          [gcc_cv_cloog_type=PPL],
> +          [gcc_cv_cloog_type=no])])])])
> +
> +  case $gcc_cv_cloog_type in
> +    "PPL Legacy")
> +      clooginc="${clooginc} ${clooglegacyinc}"
> +      clooglibs="${clooglibs} -lcloog"
> +      cloog_org=no
> +      ;;
> +    "ISL")
> +      clooginc="${clooginc} ${cloogorginc}"
> +      clooglibs="${clooglibs} -lcloog-isl"
> +      cloog_org=yes
> +      ;;
> +    "PPL")
> +      clooginc="${clooginc} ${cloogorginc}"
> +      clooglibs="${clooglibs} -lcloog-ppl"
> +      cloog_org=yes
> +      ;;
> +    *)
> +      clooglibs=
> +      clooginc=
> +      ;;
> +  esac
> +  
> +  CFLAGS="${saved_cflags} ${clooginc} ${gmpinc} ${pplinc}"
> +  LDFLAGS="${saved_ldflags} ${clooglibs}"
> +]
> +)
> +
> +dnl Version checks for CLooG.org
> +dnl
> +dnl CLOOG_CHECK_VERSION([MAJOR],[MINOR],[REVISION])
> +AC_DEFUN([CLOOG_CHECK_VERSION],
> +[
> +  AC_CACHE_CHECK([for verison $1.$2.$3 of CLooG (compile time)],
> +    [gcc_cv_cloog_ct_0_14_0],
> +    [AC_COMPILE_IFELSE([CLOOG_CHECK_CT_PROG($1,$2,$3)],
> +      [gcc_cv_cloog_ct_0_14_0=yes],
> +      [gcc_cv_cloog_ct_0_14_0=no])])
> +
> +  AC_CACHE_CHECK([for version $1.$2.$3 of CLooG (run time)],
> +    [gcc_cv_cloog_rt_0_14_0],
> +    [AC_RUN_IFELSE([CLOOG_CHECK_RT_PROG],
> +      [gcc_cv_cloog_rt_0_14_0=yes],
> +      [gcc_cv_cloog_rt_0_14_0=no],
> +      [gcc_cv_cloog_rt_0_14_0=guessing yes])])
> +]
> +)
> +
> +dnl Version checks for CLooG-Legacy (CLooG-PPL).
> +dnl As this gets removed more sooner than later, don't bother
> +dnl making it variable.
> +AC_DEFUN([CLOOG_CHECK_VERSION_LEGACY],
> +[
> +  AC_CACHE_CHECK([for version 0.15.5 (or later revision) of CLooG],
> +    [gcc_cv_cloog_ct_0_15_5],
> +    [AC_COMPILE_IFELSE([CLOOG_CHECK_CT_PROG(0,15,5)],
> +      [AC_COMPILE_IFELSE([CLOOG_CHECK_CT_PROG(0,15,9)],
> +        [gcc_cv_cloog_ct_0_15_5=yes],
> +        [gcc_cv_cloog_ct_0_15_5=buggy but acceptable])],
> +      [gcc_cv_cloog_ct_0_15_5=no])])
> +]
> +)
> +
> +dnl Executes [ACTION-IF-FAILED], if GRAPHITE was requested and
> +dnl the checks failed.
> +dnl
> +dnl CLOOG_IF_FAILED([ACTION-IF-FAILED])
> +AC_DEFUN([CLOOG_IF_FAILED],
> +[
> +  CLOOG_REQUESTED([graphite_requested=yes], [graphite_requested=no])dnl
> +  
> +  if test "${gcc_cv_cloog_ct_0_14_0}" = no \
> +    || test "${gcc_cv_cloog_rt_0_14_0}" = no \
> +    || test "${gcc_cv_cloog_ct_0_15_5}" = no; then
> +    clooglibs=
> +    clooginc=
> +  fi
> +
> +  if test "${graphite_requested}" = yes \
> +    && test "x${clooglibs}" = x \
> +    && test "x${clooginc}" = x ; then
> +    $1
> +  fi
> +]
> +)
> diff --git a/configure b/configure
> index 9e39867..bcbec16 100755
> --- a/configure
> +++ b/configure
> @@ -833,6 +833,9 @@ LIBS
>  CPPFLAGS
>  CXX
>  CXXFLAGS
> +LDFLAGS
> +LIBS
> +CPPFLAGS
>  CCC
>  CPP
>  AR
> @@ -1816,6 +1819,48 @@ fi
>  
>  } # ac_fn_c_try_link
>  
> +# ac_fn_c_try_run LINENO
> +# ----------------------
> +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
> +# that executables *can* be run.
> +ac_fn_c_try_run ()
> +{
> +  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
> +  if { { ac_try="$ac_link"
> +case "(($ac_try" in
> +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
> +  *) ac_try_echo=$ac_try;;
> +esac
> +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
> +$as_echo "$ac_try_echo"; } >&5
> +  (eval "$ac_link") 2>&5
> +  ac_status=$?
> +  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
> +  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
> +  { { case "(($ac_try" in
> +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
> +  *) ac_try_echo=$ac_try;;
> +esac
> +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
> +$as_echo "$ac_try_echo"; } >&5
> +  (eval "$ac_try") 2>&5
> +  ac_status=$?
> +  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
> +  test $ac_status = 0; }; }; then :
> +  ac_retval=0
> +else
> +  $as_echo "$as_me: program exited with status $ac_status" >&5
> +       $as_echo "$as_me: failed program was:" >&5
> +sed 's/^/| /' conftest.$ac_ext >&5
> +
> +       ac_retval=$ac_status
> +fi
> +  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
> +  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
> +  return $ac_retval
> +
> +} # ac_fn_c_try_run
> +
>  # ac_fn_c_try_cpp LINENO
>  # ----------------------
>  # Try to preprocess conftest.$ac_ext, and return whether this succeeded.
> @@ -1940,48 +1985,6 @@ fi
>  
>  } # ac_fn_c_check_header_mongrel
>  
> -# ac_fn_c_try_run LINENO
> -# ----------------------
> -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
> -# that executables *can* be run.
> -ac_fn_c_try_run ()
> -{
> -  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
> -  if { { ac_try="$ac_link"
> -case "(($ac_try" in
> -  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
> -  *) ac_try_echo=$ac_try;;
> -esac
> -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
> -$as_echo "$ac_try_echo"; } >&5
> -  (eval "$ac_link") 2>&5
> -  ac_status=$?
> -  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
> -  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
> -  { { case "(($ac_try" in
> -  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
> -  *) ac_try_echo=$ac_try;;
> -esac
> -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
> -$as_echo "$ac_try_echo"; } >&5
> -  (eval "$ac_try") 2>&5
> -  ac_status=$?
> -  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
> -  test $ac_status = 0; }; }; then :
> -  ac_retval=0
> -else
> -  $as_echo "$as_me: program exited with status $ac_status" >&5
> -       $as_echo "$as_me: failed program was:" >&5
> -sed 's/^/| /' conftest.$ac_ext >&5
> -
> -       ac_retval=$ac_status
> -fi
> -  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
> -  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
> -  return $ac_retval
> -
> -} # ac_fn_c_try_run
> -
>  # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
>  # -------------------------------------------------------
>  # Tests whether HEADER exists and can be compiled using the include files in
> @@ -5885,8 +5888,6 @@ fi
>  
>  
>  # Check for CLOOG
> -clooglibs=" -lcloog "
> -clooginc=" -DCLOOG_PPL_BACKEND "
>  
>  
>  # Check whether --with-cloog was given.
> @@ -5911,29 +5912,33 @@ if test "x$with_ppl" = "xno"; then
>    with_cloog=no
>  fi
>  
> -case $with_cloog in
> -  no)
> -    clooglibs=
> -    clooginc=
> -    ;;
> -  "" | yes)
> -    ;;
> -  *)
> -    clooglibs="-L$with_cloog/lib -lcloog"
> -    clooginc="-I$with_cloog/include -DCLOOG_PPL_BACKEND "
> -    ;;
> -esac
> -if test "x$with_cloog_include" != x; then
> -  clooginc="-I$with_cloog_include -DCLOOG_PPL_BACKEND "
> -fi
> -if test "x$with_cloog_lib" != x; then
> -  clooglibs="-L$with_cloog_lib -lcloog"
> -fi
> -if test "x$with_cloog$with_cloog_include$with_cloog_lib" = x && test -d ${srcdir}/cloog; then
> -  clooglibs='-L$$r/$(HOST_SUBDIR)/cloog/'"$lt_cv_objdir"' -lcloog '
> -  clooginc='-I$$r/$(HOST_SUBDIR)/cloog/include -I$$s/cloog/include -DCLOOG_PPL_BACKEND '
> -  enable_cloog_version_check=no
> -fi
> +
> +  case $with_cloog in
> +    no)
> +      clooglibs=
> +      clooginc=
> +      ;;
> +    "" | yes)
> +      ;;
> +    *)
> +      clooglibs="-L$with_cloog/lib"
> +      clooginc="-I$with_cloog/include"
> +      ;;
> +  esac
> +  if test "x${with_cloog_include}" != x ; then
> +    clooginc="-I$with_cloog_include"
> +  fi
> +  if test "x${with_cloog_lib}" != x; then
> +    clooglibs="-L$with_cloog_lib"
> +  fi
> +  if test "x${with_cloog}" != x && test "x${with_cloog_include}" != x \
> +    && test "x${with_cloog_lib}" != x && test -d ${srcdir}/cloog; then
> +    clooglibs='-L$$r/$(HOST_SUBDIR)/cloog/'"$lt_cv_objdir"' '
> +    clooginc='-I$$r/$(HOST_SUBDIR)/cloog/include -I$$s/cloog/include '
> +    enable_cloog_version_check=no
> +  fi
> +
> +
>  
>  # Check whether --enable-cloog-version-check was given.
>  if test "${enable_cloog_version_check+set}" = set; then :
> @@ -5943,22 +5948,202 @@ else
>  fi
>  
>  
> -if test "x$with_cloog" != "xno" -a "${ENABLE_CLOOG_CHECK}" = "yes"; then
> -  saved_CFLAGS="$CFLAGS"
> -  CFLAGS="$CFLAGS $clooginc $gmpinc $pplinc"
> -  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for version 0.15.5 (or later revision) of CLooG" >&5
> -$as_echo_n "checking for version 0.15.5 (or later revision) of CLooG... " >&6; }
> +if test "x$with_cloog" != "xno"; then
> +  saved_cflags=$CFLAGS
> +  saved_libs=$LIBS
> +  saved_ldflags=$LDFLAGS
> +
> +
> +  clooglegacyinc="-DCLOOG_PPL_BACKEND"
> +  cloogorginc="-DCLOOG_INT_GMP -DCLOOG_ORG"
> +
> +  CFLAGS="${CFLAGS} ${clooginc} ${cloogorginc} ${gmpinc} ${pplinc}"
> +  LDFLAGS="${LDFLAGS} ${clooglibs}"
> +
> +  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for installed CLooG type" >&5
> +$as_echo_n "checking for installed CLooG type... " >&6; }
> +if test "${gcc_cv_cloog_type+set}" = set; then :
> +  $as_echo_n "(cached) " >&6
> +else
> +  LIBS="-lcloog ${saved_libs}"
> +     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +#include <cloog/cloog.h>
> +int
> +main ()
> +{
> +ppl_version_major ()
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_c_try_link "$LINENO"; then :
> +  gcc_cv_cloog_type="PPL Legacy"
> +else
> +  LIBS="-lcloog-isl -lisl ${saved_libs}"
> +       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +#include <cloog/cloog.h>
> +int
> +main ()
> +{
> +cloog_version ()
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_c_try_link "$LINENO"; then :
> +  gcc_cv_cloog_type=ISL
> +else
> +  LIBS="-lcloog-ppl ${saved_libs}"
> +         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +#include <cloog/cloog.h>
> +int
> +main ()
> +{
> +cloog_version ()
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_c_try_link "$LINENO"; then :
> +  gcc_cv_cloog_type=PPL
> +else
> +  gcc_cv_cloog_type=no
> +fi
> +rm -f core conftest.err conftest.$ac_objext \
> +    conftest$ac_exeext conftest.$ac_ext
> +fi
> +rm -f core conftest.err conftest.$ac_objext \
> +    conftest$ac_exeext conftest.$ac_ext
> +fi
> +rm -f core conftest.err conftest.$ac_objext \
> +    conftest$ac_exeext conftest.$ac_ext
> +fi
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_cloog_type" >&5
> +$as_echo "$gcc_cv_cloog_type" >&6; }
> +
> +  case $gcc_cv_cloog_type in
> +    "PPL Legacy")
> +      clooginc="${clooginc} ${clooglegacyinc}"
> +      clooglibs="${clooglibs} -lcloog"
> +      cloog_org=no
> +      ;;
> +    "ISL")
> +      clooginc="${clooginc} ${cloogorginc}"
> +      clooglibs="${clooglibs} -lcloog-isl"
> +      cloog_org=yes
> +      ;;
> +    "PPL")
> +      clooginc="${clooginc} ${cloogorginc}"
> +      clooglibs="${clooglibs} -lcloog-ppl"
> +      cloog_org=yes
> +      ;;
> +    *)
> +      clooglibs=
> +      clooginc=
> +      ;;
> +  esac
> +
> +  CFLAGS="${saved_cflags} ${clooginc} ${gmpinc} ${pplinc}"
> +  LDFLAGS="${saved_ldflags} ${clooglibs}"
> +
> +
> +
> +    if test "${ENABLE_CLOOG_CHECK}" = yes \
> +    && test "${cloog_org}" = yes ; then
> +
> +  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for verison 0.14.0 of CLooG (compile time)" >&5
> +$as_echo_n "checking for verison 0.14.0 of CLooG (compile time)... " >&6; }
> +if test "${gcc_cv_cloog_ct_0_14_0+set}" = set; then :
> +  $as_echo_n "(cached) " >&6
> +else
>    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
>  /* end confdefs.h.  */
>  #include "cloog/cloog.h"
>  int
>  main ()
>  {
> +#if CLOOG_VERSION_MAJOR != 0 \
> +    || CLOOG_VERSION_MINOR != 14 \
> +    || CLOOG_VERSION_REVISION < 0
> +    choke me
> +   #endif
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_c_try_compile "$LINENO"; then :
> +  gcc_cv_cloog_ct_0_14_0=yes
> +else
> +  gcc_cv_cloog_ct_0_14_0=no
> +fi
> +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> +fi
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_cloog_ct_0_14_0" >&5
> +$as_echo "$gcc_cv_cloog_ct_0_14_0" >&6; }
>  
> -  #if CLOOG_VERSION_MAJOR != 0 || CLOOG_VERSION_MINOR != 15 || CLOOG_VERSION_REVISION < 5
> -  choke me
> -  #endif
> +  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for version 0.14.0 of CLooG (run time)" >&5
> +$as_echo_n "checking for version 0.14.0 of CLooG (run time)... " >&6; }
> +if test "${gcc_cv_cloog_rt_0_14_0+set}" = set; then :
> +  $as_echo_n "(cached) " >&6
> +else
> +  if test "$cross_compiling" = yes; then :
> +  gcc_cv_cloog_rt_0_14_0=guessing yes
> +else
> +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +#include <stdlib.h>
> +   #include "cloog/cloog.h"
> +int
> +main ()
> +{
> +if ((cloog_version_major () != CLOOG_VERSION_MAJOR)
> +    && (cloog_version_minor () != CLOOG_VERSION_MINOR)
> +    && (cloog_version_revision () != CLOOG_VERSION_REVISION))
> +    {
> +      exit (1);
> +    }
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_c_try_run "$LINENO"; then :
> +  gcc_cv_cloog_rt_0_14_0=yes
> +else
> +  gcc_cv_cloog_rt_0_14_0=no
> +fi
> +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
> +  conftest.$ac_objext conftest.beam conftest.$ac_ext
> +fi
> +
> +fi
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_cloog_rt_0_14_0" >&5
> +$as_echo "$gcc_cv_cloog_rt_0_14_0" >&6; }
> +
> +
> +  fi
>  
> +    if test "${ENABLE_CLOOG_CHECK}" = yes \
> +    && test "${cloog_org}" = no ; then
> +
> +  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for version 0.15.5 (or later revision) of CLooG" >&5
> +$as_echo_n "checking for version 0.15.5 (or later revision) of CLooG... " >&6; }
> +if test "${gcc_cv_cloog_ct_0_15_5+set}" = set; then :
> +  $as_echo_n "(cached) " >&6
> +else
> +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +#include "cloog/cloog.h"
> +int
> +main ()
> +{
> +#if CLOOG_VERSION_MAJOR != 0 \
> +    || CLOOG_VERSION_MINOR != 15 \
> +    || CLOOG_VERSION_REVISION < 5
> +    choke me
> +   #endif
>    ;
>    return 0;
>  }
> @@ -5970,29 +6155,62 @@ if ac_fn_c_try_compile "$LINENO"; then :
>  int
>  main ()
>  {
> -
> -  #if CLOOG_VERSION_MAJOR != 0 || CLOOG_VERSION_MINOR != 15 || CLOOG_VERSION_REVISION < 9
> -  choke me
> -  #endif
> -
> +#if CLOOG_VERSION_MAJOR != 0 \
> +    || CLOOG_VERSION_MINOR != 15 \
> +    || CLOOG_VERSION_REVISION < 9
> +    choke me
> +   #endif
>    ;
>    return 0;
>  }
>  _ACEOF
>  if ac_fn_c_try_compile "$LINENO"; then :
> -  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
> -$as_echo "yes" >&6; }
> +  gcc_cv_cloog_ct_0_15_5=yes
>  else
> -  { $as_echo "$as_me:${as_lineno-$LINENO}: result: buggy but acceptable" >&5
> -$as_echo "buggy but acceptable" >&6; }
> +  gcc_cv_cloog_ct_0_15_5=buggy but acceptable
>  fi
>  rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
>  else
> -  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
> -$as_echo "no" >&6; }; clooglibs= ; clooginc=
> +  gcc_cv_cloog_ct_0_15_5=no
>  fi
>  rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> -  CFLAGS="$saved_CFLAGS"
> +fi
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_cloog_ct_0_15_5" >&5
> +$as_echo "$gcc_cv_cloog_ct_0_15_5" >&6; }
> +
> +
> +  fi
> +
> +
> +
> +  if test "x${with_cloog}" != x \
> +    || test "x${with_cloog_include}" != x \
> +    || test "x${with_cloog_lib}" != x ; then
> +    graphite_requested=yes
> +  else
> +    graphite_requested=no
> +  fi
> +
> +
> +  if test "${gcc_cv_cloog_ct_0_14_0}" = no \
> +    || test "${gcc_cv_cloog_rt_0_14_0}" = no \
> +    || test "${gcc_cv_cloog_ct_0_15_5}" = no; then
> +    clooglibs=
> +    clooginc=
> +  fi
> +
> +  if test "${graphite_requested}" = yes \
> +    && test "x${clooglibs}" = x \
> +    && test "x${clooginc}" = x ; then
> +
> +    as_fn_error "Unable to find a usable CLooG. See config.log for details." "$LINENO" 5
> +  fi
> +
> +
> +
> +  CFLAGS=$saved_cflags
> +  LIBS=$saved_libs
> +  LDFLAGS=$saved_ldflags
>  fi
>  
>  # Flags needed for CLOOG
> diff --git a/configure.ac b/configure.ac
> index 67e79fe..2aa4e3b 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -28,6 +28,7 @@ m4_include([ltoptions.m4])
>  m4_include([ltsugar.m4])
>  m4_include([ltversion.m4])
>  m4_include([lt~obsolete.m4])
> +m4_include([config/cloog.m4])
>  
>  AC_INIT(move-if-change)
>  AC_PREREQ(2.64)
> @@ -1580,8 +1581,6 @@ AC_SUBST(pplinc)
>  
>  
>  # Check for CLOOG
> -clooglibs=" -lcloog "
> -clooginc=" -DCLOOG_PPL_BACKEND "
>  
>  AC_ARG_WITH(cloog, [  --with-cloog=PATH       Specify prefix directory for the installed CLooG-PPL package
>                            Equivalent to --with-cloog-include=PATH/include
> @@ -1593,50 +1592,41 @@ if test "x$with_ppl" = "xno"; then
>    with_cloog=no
>  fi
>  
> -case $with_cloog in 
> -  no)
> -    clooglibs=
> -    clooginc=
> -    ;;
> -  "" | yes)
> -    ;;
> -  *)
> -    clooglibs="-L$with_cloog/lib -lcloog"
> -    clooginc="-I$with_cloog/include -DCLOOG_PPL_BACKEND "
> -    ;;
> -esac
> -if test "x$with_cloog_include" != x; then
> -  clooginc="-I$with_cloog_include -DCLOOG_PPL_BACKEND "
> -fi
> -if test "x$with_cloog_lib" != x; then
> -  clooglibs="-L$with_cloog_lib -lcloog"
> -fi
> -if test "x$with_cloog$with_cloog_include$with_cloog_lib" = x && test -d ${srcdir}/cloog; then
> -  clooglibs='-L$$r/$(HOST_SUBDIR)/cloog/'"$lt_cv_objdir"' -lcloog '
> -  clooginc='-I$$r/$(HOST_SUBDIR)/cloog/include -I$$s/cloog/include -DCLOOG_PPL_BACKEND '
> -  enable_cloog_version_check=no
> -fi
> +CLOOG_INIT_FLAGS()
>  
>  AC_ARG_ENABLE(cloog-version-check,
>  [  --disable-cloog-version-check  disable check for CLooG version],
>  ENABLE_CLOOG_CHECK=$enableval,
>  ENABLE_CLOOG_CHECK=yes)
>  
> -if test "x$with_cloog" != "xno" -a "${ENABLE_CLOOG_CHECK}" = "yes"; then
> -  saved_CFLAGS="$CFLAGS"
> -  CFLAGS="$CFLAGS $clooginc $gmpinc $pplinc"
> -  AC_MSG_CHECKING([for version 0.15.5 (or later revision) of CLooG])
> -  AC_TRY_COMPILE([#include "cloog/cloog.h"],[
> -  #if CLOOG_VERSION_MAJOR != 0 || CLOOG_VERSION_MINOR != 15 || CLOOG_VERSION_REVISION < 5
> -  choke me
> -  #endif
> -  ], [AC_TRY_COMPILE([#include "cloog/cloog.h"],[
> -  #if CLOOG_VERSION_MAJOR != 0 || CLOOG_VERSION_MINOR != 15 || CLOOG_VERSION_REVISION < 9
> -  choke me
> -  #endif
> -  ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([buggy but acceptable])])],
> -  [AC_MSG_RESULT([no]); clooglibs= ; clooginc= ])
> -  CFLAGS="$saved_CFLAGS"
> +if test "x$with_cloog" != "xno"; then
> +  saved_cflags=$CFLAGS
> +  saved_libs=$LIBS
> +  saved_ldflags=$LDFLAGS
> +
> +  dnl Detect and set clooginc/clooglibs.
> +  dnl Preference: CLooG-PPL (Legacy) > CLooG-ISL > CLooG-PPL
> +  CLOOG_SET_FLAGS()
> +
> +  dnl Version check for CLooG-Org
> +  if test "${ENABLE_CLOOG_CHECK}" = yes \
> +    && test "${cloog_org}" = yes ; then
> +    CLOOG_CHECK_VERSION(0,14,0)
> +  fi
> +
> +  dnl Version check for CLooG-PPL (Legacy).
> +  if test "${ENABLE_CLOOG_CHECK}" = yes \
> +    && test "${cloog_org}" = no ; then
> +    CLOOG_CHECK_VERSION_LEGACY()
> +  fi
> +
> +  dnl Only fails, if GRAPHITE was requested.
> +  CLOOG_IF_FAILED([
> +    AC_MSG_ERROR([Unable to find a usable CLooG. See config.log for details.])])
> +
> +  CFLAGS=$saved_cflags
> +  LIBS=$saved_libs
> +  LDFLAGS=$saved_ldflags
>  fi
>  
>  # Flags needed for CLOOG
> -- 
> 1.7.3.1
Ralf Wildenhues Oct. 9, 2010, 8:45 a.m. UTC | #2
Hello Andreas,

* Andreas Simbürger wrote on Fri, Oct 08, 2010 at 12:36:42PM CEST:
> 2010-08-11  Andreas Simbuerger  <simbuerg@fim.uni-passau.de>
> 
> 	* configure.ac: Support official CLooG.org versions.
> 	* configure: Regenerate.
> 	* config/cloog.m4: New.

See a couple of nits inline (I can't approve or reject this patch).

The important part I guess is that you tested out as many combinations
as possible (in-tree, out of tree, old version, new version, for each of
the cloog variants).

Thanks,
Ralf

> --- /dev/null
> +++ b/config/cloog.m4
> @@ -0,0 +1,189 @@
> +dnl Copyright (C) 2010 Free Software Foundation, Inc.
> +dnl This file is free software, distributed under the terms of the GNU
> +dnl General Public License.  As a special exception to the GNU General
> +dnl Public License, this file may be distributed as part of a program
> +dnl that contains a configuration script generated by Autoconf, under
> +dnl the same distribution terms as the rest of that program.
> +
> +dnl From Andreas Simbuerger.
> +
> +dnl Test program for detecting CLooG.org's backend.
> +m4_define([CLOOG_ORG_PROG],[AC_LANG_PROGRAM(
> +  [#include <cloog/cloog.h>],
> +  [cloog_version ()])])
> +
> +dnl Test program for detecting CLooG-Legacy (CLooG-PPL).
> +m4_define([CLOOG_PPL_LEGACY_PROG], [AC_LANG_PROGRAM(
> +  [#include <cloog/cloog.h>],
> +  [ppl_version_major ()])])
> +
> +dnl Test CLooG's version (compile time).

For what it's worth, GCS-like comments would look about like this:

# CLOOG_CHECK_CT_PROG(MAJOR, MINOR, REVISION)
# -------------------------------------------
# Ensure the CLooG version is exactly MAJOR.MINOR and at least
# REVISION.

That way, it also becomes clear that this macro has different semantics
from the next one.

> +m4_define([CLOOG_CHECK_CT_PROG],[AC_LANG_PROGRAM(
> +  [#include "cloog/cloog.h"],
> +  [#if CLOOG_VERSION_MAJOR != $1 \
> +    || CLOOG_VERSION_MINOR != $2 \
> +    || CLOOG_VERSION_REVISION < $3
> +    choke me
> +   #endif])])
> +
> +dnl Test CLooG's version (run time).
> +m4_define([CLOOG_CHECK_RT_PROG],[AC_LANG_PROGRAM(
> +  [#include <stdlib.h>
> +   #include "cloog/cloog.h"],
> +  [if ((cloog_version_major () != CLOOG_VERSION_MAJOR)
> +    && (cloog_version_minor () != CLOOG_VERSION_MINOR)
> +    && (cloog_version_revision () != CLOOG_VERSION_REVISION))
> +    {
> +      exit (1);

Prefer return from main to exit, then you don't need to include
stdlib.h and are still C++ safe.

> +    }])])
> +
> +dnl Initialize clooglibs/clooginc according to the user input.
> +AC_DEFUN([CLOOG_INIT_FLAGS],
> +[
> +  case $with_cloog in
> +    no)
> +      clooglibs=
> +      clooginc=
> +      ;;
> +    "" | yes)
> +      ;;
> +    *)
> +      clooglibs="-L$with_cloog/lib"
> +      clooginc="-I$with_cloog/include"
> +      ;;
> +  esac
> +  if test "x${with_cloog_include}" != x ; then
> +    clooginc="-I$with_cloog_include"
> +  fi
> +  if test "x${with_cloog_lib}" != x; then
> +    clooglibs="-L$with_cloog_lib"
> +  fi
> +  if test "x${with_cloog}" != x && test "x${with_cloog_include}" != x \
> +    && test "x${with_cloog_lib}" != x && test -d ${srcdir}/cloog; then
> +    clooglibs='-L$$r/$(HOST_SUBDIR)/cloog/'"$lt_cv_objdir"' '
> +    clooginc='-I$$r/$(HOST_SUBDIR)/cloog/include -I$$s/cloog/include '
> +    enable_cloog_version_check=no
> +  fi
> +]
> +)
> +
> +dnl CLOOG_REQUESTED([ACTION-IF-REQUESTED], [ACTION-IF-NOT])

The brackets in macro synopsis are usually meant to denote optional
arguments.  Here, they are required though, for they'll cause a shell
syntax error otherwise.  Or, ...

> +AC_DEFUN([CLOOG_REQUESTED],
> +[
> +  if test "x${with_cloog}" != x \
> +    || test "x${with_cloog_include}" != x \
> +    || test "x${with_cloog_lib}" != x ; then

... you add a ':' command here, and ...

> +    $1

> +  else
> +    $2

replace these two lines with something like
  m4_ifval([$2], [else $2])

> +  fi
> +]
> +)
> +
> +dnl Detect the used CLooG-backend and set clooginc/clooglibs/cloog_org.
> +dnl Preference: CLooG-PPL (Legacy) > CLooG-ISL > CLooG-PPL
> +AC_DEFUN([CLOOG_SET_FLAGS],
> +[
> +  clooglegacyinc="-DCLOOG_PPL_BACKEND"
> +  cloogorginc="-DCLOOG_INT_GMP -DCLOOG_ORG"

-D switches belong in CPPFLAGS rather than CFLAGS.

> +  CFLAGS="${CFLAGS} ${clooginc} ${cloogorginc} ${gmpinc} ${pplinc}"
> +  LDFLAGS="${LDFLAGS} ${clooglibs}"
> +
> +  AC_CACHE_CHECK([for installed CLooG type],
> +                 [gcc_cv_cloog_type],
> +    [LIBS="-lcloog ${saved_libs}"

For cleanliness you should save and restore LIBS inside the macro,
rather than relying on variables set elsewhere, and rename saved_libs to
something that doesn't clash with code calling this macro.

Alternatively, this is a sign of maybe too much factorization if you
need to carry internal shell variables across macros without
AC_REQUIRE'ing them.

> +     AC_LINK_IFELSE([CLOOG_PPL_LEGACY_PROG],
> +      [gcc_cv_cloog_type="PPL Legacy"],
> +      [LIBS="-lcloog-isl -lisl ${saved_libs}"
> +       AC_LINK_IFELSE([CLOOG_ORG_PROG],
> +        [gcc_cv_cloog_type=ISL],
> +        [LIBS="-lcloog-ppl ${saved_libs}"
> +         AC_LINK_IFELSE([CLOOG_ORG_PROG],
> +          [gcc_cv_cloog_type=PPL],
> +          [gcc_cv_cloog_type=no])])])])
> +
> +  case $gcc_cv_cloog_type in
> +    "PPL Legacy")
> +      clooginc="${clooginc} ${clooglegacyinc}"
> +      clooglibs="${clooglibs} -lcloog"
> +      cloog_org=no
> +      ;;
> +    "ISL")
> +      clooginc="${clooginc} ${cloogorginc}"
> +      clooglibs="${clooglibs} -lcloog-isl"
> +      cloog_org=yes
> +      ;;
> +    "PPL")
> +      clooginc="${clooginc} ${cloogorginc}"
> +      clooglibs="${clooglibs} -lcloog-ppl"
> +      cloog_org=yes
> +      ;;
> +    *)
> +      clooglibs=
> +      clooginc=
> +      ;;
> +  esac
> +  
> +  CFLAGS="${saved_cflags} ${clooginc} ${gmpinc} ${pplinc}"
> +  LDFLAGS="${saved_ldflags} ${clooglibs}"
> +]
> +)
> +
> +dnl Version checks for CLooG.org
> +dnl
> +dnl CLOOG_CHECK_VERSION([MAJOR],[MINOR],[REVISION])
> +AC_DEFUN([CLOOG_CHECK_VERSION],
> +[
> +  AC_CACHE_CHECK([for verison $1.$2.$3 of CLooG (compile time)],
> +    [gcc_cv_cloog_ct_0_14_0],
> +    [AC_COMPILE_IFELSE([CLOOG_CHECK_CT_PROG($1,$2,$3)],
> +      [gcc_cv_cloog_ct_0_14_0=yes],
> +      [gcc_cv_cloog_ct_0_14_0=no])])
> +
> +  AC_CACHE_CHECK([for version $1.$2.$3 of CLooG (run time)],
> +    [gcc_cv_cloog_rt_0_14_0],
> +    [AC_RUN_IFELSE([CLOOG_CHECK_RT_PROG],
> +      [gcc_cv_cloog_rt_0_14_0=yes],
> +      [gcc_cv_cloog_rt_0_14_0=no],
> +      [gcc_cv_cloog_rt_0_14_0=guessing yes])])
> +]
> +)
> +
> +dnl Version checks for CLooG-Legacy (CLooG-PPL).
> +dnl As this gets removed more sooner than later, don't bother
> +dnl making it variable.
> +AC_DEFUN([CLOOG_CHECK_VERSION_LEGACY],
> +[
> +  AC_CACHE_CHECK([for version 0.15.5 (or later revision) of CLooG],
> +    [gcc_cv_cloog_ct_0_15_5],
> +    [AC_COMPILE_IFELSE([CLOOG_CHECK_CT_PROG(0,15,5)],
> +      [AC_COMPILE_IFELSE([CLOOG_CHECK_CT_PROG(0,15,9)],

I think the fact that this uses revision 9 rather than 5 deserves a
comment, otherwise it reads like a bug.  Or, maybe it is a bug?

> +        [gcc_cv_cloog_ct_0_15_5=yes],
> +        [gcc_cv_cloog_ct_0_15_5=buggy but acceptable])],
> +      [gcc_cv_cloog_ct_0_15_5=no])])
> +]
> +)
> +
> +dnl Executes [ACTION-IF-FAILED], if GRAPHITE was requested and
> +dnl the checks failed.
> +dnl
> +dnl CLOOG_IF_FAILED([ACTION-IF-FAILED])
> +AC_DEFUN([CLOOG_IF_FAILED],
> +[
> +  CLOOG_REQUESTED([graphite_requested=yes], [graphite_requested=no])dnl
> +  
> +  if test "${gcc_cv_cloog_ct_0_14_0}" = no \
> +    || test "${gcc_cv_cloog_rt_0_14_0}" = no \
> +    || test "${gcc_cv_cloog_ct_0_15_5}" = no; then
> +    clooglibs=
> +    clooginc=
> +  fi
> +
> +  if test "${graphite_requested}" = yes \
> +    && test "x${clooglibs}" = x \
> +    && test "x${clooginc}" = x ; then
> +    $1
> +  fi
> +]
> +)

> --- a/configure.ac
> +++ b/configure.ac
> @@ -28,6 +28,7 @@ m4_include([ltoptions.m4])
>  m4_include([ltsugar.m4])
>  m4_include([ltversion.m4])
>  m4_include([lt~obsolete.m4])
> +m4_include([config/cloog.m4])
>  
>  AC_INIT(move-if-change)
>  AC_PREREQ(2.64)
> @@ -1580,8 +1581,6 @@ AC_SUBST(pplinc)
>  
>  
>  # Check for CLOOG
> -clooglibs=" -lcloog "
> -clooginc=" -DCLOOG_PPL_BACKEND "
>  
>  AC_ARG_WITH(cloog, [  --with-cloog=PATH       Specify prefix directory for the installed CLooG-PPL package
>                            Equivalent to --with-cloog-include=PATH/include
> @@ -1593,50 +1592,41 @@ if test "x$with_ppl" = "xno"; then
>    with_cloog=no
>  fi
>  
> -case $with_cloog in 
> -  no)
> -    clooglibs=
> -    clooginc=
> -    ;;
> -  "" | yes)
> -    ;;
> -  *)
> -    clooglibs="-L$with_cloog/lib -lcloog"
> -    clooginc="-I$with_cloog/include -DCLOOG_PPL_BACKEND "
> -    ;;
> -esac
> -if test "x$with_cloog_include" != x; then
> -  clooginc="-I$with_cloog_include -DCLOOG_PPL_BACKEND "
> -fi
> -if test "x$with_cloog_lib" != x; then
> -  clooglibs="-L$with_cloog_lib -lcloog"
> -fi
> -if test "x$with_cloog$with_cloog_include$with_cloog_lib" = x && test -d ${srcdir}/cloog; then
> -  clooglibs='-L$$r/$(HOST_SUBDIR)/cloog/'"$lt_cv_objdir"' -lcloog '
> -  clooginc='-I$$r/$(HOST_SUBDIR)/cloog/include -I$$s/cloog/include -DCLOOG_PPL_BACKEND '
> -  enable_cloog_version_check=no
> -fi
> +CLOOG_INIT_FLAGS()
>  
>  AC_ARG_ENABLE(cloog-version-check,
>  [  --disable-cloog-version-check  disable check for CLooG version],
>  ENABLE_CLOOG_CHECK=$enableval,
>  ENABLE_CLOOG_CHECK=yes)
>  
> -if test "x$with_cloog" != "xno" -a "${ENABLE_CLOOG_CHECK}" = "yes"; then
> -  saved_CFLAGS="$CFLAGS"
> -  CFLAGS="$CFLAGS $clooginc $gmpinc $pplinc"
> -  AC_MSG_CHECKING([for version 0.15.5 (or later revision) of CLooG])
> -  AC_TRY_COMPILE([#include "cloog/cloog.h"],[
> -  #if CLOOG_VERSION_MAJOR != 0 || CLOOG_VERSION_MINOR != 15 || CLOOG_VERSION_REVISION < 5
> -  choke me
> -  #endif
> -  ], [AC_TRY_COMPILE([#include "cloog/cloog.h"],[
> -  #if CLOOG_VERSION_MAJOR != 0 || CLOOG_VERSION_MINOR != 15 || CLOOG_VERSION_REVISION < 9
> -  choke me
> -  #endif
> -  ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([buggy but acceptable])])],
> -  [AC_MSG_RESULT([no]); clooglibs= ; clooginc= ])
> -  CFLAGS="$saved_CFLAGS"
> +if test "x$with_cloog" != "xno"; then
> +  saved_cflags=$CFLAGS
> +  saved_libs=$LIBS
> +  saved_ldflags=$LDFLAGS
> +
> +  dnl Detect and set clooginc/clooglibs.
> +  dnl Preference: CLooG-PPL (Legacy) > CLooG-ISL > CLooG-PPL
> +  CLOOG_SET_FLAGS()
> +
> +  dnl Version check for CLooG-Org
> +  if test "${ENABLE_CLOOG_CHECK}" = yes \
> +    && test "${cloog_org}" = yes ; then
> +    CLOOG_CHECK_VERSION(0,14,0)
> +  fi
> +
> +  dnl Version check for CLooG-PPL (Legacy).
> +  if test "${ENABLE_CLOOG_CHECK}" = yes \
> +    && test "${cloog_org}" = no ; then
> +    CLOOG_CHECK_VERSION_LEGACY()
> +  fi
> +
> +  dnl Only fails, if GRAPHITE was requested.
> +  CLOOG_IF_FAILED([
> +    AC_MSG_ERROR([Unable to find a usable CLooG. See config.log for details.])])
> +
> +  CFLAGS=$saved_cflags
> +  LIBS=$saved_libs
> +  LDFLAGS=$saved_ldflags
>  fi
>  
>  # Flags needed for CLOOG
diff mbox

Patch

diff --git a/ChangeLog.graphite b/ChangeLog.graphite
index b9d0723..c797dd3 100644
--- a/ChangeLog.graphite
+++ b/ChangeLog.graphite
@@ -1,3 +1,9 @@ 
+2010-08-11  Andreas Simbuerger  <simbuerg@fim.uni-passau.de>
+
+	* configure.ac: Support official CLooG.org versions.
+	* configure: Regenerate.
+	* config/cloog.m4: New.
+
 2010-09-24  Sebastian Pop  <sebastian.pop@amd.com>
 
 	* Merge from mainline (163495:164578).
diff --git a/config/cloog.m4 b/config/cloog.m4
new file mode 100644
index 0000000..a435f8e
--- /dev/null
+++ b/config/cloog.m4
@@ -0,0 +1,189 @@ 
+dnl Copyright (C) 2010 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License.  As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Andreas Simbuerger.
+
+dnl Test program for detecting CLooG.org's backend.
+m4_define([CLOOG_ORG_PROG],[AC_LANG_PROGRAM(
+  [#include <cloog/cloog.h>],
+  [cloog_version ()])])
+
+dnl Test program for detecting CLooG-Legacy (CLooG-PPL).
+m4_define([CLOOG_PPL_LEGACY_PROG], [AC_LANG_PROGRAM(
+  [#include <cloog/cloog.h>],
+  [ppl_version_major ()])])
+
+dnl Test CLooG's version (compile time).
+m4_define([CLOOG_CHECK_CT_PROG],[AC_LANG_PROGRAM(
+  [#include "cloog/cloog.h"],
+  [#if CLOOG_VERSION_MAJOR != $1 \
+    || CLOOG_VERSION_MINOR != $2 \
+    || CLOOG_VERSION_REVISION < $3
+    choke me
+   #endif])])
+
+dnl Test CLooG's version (run time).
+m4_define([CLOOG_CHECK_RT_PROG],[AC_LANG_PROGRAM(
+  [#include <stdlib.h>
+   #include "cloog/cloog.h"],
+  [if ((cloog_version_major () != CLOOG_VERSION_MAJOR)
+    && (cloog_version_minor () != CLOOG_VERSION_MINOR)
+    && (cloog_version_revision () != CLOOG_VERSION_REVISION))
+    {
+      exit (1);
+    }])])
+
+dnl Initialize clooglibs/clooginc according to the user input.
+AC_DEFUN([CLOOG_INIT_FLAGS],
+[
+  case $with_cloog in
+    no)
+      clooglibs=
+      clooginc=
+      ;;
+    "" | yes)
+      ;;
+    *)
+      clooglibs="-L$with_cloog/lib"
+      clooginc="-I$with_cloog/include"
+      ;;
+  esac
+  if test "x${with_cloog_include}" != x ; then
+    clooginc="-I$with_cloog_include"
+  fi
+  if test "x${with_cloog_lib}" != x; then
+    clooglibs="-L$with_cloog_lib"
+  fi
+  if test "x${with_cloog}" != x && test "x${with_cloog_include}" != x \
+    && test "x${with_cloog_lib}" != x && test -d ${srcdir}/cloog; then
+    clooglibs='-L$$r/$(HOST_SUBDIR)/cloog/'"$lt_cv_objdir"' '
+    clooginc='-I$$r/$(HOST_SUBDIR)/cloog/include -I$$s/cloog/include '
+    enable_cloog_version_check=no
+  fi
+]
+)
+
+dnl CLOOG_REQUESTED([ACTION-IF-REQUESTED], [ACTION-IF-NOT])
+AC_DEFUN([CLOOG_REQUESTED],
+[
+  if test "x${with_cloog}" != x \
+    || test "x${with_cloog_include}" != x \
+    || test "x${with_cloog_lib}" != x ; then
+    $1
+  else
+    $2
+  fi
+]
+)
+
+dnl Detect the used CLooG-backend and set clooginc/clooglibs/cloog_org.
+dnl Preference: CLooG-PPL (Legacy) > CLooG-ISL > CLooG-PPL
+AC_DEFUN([CLOOG_SET_FLAGS],
+[
+  clooglegacyinc="-DCLOOG_PPL_BACKEND"
+  cloogorginc="-DCLOOG_INT_GMP -DCLOOG_ORG"
+
+  CFLAGS="${CFLAGS} ${clooginc} ${cloogorginc} ${gmpinc} ${pplinc}"
+  LDFLAGS="${LDFLAGS} ${clooglibs}"
+
+  AC_CACHE_CHECK([for installed CLooG type],
+                 [gcc_cv_cloog_type],
+    [LIBS="-lcloog ${saved_libs}"
+     AC_LINK_IFELSE([CLOOG_PPL_LEGACY_PROG],
+      [gcc_cv_cloog_type="PPL Legacy"],
+      [LIBS="-lcloog-isl -lisl ${saved_libs}"
+       AC_LINK_IFELSE([CLOOG_ORG_PROG],
+        [gcc_cv_cloog_type=ISL],
+        [LIBS="-lcloog-ppl ${saved_libs}"
+         AC_LINK_IFELSE([CLOOG_ORG_PROG],
+          [gcc_cv_cloog_type=PPL],
+          [gcc_cv_cloog_type=no])])])])
+
+  case $gcc_cv_cloog_type in
+    "PPL Legacy")
+      clooginc="${clooginc} ${clooglegacyinc}"
+      clooglibs="${clooglibs} -lcloog"
+      cloog_org=no
+      ;;
+    "ISL")
+      clooginc="${clooginc} ${cloogorginc}"
+      clooglibs="${clooglibs} -lcloog-isl"
+      cloog_org=yes
+      ;;
+    "PPL")
+      clooginc="${clooginc} ${cloogorginc}"
+      clooglibs="${clooglibs} -lcloog-ppl"
+      cloog_org=yes
+      ;;
+    *)
+      clooglibs=
+      clooginc=
+      ;;
+  esac
+  
+  CFLAGS="${saved_cflags} ${clooginc} ${gmpinc} ${pplinc}"
+  LDFLAGS="${saved_ldflags} ${clooglibs}"
+]
+)
+
+dnl Version checks for CLooG.org
+dnl
+dnl CLOOG_CHECK_VERSION([MAJOR],[MINOR],[REVISION])
+AC_DEFUN([CLOOG_CHECK_VERSION],
+[
+  AC_CACHE_CHECK([for verison $1.$2.$3 of CLooG (compile time)],
+    [gcc_cv_cloog_ct_0_14_0],
+    [AC_COMPILE_IFELSE([CLOOG_CHECK_CT_PROG($1,$2,$3)],
+      [gcc_cv_cloog_ct_0_14_0=yes],
+      [gcc_cv_cloog_ct_0_14_0=no])])
+
+  AC_CACHE_CHECK([for version $1.$2.$3 of CLooG (run time)],
+    [gcc_cv_cloog_rt_0_14_0],
+    [AC_RUN_IFELSE([CLOOG_CHECK_RT_PROG],
+      [gcc_cv_cloog_rt_0_14_0=yes],
+      [gcc_cv_cloog_rt_0_14_0=no],
+      [gcc_cv_cloog_rt_0_14_0=guessing yes])])
+]
+)
+
+dnl Version checks for CLooG-Legacy (CLooG-PPL).
+dnl As this gets removed more sooner than later, don't bother
+dnl making it variable.
+AC_DEFUN([CLOOG_CHECK_VERSION_LEGACY],
+[
+  AC_CACHE_CHECK([for version 0.15.5 (or later revision) of CLooG],
+    [gcc_cv_cloog_ct_0_15_5],
+    [AC_COMPILE_IFELSE([CLOOG_CHECK_CT_PROG(0,15,5)],
+      [AC_COMPILE_IFELSE([CLOOG_CHECK_CT_PROG(0,15,9)],
+        [gcc_cv_cloog_ct_0_15_5=yes],
+        [gcc_cv_cloog_ct_0_15_5=buggy but acceptable])],
+      [gcc_cv_cloog_ct_0_15_5=no])])
+]
+)
+
+dnl Executes [ACTION-IF-FAILED], if GRAPHITE was requested and
+dnl the checks failed.
+dnl
+dnl CLOOG_IF_FAILED([ACTION-IF-FAILED])
+AC_DEFUN([CLOOG_IF_FAILED],
+[
+  CLOOG_REQUESTED([graphite_requested=yes], [graphite_requested=no])dnl
+  
+  if test "${gcc_cv_cloog_ct_0_14_0}" = no \
+    || test "${gcc_cv_cloog_rt_0_14_0}" = no \
+    || test "${gcc_cv_cloog_ct_0_15_5}" = no; then
+    clooglibs=
+    clooginc=
+  fi
+
+  if test "${graphite_requested}" = yes \
+    && test "x${clooglibs}" = x \
+    && test "x${clooginc}" = x ; then
+    $1
+  fi
+]
+)
diff --git a/configure b/configure
index 9e39867..bcbec16 100755
--- a/configure
+++ b/configure
@@ -833,6 +833,9 @@  LIBS
 CPPFLAGS
 CXX
 CXXFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
 CCC
 CPP
 AR
@@ -1816,6 +1819,48 @@  fi
 
 } # ac_fn_c_try_link
 
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  return $ac_retval
+
+} # ac_fn_c_try_run
+
 # ac_fn_c_try_cpp LINENO
 # ----------------------
 # Try to preprocess conftest.$ac_ext, and return whether this succeeded.
@@ -1940,48 +1985,6 @@  fi
 
 } # ac_fn_c_check_header_mongrel
 
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  return $ac_retval
-
-} # ac_fn_c_try_run
-
 # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
 # -------------------------------------------------------
 # Tests whether HEADER exists and can be compiled using the include files in
@@ -5885,8 +5888,6 @@  fi
 
 
 # Check for CLOOG
-clooglibs=" -lcloog "
-clooginc=" -DCLOOG_PPL_BACKEND "
 
 
 # Check whether --with-cloog was given.
@@ -5911,29 +5912,33 @@  if test "x$with_ppl" = "xno"; then
   with_cloog=no
 fi
 
-case $with_cloog in
-  no)
-    clooglibs=
-    clooginc=
-    ;;
-  "" | yes)
-    ;;
-  *)
-    clooglibs="-L$with_cloog/lib -lcloog"
-    clooginc="-I$with_cloog/include -DCLOOG_PPL_BACKEND "
-    ;;
-esac
-if test "x$with_cloog_include" != x; then
-  clooginc="-I$with_cloog_include -DCLOOG_PPL_BACKEND "
-fi
-if test "x$with_cloog_lib" != x; then
-  clooglibs="-L$with_cloog_lib -lcloog"
-fi
-if test "x$with_cloog$with_cloog_include$with_cloog_lib" = x && test -d ${srcdir}/cloog; then
-  clooglibs='-L$$r/$(HOST_SUBDIR)/cloog/'"$lt_cv_objdir"' -lcloog '
-  clooginc='-I$$r/$(HOST_SUBDIR)/cloog/include -I$$s/cloog/include -DCLOOG_PPL_BACKEND '
-  enable_cloog_version_check=no
-fi
+
+  case $with_cloog in
+    no)
+      clooglibs=
+      clooginc=
+      ;;
+    "" | yes)
+      ;;
+    *)
+      clooglibs="-L$with_cloog/lib"
+      clooginc="-I$with_cloog/include"
+      ;;
+  esac
+  if test "x${with_cloog_include}" != x ; then
+    clooginc="-I$with_cloog_include"
+  fi
+  if test "x${with_cloog_lib}" != x; then
+    clooglibs="-L$with_cloog_lib"
+  fi
+  if test "x${with_cloog}" != x && test "x${with_cloog_include}" != x \
+    && test "x${with_cloog_lib}" != x && test -d ${srcdir}/cloog; then
+    clooglibs='-L$$r/$(HOST_SUBDIR)/cloog/'"$lt_cv_objdir"' '
+    clooginc='-I$$r/$(HOST_SUBDIR)/cloog/include -I$$s/cloog/include '
+    enable_cloog_version_check=no
+  fi
+
+
 
 # Check whether --enable-cloog-version-check was given.
 if test "${enable_cloog_version_check+set}" = set; then :
@@ -5943,22 +5948,202 @@  else
 fi
 
 
-if test "x$with_cloog" != "xno" -a "${ENABLE_CLOOG_CHECK}" = "yes"; then
-  saved_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS $clooginc $gmpinc $pplinc"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for version 0.15.5 (or later revision) of CLooG" >&5
-$as_echo_n "checking for version 0.15.5 (or later revision) of CLooG... " >&6; }
+if test "x$with_cloog" != "xno"; then
+  saved_cflags=$CFLAGS
+  saved_libs=$LIBS
+  saved_ldflags=$LDFLAGS
+
+
+  clooglegacyinc="-DCLOOG_PPL_BACKEND"
+  cloogorginc="-DCLOOG_INT_GMP -DCLOOG_ORG"
+
+  CFLAGS="${CFLAGS} ${clooginc} ${cloogorginc} ${gmpinc} ${pplinc}"
+  LDFLAGS="${LDFLAGS} ${clooglibs}"
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for installed CLooG type" >&5
+$as_echo_n "checking for installed CLooG type... " >&6; }
+if test "${gcc_cv_cloog_type+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  LIBS="-lcloog ${saved_libs}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <cloog/cloog.h>
+int
+main ()
+{
+ppl_version_major ()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gcc_cv_cloog_type="PPL Legacy"
+else
+  LIBS="-lcloog-isl -lisl ${saved_libs}"
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <cloog/cloog.h>
+int
+main ()
+{
+cloog_version ()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gcc_cv_cloog_type=ISL
+else
+  LIBS="-lcloog-ppl ${saved_libs}"
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <cloog/cloog.h>
+int
+main ()
+{
+cloog_version ()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gcc_cv_cloog_type=PPL
+else
+  gcc_cv_cloog_type=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_cloog_type" >&5
+$as_echo "$gcc_cv_cloog_type" >&6; }
+
+  case $gcc_cv_cloog_type in
+    "PPL Legacy")
+      clooginc="${clooginc} ${clooglegacyinc}"
+      clooglibs="${clooglibs} -lcloog"
+      cloog_org=no
+      ;;
+    "ISL")
+      clooginc="${clooginc} ${cloogorginc}"
+      clooglibs="${clooglibs} -lcloog-isl"
+      cloog_org=yes
+      ;;
+    "PPL")
+      clooginc="${clooginc} ${cloogorginc}"
+      clooglibs="${clooglibs} -lcloog-ppl"
+      cloog_org=yes
+      ;;
+    *)
+      clooglibs=
+      clooginc=
+      ;;
+  esac
+
+  CFLAGS="${saved_cflags} ${clooginc} ${gmpinc} ${pplinc}"
+  LDFLAGS="${saved_ldflags} ${clooglibs}"
+
+
+
+    if test "${ENABLE_CLOOG_CHECK}" = yes \
+    && test "${cloog_org}" = yes ; then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for verison 0.14.0 of CLooG (compile time)" >&5
+$as_echo_n "checking for verison 0.14.0 of CLooG (compile time)... " >&6; }
+if test "${gcc_cv_cloog_ct_0_14_0+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "cloog/cloog.h"
 int
 main ()
 {
+#if CLOOG_VERSION_MAJOR != 0 \
+    || CLOOG_VERSION_MINOR != 14 \
+    || CLOOG_VERSION_REVISION < 0
+    choke me
+   #endif
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gcc_cv_cloog_ct_0_14_0=yes
+else
+  gcc_cv_cloog_ct_0_14_0=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_cloog_ct_0_14_0" >&5
+$as_echo "$gcc_cv_cloog_ct_0_14_0" >&6; }
 
-  #if CLOOG_VERSION_MAJOR != 0 || CLOOG_VERSION_MINOR != 15 || CLOOG_VERSION_REVISION < 5
-  choke me
-  #endif
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for version 0.14.0 of CLooG (run time)" >&5
+$as_echo_n "checking for version 0.14.0 of CLooG (run time)... " >&6; }
+if test "${gcc_cv_cloog_rt_0_14_0+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  gcc_cv_cloog_rt_0_14_0=guessing yes
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+   #include "cloog/cloog.h"
+int
+main ()
+{
+if ((cloog_version_major () != CLOOG_VERSION_MAJOR)
+    && (cloog_version_minor () != CLOOG_VERSION_MINOR)
+    && (cloog_version_revision () != CLOOG_VERSION_REVISION))
+    {
+      exit (1);
+    }
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gcc_cv_cloog_rt_0_14_0=yes
+else
+  gcc_cv_cloog_rt_0_14_0=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_cloog_rt_0_14_0" >&5
+$as_echo "$gcc_cv_cloog_rt_0_14_0" >&6; }
+
+
+  fi
 
+    if test "${ENABLE_CLOOG_CHECK}" = yes \
+    && test "${cloog_org}" = no ; then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for version 0.15.5 (or later revision) of CLooG" >&5
+$as_echo_n "checking for version 0.15.5 (or later revision) of CLooG... " >&6; }
+if test "${gcc_cv_cloog_ct_0_15_5+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include "cloog/cloog.h"
+int
+main ()
+{
+#if CLOOG_VERSION_MAJOR != 0 \
+    || CLOOG_VERSION_MINOR != 15 \
+    || CLOOG_VERSION_REVISION < 5
+    choke me
+   #endif
   ;
   return 0;
 }
@@ -5970,29 +6155,62 @@  if ac_fn_c_try_compile "$LINENO"; then :
 int
 main ()
 {
-
-  #if CLOOG_VERSION_MAJOR != 0 || CLOOG_VERSION_MINOR != 15 || CLOOG_VERSION_REVISION < 9
-  choke me
-  #endif
-
+#if CLOOG_VERSION_MAJOR != 0 \
+    || CLOOG_VERSION_MINOR != 15 \
+    || CLOOG_VERSION_REVISION < 9
+    choke me
+   #endif
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+  gcc_cv_cloog_ct_0_15_5=yes
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: buggy but acceptable" >&5
-$as_echo "buggy but acceptable" >&6; }
+  gcc_cv_cloog_ct_0_15_5=buggy but acceptable
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }; clooglibs= ; clooginc=
+  gcc_cv_cloog_ct_0_15_5=no
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  CFLAGS="$saved_CFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_cloog_ct_0_15_5" >&5
+$as_echo "$gcc_cv_cloog_ct_0_15_5" >&6; }
+
+
+  fi
+
+
+
+  if test "x${with_cloog}" != x \
+    || test "x${with_cloog_include}" != x \
+    || test "x${with_cloog_lib}" != x ; then
+    graphite_requested=yes
+  else
+    graphite_requested=no
+  fi
+
+
+  if test "${gcc_cv_cloog_ct_0_14_0}" = no \
+    || test "${gcc_cv_cloog_rt_0_14_0}" = no \
+    || test "${gcc_cv_cloog_ct_0_15_5}" = no; then
+    clooglibs=
+    clooginc=
+  fi
+
+  if test "${graphite_requested}" = yes \
+    && test "x${clooglibs}" = x \
+    && test "x${clooginc}" = x ; then
+
+    as_fn_error "Unable to find a usable CLooG. See config.log for details." "$LINENO" 5
+  fi
+
+
+
+  CFLAGS=$saved_cflags
+  LIBS=$saved_libs
+  LDFLAGS=$saved_ldflags
 fi
 
 # Flags needed for CLOOG
diff --git a/configure.ac b/configure.ac
index 67e79fe..2aa4e3b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -28,6 +28,7 @@  m4_include([ltoptions.m4])
 m4_include([ltsugar.m4])
 m4_include([ltversion.m4])
 m4_include([lt~obsolete.m4])
+m4_include([config/cloog.m4])
 
 AC_INIT(move-if-change)
 AC_PREREQ(2.64)
@@ -1580,8 +1581,6 @@  AC_SUBST(pplinc)
 
 
 # Check for CLOOG
-clooglibs=" -lcloog "
-clooginc=" -DCLOOG_PPL_BACKEND "
 
 AC_ARG_WITH(cloog, [  --with-cloog=PATH       Specify prefix directory for the installed CLooG-PPL package
                           Equivalent to --with-cloog-include=PATH/include
@@ -1593,50 +1592,41 @@  if test "x$with_ppl" = "xno"; then
   with_cloog=no
 fi
 
-case $with_cloog in 
-  no)
-    clooglibs=
-    clooginc=
-    ;;
-  "" | yes)
-    ;;
-  *)
-    clooglibs="-L$with_cloog/lib -lcloog"
-    clooginc="-I$with_cloog/include -DCLOOG_PPL_BACKEND "
-    ;;
-esac
-if test "x$with_cloog_include" != x; then
-  clooginc="-I$with_cloog_include -DCLOOG_PPL_BACKEND "
-fi
-if test "x$with_cloog_lib" != x; then
-  clooglibs="-L$with_cloog_lib -lcloog"
-fi
-if test "x$with_cloog$with_cloog_include$with_cloog_lib" = x && test -d ${srcdir}/cloog; then
-  clooglibs='-L$$r/$(HOST_SUBDIR)/cloog/'"$lt_cv_objdir"' -lcloog '
-  clooginc='-I$$r/$(HOST_SUBDIR)/cloog/include -I$$s/cloog/include -DCLOOG_PPL_BACKEND '
-  enable_cloog_version_check=no
-fi
+CLOOG_INIT_FLAGS()
 
 AC_ARG_ENABLE(cloog-version-check,
 [  --disable-cloog-version-check  disable check for CLooG version],
 ENABLE_CLOOG_CHECK=$enableval,
 ENABLE_CLOOG_CHECK=yes)
 
-if test "x$with_cloog" != "xno" -a "${ENABLE_CLOOG_CHECK}" = "yes"; then
-  saved_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS $clooginc $gmpinc $pplinc"
-  AC_MSG_CHECKING([for version 0.15.5 (or later revision) of CLooG])
-  AC_TRY_COMPILE([#include "cloog/cloog.h"],[
-  #if CLOOG_VERSION_MAJOR != 0 || CLOOG_VERSION_MINOR != 15 || CLOOG_VERSION_REVISION < 5
-  choke me
-  #endif
-  ], [AC_TRY_COMPILE([#include "cloog/cloog.h"],[
-  #if CLOOG_VERSION_MAJOR != 0 || CLOOG_VERSION_MINOR != 15 || CLOOG_VERSION_REVISION < 9
-  choke me
-  #endif
-  ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([buggy but acceptable])])],
-  [AC_MSG_RESULT([no]); clooglibs= ; clooginc= ])
-  CFLAGS="$saved_CFLAGS"
+if test "x$with_cloog" != "xno"; then
+  saved_cflags=$CFLAGS
+  saved_libs=$LIBS
+  saved_ldflags=$LDFLAGS
+
+  dnl Detect and set clooginc/clooglibs.
+  dnl Preference: CLooG-PPL (Legacy) > CLooG-ISL > CLooG-PPL
+  CLOOG_SET_FLAGS()
+
+  dnl Version check for CLooG-Org
+  if test "${ENABLE_CLOOG_CHECK}" = yes \
+    && test "${cloog_org}" = yes ; then
+    CLOOG_CHECK_VERSION(0,14,0)
+  fi
+
+  dnl Version check for CLooG-PPL (Legacy).
+  if test "${ENABLE_CLOOG_CHECK}" = yes \
+    && test "${cloog_org}" = no ; then
+    CLOOG_CHECK_VERSION_LEGACY()
+  fi
+
+  dnl Only fails, if GRAPHITE was requested.
+  CLOOG_IF_FAILED([
+    AC_MSG_ERROR([Unable to find a usable CLooG. See config.log for details.])])
+
+  CFLAGS=$saved_cflags
+  LIBS=$saved_libs
+  LDFLAGS=$saved_ldflags
 fi
 
 # Flags needed for CLOOG