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