mirror of
https://review.haiku-os.org/buildtools
synced 2025-01-31 10:34:41 +01:00
5873a060ca
* 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.
287 lines
9.4 KiB
Plaintext
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
|
|
])
|