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