1 dnl Autoconf configure script for GDB, the GNU debugger.
2 dnl Copyright 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
4 dnl This file is part of GDB.
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.
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.
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.
20 dnl Process this file with autoconf to produce a configure script.
24 AC_CONFIG_HEADER(config.h:config.in)
31 AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..)
34 dnl gdb doesn't use gettext, but bfd does. We call this to ensure we
35 dnl link with the correct libraries.
39 dnl List of object files added by configure.
45 configdirs="doc testsuite"
47 AC_ARG_ENABLE(multi-ice,
48 [ --enable-multi-ice Build the multi-ice-gdb-server],
49 [case "${enableval}" in
50 yes ) enable_multi_ice="yes" ;;
51 no) enable_multi_ice="no" ;;
52 *) AC_MSG_ERROR(Bad value for --enable-multi-ice: ${enableval}) ;;
56 if test "${enable_multi_ice}" = "yes"; then
57 configdirs="${configdirs} multi-ice"
63 . ${srcdir}/configure.host
65 . ${srcdir}/configure.tgt
73 AC_CHECK_TOOL(RANLIB, ranlib, :)
82 AC_CHECK_HEADERS(ctype.h curses.h endian.h link.h \
83 memory.h objlist.h ptrace.h sgtty.h stddef.h stdlib.h \
84 string.h sys/procfs.h sys/ptrace.h sys/reg.h \
85 term.h termio.h termios.h unistd.h wait.h sys/wait.h \
86 wchar.h wctype.h asm/debugreg.h sys/debugreg.h sys/select.h \
92 AC_CHECK_FUNCS(setpgid sbrk sigaction isascii bzero bcopy btowc poll sigprocmask)
95 dnl See if ptrace.h provides the PTRACE_GETXFPREGS request.
96 dnl PTRACE_GETXFPREGS is a Cygnus invention, since we wrote our own
97 dnl Linux kernel patch for SSE support. That patch may or may not
98 dnl actually make it into the official distribution. If you find that
99 dnl years have gone by since this configure test was added, and Linux
100 dnl isn't using PTRACE_GETXFPREGS, that means that our patch didn't
101 dnl make it, and you can delete this code.
102 AC_MSG_CHECKING(for PTRACE_GETXFPREGS)
103 AC_CACHE_VAL(gdb_cv_have_ptrace_getxfpregs,
104 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
105 [PTRACE_GETXFPREGS;],
106 [gdb_cv_have_ptrace_getxfpregs=yes],
107 [gdb_cv_have_ptrace_getxfpregs=no])])
108 AC_MSG_RESULT($gdb_cv_have_ptrace_getxfpregs)
109 if test $gdb_cv_have_ptrace_getxfpregs = yes; then
110 AC_DEFINE(HAVE_PTRACE_GETXFPREGS)
113 AC_CHECK_LIB(socket, socketpair)
114 AC_CHECK_FUNCS(socketpair)
117 BFD_NEED_DECLARATION(malloc)
118 BFD_NEED_DECLARATION(realloc)
119 BFD_NEED_DECLARATION(free)
120 BFD_NEED_DECLARATION(strerror)
121 BFD_NEED_DECLARATION(strdup)
122 BFD_NEED_DECLARATION(strstr)
125 # The following save_state_t checkery is only necessary for HPUX
126 # versions earlier than 10.20. When those fade from memory, this
127 # could be expunged. --jsm 1999-03-22
129 AC_MSG_CHECKING(for HPUX save_state structure)
130 AC_EGREP_HEADER(save_state_t, machine/save_state.h,
131 gdb_cv_hpux_savestate=yes, gdb_cv_hpux_savestate=no)
132 AC_EGREP_HEADER(ss_wide, machine/save_state.h, gdb_cv_hpux_sswide=yes,
133 gdb_cv_hpux_sswide=no)
134 if test $gdb_cv_hpux_savestate = yes
136 AC_DEFINE(HAVE_STRUCT_SAVE_STATE_T, 1)
138 if test $gdb_cv_hpux_sswide = yes
140 AC_DEFINE(HAVE_STRUCT_MEMBER_SS_WIDE, 1)
142 AC_MSG_RESULT($gdb_cv_hpux_sswide)
145 # If we are configured native on GNU/Linux, work around problems with
147 # Also detect which type of /proc is in use, such as for Unixware.
149 if test "${target}" = "${host}"; then
150 gdb_cv_hostos_is_solaris=no
152 i[[3456]]86-*-linux*)
153 AC_DEFINE(START_INFERIOR_TRAPS_EXPECTED,2)
154 AC_DEFINE(sys_quotactl)
157 gdb_cv_hostos_is_solaris=yes ;;
159 AC_MSG_CHECKING(for directory proc entries)
160 # The [gdb_host != sun4sol2] hack is because Solaris does provide the
161 # multiple procfs files as of Solaris 2.6, but GDB can't use it right now.
162 if test "$ac_cv_header_sys_procfs_h" = yes -a \
163 "$gdb_cv_hostos_is_solaris" = no \
168 -a -f /proc/$$/status; then
170 AC_DEFINE(HAVE_MULTIPLE_PROC_FDS)
176 if test "$ac_cv_header_sys_procfs_h" = yes; then
177 BFD_HAVE_SYS_PROCFS_TYPE(pstatus_t)
178 BFD_HAVE_SYS_PROCFS_TYPE(prrun_t)
179 BFD_HAVE_SYS_PROCFS_TYPE(gregset_t)
180 BFD_HAVE_SYS_PROCFS_TYPE(fpregset_t)
182 dnl Check for PIOCSET ioctl entry
184 AC_MSG_CHECKING(for PIOCSET ioctl entry in sys/procfs.h)
185 AC_CACHE_VAL(gdb_cv_have_procfs_piocset,
186 [AC_TRY_COMPILE([#include <unistd.h>
187 #include <sys/types.h>
188 #include <sys/procfs.h>
191 dummy = ioctl(0, PIOCSET, &dummy);
193 gdb_cv_have_procfs_piocset=yes, gdb_cv_have_procfs_piocset=no)])
194 AC_MSG_RESULT($gdb_cv_have_procfs_piocset)
195 if test $gdb_cv_have_procfs_piocset = yes; then
196 AC_DEFINE(HAVE_PROCFS_PIOCSET)
200 dnl See if host has libm. This is usually needed by simulators.
201 AC_CHECK_LIB(m, main)
203 dnl Solaris puts wctype in /usr/lib/libw.a before Solaris 2.6.
205 dnl A bug in GNU ld 2.9.1 causes a problem if we link in -lw
206 dnl under Solaris 2.6 because it is some funky empty library.
207 dnl So only link in libw if we have to.
208 AC_CHECK_LIB(c, wctype,: ,AC_CHECK_LIB(w, wctype))
210 dnl See if compiler supports "long long" type.
212 AC_MSG_CHECKING(for long long support in compiler)
213 AC_CACHE_VAL(gdb_cv_c_long_long,
215 extern long long foo;
216 switch (foo & 2) { case 0: return 1; }
218 gdb_cv_c_long_long=yes, gdb_cv_c_long_long=no)])
219 AC_MSG_RESULT($gdb_cv_c_long_long)
220 if test $gdb_cv_c_long_long = yes; then
221 AC_DEFINE(CC_HAS_LONG_LONG)
224 dnl See if the compiler and runtime support printing long long
226 AC_MSG_CHECKING(for long long support in printf)
227 AC_CACHE_VAL(gdb_cv_printf_has_long_long,
232 l = (l << 16) + 0x0123;
233 l = (l << 16) + 0x4567;
234 l = (l << 16) + 0x89ab;
235 l = (l << 16) + 0xcdef;
236 sprintf (buf, "0x%016llx", l);
237 return (strcmp ("0x0123456789abcdef", buf));
239 gdb_cv_printf_has_long_long=yes,
240 gdb_cv_printf_has_long_long=no,
241 gdb_cv_printf_has_long_long=no)])
242 if test $gdb_cv_printf_has_long_long = yes; then
243 AC_DEFINE(PRINTF_HAS_LONG_LONG)
245 AC_MSG_RESULT($gdb_cv_printf_has_long_long)
247 dnl See if compiler supports "long double" type. Can't use AC_C_LONG_DOUBLE
248 dnl because autoconf complains about cross-compilation issues. However, this
249 dnl code uses the same variables as the macro for compatibility.
251 AC_MSG_CHECKING(for long double support in compiler)
252 AC_CACHE_VAL(ac_cv_c_long_double,
253 [AC_TRY_COMPILE(, [long double foo;],
254 ac_cv_c_long_double=yes, ac_cv_c_long_double=no)])
255 AC_MSG_RESULT($ac_cv_c_long_double)
256 if test $ac_cv_c_long_double = yes; then
257 AC_DEFINE(HAVE_LONG_DOUBLE)
260 dnl See if the compiler and runtime support printing long doubles
262 AC_MSG_CHECKING(for long double support in printf)
263 AC_CACHE_VAL(gdb_cv_printf_has_long_double,
267 long double f = 3.141592653;
268 sprintf (buf, "%Lg", f);
269 return (strncmp ("3.14159", buf, 7));
271 gdb_cv_printf_has_long_double=yes,
272 gdb_cv_printf_has_long_double=no,
273 gdb_cv_printf_has_long_double=no)])
274 if test $gdb_cv_printf_has_long_double = yes; then
275 AC_DEFINE(PRINTF_HAS_LONG_DOUBLE)
277 AC_MSG_RESULT($gdb_cv_printf_has_long_double)
279 dnl See if the compiler and runtime support scanning long doubles
281 AC_MSG_CHECKING(for long double support in scanf)
282 AC_CACHE_VAL(gdb_cv_scanf_has_long_double,
285 char *buf = "3.141592653";
287 sscanf (buf, "%Lg", &f);
288 return !(f > 3.14159 && f < 3.14160);
290 gdb_cv_scanf_has_long_double=yes,
291 gdb_cv_scanf_has_long_double=no,
292 gdb_cv_scanf_has_long_double=no)])
293 if test $gdb_cv_scanf_has_long_double = yes; then
294 AC_DEFINE(SCANF_HAS_LONG_DOUBLE)
296 AC_MSG_RESULT($gdb_cv_scanf_has_long_double)
300 dnl See if thread_db library is around for Solaris thread debugging. Note that
301 dnl we must explicitly test for version 1 of the library because version 0
302 dnl (present on Solaris 2.4 or earlier) doesn't have the same API.
304 dnl Note that we only want this if we are both native (host == target), and
305 dnl not doing a canadian cross build (build == host).
307 if test ${build} = ${host} -a ${host} = ${target} ; then
310 AC_MSG_CHECKING(for HPUX/OSF thread support)
311 if test -f /usr/include/dce/cma_config.h ; then
312 if test "$GCC" = "yes" ; then
314 AC_DEFINE(HAVE_HPUX_THREAD_SUPPORT)
315 CONFIG_OBS="${CONFIG_OJS} hpux-thread.o"
316 CONFIG_SRCS="${CONFIG_SRCS} hpux-thread.c"
318 AC_MSG_RESULT(no (suppressed because you are not using GCC))
325 AC_MSG_CHECKING(for Solaris thread debugging library)
326 if test -f /usr/lib/libthread_db.so.1 ; then
328 AC_DEFINE(HAVE_THREAD_DB_LIB)
329 CONFIG_OBS="${CONFIG_OBS} sol-thread.o"
330 CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c"
331 AC_CHECK_LIB(dl, dlopen)
332 if test "$GCC" = "yes" ; then
333 # The GNU linker requires the -export-dynamic option to make
334 # all symbols visible in the dynamic symbol table.
335 hold_ldflags=$LDFLAGS
336 AC_MSG_CHECKING(for the ld -export-dynamic flag)
337 LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
338 AC_TRY_LINK(, [int i;], found=yes, found=no)
339 LDFLAGS=$hold_ldflags
340 AC_MSG_RESULT($found)
341 if test $found = yes; then
342 CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -Wl,-export-dynamic"
345 # Sun randomly tweaked the prototypes in <proc_service.h>
347 AC_MSG_CHECKING(if <proc_service.h> is old)
348 AC_CACHE_VAL(gdb_cv_proc_service_is_old,[
350 #include <proc_service.h>
352 (struct ps_prochandle*, psaddr_t, const void*, size_t);
353 ],, gdb_cv_proc_service_is_old=no,
354 gdb_cv_proc_service_is_old=yes)
356 AC_MSG_RESULT($gdb_cv_proc_service_is_old)
357 if test $gdb_cv_proc_service_is_old = yes; then
358 AC_DEFINE(PROC_SERVICE_IS_OLD)
365 AC_SUBST(CONFIG_LDFLAGS)
368 dnl Handle optional features that can be enabled.
372 [ --enable-tui Enable full-screen terminal user interface],
374 case "${enable_tui}" in
376 "") enable_tui=yes ;;
378 AC_MSG_ERROR(Bad value for --enable-tui: ${enableval})
382 case ${enable_tui} in
386 TUI_LIBRARY=tui/libtui.a
394 AC_SUBST(TUI_LIBRARY)
396 AC_ARG_ENABLE(netrom,
397 [ --enable-netrom Enable NetROM support],
398 [case "${enableval}" in
399 yes) enable_netrom=yes ;;
400 no) enable_netrom=no ;;
401 *) AC_MSG_ERROR(bad value ${enableval} given for netrom option) ;;
404 if test "${enable_netrom}" = "yes"; then
405 CONFIG_OBS="${CONFIG_OBS} remote-nrom.o"
406 CONFIG_SRCS="${CONFIG_SRCS} remote-nrom.c"
409 AC_ARG_ENABLE(build-warnings,
410 [ --enable-build-warnings Enable build-time compiler warnings if gcc is used],
411 [build_warnings="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations"
412 case "${enableval}" in
414 no) build_warnings="-w";;
415 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
416 build_warnings="${build_warnings} ${t}";;
417 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
418 build_warnings="${t} ${build_warnings}";;
419 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
421 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
422 echo "Setting warning flags = $build_warnings" 6>&1
426 if test "x${build_warnings}" != x -a "x$GCC" = xyes
428 # Separate out the -Werror flag as some files just cannot be
429 # compiled with it enabled.
430 for w in ${build_warnings}; do
432 -Werr*) WERROR_CFLAGS=-Werror ;;
433 *) WARN_CFLAGS="${WARN_CFLAGS} $w"
436 fi],[build_warnings=""])dnl
438 AC_SUBST(WARN_CFLAGS)
439 AC_SUBST(WERROR_CFLAGS)
443 AC_SUBST(MMALLOC_CFLAGS)
447 [ --with-mmalloc Use memory mapped malloc package],
448 [case "${withval}" in
449 yes) want_mmalloc=true ;;
450 no) want_mmalloc=false;;
451 *) AC_MSG_ERROR(bad value ${withval} for GDB with-mmalloc option) ;;
452 esac],[want_mmalloc=false])dnl
454 if test x$want_mmalloc = xtrue; then
455 AC_DEFINE(USE_MMALLOC)
456 AC_DEFINE(MMCHECK_FORCE)
457 MMALLOC_CFLAGS="-I$srcdir/../mmalloc"
458 MMALLOC='../mmalloc/libmmalloc.a'
462 # In the Cygwin environment, we need some additional flags.
463 AC_CACHE_CHECK([for cygwin], gdb_cv_os_cygwin,
464 [AC_EGREP_CPP(lose, [
465 #if defined (__CYGWIN__) || defined (__CYGWIN32__)
467 #endif],[gdb_cv_os_cygwin=yes],[gdb_cv_os_cygwin=no])])
469 DLLTOOL=${DLLTOOL-dlltool}
470 WINDRES=${WINDRES-windres}
474 dnl Figure out which term library to use.
475 if test x$gdb_host = xgo32; then
478 if test x$gdb_cv_os_cygwin = xyes; then
479 TERM_LIB='`if test -r ../libtermcap/libtermcap.a; then echo ../libtermcap/libtermcap.a; else echo -ltermcap; fi`'
482 AC_CHECK_LIB(ncurses, tgetent, TERM_LIB=-lncurses,
483 AC_CHECK_LIB(Hcurses, tgetent, TERM_LIB=-lHcurses,
484 AC_CHECK_LIB(termlib, tgetent, TERM_LIB=-ltermlib,
485 AC_CHECK_LIB(termcap, tgetent, TERM_LIB=-ltermcap,
486 AC_CHECK_LIB(curses, tgetent, TERM_LIB=-lcurses,
487 AC_CHECK_LIB(terminfo, tgetent, TERM_LIB=-lterminfo))))))
489 if test "x$TERM_LIB" = x
491 AC_MSG_ERROR(Could not find a term library, e.g. termcap or termlib!)
497 # libreadline needs libuser32.a in a cygwin environment
499 if test x$gdb_cv_os_cygwin = xyes; then
508 # Unlike the sim directory, whether a simulator is linked is controlled by
509 # presence of a SIM= and a SIM_OBS= definition in the target '.mt' file.
510 # This code just checks for a few cases where we'd like to ignore those
511 # definitions, even when they're present in the '.mt' file. These cases
512 # are when --disable-sim is specified, or if the simulator directory is
513 # not part of the soruce tree.
516 [ --enable-sim Link gdb with simulator],
517 [echo "enable_sim = $enable_sim";
518 echo "enableval = ${enableval}";
519 case "${enableval}" in
520 yes) ignore_sim=false ;;
521 no) ignore_sim=true ;;
522 *) ignore_sim=false ;;
526 if test ! -d "${srcdir}/../sim"; then
530 if test "${ignore_sim}" = "true"; then
532 IGNORE_SIM_OBS="SIM_OBS="
539 AC_SUBST(IGNORE_SIM_OBS)
541 AC_SUBST(ENABLE_CFLAGS)
544 AC_SUBST(CONFIG_DEPS)
545 AC_SUBST(CONFIG_SRCS)
547 # Begin stuff to support --enable-shared
548 AC_ARG_ENABLE(shared,
549 [ --enable-shared Use shared libraries],
550 [case "${enableval}" in
558 # If we have shared libraries, try to set rpath reasonably.
559 if test "${shared}" = "true"; then
562 HLDFLAGS='-Wl,+s,+b,$(libdir)'
564 *-*-irix5* | *-*-irix6*)
565 HLDFLAGS='-Wl,-rpath,$(libdir)'
569 *-*-linux* | *-pc-linux-gnu)
570 HLDFLAGS='-Wl,-rpath,$(libdir)'
573 HLDFLAGS='-R $(libdir)'
576 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;'
581 # On SunOS, if the linker supports the -rpath option, use it to
582 # prevent ../bfd and ../opcodes from being included in the run time
586 echo 'main () { }' > conftest.c
587 ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t
588 if grep 'unrecognized' conftest.t >/dev/null 2>&1; then
590 elif grep 'No such file' conftest.t >/dev/null 2>&1; then
592 elif grep 'do not mix' conftest.t >/dev/null 2>&1; then
594 elif grep 'some text already loaded' conftest.t >/dev/null 2>&1; then
596 elif test "${shared}" = "true"; then
597 HLDFLAGS='-Wl,-rpath=$(libdir)'
599 HLDFLAGS='-Wl,-rpath='
601 rm -f conftest.t conftest.c conftest
606 # End stuff to support --enable-shared
608 # target_subdir is used by the testsuite to find the target libraries.
610 if test "${host}" != "${target}"; then
611 target_subdir="${target_alias}/"
613 AC_SUBST(target_subdir)
616 host_makefile_frag=${srcdir}/config/${gdb_host_cpu}/${gdb_host}.mh
617 if test ! -f ${host_makefile_frag}; then
618 AC_MSG_ERROR("*** Gdb does not support host ${host}")
620 frags="$frags $host_makefile_frag"
622 target_makefile_frag=${srcdir}/config/${gdb_target_cpu}/${gdb_target}.mt
623 if test ! -f ${target_makefile_frag}; then
624 AC_MSG_ERROR("*** Gdb does not support target ${target}")
626 frags="$frags $target_makefile_frag"
628 AC_SUBST_FILE(host_makefile_frag)
629 AC_SUBST_FILE(target_makefile_frag)
634 s/XM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
635 ' ${host_makefile_frag}`
638 s/TM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
639 ' ${target_makefile_frag}`
641 # these really aren't orthogonal true/false values of the same condition,
642 # but shells are slow enough that I like to reuse the test conditions
644 if test "${target}" = "${host}"; then
646 s/NAT_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
647 ' ${host_makefile_frag}`
649 # GDBserver is only useful in a "native" enviroment
650 # configdirs=`echo $configdirs | sed 's/gdbserver//'`
654 SUBDIRS="doc testsuite nlm"
655 if test "${enable_multi_ice}" = "yes"; then
656 SUBDIRS="${SUBDIRS} multi-ice"
661 # If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile
662 # (NAT_FILE) is not set in config/*/*.m[ht] files, we don't make the
663 # corresponding links. But we have to remove the xm.h files and tm.h
664 # files anyway, e.g. when switching from "configure host" to
670 if test "${hostfile}" != ""; then
671 files="${files} config/${gdb_host_cpu}/${hostfile}"
672 links="${links} xm.h"
675 if test "${targetfile}" != ""; then
676 files="${files} config/${gdb_target_cpu}/${targetfile}"
677 links="${links} tm.h"
680 if test "${nativefile}" != ""; then
681 files="${files} config/${gdb_host_cpu}/${nativefile}"
682 links="${links} nm.h"
684 # A cross-only configuration.
685 files="${files} config/nm-empty.h"
686 links="${links} nm.h"
689 AC_LINK_FILES($files, $links)
691 dnl Check for exe extension set on certain hosts (e.g. Win32)
694 AC_CONFIG_SUBDIRS($configdirs)
695 AC_OUTPUT(Makefile tui/Makefile .gdbinit:gdbinit.in,
697 dnl Autoconf doesn't provide a mechanism for modifying definitions
698 dnl provided by makefile fragments.
700 if test "${nativefile}" = ""; then
701 sed -e '/^NATDEPFILES[[ ]]*=[[ ]]*/s//# NATDEPFILES=/' \
702 < Makefile > Makefile.tem
703 mv -f Makefile.tem Makefile
707 sed -e '/^TM_FILE[ ]*=/s,^TM_FILE[ ]*=[ ]*,&config/'"${gdb_target_cpu}"'/,
708 /^XM_FILE[ ]*=/s,^XM_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,
709 /^NAT_FILE[ ]*=/s,^NAT_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,' <Makefile >Makefile.tmp
710 mv -f Makefile.tmp Makefile
714 case x$CONFIG_HEADERS in
720 gdb_host_cpu=$gdb_host_cpu
721 gdb_target_cpu=$gdb_target_cpu
722 nativefile=$nativefile