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)
95 AC_CHECK_LIB(socket, socketpair)
96 AC_CHECK_FUNCS(socketpair)
99 BFD_NEED_DECLARATION(malloc)
100 BFD_NEED_DECLARATION(realloc)
101 BFD_NEED_DECLARATION(free)
102 BFD_NEED_DECLARATION(strerror)
103 BFD_NEED_DECLARATION(strdup)
104 BFD_NEED_DECLARATION(strstr)
107 # The following save_state_t checkery is only necessary for HPUX
108 # versions earlier than 10.20. When those fade from memory, this
109 # could be expunged. --jsm 1999-03-22
111 AC_MSG_CHECKING(for HPUX save_state structure)
112 AC_EGREP_HEADER(save_state_t, machine/save_state.h,
113 gdb_cv_hpux_savestate=yes, gdb_cv_hpux_savestate=no)
114 AC_EGREP_HEADER(ss_wide, machine/save_state.h, gdb_cv_hpux_sswide=yes,
115 gdb_cv_hpux_sswide=no)
116 if test $gdb_cv_hpux_savestate = yes
118 AC_DEFINE(HAVE_STRUCT_SAVE_STATE_T, 1)
120 if test $gdb_cv_hpux_sswide = yes
122 AC_DEFINE(HAVE_STRUCT_MEMBER_SS_WIDE, 1)
124 AC_MSG_RESULT($gdb_cv_hpux_sswide)
127 # If we are configured native on GNU/Linux, work around problems with
129 # Also detect which type of /proc is in use, such as for Unixware.
131 if test "${target}" = "${host}"; then
132 gdb_cv_hostos_is_solaris=no
134 i[[3456]]86-*-linux*)
135 AC_DEFINE(START_INFERIOR_TRAPS_EXPECTED,2)
136 AC_DEFINE(sys_quotactl)
139 gdb_cv_hostos_is_solaris=yes ;;
141 AC_MSG_CHECKING(for directory proc entries)
142 # The [gdb_host != sun4sol2] hack is because Solaris does provide the
143 # multiple procfs files as of Solaris 2.6, but GDB can't use it right now.
144 if test "$ac_cv_header_sys_procfs_h" = yes -a \
145 "$gdb_cv_hostos_is_solaris" = no \
150 -a -f /proc/$$/status; then
152 AC_DEFINE(HAVE_MULTIPLE_PROC_FDS)
158 if test "$ac_cv_header_sys_procfs_h" = yes; then
159 BFD_HAVE_SYS_PROCFS_TYPE(pstatus_t)
160 BFD_HAVE_SYS_PROCFS_TYPE(prrun_t)
161 BFD_HAVE_SYS_PROCFS_TYPE(gregset_t)
162 BFD_HAVE_SYS_PROCFS_TYPE(fpregset_t)
164 dnl Check for PIOCSET ioctl entry
166 AC_MSG_CHECKING(for PIOCSET ioctl entry in sys/procfs.h)
167 AC_CACHE_VAL(gdb_cv_have_procfs_piocset,
168 [AC_TRY_COMPILE([#include <unistd.h>
169 #include <sys/types.h>
170 #include <sys/procfs.h>
173 dummy = ioctl(0, PIOCSET, &dummy);
175 gdb_cv_have_procfs_piocset=yes, gdb_cv_have_procfs_piocset=no)])
176 AC_MSG_RESULT($gdb_cv_have_procfs_piocset)
177 if test $gdb_cv_have_procfs_piocset = yes; then
178 AC_DEFINE(HAVE_PROCFS_PIOCSET)
182 dnl See if host has libm. This is usually needed by simulators.
183 AC_CHECK_LIB(m, main)
185 dnl Solaris puts wctype in /usr/lib/libw.a before Solaris 2.6.
187 dnl A bug in GNU ld 2.9.1 causes a problem if we link in -lw
188 dnl under Solaris 2.6 because it is some funky empty library.
189 dnl So only link in libw if we have to.
190 AC_CHECK_LIB(c, wctype,: ,AC_CHECK_LIB(w, wctype))
192 dnl See if compiler supports "long long" type.
194 AC_MSG_CHECKING(for long long support in compiler)
195 AC_CACHE_VAL(gdb_cv_c_long_long,
197 extern long long foo;
198 switch (foo & 2) { case 0: return 1; }
200 gdb_cv_c_long_long=yes, gdb_cv_c_long_long=no)])
201 AC_MSG_RESULT($gdb_cv_c_long_long)
202 if test $gdb_cv_c_long_long = yes; then
203 AC_DEFINE(CC_HAS_LONG_LONG)
206 dnl See if the compiler and runtime support printing long long
208 AC_MSG_CHECKING(for long long support in printf)
209 AC_CACHE_VAL(gdb_cv_printf_has_long_long,
214 l = (l << 16) + 0x0123;
215 l = (l << 16) + 0x4567;
216 l = (l << 16) + 0x89ab;
217 l = (l << 16) + 0xcdef;
218 sprintf (buf, "0x%016llx", l);
219 return (strcmp ("0x0123456789abcdef", buf));
221 gdb_cv_printf_has_long_long=yes,
222 gdb_cv_printf_has_long_long=no,
223 gdb_cv_printf_has_long_long=no)])
224 if test $gdb_cv_printf_has_long_long = yes; then
225 AC_DEFINE(PRINTF_HAS_LONG_LONG)
227 AC_MSG_RESULT($gdb_cv_printf_has_long_long)
229 dnl See if compiler supports "long double" type. Can't use AC_C_LONG_DOUBLE
230 dnl because autoconf complains about cross-compilation issues. However, this
231 dnl code uses the same variables as the macro for compatibility.
233 AC_MSG_CHECKING(for long double support in compiler)
234 AC_CACHE_VAL(ac_cv_c_long_double,
235 [AC_TRY_COMPILE(, [long double foo;],
236 ac_cv_c_long_double=yes, ac_cv_c_long_double=no)])
237 AC_MSG_RESULT($ac_cv_c_long_double)
238 if test $ac_cv_c_long_double = yes; then
239 AC_DEFINE(HAVE_LONG_DOUBLE)
242 dnl See if the compiler and runtime support printing long doubles
244 AC_MSG_CHECKING(for long double support in printf)
245 AC_CACHE_VAL(gdb_cv_printf_has_long_double,
249 long double f = 3.141592653;
250 sprintf (buf, "%Lg", f);
251 return (strncmp ("3.14159", buf, 7));
253 gdb_cv_printf_has_long_double=yes,
254 gdb_cv_printf_has_long_double=no,
255 gdb_cv_printf_has_long_double=no)])
256 if test $gdb_cv_printf_has_long_double = yes; then
257 AC_DEFINE(PRINTF_HAS_LONG_DOUBLE)
259 AC_MSG_RESULT($gdb_cv_printf_has_long_double)
261 dnl See if the compiler and runtime support scanning long doubles
263 AC_MSG_CHECKING(for long double support in scanf)
264 AC_CACHE_VAL(gdb_cv_scanf_has_long_double,
267 char *buf = "3.141592653";
269 sscanf (buf, "%Lg", &f);
270 return !(f > 3.14159 && f < 3.14160);
272 gdb_cv_scanf_has_long_double=yes,
273 gdb_cv_scanf_has_long_double=no,
274 gdb_cv_scanf_has_long_double=no)])
275 if test $gdb_cv_scanf_has_long_double = yes; then
276 AC_DEFINE(SCANF_HAS_LONG_DOUBLE)
278 AC_MSG_RESULT($gdb_cv_scanf_has_long_double)
282 dnl See if thread_db library is around for Solaris thread debugging. Note that
283 dnl we must explicitly test for version 1 of the library because version 0
284 dnl (present on Solaris 2.4 or earlier) doesn't have the same API.
286 dnl Note that we only want this if we are both native (host == target), and
287 dnl not doing a canadian cross build (build == host).
289 if test ${build} = ${host} -a ${host} = ${target} ; then
292 AC_MSG_CHECKING(for HPUX/OSF thread support)
293 if test -f /usr/include/dce/cma_config.h ; then
294 if test "$GCC" = "yes" ; then
296 AC_DEFINE(HAVE_HPUX_THREAD_SUPPORT)
297 CONFIG_OBS="${CONFIG_OJS} hpux-thread.o"
298 CONFIG_SRCS="${CONFIG_SRCS} hpux-thread.c"
300 AC_MSG_RESULT(no (suppressed because you are not using GCC))
307 AC_MSG_CHECKING(for Solaris thread debugging library)
308 if test -f /usr/lib/libthread_db.so.1 ; then
310 AC_DEFINE(HAVE_THREAD_DB_LIB)
311 CONFIG_OBS="${CONFIG_OBS} sol-thread.o"
312 CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c"
313 AC_CHECK_LIB(dl, dlopen)
314 if test "$GCC" = "yes" ; then
315 # The GNU linker requires the -export-dynamic option to make
316 # all symbols visible in the dynamic symbol table.
317 hold_ldflags=$LDFLAGS
318 AC_MSG_CHECKING(for the ld -export-dynamic flag)
319 LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
320 AC_TRY_LINK(, [int i;], found=yes, found=no)
321 LDFLAGS=$hold_ldflags
322 AC_MSG_RESULT($found)
323 if test $found = yes; then
324 CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -Wl,-export-dynamic"
327 # Sun randomly tweaked the prototypes in <proc_service.h>
329 AC_MSG_CHECKING(if <proc_service.h> is old)
330 AC_CACHE_VAL(gdb_cv_proc_service_is_old,[
332 #include <proc_service.h>
334 (struct ps_prochandle*, psaddr_t, const void*, size_t);
335 ],, gdb_cv_proc_service_is_old=no,
336 gdb_cv_proc_service_is_old=yes)
338 AC_MSG_RESULT($gdb_cv_proc_service_is_old)
339 if test $gdb_cv_proc_service_is_old = yes; then
340 AC_DEFINE(PROC_SERVICE_IS_OLD)
347 AC_SUBST(CONFIG_LDFLAGS)
350 dnl Handle optional features that can be enabled.
354 [ --enable-tui Enable full-screen terminal user interface],
356 case "${enable_tui}" in
358 "") enable_tui=yes ;;
360 AC_MSG_ERROR(Bad value for --enable-tui: ${enableval})
364 case ${enable_tui} in
368 TUI_LIBRARY=tui/libtui.a
376 AC_SUBST(TUI_LIBRARY)
378 AC_ARG_ENABLE(netrom,
379 [ --enable-netrom Enable NetROM support],
380 [case "${enableval}" in
381 yes) enable_netrom=yes ;;
382 no) enable_netrom=no ;;
383 *) AC_MSG_ERROR(bad value ${enableval} given for netrom option) ;;
386 if test "${enable_netrom}" = "yes"; then
387 CONFIG_OBS="${CONFIG_OBS} remote-nrom.o"
388 CONFIG_SRCS="${CONFIG_SRCS} remote-nrom.c"
391 AC_ARG_ENABLE(build-warnings,
392 [ --enable-build-warnings Enable build-time compiler warnings if gcc is used],
393 [build_warnings="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations"
394 case "${enableval}" in
396 no) build_warnings="-w";;
397 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
398 build_warnings="${build_warnings} ${t}";;
399 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
400 build_warnings="${t} ${build_warnings}";;
401 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
402 esac],[build_warnings=""])dnl
406 if test "x${build_warnings}" != x -a "x$GCC" = xyes
408 # Separate out the -Werror flag as some files just cannot be
409 # compiled with it enabled.
410 for w in ${build_warnings}; do
412 -Werr*) WERROR_CFLAGS=-Werror ;;
413 *) WARN_CFLAGS="${WARN_CFLAGS} $w"
417 AC_SUBST(WARN_CFLAGS)
418 AC_SUBST(WERROR_CFLAGS)
422 AC_SUBST(MMALLOC_CFLAGS)
426 [ --with-mmalloc Use memory mapped malloc package],
427 [case "${withval}" in
428 yes) want_mmalloc=true ;;
429 no) want_mmalloc=false;;
430 *) AC_MSG_ERROR(bad value ${withval} for GDB with-mmalloc option) ;;
431 esac],[want_mmalloc=false])dnl
433 if test x$want_mmalloc = xtrue; then
434 AC_DEFINE(USE_MMALLOC)
435 AC_DEFINE(MMCHECK_FORCE)
436 MMALLOC_CFLAGS="-I$srcdir/../mmalloc"
437 MMALLOC='../mmalloc/libmmalloc.a'
441 # In the Cygwin environment, we need some additional flags.
442 AC_CACHE_CHECK([for cygwin], gdb_cv_os_cygwin,
443 [AC_EGREP_CPP(lose, [
444 #if defined (__CYGWIN__) || defined (__CYGWIN32__)
446 #endif],[gdb_cv_os_cygwin=yes],[gdb_cv_os_cygwin=no])])
448 DLLTOOL=${DLLTOOL-dlltool}
449 WINDRES=${WINDRES-windres}
453 dnl Figure out which term library to use.
454 if test x$gdb_host = xgo32; then
457 if test x$gdb_cv_os_cygwin = xyes; then
458 TERM_LIB='`if test -r ../libtermcap/libtermcap.a; then echo ../libtermcap/libtermcap.a; else echo -ltermcap; fi`'
461 AC_CHECK_LIB(ncurses, tgetent, TERM_LIB=-lncurses,
462 AC_CHECK_LIB(Hcurses, tgetent, TERM_LIB=-lHcurses,
463 AC_CHECK_LIB(termlib, tgetent, TERM_LIB=-ltermlib,
464 AC_CHECK_LIB(termcap, tgetent, TERM_LIB=-ltermcap,
465 AC_CHECK_LIB(curses, tgetent, TERM_LIB=-lcurses,
466 AC_CHECK_LIB(terminfo, tgetent, TERM_LIB=-lterminfo))))))
468 if test "x$TERM_LIB" = x
470 AC_MSG_ERROR(Could not find a term library, e.g. termcap or termlib!)
476 # libreadline needs libuser32.a in a cygwin environment
478 if test x$gdb_cv_os_cygwin = xyes; then
487 # Unlike the sim directory, whether a simulator is linked is controlled by
488 # presence of a SIM= and a SIM_OBS= definition in the target '.mt' file.
489 # This code just checks for a few cases where we'd like to ignore those
490 # definitions, even when they're present in the '.mt' file. These cases
491 # are when --disable-sim is specified, or if the simulator directory is
492 # not part of the soruce tree.
495 [ --enable-sim Link gdb with simulator],
496 [echo "enable_sim = $enable_sim";
497 echo "enableval = ${enableval}";
498 case "${enableval}" in
499 yes) ignore_sim=false ;;
500 no) ignore_sim=true ;;
501 *) ignore_sim=false ;;
505 if test ! -d "${srcdir}/../sim"; then
509 if test "${ignore_sim}" = "true"; then
511 IGNORE_SIM_OBS="SIM_OBS="
518 AC_SUBST(IGNORE_SIM_OBS)
520 AC_SUBST(ENABLE_CFLAGS)
523 AC_SUBST(CONFIG_DEPS)
524 AC_SUBST(CONFIG_SRCS)
526 # Begin stuff to support --enable-shared
527 AC_ARG_ENABLE(shared,
528 [ --enable-shared Use shared libraries],
529 [case "${enableval}" in
537 # If we have shared libraries, try to set rpath reasonably.
538 if test "${shared}" = "true"; then
541 HLDFLAGS='-Wl,+s,+b,$(libdir)'
543 *-*-irix5* | *-*-irix6*)
544 HLDFLAGS='-Wl,-rpath,$(libdir)'
548 *-*-linux* | *-pc-linux-gnu)
549 HLDFLAGS='-Wl,-rpath,$(libdir)'
552 HLDFLAGS='-R $(libdir)'
555 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;'
560 # On SunOS, if the linker supports the -rpath option, use it to
561 # prevent ../bfd and ../opcodes from being included in the run time
565 echo 'main () { }' > conftest.c
566 ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t
567 if grep 'unrecognized' conftest.t >/dev/null 2>&1; then
569 elif grep 'No such file' conftest.t >/dev/null 2>&1; then
571 elif grep 'do not mix' conftest.t >/dev/null 2>&1; then
573 elif grep 'some text already loaded' conftest.t >/dev/null 2>&1; then
575 elif test "${shared}" = "true"; then
576 HLDFLAGS='-Wl,-rpath=$(libdir)'
578 HLDFLAGS='-Wl,-rpath='
580 rm -f conftest.t conftest.c conftest
585 # End stuff to support --enable-shared
587 # target_subdir is used by the testsuite to find the target libraries.
589 if test "${host}" != "${target}"; then
590 target_subdir="${target_alias}/"
592 AC_SUBST(target_subdir)
595 host_makefile_frag=${srcdir}/config/${gdb_host_cpu}/${gdb_host}.mh
596 if test ! -f ${host_makefile_frag}; then
597 AC_MSG_ERROR("*** Gdb does not support host ${host}")
599 frags="$frags $host_makefile_frag"
601 target_makefile_frag=${srcdir}/config/${gdb_target_cpu}/${gdb_target}.mt
602 if test ! -f ${target_makefile_frag}; then
603 AC_MSG_ERROR("*** Gdb does not support target ${target}")
605 frags="$frags $target_makefile_frag"
607 AC_SUBST_FILE(host_makefile_frag)
608 AC_SUBST_FILE(target_makefile_frag)
613 s/XM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
614 ' ${host_makefile_frag}`
617 s/TM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
618 ' ${target_makefile_frag}`
620 # these really aren't orthogonal true/false values of the same condition,
621 # but shells are slow enough that I like to reuse the test conditions
623 if test "${target}" = "${host}"; then
625 s/NAT_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
626 ' ${host_makefile_frag}`
628 # GDBserver is only useful in a "native" enviroment
629 # configdirs=`echo $configdirs | sed 's/gdbserver//'`
633 SUBDIRS="doc testsuite nlm"
634 if test "${enable_multi_ice}" = "yes"; then
635 SUBDIRS="${SUBDIRS} multi-ice"
640 # If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile
641 # (NAT_FILE) is not set in config/*/*.m[ht] files, we don't make the
642 # corresponding links. But we have to remove the xm.h files and tm.h
643 # files anyway, e.g. when switching from "configure host" to
649 if test "${hostfile}" != ""; then
650 files="${files} config/${gdb_host_cpu}/${hostfile}"
651 links="${links} xm.h"
654 if test "${targetfile}" != ""; then
655 files="${files} config/${gdb_target_cpu}/${targetfile}"
656 links="${links} tm.h"
659 if test "${nativefile}" != ""; then
660 files="${files} config/${gdb_host_cpu}/${nativefile}"
661 links="${links} nm.h"
663 # A cross-only configuration.
664 files="${files} config/nm-empty.h"
665 links="${links} nm.h"
668 AC_LINK_FILES($files, $links)
670 dnl Check for exe extension set on certain hosts (e.g. Win32)
673 AC_CONFIG_SUBDIRS($configdirs)
674 AC_OUTPUT(Makefile tui/Makefile .gdbinit:gdbinit.in,
676 dnl Autoconf doesn't provide a mechanism for modifying definitions
677 dnl provided by makefile fragments.
679 if test "${nativefile}" = ""; then
680 sed -e '/^NATDEPFILES[[ ]]*=[[ ]]*/s//# NATDEPFILES=/' \
681 < Makefile > Makefile.tem
682 mv -f Makefile.tem Makefile
686 sed -e '/^TM_FILE[ ]*=/s,^TM_FILE[ ]*=[ ]*,&config/'"${gdb_target_cpu}"'/,
687 /^XM_FILE[ ]*=/s,^XM_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,
688 /^NAT_FILE[ ]*=/s,^NAT_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,' <Makefile >Makefile.tmp
689 mv -f Makefile.tmp Makefile
692 case x$CONFIG_HEADERS in
698 gdb_host_cpu=$gdb_host_cpu
699 gdb_target_cpu=$gdb_target_cpu
700 nativefile=$nativefile