1AC_INIT([isl], [0.12.2], [isl-development@googlegroups.com]) 2AC_CONFIG_AUX_DIR([.]) 3AC_CONFIG_MACRO_DIR([m4]) 4AM_INIT_AUTOMAKE([foreign]) 5m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) 6AC_SUBST(versioninfo) 7versioninfo=12:2:2 8 9if test "x$prefix" != "xNONE"; then 10 prefix_wd=`cd $prefix && pwd` 11 srcdir_wd=`cd $srcdir && pwd` 12 wd=`pwd` 13 if test "x$prefix_wd" = "x$srcdir_wd"; then 14 AC_MSG_ERROR(Installation in source directory not supported) 15 fi 16 if test "x$prefix_wd" = "x$wd"; then 17 AC_MSG_ERROR(Installation in build directory not supported) 18 fi 19fi 20 21AC_PROG_CC 22AC_PROG_CXX 23 24AX_CC_MAXOPT 25AX_GCC_WARN_UNUSED_RESULT 26AX_C___ATTRIBUTE__ 27 28AC_PROG_LIBTOOL 29 30AC_CHECK_PROG(PERL, perl, perl, []) 31AC_CHECK_PROG(PDFLATEX, pdflatex, pdflatex, []) 32AC_CHECK_PROG(POD2HTML, pod2html, pod2html, []) 33 34AM_CONDITIONAL(GENERATE_DOC, test -n "$PERL" -a -n "$PDFLATEX" -a -n "$POD2HTML") 35 36AX_CREATE_STDINT_H(include/isl/stdint.h) 37 38AX_SUBMODULE(gmp,system|build,system) 39 40AC_SUBST(GMP_CPPFLAGS) 41AC_SUBST(GMP_LDFLAGS) 42AC_SUBST(GMP_LIBS) 43case "$with_gmp" in 44system) 45 if test "x$with_gmp_prefix" != "x"; then 46 isl_configure_args="$isl_configure_args --with-gmp=$with_gmp_prefix" 47 GMP_CPPFLAGS="-I$with_gmp_prefix/include" 48 GMP_LDFLAGS="-L$with_gmp_prefix/lib" 49 fi 50 GMP_LIBS=-lgmp 51 SAVE_CPPFLAGS="$CPPFLAGS" 52 SAVE_LDFLAGS="$LDFLAGS" 53 SAVE_LIBS="$LIBS" 54 CPPFLAGS="$GMP_CPPFLAGS $CPPFLAGS" 55 LDFLAGS="$GMP_LDFLAGS $LDFLAGS" 56 LIBS="$GMP_LIBS $LIBS" 57 AC_CHECK_HEADER([gmp.h], [], [AC_ERROR([gmp.h header not found])]) 58 AC_CHECK_LIB([gmp], [main], [], [AC_ERROR([gmp library not found])]) 59 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <gmp.h>]], [[ 60 mpz_t n, d; 61 if (mpz_divisible_p(n, d)) 62 mpz_divexact_ui(n, n, 4); 63 ]])], [], [AC_ERROR([gmp library too old])]) 64 CPPFLAGS="$SAVE_CPPFLAGS" 65 LDFLAGS="$SAVE_LDFLAGS" 66 LIBS="$SAVE_LIBS" 67 ;; 68build) 69 GMP_CPPFLAGS="-I$gmp_srcdir -I$with_gmp_builddir" 70 GMP_LIBS="$with_gmp_builddir/libgmp.la" 71 ;; 72esac 73SAVE_CPPFLAGS="$CPPFLAGS" 74SAVE_LDFLAGS="$LDFLAGS" 75SAVE_LIBS="$LIBS" 76CPPFLAGS="$GMP_CPPFLAGS $CPPFLAGS" 77LDFLAGS="$GMP_LDFLAGS $LDFLAGS" 78LIBS="$GMP_LIBS $LIBS" 79need_get_memory_functions=false 80AC_CHECK_DECLS(mp_get_memory_functions,[],[ 81 need_get_memory_functions=true 82],[#include <gmp.h>]) 83AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <gmp.h>]], [[ 84 mpz_t x,y,g,a,b; 85 mpz_init(x); 86 mpz_init(y); 87 mpz_init(g); 88 mpz_init(a); 89 mpz_init(b); 90 mpz_set_si(x, -1); 91 mpz_set_si(y, 9); 92 mpz_gcdext(g, a, b, x, y); 93 if (mpz_get_si(a) == -1 && mpz_get_si(b) == 0) 94 return 0; 95 else 96 return 1; 97]])], [need_normalized_gcdext=false], [need_normalized_gcdext=true], 98[need_normalized_gcdext=true]) 99CPPFLAGS="$SAVE_CPPFLAGS" 100LDFLAGS="$SAVE_LDFLAGS" 101LIBS="$SAVE_LIBS" 102AM_CONDITIONAL(NEED_GET_MEMORY_FUNCTIONS, test x$need_get_memory_functions = xtrue) 103if test $need_normalized_gcdext = true; then 104AC_DEFINE([GMP_NORMALIZE_GCDEXT], [], 105 [result of mpz_gcdext needs to be normalized]) 106fi 107AC_CHECK_DECLS(ffs,[],[],[#include <strings.h>]) 108AC_CHECK_DECLS(__builtin_ffs,[],[],[]) 109 110AX_SUBMODULE(piplib,no|system|build,no) 111 112have_piplib=false 113AC_SUBST(PIPLIB_CPPFLAGS) 114AC_SUBST(PIPLIB_LDFLAGS) 115AC_SUBST(PIPLIB_LIBS) 116case "$with_piplib" in 117 build) 118 PIPLIB_CPPFLAGS="-I$piplib_srcdir/include" 119 PIPLIB_LIBS="$with_piplib_builddir/libpiplibMP.la" 120 ;; 121 system) 122 PIPLIB_LIBS="-lpiplibMP" 123 if test "x$with_piplib_prefix" != "x"; then 124 PIPLIB_CPPFLAGS="-I$with_piplib_prefix/include" 125 PIPLIB_LDFLAGS="-L$with_piplib_prefix/lib" 126 fi 127 SAVE_CPPFLAGS="$CPPFLAGS" 128 SAVE_LDFLAGS="$LDFLAGS" 129 CPPFLAGS="$PIPLIB_CPPFLAGS $CPPFLAGS" 130 LDFLAGS="$PIPLIB_LDFLAGS $LDFLAGS" 131 AC_CHECK_LIB(piplibMP, pip_solve,[ 132 AC_CHECK_MEMBER(PipOptions.Urs_parms, [], [ 133 AC_MSG_ERROR([Piplib too old; please install version 1.3.6 or newer]) 134 ],[#include <piplib/piplibMP.h>]) 135 ],[ 136 AC_MSG_ERROR([Piplib not found]) 137 ]) 138 CPPFLAGS="$SAVE_CPPFLAGS" 139 LDFLAGS="$SAVE_LDFLAGS" 140 ;; 141 no) 142 ;; 143 *) 144 AC_MSG_ERROR(unsupported) 145 ;; 146esac 147if test "$with_piplib" != "no"; then 148 AC_DEFINE(ISL_PIPLIB,,piplib is available) 149 have_piplib=true 150fi 151AM_CONDITIONAL(HAVE_PIPLIB, test x$have_piplib = xtrue) 152 153AC_SUBST(CLANG_CXXFLAGS) 154AC_SUBST(CLANG_LDFLAGS) 155AC_SUBST(CLANG_LIBS) 156AX_SUBMODULE(clang,system|no,no) 157case "$with_clang" in 158system) 159 AC_PROG_GREP 160 llvm_config="llvm-config" 161 AC_CHECK_PROG([llvm_config_found], ["$llvm_config"], [yes]) 162 if test "x$with_clang_prefix" != "x"; then 163 llvm_config="$with_clang_prefix/bin/llvm-config" 164 if test -x "$llvm_config"; then 165 llvm_config_found=yes 166 fi 167 fi 168 if test "$llvm_config_found" != yes; then 169 AC_MSG_ERROR([llvm-config not found]) 170 fi 171 CLANG_CXXFLAGS=`$llvm_config --cxxflags` 172 CLANG_LDFLAGS=`$llvm_config --ldflags` 173 targets=`$llvm_config --targets-built` 174 components="$targets asmparser bitreader support mc" 175 $llvm_config --components | $GREP option > /dev/null 2> /dev/null 176 if test $? -eq 0; then 177 components="$components option" 178 fi 179 CLANG_LIBS=`$llvm_config --libs $components` 180 CLANG_PREFIX=`$llvm_config --prefix` 181 AC_DEFINE_UNQUOTED(CLANG_PREFIX, ["$CLANG_PREFIX"], 182 [Clang installation prefix]) 183 184 SAVE_CPPFLAGS="$CPPFLAGS" 185 CPPFLAGS="$CLANG_CXXFLAGS $CPPFLAGS" 186 AC_LANG_PUSH(C++) 187 AC_CHECK_HEADER([clang/Basic/SourceLocation.h], [], 188 [AC_ERROR([clang header file not found])]) 189 AC_EGREP_HEADER([getDefaultTargetTriple], [llvm/Support/Host.h], [], 190 [AC_DEFINE([getDefaultTargetTriple], [getHostTriple], 191 [Define to getHostTriple for older versions of clang])]) 192 AC_EGREP_HEADER([getExpansionLineNumber], 193 [clang/Basic/SourceLocation.h], [], 194 [AC_DEFINE([getExpansionLineNumber], 195 [getInstantiationLineNumber], 196 [Define to getInstantiationLineNumber for older versions of clang])]) 197 AC_EGREP_HEADER([DiagnosticsEngine], 198 [clang/Basic/Diagnostic.h], [], 199 [AC_DEFINE([DiagnosticsEngine], 200 [Diagnostic], 201 [Define to Diagnostic for older versions of clang])]) 202 AC_EGREP_HEADER([ArrayRef], [clang/Driver/Driver.h], 203 [AC_DEFINE([USE_ARRAYREF], [], 204 [Define if Driver::BuildCompilation takes ArrayRef])]) 205 AC_EGREP_HEADER([CXXIsProduction], [clang/Driver/Driver.h], 206 [AC_DEFINE([HAVE_CXXISPRODUCTION], [], 207 [Define if Driver constructor takes CXXIsProduction argument])]) 208 AC_EGREP_HEADER([ IsProduction], [clang/Driver/Driver.h], 209 [AC_DEFINE([HAVE_ISPRODUCTION], [], 210 [Define if Driver constructor takes IsProduction argument])]) 211 AC_EGREP_HEADER([void HandleTopLevelDecl\(], [clang/AST/ASTConsumer.h], 212 [AC_DEFINE([HandleTopLevelDeclReturn], [void], 213 [Return type of HandleTopLevelDeclReturn]) 214 AC_DEFINE([HandleTopLevelDeclContinue], [], 215 [Return type of HandleTopLevelDeclReturn])], 216 [AC_DEFINE([HandleTopLevelDeclReturn], [bool], 217 [Return type of HandleTopLevelDeclReturn]) 218 AC_DEFINE([HandleTopLevelDeclContinue], [true], 219 [Return type of HandleTopLevelDeclReturn])]) 220 AC_CHECK_HEADER([clang/Basic/DiagnosticOptions.h], 221 [AC_DEFINE([HAVE_BASIC_DIAGNOSTICOPTIONS_H], [], 222 [Define if clang/Basic/DiagnosticOptions.h exists])]) 223 AC_TRY_COMPILE([#include <clang/Basic/TargetInfo.h>], [ 224 using namespace clang; 225 TargetOptions *TO; 226 DiagnosticsEngine *Diags; 227 TargetInfo::CreateTargetInfo(*Diags, TO); 228 ], [AC_DEFINE([CREATETARGETINFO_TAKES_POINTER], [], 229 [Define if TargetInfo::CreateTargetInfo takes pointer])]) 230 AC_TRY_COMPILE([#include <clang/Frontend/CompilerInstance.h>], [ 231 using namespace clang; 232 DiagnosticConsumer *client; 233 CompilerInstance *Clang; 234 Clang->createDiagnostics(client); 235 ], [], [AC_DEFINE([CREATEDIAGNOSTICS_TAKES_ARG], [], 236 [Define if CompilerInstance::createDiagnostics takes argc and argv])]) 237 AC_TRY_COMPILE([#include <clang/Lex/HeaderSearchOptions.h>], [ 238 using namespace clang; 239 HeaderSearchOptions HSO; 240 HSO.AddPath("", frontend::Angled, false, false); 241 ], [AC_DEFINE([ADDPATH_TAKES_4_ARGUMENTS], [], 242 [Define if HeaderSearchOptions::AddPath takes 4 arguments])]) 243 AC_LANG_POP 244 CPPFLAGS="$SAVE_CPPFLAGS" 245 246 SAVE_LDFLAGS="$LDFLAGS" 247 LDFLAGS="$CLANG_LDFLAGS $LDFLAGS" 248 AC_SUBST(LIB_CLANG_EDIT) 249 AC_CHECK_LIB([clangEdit], [main], [LIB_CLANG_EDIT=-lclangEdit], []) 250 LDFLAGS="$SAVE_LDFLAGS" 251 ;; 252esac 253AM_CONDITIONAL(HAVE_CLANG, test $with_clang = system) 254 255AX_SET_WARNING_FLAGS 256 257AC_SUBST(WARNING_FLAGS) 258 259PACKAGE_CFLAGS="$GMP_CPPFLAGS" 260PACKAGE_LDFLAGS="$GMP_LDFLAGS" 261PACKAGE_LIBS="-lisl -lgmp" 262AX_CREATE_PKGCONFIG_INFO 263 264AX_DETECT_GIT_HEAD 265echo '#define GIT_HEAD_ID "'$GIT_HEAD_ID'"' > gitversion.h 266 267AH_BOTTOM([#include <isl_config_post.h>]) 268AC_CONFIG_HEADERS(isl_config.h) 269AC_CONFIG_HEADERS(include/isl/config.h) 270AC_CONFIG_FILES(Makefile) 271AC_CONFIG_FILES(doc/Makefile) 272if test $with_clang = system; then 273 AC_CONFIG_FILES(interface/Makefile) 274fi 275AC_CONFIG_FILES([bound_test.sh], [chmod +x bound_test.sh]) 276AC_CONFIG_FILES([codegen_test.sh], [chmod +x codegen_test.sh]) 277AC_CONFIG_FILES([pip_test.sh], [chmod +x pip_test.sh]) 278AC_CONFIG_COMMANDS_POST([ 279 dnl pass on arguments to subdir configures, but don't 280 dnl add them to config.status 281 ac_configure_args="$ac_configure_args $isl_configure_args" 282]) 283AC_OUTPUT 284