* configure.in: Create "Checks for programs" section, and move
[binutils-gdb.git] / gdb / configure.in
1 dnl Autoconf configure script for GDB, the GNU debugger.
2 dnl Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
3 dnl Free Software Foundation, Inc.
4 dnl
5 dnl This file is part of GDB.
6 dnl
7 dnl This program is free software; you can redistribute it and/or modify
8 dnl it under the terms of the GNU General Public License as published by
9 dnl the Free Software Foundation; either version 2 of the License, or
10 dnl (at your option) any later version.
11 dnl
12 dnl This program is distributed in the hope that it will be useful,
13 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
14 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 dnl GNU General Public License for more details.
16 dnl
17 dnl You should have received a copy of the GNU General Public License
18 dnl along with this program; if not, write to the Free Software
19 dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20
21 dnl Process this file with autoconf to produce a configure script.
22
23 AC_PREREQ(2.13)dnl
24 AC_INIT(main.c)
25 AC_CONFIG_HEADER(config.h:config.in)
26 AM_MAINTAINER_MODE
27
28 AC_PROG_CC
29 AC_AIX
30 AC_ISC_POSIX
31 AM_PROG_CC_STDC
32
33 AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..)
34 AC_CANONICAL_SYSTEM
35
36 # FIXME: kettenis/20030102: The AC_PROG_RANLIB from Autoconf 2.13
37 # doesn't support cross-compilation, but the one from Autoconf 2.5x
38 # does. Override RANLIB here (i.e. before running AC_PROG_RANLIB) to
39 # deal with the lossage. Note that CY_GNU_GETTEXT currently calls
40 # AC_PROG_RANLIB. This can be removed when we switch to # Autoconf
41 # 2.5x.
42 AC_CHECK_TOOL(RANLIB, ranlib, :)
43
44 dnl Set up for gettext. PACKAGE is used when we call bindtextdomain.
45 ALL_LINGUAS=
46 CY_GNU_GETTEXT
47 AC_DEFINE(PACKAGE, "gdb", [Name of this package. ])
48
49
50 dnl List of object files added by configure.
51
52 CONFIG_OBS=
53 CONFIG_LIB_OBS=
54 CONFIG_DEPS=
55 CONFIG_SRCS=
56 CONFIG_INITS=
57 ENABLE_CFLAGS=
58 CONFIG_ALL=
59 CONFIG_CLEAN=
60 CONFIG_INSTALL=
61 CONFIG_UNINSTALL=
62
63 SUBDIRS="doc testsuite nlm"
64 configdirs="doc testsuite"
65
66 AC_ARG_ENABLE(multi-ice,
67 [ --enable-multi-ice Build the multi-ice-gdb-server],
68 [case "${enableval}" in
69 yes ) enable_multi_ice="yes" ;;
70 no) enable_multi_ice="no" ;;
71 *) AC_MSG_ERROR(Bad value for --enable-multi-ice: ${enableval}) ;;
72 esac
73 ])
74
75 if test "${enable_multi_ice}" = "yes"; then
76 configdirs="${configdirs} multi-ice"
77 fi
78
79 dnl
80 changequote(,)dnl
81
82 . ${srcdir}/configure.host
83
84 . ${srcdir}/configure.tgt
85
86 targ=${target} ; . ${srcdir}/../bfd/config.bfd
87
88 dnl
89 changequote([,])dnl
90
91 dnl use BFD to determine the default architecture and byte order
92 dnl (bfd_vec->byteorder provides the latter).
93 targ=${target}
94 . ${srcdir}/../bfd/config.bfd
95
96 dnl We only want the first arch, if there is more than one.
97 targ_archs=`echo ${targ_archs} | sed -e 's/ .*//;'`
98
99 if test x"${targ_archs}" != x ; then
100 AC_DEFINE_UNQUOTED(DEFAULT_BFD_ARCH, ${targ_archs})
101 fi
102 if test x"${targ_defvec}" != x ; then
103 AC_DEFINE_UNQUOTED(DEFAULT_BFD_VEC, ${targ_defvec})
104 fi
105
106 AC_ARG_PROGRAM
107
108 # --------------------- #
109 # Checks for programs. #
110 # --------------------- #
111
112 AC_PROG_AWK
113 AC_PROG_INSTALL
114 AC_PROG_LN_S
115 AC_PROG_RANLIB
116 AC_PROG_YACC
117
118 AC_CHECK_TOOL(AR, ar)
119 AC_CHECK_TOOL(DLLTOOL, dlltool)
120 AC_CHECK_TOOL(WINDRES, windres)
121
122 # Needed for GNU/Hurd.
123 AC_CHECK_TOOL(MIG, mig)
124
125 # ---------------------- #
126 # Checks for libraries. #
127 # ---------------------- #
128
129 # We might need to link with -lm; most simulators need it.
130 AC_CHECK_LIB(m, main)
131
132 # We need to link with -lw to get `wctype' on Solaris before Solaris
133 # 2.6. Solaris 2.6 and beyond have this function in libc, and have a
134 # libw that some versions of the GNU linker cannot hanle (GNU ld 2.9.1
135 # is known to have this problem). Therefore we avoid libw if we can.
136 AC_CHECK_FUNC(wctype, [],
137 [AC_CHECK_LIB(w, wctype)])
138
139 # Some systems (e.g. Solaris) have `socketpair' in libsocket.
140 AC_SEARCH_LIBS(socketpair, socket)
141
142 AC_TYPE_SIGNAL
143
144 AC_HEADER_DIRENT
145 AC_HEADER_STDC
146
147 dnl Solaris 7 needs _MSE_INT_H defined to avoid a clash between <widec.h>
148 dnl and <wchar.h> that causes AC_CHECK_HEADERS to think <curses.h> doesn't
149 dnl exist.
150
151 case $host_os in solaris2.7 | solaris2.8) case "$GCC" in yes)
152 AC_DEFINE(_MSE_INT_H)
153 esac; esac
154
155 AC_CHECK_HEADERS(ctype.h nlist.h link.h thread_db.h proc_service.h \
156 memory.h objlist.h ptrace.h sgtty.h stddef.h stdlib.h \
157 string.h sys/procfs.h sys/proc.h sys/ptrace.h sys/reg.h stdint.h \
158 term.h termio.h termios.h unistd.h wait.h sys/wait.h \
159 wchar.h wctype.h asm/debugreg.h sys/debugreg.h sys/select.h \
160 time.h sys/file.h sys/ioctl.h sys/user.h sys/fault.h sys/syscall.h \
161 sys/filio.h \
162 curses.h ncurses.h \
163 poll.h sys/poll.h)
164 AC_HEADER_STAT
165
166 AC_C_CONST
167 AC_C_INLINE
168
169 AC_CHECK_FUNCS(btowc canonicalize_file_name isascii poll \
170 realpath sbrk setpgid setpgrp sigaction sigprocmask sigsetmask )
171 AC_FUNC_ALLOCA
172 AC_FUNC_VFORK
173 dnl AC_FUNC_SETPGRP does not work when cross compiling
174 dnl Instead, assume we will have a prototype for setpgrp if cross compiling.
175 if test "$cross_compiling" = no; then
176 AC_FUNC_SETPGRP
177 else
178 AC_CACHE_CHECK([whether setpgrp takes no argument], ac_cv_func_setpgrp_void,
179 [AC_TRY_COMPILE([
180 #include <unistd.h>
181 ], [
182 if (setpgrp(1,1) == -1)
183 exit (0);
184 else
185 exit (1);
186 ], ac_cv_func_setpgrp_void=no, ac_cv_func_setpgrp_void=yes)])
187 if test $ac_cv_func_setpgrp_void = yes; then
188 AC_DEFINE(SETPGRP_VOID, 1)
189 fi
190 fi
191
192 # Check if sigsetjmp is available. Using AC_CHECK_FUNCS won't do
193 # since sigsetjmp might only be defined as a macro.
194 AC_CACHE_CHECK([for sigsetjmp], gdb_cv_func_sigsetjmp,
195 [AC_TRY_COMPILE([
196 #include <setjmp.h>
197 ], [sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);],
198 gdb_cv_func_sigsetjmp=yes, gdb_cv_func_sigsetjmp=no)])
199 if test $gdb_cv_func_sigsetjmp = yes; then
200 AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available. ])
201 fi
202
203 # See if <machine/reg.h> supports the %fs and %gs i386 segment registers.
204 # Older i386 BSD's don't have the r_fs and r_gs members of `struct reg'.
205 AC_CACHE_CHECK([for r_fs in struct reg], gdb_cv_struct_reg_r_fs,
206 [AC_TRY_COMPILE([#include <machine/reg.h>], [struct reg r; r.r_fs;],
207 gdb_cv_struct_reg_r_fs=yes, gdb_cv_struct_reg_r_fs=no)])
208 if test $gdb_cv_struct_reg_r_fs = yes; then
209 AC_DEFINE(HAVE_STRUCT_REG_R_FS)
210 fi
211 AC_CACHE_CHECK([for r_gs in struct reg], gdb_cv_struct_reg_r_gs,
212 [AC_TRY_COMPILE([#include <machine/reg.h>], [struct reg r; r.r_gs;],
213 gdb_cv_struct_reg_r_gs=yes, gdb_cv_struct_reg_r_gs=no)])
214 if test $gdb_cv_struct_reg_r_gs = yes; then
215 AC_DEFINE(HAVE_STRUCT_REG_R_GS)
216 fi
217
218 # See if <sys/ptrace.h> provides the PTRACE_GETREGS request.
219 AC_MSG_CHECKING(for PTRACE_GETREGS)
220 AC_CACHE_VAL(gdb_cv_have_ptrace_getregs,
221 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
222 [PTRACE_GETREGS;],
223 [gdb_cv_have_ptrace_getregs=yes],
224 [gdb_cv_have_ptrace_getregs=no])])
225 AC_MSG_RESULT($gdb_cv_have_ptrace_getregs)
226 if test $gdb_cv_have_ptrace_getregs = yes; then
227 AC_DEFINE(HAVE_PTRACE_GETREGS)
228 fi
229
230 # See if <sys/ptrace.h> provides the PTRACE_GETFPXREGS request.
231 AC_MSG_CHECKING(for PTRACE_GETFPXREGS)
232 AC_CACHE_VAL(gdb_cv_have_ptrace_getfpxregs,
233 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
234 [PTRACE_GETFPXREGS;],
235 [gdb_cv_have_ptrace_getfpxregs=yes],
236 [gdb_cv_have_ptrace_getfpxregs=no])])
237 AC_MSG_RESULT($gdb_cv_have_ptrace_getfpxregs)
238 if test $gdb_cv_have_ptrace_getfpxregs = yes; then
239 AC_DEFINE(HAVE_PTRACE_GETFPXREGS)
240 fi
241
242 # See if <sys/ptrace.h> provides the PT_GETDBREGS request.
243 AC_MSG_CHECKING(for PT_GETDBREGS)
244 AC_CACHE_VAL(gdb_cv_have_pt_getdbregs,
245 [AC_TRY_COMPILE([#include <sys/types.h>
246 #include <sys/ptrace.h>],
247 [PT_GETDBREGS;],
248 [gdb_cv_have_pt_getdbregs=yes],
249 [gdb_cv_have_pt_getdbregs=no])])
250 AC_MSG_RESULT($gdb_cv_have_pt_getdbregs)
251 if test $gdb_cv_have_pt_getdbregs = yes; then
252 AC_DEFINE(HAVE_PT_GETDBREGS)
253 fi
254
255 # See if <sys/ptrace.h> provides the PT_GETXMMREGS request.
256 AC_MSG_CHECKING(for PT_GETXMMREGS)
257 AC_CACHE_VAL(gdb_cv_have_pt_getxmmregs,
258 [AC_TRY_COMPILE([#include <sys/types.h>
259 #include <sys/ptrace.h>],
260 [PT_GETXMMREGS;],
261 [gdb_cv_have_pt_getxmmregs=yes],
262 [gdb_cv_have_pt_getxmmregs=no])])
263 AC_MSG_RESULT($gdb_cv_have_pt_getxmmregs)
264 if test $gdb_cv_have_pt_getxmmregs = yes; then
265 AC_DEFINE(HAVE_PT_GETXMMREGS)
266 fi
267
268
269 AC_CHECK_FUNCS(socketpair)
270
271
272 BFD_NEED_DECLARATION(malloc)
273 BFD_NEED_DECLARATION(realloc)
274 BFD_NEED_DECLARATION(free)
275 BFD_NEED_DECLARATION(strerror)
276 BFD_NEED_DECLARATION(strdup)
277 BFD_NEED_DECLARATION(strstr)
278 BFD_NEED_DECLARATION(canonicalize_file_name)
279
280 # The following save_state_t checkery is only necessary for HPUX
281 # versions earlier than 10.20. When those fade from memory, this
282 # could be expunged. --jsm 1999-03-22
283
284 AC_MSG_CHECKING(for HPUX save_state structure)
285 AC_EGREP_HEADER(save_state_t, machine/save_state.h,
286 gdb_cv_hpux_savestate=yes, gdb_cv_hpux_savestate=no)
287 AC_EGREP_HEADER(ss_wide, machine/save_state.h, gdb_cv_hpux_sswide=yes,
288 gdb_cv_hpux_sswide=no)
289 if test $gdb_cv_hpux_savestate = yes
290 then
291 AC_DEFINE(HAVE_STRUCT_SAVE_STATE_T, 1)
292 fi
293 if test $gdb_cv_hpux_sswide = yes
294 then
295 AC_DEFINE(HAVE_STRUCT_MEMBER_SS_WIDE, 1)
296 fi
297 AC_MSG_RESULT($gdb_cv_hpux_sswide)
298
299
300 # If we are configured native on GNU/Linux, work around problems with
301 # sys/procfs.h
302 # Also detect which type of /proc is in use, such as for Unixware or Solaris.
303
304 if test "${target}" = "${host}"; then
305 case "${host}" in
306 i[[3456]]86-*-linux*)
307 AC_DEFINE(START_INFERIOR_TRAPS_EXPECTED,2)
308 AC_DEFINE(sys_quotactl)
309 ;;
310 ia64-*-aix*)
311 AC_DEFINE(NEW_PROC_API)
312 ;;
313 *-*-unixware* | *-*-sysv4.2* | *-*-sysv5* | *-*-interix* )
314 AC_DEFINE(NEW_PROC_API)
315 ;;
316 *-*-solaris2.[[678]])
317 AC_DEFINE(NEW_PROC_API)
318 ;;
319 esac
320 fi
321
322 if test "$ac_cv_header_sys_procfs_h" = yes; then
323 BFD_HAVE_SYS_PROCFS_TYPE(pstatus_t)
324 BFD_HAVE_SYS_PROCFS_TYPE(prrun_t)
325 BFD_HAVE_SYS_PROCFS_TYPE(gregset_t)
326 BFD_HAVE_SYS_PROCFS_TYPE(fpregset_t)
327 BFD_HAVE_SYS_PROCFS_TYPE(prgregset_t)
328 BFD_HAVE_SYS_PROCFS_TYPE(prfpregset_t)
329 BFD_HAVE_SYS_PROCFS_TYPE(prgregset32_t)
330 BFD_HAVE_SYS_PROCFS_TYPE(prfpregset32_t)
331 BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t)
332 BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t)
333 BFD_HAVE_SYS_PROCFS_TYPE(prsysent_t)
334 BFD_HAVE_SYS_PROCFS_TYPE(pr_sigset_t)
335 BFD_HAVE_SYS_PROCFS_TYPE(pr_sigaction64_t)
336 BFD_HAVE_SYS_PROCFS_TYPE(pr_siginfo64_t)
337
338
339 dnl Check for broken prfpregset_t type
340
341 dnl For Linux/i386, glibc 2.1.3 was released with a bogus
342 dnl prfpregset_t type (it's a typedef for the pointer to a struct
343 dnl instead of the struct itself). We detect this here, and work
344 dnl around it in gdb_proc_service.h.
345
346 if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then
347 AC_MSG_CHECKING(whether prfpregset_t type is broken)
348 AC_CACHE_VAL(gdb_cv_prfpregset_t_broken,
349 [AC_TRY_RUN([#include <sys/procfs.h>
350 int main ()
351 {
352 if (sizeof (prfpregset_t) == sizeof (void *))
353 return 1;
354 return 0;
355 }],
356 gdb_cv_prfpregset_t_broken=no,
357 gdb_cv_prfpregset_t_broken=yes,
358 gdb_cv_prfpregset_t_broken=yes)])
359 AC_MSG_RESULT($gdb_cv_prfpregset_t_broken)
360 if test $gdb_cv_prfpregset_t_broken = yes; then
361 AC_DEFINE(PRFPREGSET_T_BROKEN)
362 fi
363 fi
364
365 dnl Check for PIOCSET ioctl entry
366
367 AC_MSG_CHECKING(for PIOCSET ioctl entry in sys/procfs.h)
368 AC_CACHE_VAL(gdb_cv_have_procfs_piocset,
369 [AC_TRY_COMPILE([#include <unistd.h>
370 #include <sys/types.h>
371 #include <sys/procfs.h>
372 ], [
373 int dummy;;
374 dummy = ioctl(0, PIOCSET, &dummy);
375 ],
376 gdb_cv_have_procfs_piocset=yes, gdb_cv_have_procfs_piocset=no)])
377 AC_MSG_RESULT($gdb_cv_have_procfs_piocset)
378 if test $gdb_cv_have_procfs_piocset = yes; then
379 AC_DEFINE(HAVE_PROCFS_PIOCSET)
380 fi
381 fi
382
383 dnl For native ports (host == target), check to see what kind of
384 dnl legacy link.h support is needed. (See solib-legacy.c.)
385 if test ${host} = ${target} ; then
386 dnl Check for struct link_map with l_ members which are indicative
387 dnl of SVR4-like shared libraries
388
389 AC_MSG_CHECKING(for member l_addr in struct link_map)
390 AC_CACHE_VAL(gdb_cv_have_struct_link_map_with_l_members,
391 [AC_TRY_COMPILE([#include <link.h>],
392 [struct link_map lm; (void) lm.l_addr;],
393 gdb_cv_have_struct_link_map_with_l_members=yes,
394 gdb_cv_have_struct_link_map_with_l_members=no)])
395 AC_MSG_RESULT($gdb_cv_have_struct_link_map_with_l_members)
396 if test $gdb_cv_have_struct_link_map_with_l_members = yes; then
397 AC_DEFINE(HAVE_STRUCT_LINK_MAP_WITH_L_MEMBERS)
398 fi
399
400 dnl Check for struct link_map with lm_ members which are indicative
401 dnl of SunOS-like shared libraries
402
403 AC_MSG_CHECKING(for member lm_addr in struct link_map)
404 AC_CACHE_VAL(gdb_cv_have_struct_link_map_with_lm_members,
405 [AC_TRY_COMPILE([#include <sys/types.h>
406 #include <link.h>],
407 [struct link_map lm; (void) lm.lm_addr;],
408 gdb_cv_have_struct_link_map_with_lm_members=yes,
409 gdb_cv_have_struct_link_map_with_lm_members=no)])
410 AC_MSG_RESULT($gdb_cv_have_struct_link_map_with_lm_members)
411 if test $gdb_cv_have_struct_link_map_with_lm_members = yes; then
412 AC_DEFINE(HAVE_STRUCT_LINK_MAP_WITH_LM_MEMBERS)
413 fi
414
415 dnl Check for struct so_map with som_ members which are found on
416 dnl some *BSD systems.
417
418 AC_MSG_CHECKING(for member som_addr in struct so_map)
419 AC_CACHE_VAL(gdb_cv_have_struct_so_map_with_som_members,
420 [AC_TRY_COMPILE([#include <sys/types.h>
421 #ifdef HAVE_NLIST_H
422 #include <nlist.h>
423 #endif
424 #include <link.h>],
425 [struct so_map lm; (void) lm.som_addr;],
426 gdb_cv_have_struct_so_map_with_som_members=yes,
427 gdb_cv_have_struct_so_map_with_som_members=no)])
428 AC_MSG_RESULT($gdb_cv_have_struct_so_map_with_som_members)
429 if test $gdb_cv_have_struct_so_map_with_som_members = yes; then
430 AC_DEFINE(HAVE_STRUCT_SO_MAP_WITH_SOM_MEMBERS)
431 fi
432
433 dnl Check for struct link_map32 type, which allows a 64-bit Solaris
434 dnl debugger to debug a 32-bit Solaris app with 32-bit shared libraries.
435
436 AC_MSG_CHECKING(for struct link_map32 in sys/link.h)
437 AC_CACHE_VAL(gdb_cv_have_struct_link_map32,
438 [AC_TRY_COMPILE([#define _SYSCALL32
439 #include <sys/link.h>], [struct link_map32 l;],
440 gdb_cv_have_struct_link_map32=yes,
441 gdb_cv_have_struct_link_map32=no)])
442 AC_MSG_RESULT($gdb_cv_have_struct_link_map32)
443 if test $gdb_cv_have_struct_link_map32 = yes; then
444 AC_DEFINE(HAVE_STRUCT_LINK_MAP32)
445 AC_DEFINE(_SYSCALL32)
446 fi
447 fi
448
449 dnl See if compiler supports "long long" type.
450
451 AC_MSG_CHECKING(for long long support in compiler)
452 AC_CACHE_VAL(gdb_cv_c_long_long,
453 [AC_TRY_COMPILE(, [
454 extern long long foo;
455 switch (foo & 2) { case 0: return 1; }
456 ],
457 gdb_cv_c_long_long=yes, gdb_cv_c_long_long=no)])
458 AC_MSG_RESULT($gdb_cv_c_long_long)
459 if test $gdb_cv_c_long_long = yes; then
460 AC_DEFINE(CC_HAS_LONG_LONG)
461 fi
462
463 dnl See if the compiler and runtime support printing long long
464
465 AC_MSG_CHECKING(for long long support in printf)
466 AC_CACHE_VAL(gdb_cv_printf_has_long_long,
467 [AC_TRY_RUN([
468 int main () {
469 char buf[32];
470 long long l = 0;
471 l = (l << 16) + 0x0123;
472 l = (l << 16) + 0x4567;
473 l = (l << 16) + 0x89ab;
474 l = (l << 16) + 0xcdef;
475 sprintf (buf, "0x%016llx", l);
476 return (strcmp ("0x0123456789abcdef", buf));
477 }],
478 gdb_cv_printf_has_long_long=yes,
479 gdb_cv_printf_has_long_long=no,
480 gdb_cv_printf_has_long_long=no)])
481 if test $gdb_cv_printf_has_long_long = yes; then
482 AC_DEFINE(PRINTF_HAS_LONG_LONG)
483 fi
484 AC_MSG_RESULT($gdb_cv_printf_has_long_long)
485
486 dnl See if compiler supports "long double" type. Can't use AC_C_LONG_DOUBLE
487 dnl because autoconf complains about cross-compilation issues. However, this
488 dnl code uses the same variables as the macro for compatibility.
489
490 AC_MSG_CHECKING(for long double support in compiler)
491 AC_CACHE_VAL(ac_cv_c_long_double,
492 [AC_TRY_COMPILE(, [long double foo;],
493 ac_cv_c_long_double=yes, ac_cv_c_long_double=no)])
494 AC_MSG_RESULT($ac_cv_c_long_double)
495 if test $ac_cv_c_long_double = yes; then
496 AC_DEFINE(HAVE_LONG_DOUBLE)
497 fi
498
499 dnl See if the compiler and runtime support printing long doubles
500
501 AC_MSG_CHECKING(for long double support in printf)
502 AC_CACHE_VAL(gdb_cv_printf_has_long_double,
503 [AC_TRY_RUN([
504 int main () {
505 char buf[16];
506 long double f = 3.141592653;
507 sprintf (buf, "%Lg", f);
508 return (strncmp ("3.14159", buf, 7));
509 }],
510 gdb_cv_printf_has_long_double=yes,
511 gdb_cv_printf_has_long_double=no,
512 gdb_cv_printf_has_long_double=no)])
513 if test $gdb_cv_printf_has_long_double = yes; then
514 AC_DEFINE(PRINTF_HAS_LONG_DOUBLE)
515 fi
516 AC_MSG_RESULT($gdb_cv_printf_has_long_double)
517
518 dnl See if the compiler and runtime support scanning long doubles
519
520 AC_MSG_CHECKING(for long double support in scanf)
521 AC_CACHE_VAL(gdb_cv_scanf_has_long_double,
522 [AC_TRY_RUN([
523 int main () {
524 char *buf = "3.141592653";
525 long double f = 0;
526 sscanf (buf, "%Lg", &f);
527 return !(f > 3.14159 && f < 3.14160);
528 }],
529 gdb_cv_scanf_has_long_double=yes,
530 gdb_cv_scanf_has_long_double=no,
531 gdb_cv_scanf_has_long_double=no)])
532 if test $gdb_cv_scanf_has_long_double = yes; then
533 AC_DEFINE(SCANF_HAS_LONG_DOUBLE)
534 fi
535 AC_MSG_RESULT($gdb_cv_scanf_has_long_double)
536
537 AC_FUNC_MMAP
538
539 case ${host_os} in
540 aix*)
541 AC_CACHE_CHECK([for -bbigtoc option], [gdb_cv_bigtoc], [
542 SAVE_LDFLAGS=$LDFLAGS
543
544 case $GCC in
545 yes) gdb_cv_bigtoc=-Wl,-bbigtoc ;;
546 *) gdb_cv_bigtoc=-bbigtoc ;;
547 esac
548
549 LDFLAGS=$LDFLAGS\ $gdb_cv_bigtoc
550 AC_TRY_LINK([], [int i;], [], [gdb_cv_bigtoc=])
551 ])
552 CONFIG_LDFLAGS="${CONFIG_LDFLAGS} ${gdb_cv_bigtoc}"
553 ;;
554 esac
555
556
557 dnl For certain native configurations, we need to check whether thread
558 dnl support can be built in or not.
559 dnl
560 dnl Note that we only want this if we are both native (host == target),
561 dnl and not doing a canadian cross build (build == host).
562
563 if test ${build} = ${host} -a ${host} = ${target} ; then
564 case ${host_os} in
565 hpux*)
566 AC_MSG_CHECKING(for HPUX/OSF thread support)
567 if test -f /usr/include/dce/cma_config.h ; then
568 if test "$GCC" = "yes" ; then
569 AC_MSG_RESULT(yes)
570 AC_DEFINE(HAVE_HPUX_THREAD_SUPPORT)
571 CONFIG_LIB_OBS="${CONFIG_LIB_OBS} hpux-thread.o"
572 CONFIG_SRCS="${CONFIG_SRCS} hpux-thread.c"
573 else
574 AC_MSG_RESULT(no (suppressed because you are not using GCC))
575 fi
576 else
577 AC_MSG_RESULT(no)
578 fi
579 ;;
580 solaris*)
581 # See if thread_db library is around for Solaris thread debugging.
582 # Note that we must explicitly test for version 1 of the library
583 # because version 0 (present on Solaris 2.4 or earlier) doesn't have
584 # the same API.
585 AC_MSG_CHECKING(for Solaris thread debugging library)
586 if test -f /usr/lib/libthread_db.so.1 ; then
587 AC_MSG_RESULT(yes)
588 AC_DEFINE(HAVE_THREAD_DB_LIB)
589 CONFIG_LIB_OBS="${CONFIG_LIB_OBS} sol-thread.o"
590 CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c"
591 AC_CHECK_LIB(dl, dlopen)
592 if test "$GCC" = "yes" ; then
593 # The GNU linker requires the -export-dynamic option to make
594 # all symbols visible in the dynamic symbol table.
595 hold_ldflags=$LDFLAGS
596 AC_MSG_CHECKING(for the ld -export-dynamic flag)
597 LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
598 AC_TRY_LINK(, [int i;], found=yes, found=no)
599 LDFLAGS=$hold_ldflags
600 AC_MSG_RESULT($found)
601 if test $found = yes; then
602 CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -Wl,-export-dynamic"
603 fi
604 fi
605 # Sun randomly tweaked the prototypes in <proc_service.h>
606 # at one point.
607 AC_MSG_CHECKING(if <proc_service.h> is old)
608 AC_CACHE_VAL(gdb_cv_proc_service_is_old,[
609 AC_TRY_COMPILE([
610 #include <proc_service.h>
611 ps_err_e ps_pdwrite
612 (struct ps_prochandle*, psaddr_t, const void*, size_t);
613 ],, gdb_cv_proc_service_is_old=no,
614 gdb_cv_proc_service_is_old=yes)
615 ])
616 AC_MSG_RESULT($gdb_cv_proc_service_is_old)
617 if test $gdb_cv_proc_service_is_old = yes; then
618 AC_DEFINE(PROC_SERVICE_IS_OLD)
619 fi
620 else
621 AC_MSG_RESULT(no)
622 fi
623 ;;
624 aix*)
625 AC_MSG_CHECKING(for AiX thread debugging library)
626 AC_CACHE_VAL(gdb_cv_have_aix_thread_debug,
627 [AC_TRY_COMPILE([#include <sys/pthdebug.h>],
628 [#ifndef PTHDB_VERSION_3
629 #error
630 #endif],
631 gdb_cv_have_aix_thread_debug=yes,
632 gdb_cv_have_aix_thread_debug=no)])
633 AC_MSG_RESULT($gdb_cv_have_aix_thread_debug)
634 if test $gdb_cv_have_aix_thread_debug = yes; then
635 CONFIG_SRCS="${CONFIG_SRCS} aix-thread.c"
636 CONFIG_LIB_OBS="${CONFIG_LIB_OBS} aix-thread.o"
637 CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -lpthdebug"
638 fi
639 ;;
640 esac
641 AC_SUBST(CONFIG_LDFLAGS)
642 fi
643
644 dnl See if we have a thread_db header file that has TD_NOTALLOC.
645 if test "x$ac_cv_header_thread_db_h" = "xyes"; then
646 AC_CACHE_CHECK([whether <thread_db.h> has TD_NOTALLOC],
647 gdb_cv_thread_db_h_has_td_notalloc,
648 AC_TRY_COMPILE(
649 [#include <thread_db.h>],
650 [int i = TD_NOTALLOC;],
651 gdb_cv_thread_db_h_has_td_notalloc=yes,
652 gdb_cv_thread_db_h_has_td_notalloc=no
653 )
654 )
655 fi
656 if test "x$gdb_cv_thread_db_h_has_td_notalloc" = "xyes"; then
657 AC_DEFINE(THREAD_DB_HAS_TD_NOTALLOC, 1,
658 [Define if <thread_db.h> has the TD_NOTALLOC error code.])
659 fi
660
661 dnl linux-proc.c wants to use pread64, which may require special CFLAGS
662 dnl -D_BSD_SOURCE is normally assumed but we have to specify it because of
663 dnl -D_XOPEN_SOURCE=500.
664 if test $host = $target; then
665 case $target in
666 *-linux*)
667 save_CFLAGS=$CFLAGS
668 CFLAGS="$CFLAGS -D_BSD_SOURCE -D_XOPEN_SOURCE=500 -D_LARGEFILE64_SOURCE"
669 AC_TRY_LINK([#include <unistd.h>],
670 [pread64 (0, NULL, 0, 0);],
671 [ENABLE_CFLAGS="$ENABLE_CFLAGS -D_BSD_SOURCE -D_XOPEN_SOURCE=500 -D_LARGEFILE64_SOURCE"
672 AC_DEFINE(HAVE_PREAD64)], [])
673 CFLAGS=$save_CFLAGS
674 ;;
675 esac
676 fi
677
678 dnl The CLI cannot be disabled yet, but may be in the future
679
680 dnl Handle CLI sub-directory configury.
681 AC_ARG_ENABLE(gdbcli,
682 [ --enable-gdbcli Enable GDB-CLI interface],
683 [
684 case "${enableval}" in
685 yes) enable_gdbcli=yes ;;
686 "") enable_gdbcli=yes ;;
687 no)
688 AC_MSG_ERROR(The CLI cannot be disabled yet)
689 ;;
690 *)
691 AC_MSG_ERROR(Bad value for --enable-gdbcli: ${enableval})
692 ;;
693 esac
694 ],
695 [enable_gdbcli=yes])
696 case ${enable_gdbcli} in
697 "yes" )
698 if test -d "${srcdir}/cli" ; then
699 CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_CLI_OBS)"
700 CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_CLI_DEPS)"
701 CONFIG_SRCS="${CONFIG_SRCS} \$(SUBDIR_CLI_SRCS)"
702 CONFIG_INITS="${CONFIG_INITS} \$(SUBDIR_CLI_INITS)"
703 ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_CLI_CFLAGS)"
704 CONFIG_ALL="${CONFIG_ALL} \$(SUBDIR_CLI_ALL)"
705 CONFIG_CLEAN="${CONFIG_CLEAN} \$(SUBDIR_CLI_CLEAN)"
706 CONFIG_INSTALL="${CONFIG_INSTALL} \$(SUBDIR_CLI_INSTALL)"
707 CONFIG_UNINSTALL="${CONFIG_UNINSTALL} \$(SUBDIR_CLI_UNINSTALL)"
708 fi
709 ;;
710 esac
711
712 dnl Handle optional features that can be enabled.
713
714 dnl Handle MI sub-directory configury.
715 AC_ARG_ENABLE(gdbmi,
716 [ --enable-gdbmi Enable GDB-MI interface],
717 [
718 case "${enable_gdbmi}" in
719 yes | no) ;;
720 "") enable_gdbmi=yes ;;
721 *)
722 AC_MSG_ERROR(Bad value for --enable-gdbmi: ${enableval})
723 ;;
724 esac
725 ],
726 [enable_gdbmi=yes])
727 case ${enable_gdbmi} in
728 "yes" )
729 if test -d "${srcdir}/mi" ; then
730 CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_MI_OBS)"
731 CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_MI_DEPS)"
732 CONFIG_SRCS="${CONFIG_SRCS} \$(SUBDIR_MI_SRCS)"
733 CONFIG_INITS="${CONFIG_INITS} \$(SUBDIR_MI_INITS)"
734 ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_MI_CFLAGS)"
735 CONFIG_ALL="${CONFIG_ALL} \$(SUBDIR_MI_ALL)"
736 CONFIG_CLEAN="${CONFIG_CLEAN} \$(SUBDIR_MI_CLEAN)"
737 CONFIG_INSTALL="${CONFIG_INSTALL} \$(SUBDIR_MI_INSTALL)"
738 CONFIG_UNINSTALL="${CONFIG_UNINSTALL} \$(SUBDIR_MI_UNINSTALL)"
739 fi
740 ;;
741 esac
742
743 # Configure UI_OUT by default (before 5.2 it can be disabled)
744 # It must be configured if gdbmi is configured
745
746 UIOUT_CFLAGS=
747 AC_SUBST(UIOUT_CFLAGS)
748
749 AC_ARG_WITH(uiout,
750 [ --with-uiout Use new uiout functions instead of *printf's],
751 [case "${withval}" in
752 yes) want_uiout=true ;;
753 no) if test $enable_gdbmi = yes; then
754 AC_MSG_ERROR(uiout is needed for MI and cannot be disabled)
755 else
756 want_uiout=false
757 fi ;;
758 *) AC_MSG_ERROR(bad value ${withval} for GDB with-uiout option) ;;
759 esac],
760 [want_uiout=true])dnl
761
762 if test $want_uiout = true; then
763 UIOUT_CFLAGS="-DUI_OUT=1"
764 fi
765
766 AC_ARG_ENABLE(tui,
767 [ --enable-tui Enable full-screen terminal user interface],
768 [
769 case "${enable_tui}" in
770 yes | no) ;;
771 "") enable_tui=yes ;;
772 *)
773 AC_MSG_ERROR(Bad value for --enable-tui: ${enableval})
774 ;;
775 esac
776 ])
777 case ${enable_tui} in
778 "yes" )
779 if test -d "${srcdir}/tui" ; then
780 CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_TUI_OBS)"
781 CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_TUI_DEPS)"
782 CONFIG_SRCS="${CONFIG_SRCS} \$(SUBDIR_TUI_SRCS)"
783 CONFIG_INITS="${CONFIG_INITS} \$(SUBDIR_TUI_INITS)"
784 ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_TUI_CFLAGS)"
785 CONFIG_ALL="${CONFIG_ALL} \$(SUBDIR_TUI_ALL)"
786 CONFIG_CLEAN="${CONFIG_CLEAN} \$(SUBDIR_TUI_CLEAN)"
787 CONFIG_INSTALL="${CONFIG_INSTALL} \$(SUBDIR_TUI_INSTALL)"
788 CONFIG_UNINSTALL="${CONFIG_UNINSTALL} \$(SUBDIR_TUI_UNINSTALL)"
789 fi
790 ;;
791 esac
792
793 AC_ARG_ENABLE(netrom,
794 [ --enable-netrom Enable NetROM support],
795 [case "${enableval}" in
796 yes) enable_netrom=yes ;;
797 no) enable_netrom=no ;;
798 *) AC_MSG_ERROR(bad value ${enableval} given for netrom option) ;;
799 esac])
800
801 if test "${enable_netrom}" = "yes"; then
802 CONFIG_LIB_OBS="${CONFIG_LIB_OBS} remote-nrom.o"
803 CONFIG_SRCS="${CONFIG_SRCS} remote-nrom.c"
804 fi
805
806
807 # NOTE: Don't add -Wall or -Wunused, they both include
808 # -Wunused-parameter which reports bogus warnings.
809 # NOTE: If you add to this list, remember to update
810 # gdb/doc/gdbint.texinfo.
811 build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \
812 -Wformat -Wparentheses -Wpointer-arith -Wuninitialized"
813 # Up for debate: -Wswitch -Wcomment -trigraphs -Wtrigraphs
814 # -Wunused-function -Wunused-label -Wunused-variable -Wunused-value
815 # -Wchar-subscripts -Wtraditional -Wshadow -Wcast-qual
816 # -Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes
817 # -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls
818 # -Woverloaded-virtual -Winline -Werror"
819 AC_ARG_ENABLE(build-warnings,
820 [ --enable-build-warnings Enable build-time compiler warnings if gcc is used],
821 [case "${enableval}" in
822 yes) ;;
823 no) build_warnings="-w";;
824 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
825 build_warnings="${build_warnings} ${t}";;
826 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
827 build_warnings="${t} ${build_warnings}";;
828 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
829 esac
830 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
831 echo "Setting compiler warning flags = $build_warnings" 6>&1
832 fi])dnl
833 AC_ARG_ENABLE(gdb-build-warnings,
834 [ --enable-gdb-build-warnings Enable GDB specific build-time compiler warnings if gcc is used],
835 [case "${enableval}" in
836 yes) ;;
837 no) build_warnings="-w";;
838 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
839 build_warnings="${build_warnings} ${t}";;
840 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
841 build_warnings="${t} ${build_warnings}";;
842 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
843 esac
844 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
845 echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
846 fi])dnl
847 WARN_CFLAGS=""
848 WERROR_CFLAGS=""
849 if test "x${build_warnings}" != x -a "x$GCC" = xyes
850 then
851 AC_MSG_CHECKING(compiler warning flags)
852 # Separate out the -Werror flag as some files just cannot be
853 # compiled with it enabled.
854 for w in ${build_warnings}; do
855 case $w in
856 -Werr*) WERROR_CFLAGS=-Werror ;;
857 *) # Check that GCC accepts it
858 saved_CFLAGS="$CFLAGS"
859 CFLAGS="$CFLAGS $w"
860 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
861 CFLAGS="$saved_CFLAGS"
862 esac
863 done
864 AC_MSG_RESULT(${WARN_CFLAGS}${WERROR_CFLAGS})
865 fi
866 AC_SUBST(WARN_CFLAGS)
867 AC_SUBST(WERROR_CFLAGS)
868
869 MMALLOC_CFLAGS=
870 MMALLOC=
871 AC_SUBST(MMALLOC_CFLAGS)
872 AC_SUBST(MMALLOC)
873
874 AC_ARG_WITH(mmalloc,
875 [ --with-mmalloc Use memory mapped malloc package],
876 [case "${withval}" in
877 yes) want_mmalloc=true ;;
878 no) want_mmalloc=false;;
879 *) AC_MSG_ERROR(bad value ${withval} for GDB with-mmalloc option) ;;
880 esac],[want_mmalloc=false])dnl
881
882 if test x$want_mmalloc = xtrue; then
883 AC_DEFINE(USE_MMALLOC)
884 AC_DEFINE(MMCHECK_FORCE)
885 MMALLOC_CFLAGS="-I$srcdir/../mmalloc"
886 MMALLOC='../mmalloc/libmmalloc.a'
887 fi
888
889 AC_ARG_WITH(included-regex,
890 [ --with-included-regex Use included regex],
891 [case "${withval}" in
892 yes) want_included_regex=true ;;
893 no) want_included_regex=false;;
894 *) AC_MSG_ERROR(bad value ${withval} for GDB with-included-regex option) ;;
895 esac],[want_included_regex=true])dnl
896
897 if test $want_included_regex = false; then
898 AC_MSG_CHECKING(for GNU regex)
899 AC_CACHE_VAL(gdb_cv_have_gnu_regex,
900 [AC_TRY_COMPILE([#include <gnu-versions.h>
901 #include <sys/types.h>
902 #include <regex.h>],
903 [#if !defined _GNU_REGEX_INTERFACE_VERSION || !defined __GLIBC__ || __GLIBC__ < 2
904 #error No valid GNU regex.
905 #endif
906 ],
907 [gdb_cv_have_gnu_regex=yes],
908 [gdb_cv_have_gnu_regex=no])])
909 AC_MSG_RESULT($gdb_cv_have_gnu_regex)
910 if test $gdb_cv_have_gnu_regex = no; then
911 want_included_regex=true
912 fi
913 fi
914
915 if test x${want_included_regex} = xtrue; then
916 REGEX="gnu-regex.o"
917 AC_DEFINE(USE_INCLUDED_REGEX)
918 fi
919 AC_SUBST(REGEX)
920
921 # In the Cygwin environment, we need some additional flags.
922 AC_CACHE_CHECK([for cygwin], gdb_cv_os_cygwin,
923 [AC_EGREP_CPP(lose, [
924 #if defined (__CYGWIN__) || defined (__CYGWIN32__)
925 lose
926 #endif],[gdb_cv_os_cygwin=yes],[gdb_cv_os_cygwin=no])])
927
928
929 dnl Figure out which of the many generic ser-*.c files the _host_ supports.
930 SER_HARDWIRE="ser-unix.o ser-pipe.o ser-tcp.o"
931 case ${host} in
932 *go32* ) SER_HARDWIRE=ser-go32.o ;;
933 *djgpp* ) SER_HARDWIRE=ser-go32.o ;;
934 esac
935 AC_SUBST(SER_HARDWIRE)
936
937
938 dnl Figure out which term library to use.
939 if test x$gdb_host = xgo32; then
940 TERM_LIB=
941 else
942 if test x$gdb_cv_os_cygwin = xyes; then
943 TERM_LIB='`if test -r ../libtermcap/libtermcap.a; then echo ../libtermcap/libtermcap.a; else echo -ltermcap; fi`'
944 else
945 TERM_LIB=
946 AC_CHECK_LIB(ncurses, tgetent, TERM_LIB=-lncurses,
947 AC_CHECK_LIB(Hcurses, tgetent, TERM_LIB=-lHcurses,
948 AC_CHECK_LIB(termlib, tgetent, TERM_LIB=-ltermlib,
949 AC_CHECK_LIB(termcap, tgetent, TERM_LIB=-ltermcap,
950 AC_CHECK_LIB(curses, tgetent, TERM_LIB=-lcurses,
951 AC_CHECK_LIB(terminfo, tgetent, TERM_LIB=-lterminfo))))))
952
953 if test "x$TERM_LIB" = x
954 then
955 AC_MSG_ERROR(Could not find a term library, e.g. termcap or termlib!)
956 fi
957 fi
958 fi
959 AC_SUBST(TERM_LIB)
960
961 # libreadline needs libuser32.a in a cygwin environment
962 WIN32LIBS=
963 if test x$gdb_cv_os_cygwin = xyes; then
964 WIN32LIBS="-luser32"
965 case "${target}" in
966 *cygwin*) WIN32LIBS="$WIN32LIBS -limagehlp"
967 ;;
968 esac
969 fi
970 AC_SUBST(WIN32LIBS)
971
972 LIBGUI="../libgui/src/libgui.a"
973 GUI_CFLAGS_X="-I${srcdir}/../libgui/src"
974 AC_SUBST(LIBGUI)
975 AC_SUBST(GUI_CFLAGS_X)
976
977 AC_ARG_WITH(cpu,
978 [ --with-cpu=CPU Set the default CPU variant to debug],
979 [case "${target}" in
980 powerpc-* | powerpcle-* )
981 ## It would be nice to keep this table in sync with the one in
982 ## gcc/configure.
983 case "${with_cpu}" in
984 ppc-uisa | rs6000 | 403 | 403GC | 505 | 860 | 601 | 602 | 603 \
985 | 604 | 750 )
986 ## Those are all handled in variants in rs6000-tdep.c, so they're fine.
987 ;;
988 common | power | power2 | rios | rios1 | rios2 | rsc | rsc1 )
989 ## These are all RS6000 variants, as far as GDB is concerned.
990 with_cpu=rs6000
991 ;;
992 603e | ec603e )
993 with_cpu=603
994 ;;
995 604e )
996 with_cpu=604
997 ;;
998 * )
999 AC_MSG_WARN(GDB: unknown --with-cpu value: \`${with_cpu}'; using \`ppc-uisa'.)
1000 with_cpu=ppc-uisa
1001 ;;
1002 esac
1003 ;;
1004 * )
1005 AC_MSG_WARN(GDB may ignore the --with-cpu flag for ${target} targets)
1006 ;;
1007 esac
1008 AC_DEFINE_UNQUOTED(TARGET_CPU_DEFAULT, "${with_cpu}")
1009 ],)
1010
1011
1012 AC_ARG_ENABLE(gdbtk,
1013 [ --enable-gdbtk Enable GDBTK GUI front end],
1014 [case "${enableval}" in
1015 yes)
1016 case "$host" in
1017 *go32*)
1018 AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.])
1019 enable_gdbtk=no ;;
1020 *windows*)
1021 AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.])
1022 enable_gdbtk=no ;;
1023 *)
1024 enable_gdbtk=yes ;;
1025 esac ;;
1026 no)
1027 enable_gdbtk=no ;;
1028 *)
1029 AC_MSG_ERROR(bad value ${enableval} given for gdbtk option) ;;
1030 esac],
1031 [
1032 # Default is on for everything but go32 and Cygwin
1033 case "$host" in
1034 *go32* | *windows*)
1035 ;;
1036 *)
1037 if test -d "${srcdir}/gdbtk" ; then
1038 enable_gdbtk=yes
1039 fi
1040 ;;
1041 esac
1042 ])
1043
1044 WIN32LDAPP=
1045 AC_SUBST(WIN32LIBS)
1046 AC_SUBST(WIN32LDAPP)
1047
1048 configdir="unix"
1049
1050 GDBTKLIBS=
1051 if test "${enable_gdbtk}" = "yes"; then
1052
1053 # Gdbtk must have an absolute path to srcdir in order to run
1054 # properly when not installed.
1055 here=`pwd`
1056 cd ${srcdir}
1057 GDBTK_SRC_DIR=`pwd`
1058 cd $here
1059
1060 CY_AC_PATH_TCLCONFIG
1061 if test -z "${no_tcl}"; then
1062 CY_AC_LOAD_TCLCONFIG
1063 CY_AC_PATH_TKCONFIG
1064
1065 # now look for Tcl library stuff
1066
1067 case "${host}" in
1068 *-*-cygwin*)
1069 tcldir=../tcl/win/
1070 ;;
1071 *)
1072 tcldir=../tcl/unix/
1073 ;;
1074 esac
1075
1076 TCL_DEPS="${tcldir}${TCL_LIB_FILE}"
1077
1078 # If $no_tk is nonempty, then we can't do Tk, and there is no
1079 # point to doing Tcl.
1080 if test -z "${no_tk}"; then
1081 CY_AC_LOAD_TKCONFIG
1082 CY_AC_PATH_TCLH
1083 CY_AC_PATH_TKH
1084 CY_AC_PATH_ITCLH
1085 CY_AC_PATH_ITKH
1086
1087
1088 # now look for Tk library stuff
1089
1090 case "${host}" in
1091 *-*-cygwin*)
1092 tkdir=../tk/win/
1093 ;;
1094 *)
1095 tkdir=../tk/unix/
1096 ;;
1097 esac
1098
1099 TK_DEPS="${tkdir}${TK_LIB_FILE}"
1100
1101 # now look for Itcl library stuff
1102
1103 CY_AC_PATH_ITCLCONFIG
1104 if test -z "${no_itcl}"; then
1105 CY_AC_LOAD_ITCLCONFIG
1106
1107 ITCLLIB="${ITCL_BUILD_LIB_SPEC}"
1108 ITCL_DEPS="${ITCL_LIB_FULL_PATH}"
1109 fi
1110
1111
1112 # now look for Itk library stuff
1113 CY_AC_PATH_ITKCONFIG
1114 if test -z "${no_itcl}"; then
1115 CY_AC_LOAD_ITKCONFIG
1116
1117 ITKLIB="${ITK_BUILD_LIB_SPEC}"
1118 ITK_DEPS="${ITK_LIB_FULL_PATH}"
1119 fi
1120
1121 ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_GDBTK_CFLAGS)"
1122 # Tcl/Tk 8.1 require -fwritable strings. I don't
1123 # know whether 8.2 will or not, but I bet it will.
1124 # I don't have to worry about 7.x since we don't support it.
1125 GDBTK_CFLAGS=""
1126 if test "$GCC" = "yes"; then
1127 if test "$TCL_VERSION" != "8.0" ; then
1128 GDBTK_CFLAGS="-fwritable-strings"
1129 fi
1130 fi
1131
1132 # Include some libraries that Tcl and Tk want.
1133 TCL_LIBS='$(LIBGUI) $(ITCL) $(ITK) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
1134 # Yes, the ordering seems wrong here. But it isn't.
1135 # TK_LIBS is the list of libraries that need to be linked
1136 # after Tcl/Tk. Note that this isn't put into LIBS. If it
1137 # were in LIBS then any link tests after this point would
1138 # try to include things like `$(LIBGUI)', which wouldn't work.
1139 GDBTKLIBS="${TCL_LIBS} ${TK_LIBS}"
1140
1141 CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_GDBTK_OBS)"
1142 CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_GDBTK_DEPS)"
1143 CONFIG_SRCS="${CONFIG_SRCS} \$(SUBDIR_GDBTK_SRCS)"
1144 CONFIG_INITS="${CONFIG_INITS} \$(SUBDIR_GDBTK_INITS)"
1145 CONFIG_ALL="${CONFIG_ALL} \$(SUBDIR_GDBTK_ALL)"
1146 CONFIG_CLEAN="${CONFIG_CLEAN} \$(SUBDIR_GDBTK_CLEAN)"
1147 CONFIG_INSTALL="${CONFIG_INSTALL} \$(SUBDIR_GDBTK_INSTALL)"
1148 CONFIG_UNINSTALL="${CONFIG_UNINSTALL} \$(SUBDIR_GDBTK_UNINSTALL)"
1149
1150 if test x$gdb_cv_os_cygwin = xyes; then
1151 WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32"
1152 WIN32LDAPP="-Wl,--subsystem,console"
1153 CONFIG_OBS="${CONFIG_OBS} gdbres.o"
1154 fi
1155 fi
1156 fi
1157
1158 SUBDIRS="${SUBDIRS} gdbtk"
1159 configdirs="${configdirs} gdbtk"
1160 fi
1161
1162 AC_SUBST(X_CFLAGS)
1163 AC_SUBST(X_LDFLAGS)
1164 AC_SUBST(X_LIBS)
1165 AC_SUBST(TCL_DEPS)
1166 AC_SUBST(TK_DEPS)
1167 AC_SUBST(ITCLLIB)
1168 AC_SUBST(ITCL_DEPS)
1169 AC_SUBST(ITKLIB)
1170 AC_SUBST(ITK_DEPS)
1171 AC_SUBST(GDBTKLIBS)
1172 AC_SUBST(GDBTK_CFLAGS)
1173 AC_SUBST(GDBTK_SRC_DIR)
1174
1175 AC_PATH_X
1176
1177
1178 # Unlike the sim directory, whether a simulator is linked is controlled by
1179 # presence of a SIM= and a SIM_OBS= definition in the target '.mt' file.
1180 # This code just checks for a few cases where we'd like to ignore those
1181 # definitions, even when they're present in the '.mt' file. These cases
1182 # are when --disable-sim is specified, or if the simulator directory is
1183 # not part of the source tree.
1184 #
1185 AC_ARG_ENABLE(sim,
1186 [ --enable-sim Link gdb with simulator],
1187 [echo "enable_sim = $enable_sim";
1188 echo "enableval = ${enableval}";
1189 case "${enableval}" in
1190 yes) ignore_sim=false ;;
1191 no) ignore_sim=true ;;
1192 *) ignore_sim=false ;;
1193 esac],
1194 [ignore_sim=false])
1195
1196 if test ! -d "${srcdir}/../sim"; then
1197 ignore_sim=true
1198 fi
1199
1200 if test "${ignore_sim}" = "true"; then
1201 IGNORE_SIM="SIM="
1202 IGNORE_SIM_OBS="SIM_OBS="
1203 else
1204 IGNORE_SIM=""
1205 IGNORE_SIM_OBS=""
1206 AC_DEFINE(WITH_SIM)
1207 fi
1208 AC_SUBST(IGNORE_SIM)
1209 AC_SUBST(IGNORE_SIM_OBS)
1210
1211 AC_SUBST(ENABLE_CFLAGS)
1212
1213 AC_SUBST(CONFIG_OBS)
1214 AC_SUBST(CONFIG_LIB_OBS)
1215 AC_SUBST(CONFIG_DEPS)
1216 AC_SUBST(CONFIG_SRCS)
1217 AC_SUBST(CONFIG_INITS)
1218 AC_SUBST(CONFIG_ALL)
1219 AC_SUBST(CONFIG_CLEAN)
1220 AC_SUBST(CONFIG_INSTALL)
1221 AC_SUBST(CONFIG_UNINSTALL)
1222
1223 # Begin stuff to support --enable-shared
1224 AC_ARG_ENABLE(shared,
1225 [ --enable-shared Use shared libraries],
1226 [case "${enableval}" in
1227 yes) shared=true ;;
1228 no) shared=false ;;
1229 *) shared=true ;;
1230 esac])dnl
1231
1232 HLDFLAGS=
1233 HLDENV=
1234 # If we have shared libraries, try to set rpath reasonably.
1235 if test "${shared}" = "true"; then
1236 case "${host}" in
1237 *-*-hpux*)
1238 HLDFLAGS='-Wl,+s,+b,$(libdir)'
1239 ;;
1240 *-*-irix5* | *-*-irix6*)
1241 HLDFLAGS='-Wl,-rpath,$(libdir)'
1242 ;;
1243 *-*-linux*aout*)
1244 ;;
1245 *-*-linux* | *-pc-linux-gnu*)
1246 HLDFLAGS='-Wl,-rpath,$(libdir)'
1247 ;;
1248 *-*-solaris*)
1249 HLDFLAGS='-R $(libdir)'
1250 ;;
1251 *-*-sysv4*)
1252 HLDENV='if test -z "$${LD_RUN_PATH}"; then LD_RUN_PATH=$(libdir); else LD_RUN_PATH=$${LD_RUN_PATH}:$(libdir); fi; export LD_RUN_PATH;'
1253 ;;
1254 esac
1255 fi
1256
1257 # On SunOS, if the linker supports the -rpath option, use it to
1258 # prevent ../bfd and ../opcodes from being included in the run time
1259 # search path.
1260 case "${host}" in
1261 *-*-sunos*)
1262 echo 'main () { }' > conftest.c
1263 ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t
1264 if grep 'unrecognized' conftest.t >/dev/null 2>&1; then
1265 :
1266 elif grep 'No such file' conftest.t >/dev/null 2>&1; then
1267 :
1268 elif grep 'do not mix' conftest.t >/dev/null 2>&1; then
1269 :
1270 elif grep 'some text already loaded' conftest.t >/dev/null 2>&1; then
1271 :
1272 elif test "${shared}" = "true"; then
1273 HLDFLAGS='-Wl,-rpath=$(libdir)'
1274 else
1275 HLDFLAGS='-Wl,-rpath='
1276 fi
1277 rm -f conftest.t conftest.c conftest
1278 ;;
1279 esac
1280 AC_SUBST(HLDFLAGS)
1281 AC_SUBST(HLDENV)
1282 # End stuff to support --enable-shared
1283
1284 # target_subdir is used by the testsuite to find the target libraries.
1285 target_subdir=
1286 if test "${host}" != "${target}"; then
1287 target_subdir="${target_alias}/"
1288 fi
1289 AC_SUBST(target_subdir)
1290
1291 frags=
1292 host_makefile_frag=${srcdir}/config/${gdb_host_cpu}/${gdb_host}.mh
1293 if test ! -f ${host_makefile_frag}; then
1294 # When building a native debuger the .mh file containing things
1295 # like NATDEPFILES is needed. Cross debuggers don't need .mh
1296 # since it no longer contains anything useful.
1297 if test "${target}" = "${host}"; then
1298 AC_MSG_ERROR("*** Gdb does not support native target ${host}")
1299 else
1300 host_makefile_frag=/dev/null
1301 fi
1302 fi
1303 frags="$frags $host_makefile_frag"
1304
1305 target_makefile_frag=${srcdir}/config/${gdb_target_cpu}/${gdb_target}.mt
1306 if test ! -f ${target_makefile_frag}; then
1307 AC_MSG_ERROR("*** Gdb does not support target ${target}")
1308 fi
1309 frags="$frags $target_makefile_frag"
1310
1311 AC_SUBST_FILE(host_makefile_frag)
1312 AC_SUBST_FILE(target_makefile_frag)
1313 AC_SUBST(frags)
1314
1315 changequote(,)dnl
1316 hostfile=`sed -n '
1317 s/XM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
1318 ' ${host_makefile_frag}`
1319
1320 targetfile=`sed -n '
1321 s/TM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
1322 ' ${target_makefile_frag}`
1323
1324 GDB_MULTI_ARCH=`sed -n '
1325 s/GDB_MULTI_ARCH[ ]*=[ ]*\([^ ]*\)[ ]*/\1/p
1326 ' ${target_makefile_frag}`
1327
1328 if test "${target}" = "${host}"; then
1329 # We pick this up from the host configuration file (.mh) because we
1330 # do not have a native configuration Makefile fragment.
1331 nativefile=`sed -n '
1332 s/NAT_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
1333 ' ${host_makefile_frag}`
1334 fi
1335 changequote([,])
1336
1337 # New targets should just set gdb_multi_arch=yes in configure.tgt.
1338 # Old targets being converted can either do that or set GDB_MULTI_ARCH
1339 # in the target specific makefile frag. Eventually gdb_multi_arch=yes
1340 # will be the default.
1341 if test x"${GDB_MULTI_ARCH}" = x ; then
1342 case "${gdb_multi_arch}" in
1343 yes ) GDB_MULTI_ARCH=GDB_MULTI_ARCH_PURE ;;
1344 no ) GDB_MULTI_ARCH=0 ;;
1345 0|1|2 ) GDB_MULTI_ARCH=${gdb_multi_arch} ;;
1346 esac
1347 fi
1348 if test x"${GDB_MULTI_ARCH}" != x ; then
1349 AC_DEFINE_UNQUOTED(GDB_MULTI_ARCH, ${GDB_MULTI_ARCH})
1350 fi
1351 # Warn the user when they use an old practice
1352 case "${GDB_MULTI_ARCH}" in
1353 "" ) ;;
1354 0 | GDB_MULTI_ARCH_PARTIAL | 1 | GDB_MULTI_ARCH_TM | 2 )
1355 AC_MSG_WARN("GDB: Target is not pure multi-arch") ;;
1356 GDB_MULTI_ARCH_PURE )
1357 if test x"${targetfile}" != x ; then
1358 AC_MSG_WARN("GDB: Ignoring TM_FILE in ${target_makefile_frag}")
1359 targetfile=""
1360 fi ;;
1361 *) AC_MSG_ERROR("GDB: Unknown GDB_MULTI_ARCH value ${GDB_MULTI_ARCH}");;
1362 esac
1363
1364 if test "${enable_multi_ice}" = "yes"; then
1365 SUBDIRS="${SUBDIRS} multi-ice"
1366 fi
1367
1368 # ``gdbserver'' can only be built in a native configuration.
1369 if test x"${target}" = x"${host}"; then
1370 AC_MSG_CHECKING(whether gdbserver is supported on this host)
1371 if test x"${build_gdbserver}" = xyes ; then
1372 configdirs="${configdirs} gdbserver"
1373 SUBDIRS="${SUBDIRS} gdbserver"
1374 AC_MSG_RESULT(yes)
1375 else
1376 AC_MSG_RESULT(no)
1377 fi
1378 fi
1379
1380 AC_SUBST(SUBDIRS)
1381
1382 # If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile
1383 # (NAT_FILE) is not set in config/*/*.m[ht] files, we link to an empty
1384 # version.
1385
1386 files=
1387 links=
1388
1389 rm -f xm.h
1390 xm_h=""
1391 if test "${hostfile}" != ""; then
1392 xm_h=xm.h
1393 GDB_XM_FILE="config/${gdb_host_cpu}/${hostfile}"
1394 files="${files} ${GDB_XM_FILE}"
1395 links="${links} xm.h"
1396 AC_DEFINE_UNQUOTED(GDB_XM_FILE, ${GDB_XM_FILE})
1397 fi
1398 AC_SUBST(xm_h)
1399
1400 rm -f tm.h
1401 tm_h=""
1402 if test "${targetfile}" != ""; then
1403 tm_h=tm.h
1404 GDB_TM_FILE="config/${gdb_target_cpu}/${targetfile}"
1405 files="${files} ${GDB_TM_FILE}"
1406 links="${links} tm.h"
1407 AC_DEFINE_UNQUOTED(GDB_TM_FILE, ${GDB_TM_FILE})
1408 fi
1409 AC_SUBST(tm_h)
1410
1411 rm -f nm.h
1412 nm_h=""
1413 if test "${nativefile}" != ""; then
1414 nm_h=nm.h
1415 GDB_NM_FILE="config/${gdb_host_cpu}/${nativefile}"
1416 files="${files} ${GDB_NM_FILE}"
1417 links="${links} nm.h"
1418 AC_DEFINE_UNQUOTED(GDB_NM_FILE, ${GDB_NM_FILE})
1419 fi
1420 AC_SUBST(nm_h)
1421
1422 AC_LINK_FILES($files, $links)
1423
1424 dnl Check for exe extension set on certain hosts (e.g. Win32)
1425 AC_EXEEXT
1426
1427 dnl Detect the character set used by this host.
1428
1429 dnl At the moment, we just assume it's ISO-8859-1 (which is a
1430 dnl superset of ASCII containing the characters needed for French,
1431 dnl German, Spanish, Italian, and possibly others), but if were
1432 dnl *were* to support any host character sets other than ISO-8859-1,
1433 dnl here's where we'd detect it.
1434 AC_DEFINE(GDB_DEFAULT_HOST_CHARSET, "ISO-8859-1",
1435 [Define to be a string naming the default host character set.])
1436
1437 AM_ICONV
1438
1439 AC_CONFIG_SUBDIRS($configdirs)
1440 AC_OUTPUT(Makefile .gdbinit:gdbinit.in,
1441 [
1442 dnl Autoconf doesn't provide a mechanism for modifying definitions
1443 dnl provided by makefile fragments.
1444 dnl
1445 if test "${nativefile}" = ""; then
1446 < Makefile \
1447 sed -e '/^NATDEPFILES[[ ]]*=.*\\$/,/[[^\\]]$/s/^/# /' \
1448 -e '/^NATDEPFILES[[ ]]*=/s/^/# /' \
1449 | sed -e '/^\(NATDEPFILES[[ ]]*[[+]]=[[ ]]*\)/s//# \1/' \
1450 > Makefile.tem
1451 mv -f Makefile.tem Makefile
1452 fi
1453
1454 changequote(,)dnl
1455 sed -e '/^TM_FILE[ ]*=/s,^TM_FILE[ ]*=[ ]*,&config/'"${gdb_target_cpu}"'/,
1456 /^XM_FILE[ ]*=/s,^XM_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,
1457 /^NAT_FILE[ ]*=/s,^NAT_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,' <Makefile >Makefile.tmp
1458 mv -f Makefile.tmp Makefile
1459 changequote([,])dnl
1460
1461
1462 case x$CONFIG_HEADERS in
1463 xconfig.h:config.in)
1464 echo > stamp-h ;;
1465 esac
1466 ],
1467 [
1468 gdb_host_cpu=$gdb_host_cpu
1469 gdb_target_cpu=$gdb_target_cpu
1470 nativefile=$nativefile
1471 ])
1472
1473 exit 0