1# This file is part of GCC.
2#
3# GCC is free software; you can redistribute it and/or modify it under
4# the terms of the GNU General Public License as published by the Free
5# Software Foundation; either version 3, or (at your option) any later
6# version.
7#
8# GCC is distributed in the hope that it will be useful, but WITHOUT
9# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
11# for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with GCC; see the file COPYING3.  If not see
15# <http://www.gnu.org/licenses/>.
16#
17# Contributed by Richard Guenther <rguenther@suse.de>
18# Based on cloog.m4
19
20# ISL_INIT_FLAGS ()
21# -------------------------
22# Provide configure switches for ISL support.
23# Initialize isllibs/islinc according to the user input.
24AC_DEFUN([ISL_INIT_FLAGS],
25[
26  AC_ARG_WITH([isl-include],
27    [AS_HELP_STRING(
28      [--with-isl-include=PATH],
29      [Specify directory for installed ISL include files])])
30  AC_ARG_WITH([isl-lib],
31    [AS_HELP_STRING(
32      [--with-isl-lib=PATH],
33      [Specify the directory for the installed ISL library])])
34
35  AC_ARG_ENABLE(isl-version-check,
36    [AS_HELP_STRING(
37      [--disable-isl-version-check],
38      [disable check for ISL version])],
39    ENABLE_ISL_CHECK=$enableval,
40    ENABLE_ISL_CHECK=yes)
41
42  # Initialize isllibs and islinc.
43  case $with_isl in
44    no)
45      isllibs=
46      islinc=
47      ;;
48    "" | yes)
49      ;;
50    *)
51      isllibs="-L$with_isl/lib"
52      islinc="-I$with_isl/include"
53      ;;
54  esac
55  if test "x${with_isl_include}" != x ; then
56    islinc="-I$with_isl_include"
57  fi
58  if test "x${with_isl_lib}" != x; then
59    isllibs="-L$with_isl_lib"
60  fi
61  dnl If no --with-isl flag was specified and there is in-tree ISL
62  dnl source, set up flags to use that and skip any version tests
63  dnl as we cannot run them before building ISL.
64  if test "x${islinc}" = x && test "x${isllibs}" = x \
65     && test -d ${srcdir}/isl; then
66    isllibs='-L$$r/$(HOST_SUBDIR)/isl/'"$lt_cv_objdir"' '
67    islinc='-I$$r/$(HOST_SUBDIR)/isl/include -I$$s/isl/include'
68    ENABLE_ISL_CHECK=no
69    AC_MSG_WARN([using in-tree ISL, disabling version check])
70  fi
71]
72)
73
74# ISL_REQUESTED (ACTION-IF-REQUESTED, ACTION-IF-NOT)
75# ----------------------------------------------------
76# Provide actions for failed ISL detection.
77AC_DEFUN([ISL_REQUESTED],
78[
79  AC_REQUIRE([ISL_INIT_FLAGS])
80
81  if test "x${with_isl}" = xno; then
82    $2
83  elif test "x${with_isl}" != x \
84    || test "x${with_isl_include}" != x \
85    || test "x${with_isl_lib}" != x ; then
86    $1
87  else
88    $2
89  fi
90]
91)
92
93# _ISL_CHECK_CT_PROG(MAJOR, MINOR)
94# --------------------------------------------
95# Helper for verifying ISL compile time version.
96m4_define([_ISL_CHECK_CT_PROG],[AC_LANG_PROGRAM(
97  [#include <isl/version.h>
98   #include <string.h>],
99  [if (strncmp (isl_version (), "isl-$1.$2", strlen ("isl-$1.$2")) != 0)
100     return 1;
101   ])])
102
103# ISL_CHECK_VERSION ISL_CHECK_VERSION (MAJOR, MINOR)
104# ----------------------------------------------------------------
105# Test the found ISL to be exact of version MAJOR.MINOR and at least
106# REVISION.
107AC_DEFUN([ISL_CHECK_VERSION],
108[
109  if test "${ENABLE_ISL_CHECK}" = yes ; then
110    _isl_saved_CFLAGS=$CFLAGS
111    _isl_saved_LDFLAGS=$LDFLAGS
112    _isl_saved_LIBS=$LIBS
113
114    CFLAGS="${_isl_saved_CFLAGS} ${islinc} ${gmpinc}"
115    LDFLAGS="${_isl_saved_LDFLAGS} ${isllibs}"
116    LIBS="${_isl_saved_LIBS} -lisl"
117
118    AC_MSG_CHECKING([for version $1.$2 of ISL])
119    AC_RUN_IFELSE([_ISL_CHECK_CT_PROG($1,$2)],
120	[gcc_cv_isl=yes],
121	[gcc_cv_isl=no],
122	[gcc_cv_isl=yes])
123    AC_MSG_RESULT([$gcc_cv_isl])
124
125    CFLAGS=$_isl_saved_CFLAGS
126    LDFLAGS=$_isl_saved_LDFLAGS
127    LIBS=$_isl_saved_LIBS
128  fi
129]
130)
131
132# ISL_IF_FAILED (ACTION-IF-FAILED)
133# ----------------------------------
134# Executes ACTION-IF-FAILED, if GRAPHITE was requested and
135# the checks failed.
136AC_DEFUN([ISL_IF_FAILED],
137[
138  ISL_REQUESTED([graphite_requested=yes], [graphite_requested=no])
139
140  if test "${gcc_cv_isl}" = no ; then
141    isllibs=
142    islinc=
143  fi
144
145  if test "${graphite_requested}" = yes \
146    && test "x${isllibs}" = x \
147    && test "x${islinc}" = x ; then
148    $1
149  fi
150]
151)
152