buildtools/ppl/m4/ppl_c.m4
Jerome Duval 5873a060ca imported PPL 0.11.1 and CLooG 0.18.0.
* these are dependencies for gcc 4 Graphite engine build.
* CLooG 0.18.0 includes ISL 0.11.1 which is the backend that the build script enables.
* PPL is needed by GCC build even if it isn't the chosen backend.
2013-04-06 15:10:34 +02:00

287 lines
9.4 KiB
Plaintext

dnl A function to test for the existence and usability of particular
dnl versions of the C interface of the PPL, defining macros containing
dnl the required paths.
dnl Copyright (C) 1997 Owen Taylor
dnl Copyright (C) 2001-2010 Roberto Bagnara <bagnara@cs.unipr.it>
dnl Copyright (C) 2010-2011 BUGSENG srl (http://bugseng.com)
dnl
dnl This file is part of the Parma Polyhedra Library (PPL).
dnl
dnl The PPL is free software; you can redistribute it and/or modify it
dnl under the terms of the GNU General Public License as published by the
dnl Free Software Foundation; either version 3 of the License, or (at your
dnl option) any later version.
dnl
dnl The PPL is distributed in the hope that it will be useful, but WITHOUT
dnl ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
dnl FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
dnl for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program; if not, write to the Free Software Foundation,
dnl Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA.
dnl
dnl For the most up-to-date information see the Parma Polyhedra Library
dnl site: http://www.cs.unipr.it/ppl/ .
dnl AM_PATH_PPL_C([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
dnl Test for the C interface of the PPL, and define PPL_CPPFLAGS,
dnl PPL_LDFLAGS, ... what else?
AC_DEFUN([AM_PATH_PPL_C],
[
dnl Get the required information from the ppl-config program.
AC_ARG_WITH(ppl-prefix,
AS_HELP_STRING([--with-ppl-prefix=PREFIX],
[prefix used to configure the PPL]),
ppl_prefix="$withval",
ppl_prefix="")
AC_ARG_WITH(ppl-exec-prefix,
AS_HELP_STRING([--with-ppl-exec-prefix=PREFIX],
[exec-prefix used to configure the PPL]),
ppl_exec_prefix="$withval",
ppl_exec_prefix="")
AC_ARG_ENABLE(ppl-test,
AS_HELP_STRING([--disable-ppltest],
[do not try to compile and run a test PPL program]),
,
enable_ppltest=yes)
if test "x$ppl_exec_prefix" != x
then
ppl_config_args="$ppl_config_args --exec-prefix=$ppl_exec_prefix"
if test "x${PPL_CONFIG+set}" != xset
then
PPL_CONFIG="$ppl_exec_prefix/bin/ppl-config"
fi
fi
if test "x$ppl_prefix" != x
then
ppl_config_args="$ppl_config_args --prefix=$ppl_prefix"
if test "x${PPL_CONFIG+set}" != xset
then
PPL_CONFIG="$ppl_prefix/bin/ppl-config"
fi
fi
AC_PATH_PROG(PPL_CONFIG, ppl-config, no)
min_ppl_version=ifelse([$1], ,0.0,$1)
if test \( "x$min_ppl_version" = "x0.0" \) -o \( "x$min_ppl_version" = "x0.0.0" \)
then
AC_MSG_CHECKING([for the Parma Polyhedra Library])
else
AC_MSG_CHECKING([for the Parma Polyhedra Library, version >= $min_ppl_version])
fi
no_ppl=""
if test $PPL_CONFIG = no
then
no_ppl=yes
else
PPL_CPPFLAGS=`$PPL_CONFIG $ppl_config_args --cppflags`
PPL_LDFLAGS=`$PPL_CONFIG $ppl_config_args --interface=C --ldflags`
ppl_config_version="`$PPL_CONFIG $ppl_config_args --version`"
if test "x$enable_ppltest" = xyes
then
ac_save_CPPFLAGS="$CPPFLAGS"
ac_save_LDFLAGS="$LDFLAGS"
CPPFLAGS="$CPPFLAGS $PPL_CPPFLAGS"
LDFLAGS="$PPL_LDFLAGS $LDFLAGS"
dnl Now check if the installed (C interface of the) PPL is sufficiently new.
dnl (Also sanity checks the results of ppl-config to some extent.)
AC_LANG_PUSH(C)
rm -f conf.ppltest
AC_TRY_RUN([
#include <ppl_c.h>
#include <stdio.h>
#include <stdlib.h>
#define BOOL int
#define TRUE 1
#define FALSE 0
int
main() {
const char* version_string = 0;
system("touch conf.ppltest");
unsigned min_ppl_major, min_ppl_minor, min_ppl_revision, min_ppl_beta;
int n = sscanf("$min_ppl_version",
"%u.%u.%upre%u%*c",
&min_ppl_major, &min_ppl_minor,
&min_ppl_revision, &min_ppl_beta);
BOOL min_ppl_version_ok = TRUE;
if (n == 4) {
if (min_ppl_beta == 0)
min_ppl_version_ok = FALSE;
}
else if (n == 3) {
n = sscanf("$min_ppl_version",
"%u.%u.%u%*c",
&min_ppl_major, &min_ppl_minor, &min_ppl_revision);
if (n != 3)
min_ppl_version_ok = FALSE;
else
min_ppl_beta = 0;
}
else if (n == 2) {
n = sscanf("$min_ppl_version",
"%u.%upre%u%*c",
&min_ppl_major, &min_ppl_minor, &min_ppl_beta);
if (n == 3) {
if (min_ppl_beta == 0)
min_ppl_version_ok = FALSE;
else
min_ppl_revision = 0;
}
else if (n == 2) {
n = sscanf("$min_ppl_version",
"%u.%u%*c",
&min_ppl_major, &min_ppl_minor);
if (n != 2)
min_ppl_version_ok = FALSE;
else {
min_ppl_revision = 0;
min_ppl_beta = 0;
}
}
else
min_ppl_version_ok = FALSE;
}
else
min_ppl_version_ok = FALSE;
if (!min_ppl_version_ok) {
printf("illegal version string '$min_ppl_version'\n");
return 1;
}
ppl_version(&version_string);
if (strcmp("$ppl_config_version", version_string) != 0) {
printf("\n*** 'ppl-config --version' returned $ppl_config_version, "
"but PPL version %s", version_string);
printf("\n*** was found! If ppl-config was correct, then it is best"
"\n*** to remove the old version of PPL."
" You may also be able to fix the error"
"\n*** by modifying your LD_LIBRARY_PATH enviroment variable,"
" or by editing"
"\n*** /etc/ld.so.conf."
" Make sure you have run ldconfig if that is"
"\n*** required on your system."
"\n*** If ppl-config was wrong, set the environment variable"
" PPL_CONFIG"
"\n*** to point to the correct copy of ppl-config,"
" and remove the file config.cache"
"\n*** before re-running configure.\n");
return 1;
}
else if (strcmp(PPL_VERSION, version_string) != 0) {
printf("\n*** PPL header file (version " PPL_VERSION ") does not match"
"\n*** library (version %s)\n", version_string);
return 1;
}
else if (PPL_VERSION_MAJOR < min_ppl_major
|| (PPL_VERSION_MAJOR == min_ppl_major
&& PPL_VERSION_MINOR < min_ppl_minor)
|| (PPL_VERSION_MAJOR == min_ppl_major
&& PPL_VERSION_MINOR == min_ppl_minor
&& PPL_VERSION_REVISION < min_ppl_revision)
|| (PPL_VERSION_MAJOR == min_ppl_major
&& PPL_VERSION_MINOR == min_ppl_minor
&& PPL_VERSION_REVISION == min_ppl_revision
&& PPL_VERSION_BETA < min_ppl_beta)) {
printf("\n*** An old version of PPL (" PPL_VERSION ") was found."
"\n*** You need at least PPL version $min_ppl_version."
" The latest version of"
"\n*** PPL is always available from ftp://ftp.cs.unipr.it/ppl/ ."
"\n***"
"\n*** If you have already installed a sufficiently new version,"
" this error"
"\n*** probably means that the wrong copy of the ppl-config"
" program is"
"\n*** being found. The easiest way to fix this is to remove"
" the old version"
"\n*** of PPL, but you can also set the PPL_CONFIG environment"
" variable to point"
"\n*** to the correct copy of ppl-config. (In this case,"
" you will have to"
"\n*** modify your LD_LIBRARY_PATH enviroment"
" variable or edit /etc/ld.so.conf"
"\n*** so that the correct libraries are found at run-time.)\n");
return 1;
}
return 0;
}
],, no_ppl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
AC_LANG_POP
CPPFLAGS="$ac_save_CPPFLAGS"
LDFLAGS="$ac_save_LDFLAGS"
fi
fi
if test "x$no_ppl" = x
then
AC_MSG_RESULT(yes)
ifelse([$2], , :, [$2])
else
AC_MSG_RESULT(no)
if test x"$PPL_CONFIG" = xno
then
echo "*** The ppl-config script installed by PPL could not be found."
echo "*** If the PPL was installed in PREFIX, make sure PREFIX/bin is in"
echo "*** your path, or set the PPL_CONFIG environment variable to the"
echo "*** full path to ppl-config."
else
if test -f conf.ppltest
then
:
else
echo "*** Could not run PPL test program, checking why..."
CPPFLAGS="$CPPFLAGS $PPL_CPPFLAGS"
LDFLAGS="$LDFLAGS $PPL_LDFLAGS"
AC_TRY_LINK([
#include <ppl_c.h>
],
[
return ppl_version_major() || ppl_version_minor()
|| ppl_version_revision() || ppl_version_beta();
],
[
echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding the PPL or finding the"
echo "*** wrong version of the PPL. If it is not finding the PPL, you will"
echo "*** need to set your LD_LIBRARY_PATH environment variable, or edit"
echo "*** /etc/ld.so.conf to point to the installed location. Also, make"
echo "*** sure you have run ldconfig if that is required on your system."
echo "***"
echo "*** If you have an old version installed, it is best to remove it,"
echo "*** although you may also be able to get things to work by modifying"
echo "*** LD_LIBRARY_PATH."
],
[
echo "*** The test program failed to compile or link. See the file"
echo "*** config.log for the exact error that occured. This usually means"
echo "*** the PPL was incorrectly installed or that someone moved the PPL"
echo "*** since it was installed. In both cases you should reinstall"
echo "*** the library."
])
CPPFLAGS="$ac_save_CPPFLAGS"
LDFLAGS="$ac_save_LDFLAGS"
fi
fi
PPL_CPPFLAGS=""
PPL_LDFLAGS=""
ifelse([$3], , :, [$3])
fi
AC_SUBST(PPL_CPPFLAGS)
AC_SUBST(PPL_LDFLAGS)
rm -f conf.ppltest
])