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