This commit was generated by cvs2svn to track changes on a CVS vendor
[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 Free Software Foundation, Inc.
3 dnl
4 dnl This file is part of GDB.
5 dnl 
6 dnl This program is free software; you can redistribute it and/or modify
7 dnl it under the terms of the GNU General Public License as published by
8 dnl the Free Software Foundation; either version 2 of the License, or
9 dnl (at your option) any later version.
10 dnl 
11 dnl This program is distributed in the hope that it will be useful,
12 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
13 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 dnl GNU General Public License for more details.
15 dnl 
16 dnl You should have received a copy of the GNU General Public License
17 dnl along with this program; if not, write to the Free Software
18 dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19
20 dnl Process this file with autoconf to produce a configure script.
21
22 AC_PREREQ(2.13)dnl
23 AC_INIT(main.c)
24 AC_CONFIG_HEADER(config.h:config.in)
25
26 AC_PROG_CC
27 AC_AIX
28 AC_ISC_POSIX
29 AM_PROG_CC_STDC
30
31 AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..)
32 AC_CANONICAL_SYSTEM
33
34 dnl gdb doesn't use gettext, but bfd does.  We call this to ensure we
35 dnl link with the correct libraries.
36 ALL_LINGUAS=
37 CY_GNU_GETTEXT
38
39 dnl List of object files added by configure.
40
41 CONFIG_OBS=
42 CONFIG_DEPS=
43 CONFIG_SRCS=
44 CONFIG_INIT=
45
46 configdirs="doc testsuite"
47
48 AC_ARG_ENABLE(multi-ice,
49 [  --enable-multi-ice            Build the multi-ice-gdb-server],
50 [case "${enableval}" in
51     yes ) enable_multi_ice="yes" ;;
52     no)  enable_multi_ice="no" ;;
53     *) AC_MSG_ERROR(Bad value for --enable-multi-ice: ${enableval}) ;;
54   esac
55 ])
56
57 if test "${enable_multi_ice}" = "yes"; then
58   configdirs="${configdirs} multi-ice"
59 fi
60
61 dnl
62 changequote(,)dnl
63
64 . ${srcdir}/configure.host
65
66 . ${srcdir}/configure.tgt
67
68 dnl
69 changequote([,])dnl
70
71 AC_PROG_AWK
72 AC_PROG_INSTALL
73 AC_CHECK_TOOL(AR, ar)
74 AC_CHECK_TOOL(RANLIB, ranlib, :)
75 AC_PROG_YACC
76
77 AC_ARG_PROGRAM
78
79 AC_TYPE_SIGNAL
80
81 AC_HEADER_STDC
82
83 AC_CHECK_HEADERS(ctype.h curses.h endian.h link.h thread_db.h proc_service.h \
84         memory.h objlist.h ptrace.h sgtty.h stddef.h stdlib.h \
85         string.h sys/procfs.h sys/ptrace.h sys/reg.h stdint.h \
86         term.h termio.h termios.h unistd.h wait.h sys/wait.h \
87         wchar.h wctype.h asm/debugreg.h sys/debugreg.h sys/select.h \
88         time.h sys/ioctl.h)
89 AC_HEADER_STAT
90
91 AC_C_CONST
92
93 AC_CHECK_FUNCS(setpgid sbrk sigaction isascii bzero bcopy btowc poll sigprocmask)
94 AC_FUNC_ALLOCA
95
96 dnl See if ptrace.h provides the PTRACE_GETXFPREGS request.
97 dnl PTRACE_GETXFPREGS is a Cygnus invention, since we wrote our own
98 dnl Linux kernel patch for SSE support.  That patch may or may not
99 dnl actually make it into the official distribution.  If you find that
100 dnl years have gone by since this configure test was added, and Linux
101 dnl isn't using PTRACE_GETXFPREGS, that means that our patch didn't
102 dnl make it, and you can delete this code.
103 AC_MSG_CHECKING(for PTRACE_GETXFPREGS)
104 AC_CACHE_VAL(gdb_cv_have_ptrace_getxfpregs,
105 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
106                 [PTRACE_GETXFPREGS;],
107                 [gdb_cv_have_ptrace_getxfpregs=yes],
108                 [gdb_cv_have_ptrace_getxfpregs=no])])
109 AC_MSG_RESULT($gdb_cv_have_ptrace_getxfpregs)
110 if test $gdb_cv_have_ptrace_getxfpregs = yes; then
111   AC_DEFINE(HAVE_PTRACE_GETXFPREGS)
112 fi
113
114 AC_CHECK_LIB(socket, socketpair)
115 AC_CHECK_FUNCS(socketpair)
116
117
118 BFD_NEED_DECLARATION(malloc)
119 BFD_NEED_DECLARATION(realloc)
120 BFD_NEED_DECLARATION(free)
121 BFD_NEED_DECLARATION(strerror)
122 BFD_NEED_DECLARATION(strdup)
123 BFD_NEED_DECLARATION(strstr)
124
125
126 # The following save_state_t checkery is only necessary for HPUX 
127 # versions earlier than 10.20.  When those fade from memory, this 
128 # could be expunged. --jsm 1999-03-22
129
130 AC_MSG_CHECKING(for HPUX save_state structure)
131 AC_EGREP_HEADER(save_state_t, machine/save_state.h, 
132                 gdb_cv_hpux_savestate=yes, gdb_cv_hpux_savestate=no)
133 AC_EGREP_HEADER(ss_wide, machine/save_state.h, gdb_cv_hpux_sswide=yes,
134                 gdb_cv_hpux_sswide=no)
135 if test $gdb_cv_hpux_savestate = yes
136 then
137   AC_DEFINE(HAVE_STRUCT_SAVE_STATE_T, 1)
138 fi
139 if test $gdb_cv_hpux_sswide = yes
140 then
141   AC_DEFINE(HAVE_STRUCT_MEMBER_SS_WIDE, 1)
142 fi
143 AC_MSG_RESULT($gdb_cv_hpux_sswide)
144
145
146 # If we are configured native on GNU/Linux, work around problems with
147 # sys/procfs.h
148 # Also detect which type of /proc is in use, such as for Unixware or Solaris.
149
150 if test "${target}" = "${host}"; then
151   case "${host}" in
152   i[[3456]]86-*-linux*)
153         AC_DEFINE(START_INFERIOR_TRAPS_EXPECTED,2)
154         AC_DEFINE(sys_quotactl)
155         ;;
156   *-*-unixware* | *-*-sysv4.2* | *-*-sysv5*)
157       AC_DEFINE(NEW_PROC_API)
158       ;;
159   # FIXME: we would like to define NEW_PROC_API for all versions of
160   # Solaris from 2.6 on... but it isn't quite working yet.  Seems
161   # to work on sparc 2.6, so let's try it out there.
162   sparc-sun-solaris2.6)
163       AC_DEFINE(NEW_PROC_API)
164       ;;
165   esac
166 fi
167
168 if test "$ac_cv_header_sys_procfs_h" = yes; then
169   BFD_HAVE_SYS_PROCFS_TYPE(pstatus_t)
170   BFD_HAVE_SYS_PROCFS_TYPE(prrun_t)
171   BFD_HAVE_SYS_PROCFS_TYPE(gregset_t)
172   BFD_HAVE_SYS_PROCFS_TYPE(fpregset_t)
173   BFD_HAVE_SYS_PROCFS_TYPE(prgregset_t)
174   BFD_HAVE_SYS_PROCFS_TYPE(prfpregset_t)
175   BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t)
176   BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t)
177
178   dnl Check for PIOCSET ioctl entry 
179
180   AC_MSG_CHECKING(for PIOCSET ioctl entry in sys/procfs.h)
181   AC_CACHE_VAL(gdb_cv_have_procfs_piocset,
182   [AC_TRY_COMPILE([#include <unistd.h>
183 #include <sys/types.h>
184 #include <sys/procfs.h>
185 ], [
186     int dummy;;
187     dummy = ioctl(0, PIOCSET, &dummy);
188   ],
189   gdb_cv_have_procfs_piocset=yes, gdb_cv_have_procfs_piocset=no)])
190   AC_MSG_RESULT($gdb_cv_have_procfs_piocset)
191   if test $gdb_cv_have_procfs_piocset = yes; then
192     AC_DEFINE(HAVE_PROCFS_PIOCSET)
193   fi
194 fi
195
196 dnl See if host has libm.  This is usually needed by simulators.
197 AC_CHECK_LIB(m, main)
198
199 dnl Solaris puts wctype in /usr/lib/libw.a before Solaris 2.6.
200 dnl
201 dnl A bug in GNU ld 2.9.1 causes a problem if we link in -lw 
202 dnl under Solaris 2.6 because it is some funky empty library.
203 dnl So only link in libw if we have to.
204 AC_CHECK_LIB(c, wctype,: ,AC_CHECK_LIB(w, wctype))
205
206 dnl See if compiler supports "long long" type.
207
208 AC_MSG_CHECKING(for long long support in compiler)
209 AC_CACHE_VAL(gdb_cv_c_long_long,
210 [AC_TRY_COMPILE(, [
211   extern long long foo;
212   switch (foo & 2) { case 0: return 1; }
213 ],
214 gdb_cv_c_long_long=yes, gdb_cv_c_long_long=no)])
215 AC_MSG_RESULT($gdb_cv_c_long_long)
216 if test $gdb_cv_c_long_long = yes; then
217   AC_DEFINE(CC_HAS_LONG_LONG)
218 fi
219
220 dnl See if the compiler and runtime support printing long long
221
222 AC_MSG_CHECKING(for long long support in printf)
223 AC_CACHE_VAL(gdb_cv_printf_has_long_long,
224 [AC_TRY_RUN([
225 int main () {
226   char buf[32];
227   long long l = 0;
228   l = (l << 16) + 0x0123;
229   l = (l << 16) + 0x4567;
230   l = (l << 16) + 0x89ab;
231   l = (l << 16) + 0xcdef;
232   sprintf (buf, "0x%016llx", l);
233   return (strcmp ("0x0123456789abcdef", buf));
234 }],
235 gdb_cv_printf_has_long_long=yes,
236 gdb_cv_printf_has_long_long=no,
237 gdb_cv_printf_has_long_long=no)])
238 if test $gdb_cv_printf_has_long_long = yes; then
239   AC_DEFINE(PRINTF_HAS_LONG_LONG)
240 fi
241 AC_MSG_RESULT($gdb_cv_printf_has_long_long)
242
243 dnl See if compiler supports "long double" type.  Can't use AC_C_LONG_DOUBLE
244 dnl because autoconf complains about cross-compilation issues.  However, this
245 dnl code uses the same variables as the macro for compatibility.
246
247 AC_MSG_CHECKING(for long double support in compiler)
248 AC_CACHE_VAL(ac_cv_c_long_double,
249 [AC_TRY_COMPILE(, [long double foo;],
250 ac_cv_c_long_double=yes, ac_cv_c_long_double=no)])
251 AC_MSG_RESULT($ac_cv_c_long_double)
252 if test $ac_cv_c_long_double = yes; then
253   AC_DEFINE(HAVE_LONG_DOUBLE)
254 fi
255
256 dnl See if the compiler and runtime support printing long doubles
257
258 AC_MSG_CHECKING(for long double support in printf)
259 AC_CACHE_VAL(gdb_cv_printf_has_long_double,
260 [AC_TRY_RUN([
261 int main () {
262   char buf[16];
263   long double f = 3.141592653;
264   sprintf (buf, "%Lg", f);
265   return (strncmp ("3.14159", buf, 7));
266 }],
267 gdb_cv_printf_has_long_double=yes,
268 gdb_cv_printf_has_long_double=no,
269 gdb_cv_printf_has_long_double=no)])
270 if test $gdb_cv_printf_has_long_double = yes; then
271   AC_DEFINE(PRINTF_HAS_LONG_DOUBLE)
272 fi
273 AC_MSG_RESULT($gdb_cv_printf_has_long_double)
274
275 dnl See if the compiler and runtime support scanning long doubles
276
277 AC_MSG_CHECKING(for long double support in scanf)
278 AC_CACHE_VAL(gdb_cv_scanf_has_long_double,
279 [AC_TRY_RUN([
280 int main () {
281   char *buf = "3.141592653";
282   long double f = 0;
283   sscanf (buf, "%Lg", &f);
284   return !(f > 3.14159 && f < 3.14160);
285 }],
286 gdb_cv_scanf_has_long_double=yes,
287 gdb_cv_scanf_has_long_double=no,
288 gdb_cv_scanf_has_long_double=no)])
289 if test $gdb_cv_scanf_has_long_double = yes; then
290   AC_DEFINE(SCANF_HAS_LONG_DOUBLE)
291 fi
292 AC_MSG_RESULT($gdb_cv_scanf_has_long_double)
293
294 AC_FUNC_MMAP
295
296 dnl See if thread_db library is around for Solaris thread debugging.  Note that
297 dnl we must explicitly test for version 1 of the library because version 0
298 dnl (present on Solaris 2.4 or earlier) doesn't have the same API.
299
300 dnl Note that we only want this if we are both native (host == target), and
301 dnl not doing a canadian cross build (build == host).
302
303 if test ${build} = ${host} -a ${host} = ${target} ; then
304    case ${host_os} in
305    hpux*)
306       AC_MSG_CHECKING(for HPUX/OSF thread support)
307       if test -f /usr/include/dce/cma_config.h ; then
308          if test "$GCC" = "yes" ; then
309             AC_MSG_RESULT(yes)
310             AC_DEFINE(HAVE_HPUX_THREAD_SUPPORT)
311             CONFIG_OBS="${CONFIG_OJS} hpux-thread.o"
312             CONFIG_SRCS="${CONFIG_SRCS} hpux-thread.c"
313             CONFIG_INITS="${CONFIG_INITS} hpux-thread.c"
314          else
315             AC_MSG_RESULT(no (suppressed because you are not using GCC))
316          fi
317       else
318          AC_MSG_RESULT(no)
319       fi
320       ;;
321    solaris*)
322       AC_MSG_CHECKING(for Solaris thread debugging library)
323       if test -f /usr/lib/libthread_db.so.1 ; then
324          AC_MSG_RESULT(yes)
325          AC_DEFINE(HAVE_THREAD_DB_LIB)
326          CONFIG_OBS="${CONFIG_OBS} sol-thread.o"
327          CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c"
328          AC_CHECK_LIB(dl, dlopen)
329          if test "$GCC" = "yes" ; then
330             # The GNU linker requires the -export-dynamic option to make
331             # all symbols visible in the dynamic symbol table.
332             hold_ldflags=$LDFLAGS
333             AC_MSG_CHECKING(for the ld -export-dynamic flag)
334             LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
335             AC_TRY_LINK(, [int i;], found=yes, found=no)
336             LDFLAGS=$hold_ldflags
337             AC_MSG_RESULT($found)
338             if test $found = yes; then
339                CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -Wl,-export-dynamic"
340             fi
341          fi
342          # Sun randomly tweaked the prototypes in <proc_service.h>
343          # at one point.
344          AC_MSG_CHECKING(if <proc_service.h> is old)
345          AC_CACHE_VAL(gdb_cv_proc_service_is_old,[
346             AC_TRY_COMPILE([
347                 #include <proc_service.h>
348                 ps_err_e ps_pdwrite
349                     (struct ps_prochandle*, psaddr_t, const void*, size_t);
350             ],, gdb_cv_proc_service_is_old=no,
351                 gdb_cv_proc_service_is_old=yes)
352          ])
353          AC_MSG_RESULT($gdb_cv_proc_service_is_old)
354          if test $gdb_cv_proc_service_is_old = yes; then
355             AC_DEFINE(PROC_SERVICE_IS_OLD)
356          fi
357       else
358          AC_MSG_RESULT(no)
359       fi
360       ;;
361    esac
362    AC_SUBST(CONFIG_LDFLAGS)
363 fi
364
365 dnl Handle optional features that can be enabled.
366 ENABLE_CFLAGS=
367
368 AC_ARG_ENABLE(tui,
369 [  --enable-tui            Enable full-screen terminal user interface],
370 [
371   case "${enable_tui}" in
372     yes | no) ;;
373     "")  enable_tui=yes ;;
374     *)
375       AC_MSG_ERROR(Bad value for --enable-tui: ${enableval})
376     ;;
377   esac
378 ])
379 case ${enable_tui} in
380   "yes" )
381     AC_DEFINE(TUI)
382     BUILD_TUI=all-tui
383     TUI_LIBRARY=tui/libtui.a
384   ;;
385   * )
386     BUILD_TUI=
387     TUI_LIBRARY=
388   ;;
389 esac
390 AC_SUBST(BUILD_TUI)
391 AC_SUBST(TUI_LIBRARY)
392
393 AC_ARG_ENABLE(netrom,
394 [  --enable-netrom         Enable NetROM support],
395 [case "${enableval}" in
396 yes)    enable_netrom=yes ;;
397 no)     enable_netrom=no ;;
398 *)      AC_MSG_ERROR(bad value ${enableval} given for netrom option) ;;
399 esac])
400
401 if test "${enable_netrom}" = "yes"; then
402         CONFIG_OBS="${CONFIG_OBS} remote-nrom.o" 
403         CONFIG_SRCS="${CONFIG_SRCS} remote-nrom.c"
404         CONFIG_INITS="${CONFIG_INITS} remote-nrom.c"
405 fi
406
407 AC_ARG_ENABLE(build-warnings,
408 [  --enable-build-warnings Enable build-time compiler warnings if gcc is used],
409 [build_warnings="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations"
410 case "${enableval}" in
411   yes)  ;;
412   no)   build_warnings="-w";;
413   ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
414         build_warnings="${build_warnings} ${t}";;
415   *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
416         build_warnings="${t} ${build_warnings}";;
417   *)    build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
418 esac
419 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
420   echo "Setting warning flags = $build_warnings" 6>&1
421 fi
422 WARN_CFLAGS=""
423 WERROR_CFLAGS=""
424 if test "x${build_warnings}" != x -a "x$GCC" = xyes
425 then
426   # Separate out the -Werror flag as some files just cannot be
427   # compiled with it enabled.
428   for w in ${build_warnings}; do
429     case $w in
430     -Werr*) WERROR_CFLAGS=-Werror ;;
431     *) WARN_CFLAGS="${WARN_CFLAGS} $w"
432     esac
433   done
434 fi],[build_warnings=""])dnl
435
436 AC_SUBST(WARN_CFLAGS)
437 AC_SUBST(WERROR_CFLAGS)
438
439 MMALLOC_CFLAGS=
440 MMALLOC=
441 AC_SUBST(MMALLOC_CFLAGS)
442 AC_SUBST(MMALLOC)
443
444 AC_ARG_WITH(mmalloc,
445 [  --with-mmalloc          Use memory mapped malloc package],
446 [case "${withval}" in
447   yes)  want_mmalloc=true ;;
448   no)   want_mmalloc=false;;
449   *)    AC_MSG_ERROR(bad value ${withval} for GDB with-mmalloc option) ;;
450 esac],[want_mmalloc=false])dnl
451
452 if test x$want_mmalloc = xtrue; then
453    AC_DEFINE(USE_MMALLOC)
454    AC_DEFINE(MMCHECK_FORCE)
455    MMALLOC_CFLAGS="-I$srcdir/../mmalloc"
456    MMALLOC='../mmalloc/libmmalloc.a'
457 fi
458
459
460 # In the Cygwin environment, we need some additional flags.
461 AC_CACHE_CHECK([for cygwin], gdb_cv_os_cygwin,
462 [AC_EGREP_CPP(lose, [
463 #if defined (__CYGWIN__) || defined (__CYGWIN32__)
464 lose
465 #endif],[gdb_cv_os_cygwin=yes],[gdb_cv_os_cygwin=no])])
466
467 DLLTOOL=${DLLTOOL-dlltool}
468 WINDRES=${WINDRES-windres}
469 AC_SUBST(DLLTOOL)
470 AC_SUBST(WINDRES)
471
472 dnl Figure out which term library to use.
473 if test x$gdb_host = xgo32; then
474   TERM_LIB=
475 else
476 if test x$gdb_cv_os_cygwin = xyes; then
477   TERM_LIB='`if test -r ../libtermcap/libtermcap.a; then echo ../libtermcap/libtermcap.a; else echo -ltermcap; fi`'
478 else
479   TERM_LIB=
480   AC_CHECK_LIB(ncurses, tgetent, TERM_LIB=-lncurses,
481     AC_CHECK_LIB(Hcurses, tgetent, TERM_LIB=-lHcurses,
482       AC_CHECK_LIB(termlib, tgetent, TERM_LIB=-ltermlib,
483         AC_CHECK_LIB(termcap, tgetent, TERM_LIB=-ltermcap,
484           AC_CHECK_LIB(curses, tgetent, TERM_LIB=-lcurses,
485             AC_CHECK_LIB(terminfo, tgetent, TERM_LIB=-lterminfo))))))
486
487   if test "x$TERM_LIB" = x
488   then
489     AC_MSG_ERROR(Could not find a term library, e.g. termcap or termlib!)
490   fi
491 fi
492 fi
493 AC_SUBST(TERM_LIB)
494
495 # libreadline needs libuser32.a in a cygwin environment
496 WIN32LIBS=
497 if test x$gdb_cv_os_cygwin = xyes; then
498     WIN32LIBS="-luser32"
499     case "${target}" in
500         *cygwin*) WIN32LIBS="$WIN32LIBS -limagehlp"
501         ;;
502     esac
503 fi
504 AC_SUBST(WIN32LIBS)
505
506 LIBGUI="../libgui/src/libgui.a"
507 GUI_CFLAGS_X="-I${srcdir}/../libgui/src"
508 AC_SUBST(LIBGUI)
509 AC_SUBST(GUI_CFLAGS_X)
510
511 AC_ARG_WITH(cpu,
512 [  --with-cpu=CPU          Set the default CPU variant to debug],
513 [case "${target}" in
514   powerpc-* | powerpcle-* )
515     ## It would be nice to keep this table in sync with the one in
516     ## gcc/configure.
517     case "${with_cpu}" in
518       ppc-uisa | rs6000 | 403 | 403GC | 505 | 860 | 601 | 602 | 603 \
519       | 604 | 750 )
520         ## Those are all handled in variants in rs6000-tdep.c, so they're fine.
521       ;;
522       common | power | power2 | rios | rios1 | rios2 | rsc | rsc1 ) 
523         ## These are all RS6000 variants, as far as GDB is concerned.
524         with_cpu=rs6000
525       ;;
526       603e | ec603e )
527         with_cpu=603
528       ;;
529       604e )
530         with_cpu=604
531       ;;
532       * )
533         AC_MSG_WARN(GDB: unknown --with-cpu value: \`${with_cpu}'; using \`ppc-uisa'.)
534         with_cpu=ppc-uisa
535       ;;
536     esac
537   ;;
538   * )
539     AC_MSG_WARN(GDB may ignore the --with-cpu flag for ${target} targets)
540   ;;
541 esac
542 AC_DEFINE_UNQUOTED(TARGET_CPU_DEFAULT, "${with_cpu}")
543 ],)
544
545
546 ENABLE_GDBTK=
547
548 AC_ARG_ENABLE(gdbtk,
549 [  --enable-gdbtk          Enable GDBTK GUI front end],
550 [case "${enableval}" in
551     yes)
552         case "$host" in
553         *go32*)
554             AC_MSG_WARN([GDB does not support GDBtk on host ${host}.  GDBtk will be disabled.])
555             enable_gdbtk=no ;;
556         *windows*)
557             AC_MSG_WARN([GDB does not support GDBtk on host ${host}.  GDBtk will be disabled.])
558             enable_gdbtk=no ;;
559         *)
560             enable_gdbtk=yes ;;
561         esac ;;
562     no)
563         enable_gdbtk=no  ;;
564     *)
565         AC_MSG_ERROR(bad value ${enableval} given for gdbtk option) ;;
566 esac],
567 [
568 # Default is on for everything but go32 and Cygwin
569 case "$host" in
570     *go32* | *windows*)
571         ;;
572     *)
573         enable_gdbtk=yes ;;
574     esac
575 ])
576
577 WIN32LDAPP=
578 AC_SUBST(WIN32LIBS)
579 AC_SUBST(WIN32LDAPP)
580
581 configdir="unix"
582
583 GDBTKLIBS=
584 if test "${enable_gdbtk}" = "yes"; then
585
586     CY_AC_PATH_TCLCONFIG
587     if test -z "${no_tcl}"; then
588         CY_AC_LOAD_TCLCONFIG
589         CY_AC_PATH_TKCONFIG
590
591         # If $no_tk is nonempty, then we can't do Tk, and there is no
592         # point to doing Tcl.
593         if test -z "${no_tk}"; then
594            CY_AC_LOAD_TKCONFIG
595            CY_AC_PATH_TCLH
596            CY_AC_PATH_TKH
597            CY_AC_PATH_ITCLH
598            CY_AC_PATH_ITKH
599            CY_AC_PATH_TIXH
600
601            # now look for Itcl library stuff
602
603            CY_AC_PATH_ITCLCONFIG
604            if test -z "${no_itcl}"; then
605              CY_AC_LOAD_ITCLCONFIG
606              case "${host}" in
607              *-*-cygwin*)
608                 itcldir=../itcl/itcl/win/
609                 ;;
610              *)
611                 itcldir=../itcl/itcl/unix/
612                 ;;
613              esac
614  
615
616              ITCLLIB="${ITCL_BUILD_LIB_SPEC}"
617              ITCL_DEPS="${itcldir}${ITCL_LIB_FILE}"
618            fi
619
620            
621            # now look for Itk library stuff
622            CY_AC_PATH_ITKCONFIG
623            if test -z "${no_itcl}"; then
624              CY_AC_LOAD_ITKCONFIG
625
626              case "${host}" in
627                *-*-cygwin*)
628                  itkdir=../itcl/itk/win/
629                  ;;
630                *)
631                  itkdir=../itcl/itk/unix/
632                  ;;
633                esac 
634
635              ITKLIB="${ITK_BUILD_LIB_SPEC}"
636              ITK_DEPS="${itkdir}${ITK_LIB_FILE}"
637            fi
638
639            # now look for Tix library stuff
640            CY_AC_PATH_TIXCONFIG
641            if test -z "${no_tix}"; then
642              CY_AC_LOAD_TIXCONFIG
643              TIXLIB="${TIX_BUILD_LIB_SPEC}"
644              TIX_DEPS="${TIX_BUILD_LOCATION}/${TIX_LIB_FILE}"
645            fi
646
647            ENABLE_GDBTK=1
648            ENABLE_CFLAGS="$ENABLE_CFLAGS -DGDBTK"
649            # Tcl/Tk 8.1 require -fwritable strings.  I don't
650            # know whether 8.2 will or not, but I bet it will.
651            # I don't have to worry about 7.x since we don't support it.
652            GDBTK_CFLAGS=""
653            if test "$GCC" = "yes"; then
654                if test "$TCL_VERSION" != "8.0" ; then
655                    GDBTK_CFLAGS="-fwritable-strings"
656                fi
657            fi
658
659            # Include some libraries that Tcl and Tk want.
660            TCL_LIBS='$(LIBGUI) $(ITCL) $(ITK) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
661            CONFIG_DEPS='$(LIBGUI) $(ITCL_DEPS) $(ITK_DEPS) $(TIX_DEPS) $(TK_DEPS) $(TCL_DEPS)'
662            # Yes, the ordering seems wrong here.  But it isn't.
663            # TK_LIBS is the list of libraries that need to be linked
664            # after Tcl/Tk.  Note that this isn't put into LIBS.  If it
665            # were in LIBS then any link tests after this point would
666            # try to include things like `$(LIBGUI)', which wouldn't work.
667            GDBTKLIBS="${TCL_LIBS} ${TK_LIBS}"
668            CONFIG_SRCS="${CONFIG_SRCS} gdbtk/generic/gdbtk.c gdbtk/generic/gdbtk-cmds.c gdbtk/generic/gdbtk-hooks.c gdbtk/generic/gdbtk-varobj.c gdbtk/generic/gdbtk-wrapper.c"
669            CONFIG_OBS="${CONFIG_OBS} gdbtk.o gdbtk-cmds.o gdbtk-hooks.o gdbtk-varobj.o gdbtk-wrapper.o"
670            CONFIG_INITS="${CONFIG_INITS} gdbtk/generic/gdbtk.c gdbtk/generic/gdbtk-cmds.c gdbtk/generic/gdbtk-hooks.c gdbtk/generic/gdbtk-varobj.c gdbtk/generic/gdbtk-wrapper.c"
671
672            if test x$gdb_cv_os_cygwin = xyes; then
673               WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32"
674               WIN32LDAPP="-Wl,--subsystem,console"
675               CONFIG_OBS="${CONFIG_OBS} gdbres.o"
676            fi
677         fi
678     fi
679 fi
680
681 AC_SUBST(ENABLE_GDBTK)
682 AC_SUBST(X_CFLAGS)
683 AC_SUBST(X_LDFLAGS)
684 AC_SUBST(X_LIBS)
685 AC_SUBST(ITCLLIB)
686 AC_SUBST(ITCL_DEPS)
687 AC_SUBST(ITKLIB)
688 AC_SUBST(ITK_DEPS)
689 AC_SUBST(TIXLIB)
690 AC_SUBST(TIX_DEPS)
691 AC_SUBST(GDBTKLIBS)
692 AC_SUBST(GDBTK_CFLAGS)
693
694 AC_PATH_X
695
696  
697 # Unlike the sim directory, whether a simulator is linked is controlled by 
698 # presence of a SIM= and a SIM_OBS= definition in the target '.mt' file.  
699 # This code just checks for a few cases where we'd like to ignore those
700 # definitions, even when they're present in the '.mt' file.  These cases
701 # are when --disable-sim is specified, or if the simulator directory is
702 # not part of the soruce tree.
703 #
704 AC_ARG_ENABLE(sim,
705 [  --enable-sim            Link gdb with simulator],
706 [echo "enable_sim = $enable_sim";
707  echo "enableval = ${enableval}";
708  case "${enableval}" in
709   yes) ignore_sim=false ;;
710   no)  ignore_sim=true ;;
711   *)   ignore_sim=false ;;
712  esac],
713 [ignore_sim=false])
714
715 if test ! -d "${srcdir}/../sim"; then
716   ignore_sim=true
717 fi
718
719 if test "${ignore_sim}" = "true"; then
720     IGNORE_SIM="SIM="
721     IGNORE_SIM_OBS="SIM_OBS="
722 else
723     IGNORE_SIM=""
724     IGNORE_SIM_OBS=""
725     AC_DEFINE(WITH_SIM)
726 fi
727 AC_SUBST(IGNORE_SIM)
728 AC_SUBST(IGNORE_SIM_OBS)
729
730 AC_SUBST(ENABLE_CFLAGS)
731
732 AC_SUBST(CONFIG_OBS)
733 AC_SUBST(CONFIG_DEPS)
734 AC_SUBST(CONFIG_SRCS)
735 AC_SUBST(CONFIG_INITS)
736
737 # Begin stuff to support --enable-shared
738 AC_ARG_ENABLE(shared,
739 [  --enable-shared         Use shared libraries],
740 [case "${enableval}" in
741   yes) shared=true ;;
742   no)  shared=false ;;
743   *) shared=true ;;
744 esac])dnl
745
746 HLDFLAGS=
747 HLDENV=
748 # If we have shared libraries, try to set rpath reasonably.
749 if test "${shared}" = "true"; then
750   case "${host}" in
751   *-*-hpux*)
752     HLDFLAGS='-Wl,+s,+b,$(libdir)'
753     ;;
754   *-*-irix5* | *-*-irix6*)
755     HLDFLAGS='-Wl,-rpath,$(libdir)'
756     ;;
757   *-*-linux*aout*)
758     ;;
759   *-*-linux* | *-pc-linux-gnu)
760     HLDFLAGS='-Wl,-rpath,$(libdir)'
761     ;;
762   *-*-solaris*)
763     HLDFLAGS='-R $(libdir)'
764     ;;
765   *-*-sysv4*)
766     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;'
767     ;;
768   esac
769 fi
770
771 # On SunOS, if the linker supports the -rpath option, use it to
772 # prevent ../bfd and ../opcodes from being included in the run time
773 # search path.
774 case "${host}" in
775   *-*-sunos*)
776     echo 'main () { }' > conftest.c
777     ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t
778     if grep 'unrecognized' conftest.t >/dev/null 2>&1; then
779       :
780     elif grep 'No such file' conftest.t >/dev/null 2>&1; then
781       :
782     elif grep 'do not mix' conftest.t >/dev/null 2>&1; then
783       :
784     elif grep 'some text already loaded' conftest.t >/dev/null 2>&1; then
785       :
786     elif test "${shared}" = "true"; then
787       HLDFLAGS='-Wl,-rpath=$(libdir)'
788     else
789       HLDFLAGS='-Wl,-rpath='
790     fi
791     rm -f conftest.t conftest.c conftest
792     ;;
793 esac
794 AC_SUBST(HLDFLAGS)
795 AC_SUBST(HLDENV)
796 # End stuff to support --enable-shared
797
798 # target_subdir is used by the testsuite to find the target libraries.
799 target_subdir=
800 if test "${host}" != "${target}"; then
801     target_subdir="${target_alias}/"
802 fi
803 AC_SUBST(target_subdir)
804
805 frags=
806 host_makefile_frag=${srcdir}/config/${gdb_host_cpu}/${gdb_host}.mh
807 if test ! -f ${host_makefile_frag}; then
808 AC_MSG_ERROR("*** Gdb does not support host ${host}")
809 fi
810 frags="$frags $host_makefile_frag"
811
812 target_makefile_frag=${srcdir}/config/${gdb_target_cpu}/${gdb_target}.mt
813 if test ! -f ${target_makefile_frag}; then
814 AC_MSG_ERROR("*** Gdb does not support target ${target}")
815 fi
816 frags="$frags $target_makefile_frag"
817
818 AC_SUBST_FILE(host_makefile_frag)
819 AC_SUBST_FILE(target_makefile_frag)
820 AC_SUBST(frags)
821
822 changequote(,)dnl
823 hostfile=`sed -n '
824 s/XM_FILE[      ]*=[    ]*\([^  ]*\)/\1/p
825 ' ${host_makefile_frag}`
826
827 targetfile=`sed -n '
828 s/TM_FILE[      ]*=[    ]*\([^  ]*\)/\1/p
829 ' ${target_makefile_frag}`
830
831 # these really aren't orthogonal true/false values of the same condition,
832 # but shells are slow enough that I like to reuse the test conditions
833 # whenever possible
834 if test "${target}" = "${host}"; then
835 nativefile=`sed -n '
836 s/NAT_FILE[     ]*=[    ]*\([^  ]*\)/\1/p
837 ' ${host_makefile_frag}`
838 # else
839 # GDBserver is only useful in a "native" enviroment
840 # configdirs=`echo $configdirs | sed 's/gdbserver//'`
841 fi
842 changequote([,])
843
844 SUBDIRS="doc testsuite nlm"
845 if test "${enable_multi_ice}" = "yes"; then
846   SUBDIRS="${SUBDIRS} multi-ice"
847 fi
848
849 AC_SUBST(SUBDIRS)
850
851 # If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile
852 # (NAT_FILE) is not set in config/*/*.m[ht] files, we don't make the
853 # corresponding links.  But we have to remove the xm.h files and tm.h
854 # files anyway, e.g. when switching from "configure host" to
855 # "configure none".
856
857 files=
858 links=
859 rm -f xm.h
860 if test "${hostfile}" != ""; then
861 files="${files} config/${gdb_host_cpu}/${hostfile}"
862 links="${links} xm.h"
863 fi
864 rm -f tm.h
865 if test "${targetfile}" != ""; then
866 files="${files} config/${gdb_target_cpu}/${targetfile}"
867 links="${links} tm.h"
868 fi
869 rm -f nm.h
870 if test "${nativefile}" != ""; then
871 files="${files} config/${gdb_host_cpu}/${nativefile}"
872 links="${links} nm.h"
873 else
874 # A cross-only configuration.
875 files="${files} config/nm-empty.h"
876 links="${links} nm.h"
877 fi
878 AC_PROG_LN_S
879 # Make it possible to use the GUI without doing a full install
880 if test "${enable_gdbtk}" = "yes" ; then
881   if test "$LN_S" = "ln -s" -a ! -f gdbtcl ; then
882   echo linking $srcdir/gdbtk/library to gdbtcl
883   $LN_S $srcdir/gdbtk/library gdbtcl
884   else
885   echo Warning: Unable to link $srcdir/gdbtk/library to gdbtcl.  You will need to do a
886   echo "         " make install before you are able to run the GUI.
887   fi
888 fi
889
890 AC_LINK_FILES($files, $links)
891
892 dnl Check for exe extension set on certain hosts (e.g. Win32)
893 AC_EXEEXT
894
895 AC_CONFIG_SUBDIRS($configdirs)
896 AC_OUTPUT(Makefile tui/Makefile .gdbinit:gdbinit.in,
897 [
898 dnl Autoconf doesn't provide a mechanism for modifying definitions 
899 dnl provided by makefile fragments.
900 dnl
901 if test "${nativefile}" = ""; then
902 sed -e '/^NATDEPFILES[[         ]]*=[[  ]]*/s//# NATDEPFILES=/' \
903         < Makefile > Makefile.tem
904 mv -f Makefile.tem Makefile
905 fi
906
907 changequote(,)dnl
908 sed -e '/^TM_FILE[      ]*=/s,^TM_FILE[         ]*=[    ]*,&config/'"${gdb_target_cpu}"'/,
909 /^XM_FILE[      ]*=/s,^XM_FILE[         ]*=[    ]*,&config/'"${gdb_host_cpu}"'/,
910 /^NAT_FILE[     ]*=/s,^NAT_FILE[        ]*=[    ]*,&config/'"${gdb_host_cpu}"'/,' <Makefile >Makefile.tmp
911 mv -f Makefile.tmp Makefile
912 changequote([,])dnl
913
914
915 case x$CONFIG_HEADERS in
916 xconfig.h:config.in)
917 echo > stamp-h ;;
918 esac
919 ],
920 [
921 gdb_host_cpu=$gdb_host_cpu
922 gdb_target_cpu=$gdb_target_cpu
923 nativefile=$nativefile
924 ])
925
926 exit 0