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"
50 . ${srcdir}/configure.host
52 . ${srcdir}/configure.tgt
60 AC_CHECK_TOOL(RANLIB, ranlib, :)
69 AC_CHECK_HEADERS(ctype.h curses.h endian.h link.h \
70 memory.h objlist.h ptrace.h sgtty.h stddef.h stdlib.h \
71 string.h sys/procfs.h sys/ptrace.h sys/reg.h \
72 term.h termio.h termios.h unistd.h wait.h sys/wait.h \
73 wchar.h wctype.h asm/debugreg.h sys/debugreg.h sys/select.h)
78 AC_CHECK_FUNCS(setpgid sbrk sigaction isascii bzero bcopy btowc)
81 BFD_NEED_DECLARATION(malloc)
82 BFD_NEED_DECLARATION(realloc)
83 BFD_NEED_DECLARATION(free)
84 BFD_NEED_DECLARATION(strerror)
85 BFD_NEED_DECLARATION(strdup)
88 # The following save_state_t checkery is only necessary for HPUX
89 # versions earlier than 10.20. When those fade from memory, this
90 # could be expunged. --jsm 1999-03-22
92 AC_MSG_CHECKING(for HPUX save_state structure)
93 AC_EGREP_HEADER(save_state_t, machine/save_state.h,
94 gdb_cv_hpux_savestate=yes, gdb_cv_hpux_savestate=no)
95 AC_EGREP_HEADER(ss_wide, machine/save_state.h, gdb_cv_hpux_sswide=yes,
96 gdb_cv_hpux_sswide=no)
97 if test $gdb_cv_hpux_savestate = yes
99 AC_DEFINE(HAVE_STRUCT_SAVE_STATE_T, 1)
101 if test $gdb_cv_hpux_sswide = yes
103 AC_DEFINE(HAVE_STRUCT_MEMBER_SS_WIDE, 1)
105 AC_MSG_RESULT($gdb_cv_hpux_sswide)
108 # If we are configured native on GNU/Linux, work around problems with
110 # Also detect which type of /proc is in use, such as for Unixware.
112 if test "${target}" = "${host}"; then
113 gdb_cv_hostos_is_solaris=no
115 i[[3456]]86-*-linux*)
116 AC_DEFINE(START_INFERIOR_TRAPS_EXPECTED,2)
117 AC_DEFINE(sys_quotactl)
120 gdb_cv_hostos_is_solaris=yes ;;
122 AC_MSG_CHECKING(for directory proc entries)
123 # The [gdb_host != sun4sol2] hack is because Solaris does provide the
124 # multiple procfs files as of Solaris 2.6, but GDB can't use it right now.
125 if test "$ac_cv_header_sys_procfs_h" = yes -a \
126 "$gdb_cv_hostos_is_solaris" = no \
131 -a -f /proc/$$/status; then
133 AC_DEFINE(HAVE_MULTIPLE_PROC_FDS)
139 if test "$ac_cv_header_sys_procfs_h" = yes; then
140 BFD_HAVE_SYS_PROCFS_TYPE(pstatus_t)
141 BFD_HAVE_SYS_PROCFS_TYPE(prrun_t)
142 BFD_HAVE_SYS_PROCFS_TYPE(gregset_t)
143 BFD_HAVE_SYS_PROCFS_TYPE(fpregset_t)
145 dnl Check for PIOCSET ioctl entry
147 AC_MSG_CHECKING(for PIOCSET ioctl entry in sys/procfs.h)
148 AC_CACHE_VAL(gdb_cv_have_procfs_piocset,
149 [AC_TRY_COMPILE([#include <unistd.h>
150 #include <sys/types.h>
151 #include <sys/procfs.h>
154 dummy = ioctl(0, PIOCSET, &dummy);
156 gdb_cv_have_procfs_piocset=yes, gdb_cv_have_procfs_piocset=no)])
157 AC_MSG_RESULT($gdb_cv_have_procfs_piocset)
158 if test $gdb_cv_have_procfs_piocset = yes; then
159 AC_DEFINE(HAVE_PROCFS_PIOCSET)
163 dnl See if host has libm. This is usually needed by simulators.
164 AC_CHECK_LIB(m, main)
166 dnl Solaris puts wctype in /usr/lib/libw.a before Solaris 2.6.
168 dnl A bug in GNU ld 2.9.1 causes a problem if we link in -lw
169 dnl under Solaris 2.6 because it is some funky empty library.
170 dnl So only link in libw if we have to.
171 AC_CHECK_LIB(c, wctype,: ,AC_CHECK_LIB(w, wctype))
173 dnl See if compiler supports "long long" type.
175 AC_MSG_CHECKING(for long long support in compiler)
176 AC_CACHE_VAL(gdb_cv_c_long_long,
178 extern long long foo;
179 switch (foo & 2) { case 0: return 1; }
181 gdb_cv_c_long_long=yes, gdb_cv_c_long_long=no)])
182 AC_MSG_RESULT($gdb_cv_c_long_long)
183 if test $gdb_cv_c_long_long = yes; then
184 AC_DEFINE(CC_HAS_LONG_LONG)
187 dnl See if the compiler and runtime support printing long long
189 AC_MSG_CHECKING(for long long support in printf)
190 AC_CACHE_VAL(gdb_cv_printf_has_long_long,
195 l = (l << 16) + 0x0123;
196 l = (l << 16) + 0x4567;
197 l = (l << 16) + 0x89ab;
198 l = (l << 16) + 0xcdef;
199 sprintf (buf, "0x%016llx", l);
200 return (strcmp ("0x0123456789abcdef", buf));
202 gdb_cv_printf_has_long_long=yes,
203 gdb_cv_printf_has_long_long=no,
204 gdb_cv_printf_has_long_long=no)])
205 if test $gdb_cv_printf_has_long_long = yes; then
206 AC_DEFINE(PRINTF_HAS_LONG_LONG)
208 AC_MSG_RESULT($gdb_cv_printf_has_long_long)
210 dnl See if compiler supports "long double" type. Can't use AC_C_LONG_DOUBLE
211 dnl because autoconf complains about cross-compilation issues. However, this
212 dnl code uses the same variables as the macro for compatibility.
214 AC_MSG_CHECKING(for long double support in compiler)
215 AC_CACHE_VAL(ac_cv_c_long_double,
216 [AC_TRY_COMPILE(, [long double foo;],
217 ac_cv_c_long_double=yes, ac_cv_c_long_double=no)])
218 AC_MSG_RESULT($ac_cv_c_long_double)
219 if test $ac_cv_c_long_double = yes; then
220 AC_DEFINE(HAVE_LONG_DOUBLE)
223 dnl See if the compiler and runtime support printing long doubles
225 AC_MSG_CHECKING(for long double support in printf)
226 AC_CACHE_VAL(gdb_cv_printf_has_long_double,
230 long double f = 3.141592653;
231 sprintf (buf, "%Lg", f);
232 return (strncmp ("3.14159", buf, 7));
234 gdb_cv_printf_has_long_double=yes,
235 gdb_cv_printf_has_long_double=no,
236 gdb_cv_printf_has_long_double=no)])
237 if test $gdb_cv_printf_has_long_double = yes; then
238 AC_DEFINE(PRINTF_HAS_LONG_DOUBLE)
240 AC_MSG_RESULT($gdb_cv_printf_has_long_double)
242 dnl See if the compiler and runtime support scanning long doubles
244 AC_MSG_CHECKING(for long double support in scanf)
245 AC_CACHE_VAL(gdb_cv_scanf_has_long_double,
248 char *buf = "3.141592653";
250 sscanf (buf, "%Lg", &f);
251 return !(f > 3.14159 && f < 3.14160);
253 gdb_cv_scanf_has_long_double=yes,
254 gdb_cv_scanf_has_long_double=no,
255 gdb_cv_scanf_has_long_double=no)])
256 if test $gdb_cv_scanf_has_long_double = yes; then
257 AC_DEFINE(SCANF_HAS_LONG_DOUBLE)
259 AC_MSG_RESULT($gdb_cv_scanf_has_long_double)
263 dnl See if thread_db library is around for Solaris thread debugging. Note that
264 dnl we must explicitly test for version 1 of the library because version 0
265 dnl (present on Solaris 2.4 or earlier) doesn't have the same API.
267 dnl Note that we only want this if we are both native (host == target), and
268 dnl not doing a canadian cross build (build == host).
270 if test ${build} = ${host} -a ${host} = ${target} ; then
273 AC_MSG_CHECKING(for HPUX/OSF thread support)
274 if test -f /usr/include/dce/cma_config.h ; then
275 if test "$GCC" = "yes" ; then
277 AC_DEFINE(HAVE_HPUX_THREAD_SUPPORT)
278 CONFIG_OBS="${CONFIG_OJS} hpux-thread.o"
279 CONFIG_SRCS="${CONFIG_SRCS} hpux-thread.c"
281 AC_MSG_RESULT(no (suppressed because you are not using GCC))
288 AC_MSG_CHECKING(for Solaris thread debugging library)
289 if test -f /usr/lib/libthread_db.so.1 ; then
291 AC_DEFINE(HAVE_THREAD_DB_LIB)
292 CONFIG_OBS="${CONFIG_OBS} sol-thread.o"
293 CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c"
294 AC_CHECK_LIB(dl, dlopen)
295 if test "$GCC" = "yes" ; then
296 # The GNU linker requires the -export-dynamic option to make
297 # all symbols visible in the dynamic symbol table.
298 hold_ldflags=$LDFLAGS
299 AC_MSG_CHECKING(for the ld -export-dynamic flag)
300 LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
301 AC_TRY_LINK(, [int i;], found=yes, found=no)
302 LDFLAGS=$hold_ldflags
303 AC_MSG_RESULT($found)
304 if test $found = yes; then
305 CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -Wl,-export-dynamic"
308 # Sun randomly tweaked the prototypes in <proc_service.h>
310 AC_MSG_CHECKING(if <proc_service.h> is old)
311 AC_CACHE_VAL(gdb_cv_proc_service_is_old,[
313 #include <proc_service.h>
315 (struct ps_prochandle*, psaddr_t, const void*, size_t);
316 ],, gdb_cv_proc_service_is_old=no,
317 gdb_cv_proc_service_is_old=yes)
319 AC_MSG_RESULT($gdb_cv_proc_service_is_old)
320 if test $gdb_cv_proc_service_is_old = yes; then
321 AC_DEFINE(PROC_SERVICE_IS_OLD)
328 AC_SUBST(CONFIG_LDFLAGS)
331 dnl Handle optional features that can be enabled.
335 [ --enable-tui Enable full-screen terminal user interface],
337 case "${enable_tui}" in
339 "") enable_tui=yes ;;
341 AC_MSG_ERROR(Bad value for --enable-tui: ${enableval})
345 case ${enable_tui} in
349 TUI_LIBRARY=tui/libtui.a
357 AC_SUBST(TUI_LIBRARY)
359 AC_ARG_ENABLE(netrom,
360 [ --enable-netrom Enable NetROM support],
361 [case "${enableval}" in
362 yes) enable_netrom=yes ;;
363 no) enable_netrom=no ;;
364 *) AC_MSG_ERROR(bad value ${enableval} given for netrom option) ;;
367 if test "${enable_netrom}" = "yes"; then
368 CONFIG_OBS="${CONFIG_OBS} remote-nrom.o"
369 CONFIG_SRCS="${CONFIG_SRCS} remote-nrom.c"
372 AC_ARG_ENABLE(build-warnings,
373 [ --enable-build-warnings Enable build-time compiler warnings if gcc is used],
374 [build_warnings="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations"
375 case "${enableval}" in
377 no) build_warnings="-w";;
378 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
379 build_warnings="${build_warnings} ${t}";;
380 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
381 build_warnings="${t} ${build_warnings}";;
382 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
383 esac],[build_warnings=""])dnl
385 if test "x${build_warnings}" != x -a "x$GCC" = xyes
387 WARN_CFLAGS="${build_warnings}"
391 AC_SUBST(WARN_CFLAGS)
395 AC_SUBST(MMALLOC_CFLAGS)
399 [ --with-mmalloc Use memory mapped malloc package],
400 [case "${withval}" in
401 yes) want_mmalloc=true ;;
402 no) want_mmalloc=false;;
403 *) AC_MSG_ERROR(bad value ${withval} for GDB with-mmalloc option) ;;
404 esac],[want_mmalloc=false])dnl
406 if test x$want_mmalloc = xtrue; then
407 AC_DEFINE(USE_MMALLOC)
408 AC_DEFINE(MMCHECK_FORCE)
409 MMALLOC_CFLAGS="-I$srcdir/../mmalloc"
410 MMALLOC='../mmalloc/libmmalloc.a'
414 # In the Cygwin environment, we need some additional flags.
415 AC_CACHE_CHECK([for cygwin], gdb_cv_os_cygwin,
416 [AC_EGREP_CPP(lose, [
417 #if defined (__CYGWIN__) || defined (__CYGWIN32__)
419 #endif],[gdb_cv_os_cygwin=yes],[gdb_cv_os_cygwin=no])])
421 DLLTOOL=${DLLTOOL-dlltool}
422 WINDRES=${WINDRES-windres}
426 dnl Figure out which term library to use.
427 if test x$gdb_cv_os_cygwin = xyes; then
428 TERM_LIB='`if test -r ../libtermcap/libtermcap.a; then echo ../libtermcap/libtermcap.a; else echo -ltermcap; fi`'
431 AC_CHECK_LIB(ncurses, tgetent, TERM_LIB=-lncurses,
432 AC_CHECK_LIB(Hcurses, tgetent, TERM_LIB=-lHcurses,
433 AC_CHECK_LIB(termlib, tgetent, TERM_LIB=-ltermlib,
434 AC_CHECK_LIB(termcap, tgetent, TERM_LIB=-ltermcap,
435 AC_CHECK_LIB(curses, tgetent, TERM_LIB=-lcurses,
436 AC_CHECK_LIB(terminfo, tgetent, TERM_LIB=-lterminfo))))))
438 if test "x$TERM_LIB" = x
440 AC_MSG_ERROR(Could not find a term library, e.g. termcap or termlib!)
451 # Unlike the sim directory, whether a simulator is linked is controlled by
452 # presence of a SIM= and a SIM_OBS= definition in the target '.mt' file.
453 # This code just checks for a few cases where we'd like to ignore those
454 # definitions, even when they're present in the '.mt' file. These cases
455 # are when --disable-sim is specified, or if the simulator directory is
456 # not part of the soruce tree.
459 [ --enable-sim Link gdb with simulator],
460 [echo "enable_sim = $enable_sim";
461 echo "enableval = ${enableval}";
462 case "${enableval}" in
463 yes) ignore_sim=false ;;
464 no) ignore_sim=true ;;
465 *) ignore_sim=false ;;
469 if test ! -d "${srcdir}/../sim"; then
473 if test "${ignore_sim}" = "true"; then
475 IGNORE_SIM_OBS="SIM_OBS="
482 AC_SUBST(IGNORE_SIM_OBS)
484 AC_SUBST(ENABLE_CFLAGS)
487 AC_SUBST(CONFIG_DEPS)
488 AC_SUBST(CONFIG_SRCS)
490 # Begin stuff to support --enable-shared
491 AC_ARG_ENABLE(shared,
492 [ --enable-shared Use shared libraries],
493 [case "${enableval}" in
501 # If we have shared libraries, try to set rpath reasonably.
502 if test "${shared}" = "true"; then
505 HLDFLAGS='-Wl,+s,+b,$(libdir)'
507 *-*-irix5* | *-*-irix6*)
508 HLDFLAGS='-Wl,-rpath,$(libdir)'
512 *-*-linux* | *-pc-linux-gnu)
513 HLDFLAGS='-Wl,-rpath,$(libdir)'
516 HLDFLAGS='-R $(libdir)'
519 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;'
524 # On SunOS, if the linker supports the -rpath option, use it to
525 # prevent ../bfd and ../opcodes from being included in the run time
529 echo 'main () { }' > conftest.c
530 ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t
531 if grep 'unrecognized' conftest.t >/dev/null 2>&1; then
533 elif grep 'No such file' conftest.t >/dev/null 2>&1; then
535 elif grep 'do not mix' conftest.t >/dev/null 2>&1; then
537 elif grep 'some text already loaded' conftest.t >/dev/null 2>&1; then
539 elif test "${shared}" = "true"; then
540 HLDFLAGS='-Wl,-rpath=$(libdir)'
542 HLDFLAGS='-Wl,-rpath='
544 rm -f conftest.t conftest.c conftest
549 # End stuff to support --enable-shared
551 # target_subdir is used by the testsuite to find the target libraries.
553 if test "${host}" != "${target}"; then
554 target_subdir="${target_alias}/"
556 AC_SUBST(target_subdir)
559 host_makefile_frag=${srcdir}/config/${gdb_host_cpu}/${gdb_host}.mh
560 if test ! -f ${host_makefile_frag}; then
561 AC_MSG_ERROR("*** Gdb does not support host ${host}")
563 frags="$frags $host_makefile_frag"
565 target_makefile_frag=${srcdir}/config/${gdb_target_cpu}/${gdb_target}.mt
566 if test ! -f ${target_makefile_frag}; then
567 AC_MSG_ERROR("*** Gdb does not support target ${target}")
569 frags="$frags $target_makefile_frag"
571 AC_SUBST_FILE(host_makefile_frag)
572 AC_SUBST_FILE(target_makefile_frag)
577 s/XM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
578 ' ${host_makefile_frag}`
581 s/TM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
582 ' ${target_makefile_frag}`
584 # these really aren't orthogonal true/false values of the same condition,
585 # but shells are slow enough that I like to reuse the test conditions
587 if test "${target}" = "${host}"; then
589 s/NAT_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
590 ' ${host_makefile_frag}`
592 # GDBserver is only useful in a "native" enviroment
593 # configdirs=`echo $configdirs | sed 's/gdbserver//'`
597 # If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile
598 # (NAT_FILE) is not set in config/*/*.m[ht] files, we don't make the
599 # corresponding links. But we have to remove the xm.h files and tm.h
600 # files anyway, e.g. when switching from "configure host" to
606 if test "${hostfile}" != ""; then
607 files="${files} config/${gdb_host_cpu}/${hostfile}"
608 links="${links} xm.h"
611 if test "${targetfile}" != ""; then
612 files="${files} config/${gdb_target_cpu}/${targetfile}"
613 links="${links} tm.h"
616 if test "${nativefile}" != ""; then
617 files="${files} config/${gdb_host_cpu}/${nativefile}"
618 links="${links} nm.h"
620 # A cross-only configuration.
621 files="${files} config/nm-empty.h"
622 links="${links} nm.h"
625 AC_LINK_FILES($files, $links)
627 dnl Check for exe extension set on certain hosts (e.g. Win32)
630 AC_CONFIG_SUBDIRS($configdirs)
631 AC_OUTPUT(Makefile tui/Makefile .gdbinit:gdbinit.in,
633 dnl Autoconf doesn't provide a mechanism for modifying definitions
634 dnl provided by makefile fragments.
636 if test "${nativefile}" = ""; then
637 sed -e '/^NATDEPFILES[[ ]]*=[[ ]]*/s//# NATDEPFILES=/' \
638 < Makefile > Makefile.tem
639 mv -f Makefile.tem Makefile
643 sed -e '/^TM_FILE[ ]*=/s,^TM_FILE[ ]*=[ ]*,&config/'"${gdb_target_cpu}"'/,
644 /^XM_FILE[ ]*=/s,^XM_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,
645 /^NAT_FILE[ ]*=/s,^NAT_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,' <Makefile >Makefile.tmp
646 mv -f Makefile.tmp Makefile
649 case x$CONFIG_HEADERS in
655 gdb_host_cpu=$gdb_host_cpu
656 gdb_target_cpu=$gdb_target_cpu
657 nativefile=$nativefile