gdb/
[platform/upstream/binutils.git] / gdb / acinclude.m4
1 dnl written by Rob Savoye <rob@cygnus.com> for Cygnus Support
2 dnl major rewriting for Tcl 7.5 by Don Libes <libes@nist.gov>
3
4 dnl gdb/configure.in uses BFD_NEED_DECLARATION, so get its definition.
5 sinclude(../bfd/bfd.m4)
6
7 dnl This gets the standard macros
8 sinclude(../config/acinclude.m4)
9
10 dnl This gets autoconf bugfixes
11 sinclude(../config/override.m4)
12
13 sinclude(../config/gettext-sister.m4)
14
15 dnl For AC_LIB_HAVE_LINKFLAGS.
16 sinclude(../config/lib-ld.m4)
17 sinclude(../config/lib-prefix.m4)
18 sinclude(../config/lib-link.m4)
19
20 dnl For ACX_PKGVERSION and ACX_BUGURL.
21 sinclude(../config/acx.m4)
22
23 dnl for TCL definitions
24 sinclude(../config/tcl.m4)
25
26 dnl For dependency tracking macros.
27 sinclude([../config/depstand.m4])
28
29 dnl For AM_LC_MESSAGES
30 sinclude([../config/lcmessage.m4])
31
32 dnl For AM_LANGINFO_CODESET.
33 sinclude([../config/codeset.m4])
34
35 sinclude([../config/zlib.m4])
36
37 #
38 # Sometimes the native compiler is a bogus stub for gcc or /usr/ucb/cc. This
39 # makes configure think it's cross compiling. If --target wasn't used, then
40 # we can't configure, so something is wrong. We don't use the cache
41 # here cause if somebody fixes their compiler install, we want this to work.
42 AC_DEFUN([CY_AC_C_WORKS],
43 [# If we cannot compile and link a trivial program, we can't expect anything to work
44 AC_MSG_CHECKING(whether the compiler ($CC) actually works)
45 AC_TRY_COMPILE(, [/* don't need anything here */],
46         c_compiles=yes, c_compiles=no)
47
48 AC_TRY_LINK(, [/* don't need anything here */],
49         c_links=yes, c_links=no)
50
51 if test x"${c_compiles}" = x"no" ; then
52   AC_MSG_ERROR(the native compiler is broken and won't compile.)
53 fi
54
55 if test x"${c_links}" = x"no" ; then
56   AC_MSG_ERROR(the native compiler is broken and won't link.)
57 fi
58 AC_MSG_RESULT(yes)
59 ])
60
61 ## ----------------------------------------- ##
62 ## ANSIfy the C compiler whenever possible.  ##
63 ## From Franc,ois Pinard                     ##
64 ## ----------------------------------------- ##
65
66 # Copyright (C) 1996, 1997, 1999, 2000, 2001, 2008, 2009
67   Free Software Foundation, Inc.
68
69 # This program is free software; you can redistribute it and/or modify
70 # it under the terms of the GNU General Public License as published by
71 # the Free Software Foundation; either version 2, or (at your option)
72 # any later version.
73
74 # This program is distributed in the hope that it will be useful,
75 # but WITHOUT ANY WARRANTY; without even the implied warranty of
76 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
77 # GNU General Public License for more details.
78
79 # You should have received a copy of the GNU General Public License
80 # along with this program; if not, write to the Free Software
81 # Foundation, Inc., 51 Franklin Street, Fifth Floor,
82 # Boston, MA 02110-1301, USA.
83
84 # serial 1
85
86 # @defmac AC_PROG_CC_STDC
87 # @maindex PROG_CC_STDC
88 # @ovindex CC
89 # If the C compiler in not in ANSI C mode by default, try to add an option
90 # to output variable @code{CC} to make it so.  This macro tries various
91 # options that select ANSI C on some system or another.  It considers the
92 # compiler to be in ANSI C mode if it handles function prototypes correctly.
93 #
94 # If you use this macro, you should check after calling it whether the C
95 # compiler has been set to accept ANSI C; if not, the shell variable
96 # @code{am_cv_prog_cc_stdc} is set to @samp{no}.  If you wrote your source
97 # code in ANSI C, you can make an un-ANSIfied copy of it by using the
98 # program @code{ansi2knr}, which comes with Ghostscript.
99 # @end defmac
100
101 AC_DEFUN([AM_PROG_CC_STDC],
102 [AC_REQUIRE([AC_PROG_CC])
103 AC_BEFORE([$0], [AC_C_INLINE])
104 AC_BEFORE([$0], [AC_C_CONST])
105 dnl Force this before AC_PROG_CPP.  Some cpp's, eg on HPUX, require
106 dnl a magic option to avoid problems with ANSI preprocessor commands
107 dnl like #elif.
108 dnl FIXME: can't do this because then AC_AIX won't work due to a
109 dnl circular dependency.
110 dnl AC_BEFORE([$0], [AC_PROG_CPP])
111 AC_MSG_CHECKING([for ${CC-cc} option to accept ANSI C])
112 AC_CACHE_VAL(am_cv_prog_cc_stdc,
113 [am_cv_prog_cc_stdc=no
114 ac_save_CC="$CC"
115 # Don't try gcc -ansi; that turns off useful extensions and
116 # breaks some systems' header files.
117 # AIX                   -qlanglvl=ansi
118 # Ultrix and OSF/1      -std1
119 # HP-UX 10.20 and later -Ae
120 # HP-UX older versions  -Aa -D_HPUX_SOURCE
121 # SVR4                  -Xc -D__EXTENSIONS__
122 for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
123 do
124   CC="$ac_save_CC $ac_arg"
125   AC_TRY_COMPILE(
126 [#include <stdarg.h>
127 #include <stdio.h>
128 #include <sys/types.h>
129 #include <sys/stat.h>
130 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
131 struct buf { int x; };
132 FILE * (*rcsopen) (struct buf *, struct stat *, int);
133 static char *e (p, i)
134      char **p;
135      int i;
136 {
137   return p[i];
138 }
139 static char *f (char * (*g) (char **, int), char **p, ...)
140 {
141   char *s;
142   va_list v;
143   va_start (v,p);
144   s = g (p, va_arg (v,int));
145   va_end (v);
146   return s;
147 }
148 int test (int i, double x);
149 struct s1 {int (*f) (int a);};
150 struct s2 {int (*f) (double a);};
151 int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
152 int argc;
153 char **argv;
154 ], [
155 return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
156 ],
157 [am_cv_prog_cc_stdc="$ac_arg"; break])
158 done
159 CC="$ac_save_CC"
160 ])
161 if test -z "$am_cv_prog_cc_stdc"; then
162   AC_MSG_RESULT([none needed])
163 else
164   AC_MSG_RESULT([$am_cv_prog_cc_stdc])
165 fi
166 case "x$am_cv_prog_cc_stdc" in
167   x|xno) ;;
168   *) CC="$CC $am_cv_prog_cc_stdc" ;;
169 esac
170 ])
171
172 dnl Originally from Bruno Haible, but with some modifications
173 dnl for the GDB project.
174
175 AC_DEFUN([AM_ICONV],
176 [
177   dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
178   dnl those with the standalone portable GNU libiconv installed).
179
180   AC_ARG_WITH([libiconv-prefix],
181     AS_HELP_STRING([--with-libiconv-prefix=DIR], [search for libiconv in DIR/include and DIR/lib]), [
182     for dir in `echo "$withval" | tr : ' '`; do
183       if test -d $dir/include; then LIBICONV_INCLUDE="-I$dir/include"; fi
184       if test -d $dir/lib; then LIBICONV_LIBDIR="-L$dir/lib"; fi
185     done
186    ])
187
188   BUILD_LIBICONV_LIBDIRS="../libiconv/lib/.libs ../libiconv/lib/_libs"
189   BUILD_LIBICONV_INCLUDE="-I../libiconv/include"
190
191   AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
192     am_cv_func_iconv="no, consider installing GNU libiconv"
193     am_cv_lib_iconv=no
194     am_cv_use_build_libiconv=no
195     am_cv_build_libiconv_path=
196
197     # If libiconv is part of the build tree, then try using it over
198     # any system iconv.
199     if test -d ../libiconv; then
200       for lib_dir in $BUILD_LIBICONV_LIBDIRS; do
201         am_save_LIBS="$LIBS"
202         am_save_CPPFLAGS="$CPPFLAGS"
203         LIBS="$LIBS $lib_dir/libiconv.a"
204         CPPFLAGS="$CPPFLAGS $BUILD_LIBICONV_INCLUDE"
205         AC_TRY_LINK([#include <stdlib.h>
206 #include <iconv.h>],
207           [iconv_t cd = iconv_open("","");
208            iconv(cd,NULL,NULL,NULL,NULL);
209            iconv_close(cd);],
210           am_cv_use_build_libiconv=yes
211           am_cv_build_libiconv_path=$lib_dir/libiconv.a
212           am_cv_lib_iconv=yes
213           am_cv_func_iconv=yes)
214         LIBS="$am_save_LIBS"
215         CPPFLAGS="$am_save_CPPFLAGS"
216         if test "$am_cv_use_build_libiconv" = "yes"; then
217           break
218         fi
219       done
220     fi
221
222     # Next, try to find iconv in libc.
223     if test "$am_cv_func_iconv" != yes; then
224       AC_TRY_LINK([#include <stdlib.h>
225 #include <iconv.h>],
226         [iconv_t cd = iconv_open("","");
227          iconv(cd,NULL,NULL,NULL,NULL);
228          iconv_close(cd);],
229         am_cv_func_iconv=yes)
230     fi
231
232     # If iconv was not in libc, try -liconv.  In this case, arrange to
233     # look in the libiconv prefix, if it was specified by the user.
234     if test "$am_cv_func_iconv" != yes; then
235       am_save_CPPFLAGS="$CPPFLAGS"
236       am_save_LIBS="$LIBS"
237       if test -n "$LIBICONV_INCLUDE"; then
238         CPPFLAGS="$CPPFLAGS $LIBICONV_INCLUDE"
239         LIBS="$LIBS $LIBICONV_LIBDIR"
240       fi
241       LIBS="$LIBS -liconv"
242       AC_TRY_LINK([#include <stdlib.h>
243 #include <iconv.h>],
244         [iconv_t cd = iconv_open("","");
245          iconv(cd,NULL,NULL,NULL,NULL);
246          iconv_close(cd);],
247         am_cv_lib_iconv=yes
248         am_cv_func_iconv=yes)
249       LIBS="$am_save_LIBS"
250       CPPFLAGS="$am_save_CPPFLAGS"
251     fi
252   ])
253
254   # Set the various flags based on the cache variables.  We can't rely
255   # on the flags to remain set from the above code, due to caching.
256   LIBICONV=
257   if test "$am_cv_lib_iconv" = yes; then
258     LIBICONV="-liconv"
259   else
260     LIBICONV_LIBDIR=
261     LIBICONV_INCLUDE=
262   fi
263   if test "$am_cv_use_build_libiconv" = yes; then
264     LIBICONV="$am_cv_build_libiconv_path"
265     LIBICONV_LIBDIR=""
266     LIBICONV_INCLUDE="$BUILD_LIBICONV_INCLUDE"
267   fi
268   CPPFLAGS="$CPPFLAGS $LIBICONV_INCLUDE"
269   LIBS="$LIBS $LIBICONV_LIBDIR $LIBICONV"
270
271   if test "$am_cv_func_iconv" = yes; then
272     AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
273     AC_MSG_CHECKING([for iconv declaration])
274     AC_CACHE_VAL(am_cv_proto_iconv, [
275       AC_TRY_COMPILE([
276 #include <stdlib.h>
277 #include <iconv.h>
278 extern
279 #ifdef __cplusplus
280 "C"
281 #endif
282 #if defined(__STDC__) || defined(__cplusplus)
283 size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
284 #else
285 size_t iconv();
286 #endif
287 ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
288       am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
289     am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
290     AC_MSG_RESULT([$]{ac_t:-
291          }[$]am_cv_proto_iconv)
292     AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
293       [Define as const if the declaration of iconv() needs const.])
294   fi
295 ])
296
297 dnl written by Guido Draheim <guidod@gmx.de>, original by Alexandre Oliva 
298 dnl Version 1.3 (2001/03/02)
299 dnl source http://www.gnu.org/software/ac-archive/Miscellaneous/ac_define_dir.html
300
301 AC_DEFUN([AC_DEFINE_DIR], [
302   test "x$prefix" = xNONE && prefix="$ac_default_prefix"
303   test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
304   ac_define_dir=`eval echo [$]$2`
305   ac_define_dir=`eval echo [$]ac_define_dir`
306   ifelse($3, ,
307     AC_DEFINE_UNQUOTED($1, "$ac_define_dir"),
308     AC_DEFINE_UNQUOTED($1, "$ac_define_dir", $3))
309 ])
310
311 dnl See whether we need a declaration for a function.
312 dnl The result is highly dependent on the INCLUDES passed in, so make sure
313 dnl to use a different cache variable name in this macro if it is invoked
314 dnl in a different context somewhere else.
315 dnl gcc_AC_CHECK_DECL(SYMBOL,
316 dnl     [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, INCLUDES]]])
317 AC_DEFUN([gcc_AC_CHECK_DECL],
318 [AC_MSG_CHECKING([whether $1 is declared])
319 AC_CACHE_VAL(gcc_cv_have_decl_$1,
320 [AC_TRY_COMPILE([$4],
321 [#ifndef $1
322 char *(*pfn) = (char *(*)) $1 ;
323 #endif], eval "gcc_cv_have_decl_$1=yes", eval "gcc_cv_have_decl_$1=no")])
324 if eval "test \"`echo '$gcc_cv_have_decl_'$1`\" = yes"; then
325   AC_MSG_RESULT(yes) ; ifelse([$2], , :, [$2])
326 else
327   AC_MSG_RESULT(no) ; ifelse([$3], , :, [$3])
328 fi
329 ])dnl
330
331 dnl Check multiple functions to see whether each needs a declaration.
332 dnl Arrange to define HAVE_DECL_<FUNCTION> to 0 or 1 as appropriate.
333 dnl gcc_AC_CHECK_DECLS(SYMBOLS,
334 dnl     [ACTION-IF-NEEDED [, ACTION-IF-NOT-NEEDED [, INCLUDES]]])
335 AC_DEFUN([gcc_AC_CHECK_DECLS],
336 [for ac_func in $1
337 do
338 changequote(, )dnl
339   ac_tr_decl=HAVE_DECL_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
340 changequote([, ])dnl
341 gcc_AC_CHECK_DECL($ac_func,
342   [AC_DEFINE_UNQUOTED($ac_tr_decl, 1) $2],
343   [AC_DEFINE_UNQUOTED($ac_tr_decl, 0) $3],
344 dnl It is possible that the include files passed in here are local headers
345 dnl which supply a backup declaration for the relevant prototype based on
346 dnl the definition of (or lack of) the HAVE_DECL_ macro.  If so, this test
347 dnl will always return success.  E.g. see libiberty.h's handling of
348 dnl `basename'.  To avoid this, we define the relevant HAVE_DECL_ macro to
349 dnl 1 so that any local headers used do not provide their own prototype
350 dnl during this test.
351 #undef $ac_tr_decl
352 #define $ac_tr_decl 1
353   $4
354 )
355 done
356 dnl Automatically generate config.h entries via autoheader.
357 if test x = y ; then
358   patsubst(translit([$1], [a-z], [A-Z]), [\w+],
359     [AC_DEFINE([HAVE_DECL_\&], 1,
360       [Define to 1 if we found this declaration otherwise define to 0.])])dnl
361 fi
362 ])
363
364 dnl Find the location of the private Tcl headers
365 dnl When Tcl is installed, this is TCL_INCLUDE_SPEC/tcl-private/generic
366 dnl When Tcl is in the build tree, this is not needed.
367 dnl
368 dnl Note: you must use first use SC_LOAD_TCLCONFIG!
369 AC_DEFUN([CY_AC_TCL_PRIVATE_HEADERS], [
370   AC_MSG_CHECKING([for Tcl private headers])
371   private_dir=""
372   dir=`echo ${TCL_INCLUDE_SPEC}/tcl-private/generic | sed -e s/-I//`
373   if test -f ${dir}/tclInt.h ; then
374     private_dir=${dir}
375   fi
376
377   if test x"${private_dir}" = x; then
378     AC_ERROR(could not find private Tcl headers)
379   else
380     TCL_PRIVATE_INCLUDE="-I${private_dir}"
381     AC_MSG_RESULT(${private_dir})
382   fi
383 ])
384
385 dnl Find the location of the private Tk headers
386 dnl When Tk is installed, this is TK_INCLUDE_SPEC/tk-private/generic
387 dnl When Tk is in the build tree, this not needed.
388 dnl
389 dnl Note: you must first use SC_LOAD_TKCONFIG
390 AC_DEFUN([CY_AC_TK_PRIVATE_HEADERS], [
391   AC_MSG_CHECKING([for Tk private headers])
392   private_dir=""
393   dir=`echo ${TK_INCLUDE_SPEC}/tk-private/generic | sed -e s/-I//`
394   if test -f ${dir}/tkInt.h; then
395     private_dir=${dir}
396   fi
397
398   if test x"${private_dir}" = x; then
399     AC_ERROR(could not find Tk private headers)
400   else
401     TK_PRIVATE_INCLUDE="-I${private_dir}"
402     AC_MSG_RESULT(${private_dir})
403   fi
404 ])
405
406 dnl GDB_AC_DEFINE_RELOCATABLE([VARIABLE], [ARG-NAME], [SHELL-VARIABLE])
407 dnl For use in processing directory values for --with-foo.
408 dnl If the path in SHELL_VARIABLE is relative to the prefix, then the
409 dnl result is relocatable, then this will define the C macro
410 dnl VARIABLE_RELOCATABLE to 1; otherwise it is defined as 0.
411 AC_DEFUN([GDB_AC_DEFINE_RELOCATABLE], [
412   if test "x$exec_prefix" = xNONE || test "x$exec_prefix" = 'x${prefix}'; then
413      if test "x$prefix" = xNONE; then
414         test_prefix=/usr/local
415      else
416         test_prefix=$prefix
417      fi
418   else
419      test_prefix=$exec_prefix
420   fi
421   value=0
422   case [$3] in
423      "${test_prefix}"|"${test_prefix}/"*|\
424         '${exec_prefix}'|'${exec_prefix}/'*)
425      value=1
426      ;;
427   esac
428   AC_DEFINE_UNQUOTED([$1]_RELOCATABLE, $value, [Define if the $2 directory should be relocated when GDB is moved.])
429 ])
430
431 dnl GDB_AC_WITH_DIR([VARIABLE], [ARG-NAME], [HELP], [DEFAULT])
432 dnl Add a new --with option that defines a directory.
433 dnl The result is stored in VARIABLE.  AC_DEFINE_DIR is called
434 dnl on this variable, as is AC_SUBST.
435 dnl ARG-NAME is the base name of the argument (without "--with").
436 dnl HELP is the help text to use.
437 dnl If the user's choice is relative to the prefix, then the
438 dnl result is relocatable, then this will define the C macro
439 dnl VARIABLE_RELOCATABLE to 1; otherwise it is defined as 0.
440 dnl DEFAULT is the default value, which is used if the user
441 dnl does not specify the argument.
442 AC_DEFUN([GDB_AC_WITH_DIR], [
443   AC_ARG_WITH([$2], AS_HELP_STRING([--with-][$2][=PATH], [$3]), [
444     [$1]=$withval], [[$1]=[$4]])
445   AC_DEFINE_DIR([$1], [$1], [$3])
446   AC_SUBST([$1])
447   GDB_AC_DEFINE_RELOCATABLE([$1], [$2], ${ac_define_dir})
448   ])