Imported Upstream version 1.0
[platform/upstream/mpc.git] / m4 / mpc.m4
1 # mpc.m4
2 #
3 # Copyright (C) 2008, 2009, 2010, 2011, 2012 INRIA
4 #
5 # This file is part of GNU MPC.
6 #
7 # GNU MPC is free software; you can redistribute it and/or modify it under
8 # the terms of the GNU Lesser General Public License as published by the
9 # Free Software Foundation; either version 3 of the License, or (at your
10 # option) any later version.
11 #
12 # GNU MPC is distributed in the hope that it will be useful, but WITHOUT ANY
13 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
15 # more details.
16 #
17 # You should have received a copy of the GNU Lesser General Public License
18 # along with this program. If not, see http://www.gnu.org/licenses/ .
19
20
21 #
22 # SYNOPSIS
23 #
24 #
25 # MPC_COMPLEX_H
26 #
27 # DESCRIPTION
28 #
29 # Check whether complex.h is usable; if yes, define HAVE_COMPLEX_H.
30 #
31 AC_DEFUN([MPC_COMPLEX_H], [
32    AC_CHECK_HEADER(
33       [complex.h],
34       [
35          m4_define(
36             [MPC_CONFTEST],
37             [
38                AC_LANG_PROGRAM(
39                   [[#include <complex.h>]],
40                   [[complex double x = 1.0 + 2.0 * I; return (creal (x) + cimag (x));]]
41                )
42             ]
43          )
44
45          AC_SEARCH_LIBS([creal], [m])
46 #           needed on Solaris
47          AC_MSG_CHECKING([whether creal, cimag and I can be used])
48          AC_LINK_IFELSE(
49             [MPC_CONFTEST],
50             [
51                AC_MSG_RESULT([yes])
52                AC_DEFINE([HAVE_COMPLEX_H], [1], [complex.h present and usable])
53             ],
54             [
55                AC_MSG_RESULT([no, build without support for C complex numbers])
56             ]
57          )
58       ]
59    )
60 ])
61
62
63 #
64 # SYNOPSIS
65 #
66 #
67 # MPC_C_CHECK_FLAG([FLAG,ACCUMULATOR])
68 #
69 # DESCRIPTION
70 #
71 # Checks if the C compiler accepts the flag FLAG
72 # If yes, adds it to CFLAGS.
73
74 AC_DEFUN([MPC_C_CHECK_FLAG], [
75    AX_C_CHECK_FLAG($1,,,[CFLAGS="$CFLAGS $1"])
76 ])
77
78
79 #
80 # SYNOPSIS
81 #
82 #
83 # MPC_C_CHECK_WARNINGFLAGS
84 #
85 # DESCRIPTION
86 #
87 # For development version only: Checks if gcc accepts warning flags.
88 # Adds accepted ones to CFLAGS.
89 #
90 AC_DEFUN([MPC_C_CHECK_WARNINGCFLAGS], [
91   AC_REQUIRE([AC_PROG_GREP])
92   if echo $VERSION | grep -c dev >/dev/null 2>&1 ; then
93     if test "x$GCC" = "xyes" -a "x$compiler" != "xicc" -a "x$compiler" != "xg++"; then
94       # enable -Werror for myself (Andreas Enge)
95       if test "x$USER" = "xenge"; then
96          MPC_C_CHECK_FLAG(-Werror)
97       fi
98       MPC_C_CHECK_FLAG(-g)
99       MPC_C_CHECK_FLAG(-std=c99)
100       MPC_C_CHECK_FLAG(-pedantic)
101       MPC_C_CHECK_FLAG(-Wno-long-long)
102       MPC_C_CHECK_FLAG(-Wall)
103       MPC_C_CHECK_FLAG(-Wextra)
104       MPC_C_CHECK_FLAG(-Wdeclaration-after-statement)
105       MPC_C_CHECK_FLAG(-Wundef)
106       MPC_C_CHECK_FLAG(-Wshadow)
107       MPC_C_CHECK_FLAG(-Wstrict-prototypes)
108       MPC_C_CHECK_FLAG(-Wmissing-prototypes)
109       MPC_C_CHECK_FLAG(-Wno-unused-value)
110     fi
111   fi
112 ])
113
114
115 #
116 # SYNOPSIS
117 #
118 #
119 # MPC_GMP_CC_CFLAGS
120 #
121 # DESCRIPTION
122 #
123 # Checks if CC and CFLAGS can be extracted from gmp.h
124 # essentially copied from mpfr
125 #
126 AC_DEFUN([MPC_GMP_CC_CFLAGS], [
127    AC_MSG_CHECKING(for CC and CFLAGS in gmp.h)
128    # AC_PROG_CPP triggers the search for a C compiler; use hack instead
129    for cpp in /lib/cpp gcc cc c99
130    do
131       test $cpp = /lib/cpp || cpp="$cpp -E"
132       echo foo > conftest.c
133       if $cpp $CPPFLAGS conftest.c > /dev/null 2> /dev/null ; then
134          # Get CC
135          echo "#include \"gmp.h\"" >  conftest.c
136          echo "MPFR_OPTION __GMP_CC"           >> conftest.c
137          GMP_CC=`$cpp $CPPFLAGS conftest.c 2> /dev/null | $EGREP MPFR_OPTION | $SED -e 's/MPFR_OPTION //g;s/ *" *//g'`
138          # Get CFLAGS
139          echo "#include \"gmp.h\"" >  conftest.c
140          echo "MPFR_OPTION __GMP_CFLAGS"           >> conftest.c
141          GMP_CFLAGS=`$cpp $CPPFLAGS conftest.c 2> /dev/null | $EGREP MPFR_OPTION | $SED -e 's/MPFR_OPTION //g;s/ *" *//g'`
142          break
143       fi
144    done
145
146    if test "x$GMP_CFLAGS" = "x__GMP_CFLAGS" -o "x$GMP_CC" = "x__GMP_CC" ; then
147       AC_MSG_RESULT(no)
148       GMP_CC=
149       GMP_CFLAGS=
150    else
151       AC_MSG_RESULT(yes [CC=$GMP_CC CFLAGS=$GMP_CFLAGS])
152    fi
153
154    # Check for validity of CC and CFLAGS obtained from gmp.h
155    if test -n "$GMP_CC$GMP_CFLAGS" ; then
156       AC_MSG_CHECKING(for CC=$GMP_CC and CFLAGS=$GMP_CFLAGS)
157       echo "int main (void) { return 0; }" > conftest.c
158       if $GMP_CC $GMP_CFLAGS -o conftest conftest.c 2> /dev/null ; then
159          AC_MSG_RESULT(yes)
160          CC=$GMP_CC
161          CFLAGS=$GMP_CFLAGS
162       else
163          AC_MSG_RESULT(no)
164       fi
165    fi
166
167    rm -f conftest*
168 ])
169
170
171 #
172 # SYNOPSIS
173 #
174 #
175 # MPC_WINDOWS
176 #
177 # DESCRIPTION
178 #
179 # Additional checks on windows
180 # libtool requires "-no-undefined" for win32 dll
181 # It also disables the tests involving the linking with LIBGMP if DLL
182 #
183 AC_DEFUN([MPC_WINDOWS], [
184    if test "$enable_shared" = yes; then
185      MPC_LDFLAGS="$MPC_LDFLAGS -no-undefined"
186      AC_MSG_CHECKING(for DLL/static gmp)
187      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
188 #include "gmp.h"
189 #if !__GMP_LIBGMP_DLL
190 #error
191 error
192 #endif
193      ]], [[]])],[AC_MSG_RESULT(DLL)],[
194   AC_MSG_RESULT(static)
195   AC_MSG_ERROR([gmp is not available as a DLL: use --enable-static --disable-shared]) ])
196      AC_MSG_CHECKING(for DLL/static mpfr)
197      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
198 #include "mpfr.h"
199 #if !__GMP_LIBGMP_DLL
200 #error
201 error
202 #endif
203      ]], [[]])],[AC_MSG_RESULT(DLL)],[
204   AC_MSG_RESULT(static)
205   AC_MSG_ERROR([mpfr is not available as a DLL: use --enable-static --disable-shared]) ])
206    else
207      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
208 #include "gmp.h"
209 #if __GMP_LIBGMP_DLL
210 #error
211 error
212 #endif
213      ]], [[]])],[AC_MSG_RESULT(static)],[
214   AC_MSG_RESULT(DLL)
215   AC_MSG_ERROR([gmp is only available as a DLL: use --disable-static --enable-shared]) ])
216   fi
217   ;;
218 ])
219
220
221 #
222 # SYNOPSIS
223 #
224 #
225 # MPC_SVNVERSION
226 #
227 # DESCRIPTION
228 #
229 # If current version string contains "dev", substitutes svn version into
230 # SVNVERSION
231 #
232 AC_DEFUN([MPC_SVNVERSION], [
233    if echo $VERSION | grep -c dev >/dev/null 2>&1 ; then
234       AC_CHECK_PROG([HASSVNVERSION], [svnversion], [yes], [no])
235       AS_IF([test "x$HASSVNVERSION" = "xyes"], [
236          AC_MSG_CHECKING([for current svn version])
237          SVNVERSION=esyscmd([svnversion -n])
238          AC_SUBST([SVNVERSION])
239          AC_MSG_RESULT([$SVNVERSION])
240       ])
241    fi
242 ])