# mpc.m4 # # Copyright (C) 2008, 2009, 2010, 2011, 2012 INRIA # # This file is part of GNU MPC. # # GNU MPC is free software; you can redistribute it and/or modify it under # the terms of the GNU Lesser General Public License as published by the # Free Software Foundation; either version 3 of the License, or (at your # option) any later version. # # GNU MPC 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 Lesser General Public License for # more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see http://www.gnu.org/licenses/ . # # SYNOPSIS # # # MPC_COMPLEX_H # # DESCRIPTION # # Check whether complex.h is usable; if yes, define HAVE_COMPLEX_H. # AC_DEFUN([MPC_COMPLEX_H], [ AC_CHECK_HEADER( [complex.h], [ m4_define( [MPC_CONFTEST], [ AC_LANG_PROGRAM( [[#include ]], [[complex double x = 1.0 + 2.0 * I; return (creal (x) + cimag (x));]] ) ] ) AC_SEARCH_LIBS([creal], [m]) # needed on Solaris AC_MSG_CHECKING([whether creal, cimag and I can be used]) AC_LINK_IFELSE( [MPC_CONFTEST], [ AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_COMPLEX_H], [1], [complex.h present and usable]) ], [ AC_MSG_RESULT([no, build without support for C complex numbers]) ] ) ] ) ]) # # SYNOPSIS # # # MPC_C_CHECK_FLAG([FLAG,ACCUMULATOR]) # # DESCRIPTION # # Checks if the C compiler accepts the flag FLAG # If yes, adds it to CFLAGS. AC_DEFUN([MPC_C_CHECK_FLAG], [ AX_C_CHECK_FLAG($1,,,[CFLAGS="$CFLAGS $1"]) ]) # # SYNOPSIS # # # MPC_C_CHECK_WARNINGFLAGS # # DESCRIPTION # # For development version only: Checks if gcc accepts warning flags. # Adds accepted ones to CFLAGS. # AC_DEFUN([MPC_C_CHECK_WARNINGCFLAGS], [ AC_REQUIRE([AC_PROG_GREP]) if echo $VERSION | grep -c dev >/dev/null 2>&1 ; then if test "x$GCC" = "xyes" -a "x$compiler" != "xicc" -a "x$compiler" != "xg++"; then # enable -Werror for myself (Andreas Enge) if test "x$USER" = "xenge"; then MPC_C_CHECK_FLAG(-Werror) fi MPC_C_CHECK_FLAG(-g) MPC_C_CHECK_FLAG(-std=c99) MPC_C_CHECK_FLAG(-Wno-long-long) MPC_C_CHECK_FLAG(-Wall) MPC_C_CHECK_FLAG(-Wextra) MPC_C_CHECK_FLAG(-Wdeclaration-after-statement) MPC_C_CHECK_FLAG(-Wshadow) MPC_C_CHECK_FLAG(-Wstrict-prototypes) MPC_C_CHECK_FLAG(-Wmissing-prototypes) MPC_C_CHECK_FLAG(-Wno-unused-value) fi fi ]) # # SYNOPSIS # # # MPC_GMP_CC_CFLAGS # # DESCRIPTION # # Checks if CC and CFLAGS can be extracted from gmp.h # essentially copied from mpfr # AC_DEFUN([MPC_GMP_CC_CFLAGS], [ AC_MSG_CHECKING(for CC and CFLAGS in gmp.h) # AC_PROG_CPP triggers the search for a C compiler; use hack instead for cpp in /lib/cpp gcc cc c99 do test $cpp = /lib/cpp || cpp="$cpp -E" echo foo > conftest.c if $cpp $CPPFLAGS conftest.c > /dev/null 2> /dev/null ; then # Get CC echo "#include \"gmp.h\"" > conftest.c echo "MPFR_OPTION __GMP_CC" >> conftest.c GMP_CC=`$cpp $CPPFLAGS conftest.c 2> /dev/null | $EGREP MPFR_OPTION | $SED -e 's/MPFR_OPTION //g;s/ *" *//g'` # Get CFLAGS echo "#include \"gmp.h\"" > conftest.c echo "MPFR_OPTION __GMP_CFLAGS" >> conftest.c GMP_CFLAGS=`$cpp $CPPFLAGS conftest.c 2> /dev/null | $EGREP MPFR_OPTION | $SED -e 's/MPFR_OPTION //g;s/ *" *//g'` break fi done if test "x$GMP_CFLAGS" = "x__GMP_CFLAGS" -o "x$GMP_CC" = "x__GMP_CC" ; then AC_MSG_RESULT(no) GMP_CC= GMP_CFLAGS= else AC_MSG_RESULT(yes [CC=$GMP_CC CFLAGS=$GMP_CFLAGS]) fi # Check for validity of CC and CFLAGS obtained from gmp.h if test -n "$GMP_CC$GMP_CFLAGS" ; then AC_MSG_CHECKING(for CC=$GMP_CC and CFLAGS=$GMP_CFLAGS) echo "int main (void) { return 0; }" > conftest.c if $GMP_CC $GMP_CFLAGS -o conftest conftest.c 2> /dev/null ; then AC_MSG_RESULT(yes) CC=$GMP_CC CFLAGS=$GMP_CFLAGS else AC_MSG_RESULT(no) fi fi rm -f conftest* ]) # # SYNOPSIS # # # MPC_WINDOWS # # DESCRIPTION # # Additional checks on windows # libtool requires "-no-undefined" for win32 dll # It also disables the tests involving the linking with LIBGMP if DLL # AC_DEFUN([MPC_WINDOWS], [ if test "$enable_shared" = yes; then MPC_LDFLAGS="$MPC_LDFLAGS -no-undefined" AC_MSG_CHECKING(for DLL/static gmp) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include "gmp.h" #if !__GMP_LIBGMP_DLL #error error #endif ]], [[]])],[AC_MSG_RESULT(DLL)],[ AC_MSG_RESULT(static) AC_MSG_ERROR([gmp is not available as a DLL: use --enable-static --disable-shared]) ]) AC_MSG_CHECKING(for DLL/static mpfr) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include "mpfr.h" #if !__GMP_LIBGMP_DLL #error error #endif ]], [[]])],[AC_MSG_RESULT(DLL)],[ AC_MSG_RESULT(static) AC_MSG_ERROR([mpfr is not available as a DLL: use --enable-static --disable-shared]) ]) else AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include "gmp.h" #if __GMP_LIBGMP_DLL #error error #endif ]], [[]])],[AC_MSG_RESULT(static)],[ AC_MSG_RESULT(DLL) AC_MSG_ERROR([gmp is only available as a DLL: use --disable-static --enable-shared]) ]) fi ;; ]) # # SYNOPSIS # # # MPC_GITVERSION # # DESCRIPTION # # If current version string contains "dev", substitutes the short git hash # into GITVERSION # AC_DEFUN([MPC_GITVERSION], [ if echo $VERSION | grep -c dev >/dev/null 2>&1 ; then AC_CHECK_PROG([HASGIT], [git], [yes], [no]) AS_IF([test "x$HASGIT" = "xyes"], [ AC_MSG_CHECKING([for current git version]) GITVERSION=esyscmd([git rev-parse --short HEAD]) AC_SUBST([GITVERSION]) AC_MSG_RESULT([$GITVERSION]) ]) fi ])