dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run to configure the dnl Makefile in this directory. # This file is part of PolyLib. # # PolyLib is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # PolyLib is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with PolyLib. If not, see . # Authors: Bart Kienhuis, Vincent Loechner, T. Risset # Copyright (c) 2000 The Regents of the University of California. # All rights reserved. # # Permission is hereby granted, without written agreement and without # license or royalty fees, to use, copy, modify, and distribute this # software and its documentation for any purpose, provided that the # above copyright notice and the following two paragraphs appear in all # copies of this software. # # IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY # FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES # ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF # THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE # PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF # CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, # ENHANCEMENTS, OR MODIFICATIONS. # # PT_COPYRIGHT_VERSION_2 # COPYRIGHTENDKEY dnl Process this file with autoconf to produce a configure script. AC_INIT(polylib, 5.22.5) AM_INIT_AUTOMAKE([gnu]) AC_CONFIG_SRCDIR(include/polylib/polylib.h.in) AC_CONFIG_MACRO_DIR([m4]) AC_PREREQ(2.60) AC_SUBST(versioninfo) versioninfo=9:0:1 if test "x$prefix" != "xNONE"; then prefix_wd=`cd $prefix && pwd` srcdir_wd=`cd $srcdir && pwd` wd=`pwd` if test "x$prefix_wd" = "x$srcdir_wd"; then AC_MSG_ERROR(Installation in source directory not supported) fi if test "x$prefix_wd" = "x$wd"; then AC_MSG_ERROR(Installation in build directory not supported) fi fi dnl Checks for programs. AC_PROG_CC AC_PROG_LN_S AC_PROG_INSTALL AC_PROG_LIBTOOL AM_PROG_CC_C_O dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST dnl Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS(limits.h unistd.h) AC_CHECK_HEADERS(getopt.h) dnl /*****************************************************************************/ dnl See if the only goal is to create an 'int', 'longint', or 'longlongint' library AC_CHECK_SIZEOF(int,1) AC_CHECK_SIZEOF(long int,1) AC_CHECK_SIZEOF(long long int,1) AC_SUBST(polylib32_defs) AC_SUBST(polylib64_defs) AC_SUBST(polylib128_defs) for type in long_long_int long_int int; do case "$type" in int) bits=`expr $ac_cv_sizeof_int \* 8` defs="#define LINEAR_VALUE_IS_INT" ;; long_int) bits=`expr $ac_cv_sizeof_long_int \* 8` defs="#define LINEAR_VALUE_IS_LONG #define LINEAR_VALUE_PROTECT_MULTIPLY" ;; long_long_int) bits=`expr $ac_cv_sizeof_long_long_int \* 8` defs="#define LINEAR_VALUE_IS_LONGLONG #define LINEAR_VALUE_PROTECT_MULTIPLY #define LINEAR_VALUE_ASSUME_SOFTWARE_IDIV" ;; esac case "$bits" in 32) polylib32_defs=$defs ;; 64) polylib64_defs=$defs ;; 128) polylib128_defs=$defs ;; esac done AC_SUBST(polylibs) AC_SUBST(ALL_BITS) AC_ARG_ENABLE(int-lib, [ --enable-int-lib Build an int library], [lib_type=int bits=`expr $ac_cv_sizeof_int \* 8` polylibs="libpolylib$bits.la $polylibs" ALL_BITS="$bits $ALL_BITS" ]) AC_ARG_ENABLE(longint-lib, [ --enable-longint-lib Build a long int library], [lib_type=longint bits=`expr $ac_cv_sizeof_long_int \* 8` polylibs="libpolylib$bits.la $polylibs" ALL_BITS="$bits $ALL_BITS" ]) AC_ARG_ENABLE(longlongint-lib, [ --enable-longlongint-lib Build a long long int library], [lib_type=longlongint bits=`expr $ac_cv_sizeof_long_long_int \* 8` polylibs="libpolylib$bits.la $polylibs" ALL_BITS="$bits $ALL_BITS" ]) dnl Check for GMP library AC_MSG_CHECKING(whether to use GMP) AC_ARG_WITH(libgmp, [ --with-libgmp DIR Location of the GMP Distribution], gmp_package=$withval, gmp_package=no) if test "x$gmp_package" = "xno"; then AC_MSG_RESULT(no) else AC_MSG_RESULT(yes) if test "x$gmp_package" != "xyes"; then GMP_DIR=$gmp_package if test ! -d "$GMP_DIR"; then AC_ERROR(Directory given for GMP Distribution is not a directory) fi CPPFLAGS="-I$GMP_DIR/include $CPPFLAGS" LDFLAGS="-L$GMP_DIR/lib $LDFLAGS" fi AC_CHECK_HEADER(gmp.h, [AC_CHECK_LIB(gmp,main, [poly_cv_gmpfatal="no"], [poly_cv_gmpfatal="yes"])], [poly_cv_gmpfatal="yes"]) if test "$poly_cv_gmpfatal" = "yes"; then AC_MSG_ERROR([GMP not found]) else AC_CHECK_DECLS(mp_get_memory_functions,[],[ AC_LIBOBJ(mp_get_memory_functions) ],[#include ]) fi lib_type=gmp BITS=`expr gmp` LIBS="-lgmp $LIBS" polylibs="libpolylib$BITS.la $polylibs" ALL_BITS="$BITS $ALL_BITS" fi if test "X$lib_type" = "X"; then AC_MSG_CHECKING(what the LONG representation is) if test "$ac_cv_sizeof_long_long_int" -gt "$ac_cv_sizeof_int"; then AC_MSG_RESULT([long long int]) lib_type=longlongint bits=`expr $ac_cv_sizeof_long_long_int \* 8` polylibs="libpolylib$bits.la $polylibs" ALL_BITS="$bits $ALL_BITS" elif test "$ac_cv_sizeof_long_int" -gt "$ac_cv_sizeof_int"; then AC_MSG_RESULT([long int]) lib_type=longint bits=`expr $ac_cv_sizeof_long_int \* 8` polylibs="libpolylib$bits.la $polylibs" ALL_BITS="$bits $ALL_BITS" else AC_MSG_RESULT([NONE!]) lib_type=int bits=`expr $ac_cv_sizeof_int \* 8` polylibs="libpolylib$bits.la $polylibs" ALL_BITS="$bits $ALL_BITS" fi fi case "$lib_type" in int) BITS=`expr $ac_cv_sizeof_int \* 8` ;; longint) BITS=`expr $ac_cv_sizeof_long_int \* 8` ;; longlongint) BITS=`expr $ac_cv_sizeof_long_long_int \* 8` ;; esac AC_SUBST(polylib) polylib="libpolylib$BITS.la" dnl extra indirection to avoid automake getting confused AC_SUBST(multi_bin_programs) AC_SUBST(multi_noinst_programs) for pl_bit in $ALL_BITS ; do multi_bin_programs="$multi_bin_programs \$(multi_bin_programs_${pl_bit})" multi_noinst_programs="$multi_noinst_programs \$(no_inst_programs_${pl_bit})" done dnl /*****************************************************************************/ AC_ARG_ENABLE(extra-suffix, [ --enable-extra-suffix Add bits size suffix to executables], [ if test "$enableval" = yes; then program_transform_name="s/\$\$/$BITS/;$program_transform_name" fi ] ) dnl /********************************************************************/ dnl Check for DOXYGEN package AC_ARG_WITH(doxygen, [ --with-doxygen DIR Location of the Doxygen Distribution (http://www.doxygen.org)], doxygen_package=$withval) dnl AC_MSG_CHECKING(for Doxygen program) AC_CHECK_PROG(DOXYGEN,doxygen,doxygen,test,[$PATH:$doxygen_package/bin:/usr/local/bin]) dnl AC_MSG_RESULT($DOXYGEN) AC_SUBST(LIBS) dnl long/int bits and compilation flags AC_SUBST(BITS) dnl Used with doxygen AC_SUBST(DOXYGEN) dnl Currently, we only create one .pc file dnl Creating one for each configured version is a bit complicated PACKAGE_NAME=polylib$BITS AX_CREATE_PKGCONFIG_INFO AC_CONFIG_HEADERS(config.h) AC_OUTPUT(Makefile include/Makefile include/polylib/Makefile include/polylib/polylib.h Test/Makefile Test/Zpolytest/Makefile Test/ehrhart/Makefile Test/ehrhart_union/Makefile Test/ranking/Makefile Test/general/Makefile Test/pp/Makefile polylib.doxygen ) echo "Polylib will be built with " $ALL_BITS "integer size(s)" echo "---------------------------------------------------" echo "You can proceed with:" echo "make :to build the libs and the executables" echo "make tests :to test the library" echo "make install :to install them (to $prefix)" echo "---------------------------------------------------"