1 dnl Autoconf configure script for GDB, the GNU debugger.
2 dnl Copyright 1995, 1996 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 DLLTOOL=${DLLTOOL-dlltool}
34 AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..)
37 dnl gdb doesn't use gettext, but bfd does. We call this to ensure we
38 dnl link with the correct libraries.
42 dnl List of object files added by configure.
48 configdirs="doc testsuite"
53 . ${srcdir}/configure.host
55 . ${srcdir}/configure.tgt
62 AC_CHECK_TOOL(RANLIB, ranlib, :)
71 AC_CHECK_HEADERS(limits.h memory.h string.h strings.h unistd.h termios.h termio.h sgtty.h stddef.h stdlib.h sys/procfs.h link.h endian.h objlist.h)
76 AC_CHECK_FUNCS(setpgid sbrk select poll sigaction)
79 # If we are configured native on GNU/Linux, work around problems with sys/procfs.h
80 if test "${target}" = "${host}"; then
83 AC_DEFINE(START_INFERIOR_TRAPS_EXPECTED,2)
84 AC_DEFINE(sys_quotactl)
89 AC_MSG_CHECKING([for gregset_t type])
90 AC_CACHE_VAL(gdb_cv_have_gregset_t,
91 [AC_TRY_LINK([#include <sys/procfs.h>],[gregset_t *gregsetp = 0],
92 gdb_cv_have_gregset_t=yes, gdb_cv_have_gregset_t=no)])
93 AC_MSG_RESULT($gdb_cv_have_gregset_t)
94 if test $gdb_cv_have_gregset_t = yes; then
95 AC_DEFINE(HAVE_GREGSET_T)
98 AC_MSG_CHECKING([for fpregset_t type])
99 AC_CACHE_VAL(gdb_cv_have_fpregset_t,
100 [AC_TRY_LINK([#include <sys/procfs.h>],[fpregset_t *fpregsetp = 0],
101 gdb_cv_have_fpregset_t=yes, gdb_cv_have_fpregset_t=no)])
102 AC_MSG_RESULT($gdb_cv_have_fpregset_t)
103 if test $gdb_cv_have_fpregset_t = yes; then
104 AC_DEFINE(HAVE_FPREGSET_T)
107 dnl See if host has libm. This is usually needed by simulators.
108 AC_CHECK_LIB(m, main)
110 dnl See if compiler supports "long long" type.
112 AC_MSG_CHECKING(for long long support in compiler)
113 AC_CACHE_VAL(gdb_cv_c_long_long,
115 extern long long foo;
116 switch (foo & 2) { case 0: return 1; }
118 gdb_cv_c_long_long=yes, gdb_cv_c_long_long=no)])
119 AC_MSG_RESULT($gdb_cv_c_long_long)
120 if test $gdb_cv_c_long_long = yes; then
121 AC_DEFINE(CC_HAS_LONG_LONG)
124 dnl See if the compiler and runtime support printing long long
126 AC_MSG_CHECKING(for long long support in printf)
127 AC_CACHE_VAL(gdb_cv_printf_has_long_long,
132 l = (l << 16) + 0x0123;
133 l = (l << 16) + 0x4567;
134 l = (l << 16) + 0x89ab;
135 l = (l << 16) + 0xcdef;
136 sprintf (buf, "0x%016llx", l);
137 return (strcmp ("0x0123456789abcdef", buf));
139 gdb_cv_printf_has_long_long=yes,
140 gdb_cv_printf_has_long_long=no,
141 gdb_cv_printf_has_long_long=no)])
142 if test $gdb_cv_printf_has_long_long = yes; then
143 AC_DEFINE(PRINTF_HAS_LONG_LONG)
145 AC_MSG_RESULT($gdb_cv_printf_has_long_long)
147 dnl See if compiler supports "long double" type. Can't use AC_C_LONG_DOUBLE
148 dnl because autoconf complains about cross-compilation issues. However, this
149 dnl code uses the same variables as the macro for compatibility.
151 AC_MSG_CHECKING(for long double support in compiler)
152 AC_CACHE_VAL(ac_cv_c_long_double,
153 [AC_TRY_COMPILE(, [long double foo;],
154 ac_cv_c_long_double=yes, ac_cv_c_long_double=no)])
155 AC_MSG_RESULT($ac_cv_c_long_double)
156 if test $ac_cv_c_long_double = yes; then
157 AC_DEFINE(HAVE_LONG_DOUBLE)
160 dnl See if the compiler and runtime support printing long doubles
162 AC_MSG_CHECKING(for long double support in printf)
163 AC_CACHE_VAL(gdb_cv_printf_has_long_double,
167 long double f = 3.141592653;
168 sprintf (buf, "%Lg", f);
169 return (strncmp ("3.14159", buf, 7));
171 gdb_cv_printf_has_long_double=yes,
172 gdb_cv_printf_has_long_double=no,
173 gdb_cv_printf_has_long_double=no)])
174 if test $gdb_cv_printf_has_long_double = yes; then
175 AC_DEFINE(PRINTF_HAS_LONG_DOUBLE)
177 AC_MSG_RESULT($gdb_cv_printf_has_long_double)
179 dnl See if the compiler and runtime support scanning long doubles
181 AC_MSG_CHECKING(for long double support in scanf)
182 AC_CACHE_VAL(gdb_cv_scanf_has_long_double,
185 char *buf = "3.141592653";
187 sscanf (buf, "%Lg", &f);
188 return !(f > 3.14159 && f < 3.14160);
190 gdb_cv_scanf_has_long_double=yes,
191 gdb_cv_scanf_has_long_double=no,
192 gdb_cv_scanf_has_long_double=no)])
193 if test $gdb_cv_scanf_has_long_double = yes; then
194 AC_DEFINE(SCANF_HAS_LONG_DOUBLE)
196 AC_MSG_RESULT($gdb_cv_scanf_has_long_double)
200 BFD_NEED_DECLARATION(malloc)
201 BFD_NEED_DECLARATION(realloc)
202 BFD_NEED_DECLARATION(free)
204 BFD_NEED_DECLARATION(strerror)
206 dnl See if thread_db library is around for Solaris thread debugging. Note that
207 dnl we must explicitly test for version 1 of the library because version 0
208 dnl (present on Solaris 2.4 or earlier) doesn't have the same API.
210 dnl Note that we only want this if we are both native (host == target), and
211 dnl not doing a canadian cross build (build == host).
213 if test ${build} = ${host} -a ${host} = ${target} ; then
216 AC_MSG_CHECKING(for HPUX/OSF thread support)
217 if test -f /usr/include/dce/cma_config.h ; then
218 if test "$GCC" = "yes" ; then
220 AC_DEFINE(HAVE_HPUX_THREAD_SUPPORT)
221 CONFIG_OBS="${CONFIG_OJS} hpux-thread.o"
222 CONFIG_SRCS="${CONFIG_SRCS} hpux-thread.c"
224 AC_MSG_RESULT(no (suppressed because you are not using GCC))
231 AC_MSG_CHECKING(for Solaris thread debugging library)
232 if test -f /usr/lib/libthread_db.so.1 ; then
234 AC_DEFINE(HAVE_THREAD_DB_LIB)
235 CONFIG_OBS="${CONFIG_OBS} sol-thread.o"
236 CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c"
237 AC_CHECK_LIB(dl, dlopen)
238 if test "$GCC" = "yes" ; then
239 # The GNU linker requires the -export-dynamic option to make
240 # all symbols visible in the dynamic symbol table.
241 hold_ldflags=$LDFLAGS
242 AC_MSG_CHECKING(for the ld -export-dynamic flag)
243 LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
244 AC_TRY_LINK(, [int i;], found=yes, found=no)
245 LDFLAGS=$hold_ldflags
246 AC_MSG_RESULT($found)
247 if test $found = yes; then
248 CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -Wl,-export-dynamic"
256 AC_SUBST(CONFIG_LDFLAGS)
259 dnl Handle optional features that can be enabled.
262 AC_ARG_ENABLE(netrom,
264 [case "${enableval}" in
265 yes) enable_netrom=yes ;;
266 no) enable_netrom=no ;;
267 *) AC_MSG_ERROR(bad value ${enableval} given for netrom option) ;;
270 if test "${enable_netrom}" = "yes"; then
271 CONFIG_OBS="${CONFIG_OBS} remote-nrom.o"
272 CONFIG_SRCS="${CONFIG_SRCS} remote-nrom.c"
277 AC_SUBST(MMALLOC_CFLAGS)
281 [ --with-mmalloc use memory mapped malloc package],
282 [case "${withval}" in
283 yes) want_mmalloc=true ;;
284 no) want_mmalloc=false;;
285 *) AC_MSG_ERROR(bad value ${withval} for GDB with-mmalloc option) ;;
286 esac],[want_mmalloc=false])dnl
288 if test x$want_mmalloc = xtrue; then
289 AC_DEFINE(USE_MMALLOC)
290 AC_DEFINE(MMCHECK_FORCE)
291 MMALLOC_CFLAGS="-I$srcdir/../mmalloc"
292 MMALLOC='../mmalloc/libmmalloc.a'
295 # start-sanitize-gdbtk
297 AC_ARG_ENABLE(ide, [ --enable-ide Enable IDE support])
298 if test "$enable_ide" = yes; then
310 [case "${enableval}" in
314 AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.])
317 AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.])
325 AC_MSG_ERROR(bad value ${enableval} given for gdbtk option) ;;
328 # Default is on for everything but go32 and cygwin32
337 # In the cygwin32 environment, we need some additional flags.
338 AC_CACHE_CHECK([for cygwin32], gdb_cv_os_cygwin32,
339 [AC_EGREP_CPP(lose, [
342 #endif],[gdb_cv_os_cygwin32=yes],[gdb_cv_os_cygwin32=no])])
349 WINDRES=${WINDRES-windres}
352 if test x$gdb_cv_os_cygwin32 = xyes; then
353 if test x$enable_ide = xyes; then
354 WIN32LIBS="-ladvapi32"
361 if test "${enable_gdbtk}" = "yes"; then
364 if test -z "${no_tcl}"; then
368 # If $no_tk is nonempty, then we can't do Tk, and there is no
369 # point to doing Tcl.
370 if test -z "${no_tk}"; then
377 # now look for tix library stuff
379 . ${ac_cv_c_tclconfig}/tclConfig.sh
382 tixdir=../tix/win/tcl8.0
385 tixdir=../tix/unix/tk8.0
388 if test "${TCL_SHARED_BUILD}" = "1"; then
389 TIX_LIB_EXT="${TCL_SHLIB_SUFFIX}"
391 # Can't win them all: SunOS 4 (others?) appends a version
392 # number after the ".so"
395 TIX_LIB_EXT="${TIX_LIB_EXT}.1.0" ;;
402 if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
403 TIXLIB="-L${tixdir} -ltix${TIXVERSION}"
404 TIX_DEPS="${tixdir}/libtix${TIXVERSION}${TIX_LIB_EXT}"
406 TIXLIB="-L${tixdir} -ltix`echo ${TIXVERSION} | tr -d .`"
407 TIX_DEPS="${tixdir}/libtix`echo ${TIXVERSION} | tr -d .`${TIX_LIB_EXT}"
412 # Include some libraries that Tcl and Tk want.
413 if test "${enable_ide}" = "yes"; then
414 TCL_LIBS='$(LIBIDETCL) $(LIBIDE) $(LIBGUI) $(IDE) $(ITCL) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
415 CONFIG_DEPS='$(LIBIDETCL) $(LIBIDE) $(LIBGUI) $(IDE_DEPS) $(ITCL_DEPS) $(TIX_DEPS) $(TK_DEPS) $(TCL_DEPS)'
417 TCL_LIBS='$(LIBGUI) $(ITCL) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
418 CONFIG_DEPS='$(LIBGUI) $(ITCL_DEPS) $(TIX_DEPS) $(TK_DEPS) $(TCL_DEPS)'
420 # Yes, the ordering seems wrong here. But it isn't.
421 # TK_LIBS is the list of libraries that need to be linked
422 # after Tcl/Tk. Note that this isn't put into LIBS. If it
423 # were in LIBS then any link tests after this point would
424 # try to include things like `$(LIBGUI)', which wouldn't work.
425 GDBTKLIBS="${TCL_LIBS} ${TK_LIBS}"
426 CONFIG_OBS="${CONFIG_OBS} gdbtk.o"
428 if test x$gdb_cv_os_cygwin32 = xyes; then
429 WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32 -luser32"
430 WIN32LDAPP="-Wl,--subsystem,console"
431 CONFIG_OBS="${CONFIG_OBS} gdbres.o"
437 AC_SUBST(ENABLE_GDBTK)
448 # Enable GPU2 library for MIPS simulator
449 AC_ARG_WITH(sim-gpu2,
450 [ --with-sim-gpu2=path Use GPU2 library under given directory],
453 if test -d "${withval}"
455 LIBS="${LIBS} -L${withval}/lib -lgpu2 -L${x_libraries} -lX11"
457 AC_MSG_WARN([Directory ${withval} does not exist.])
459 *) AC_MSG_WARN([--with-sim-gpu2 option invalid for target ${target}])
462 # Enable target accurate FP library
463 AC_ARG_WITH(sim-funit,
464 [ --with-sim-funit=path Use target FP lib under given directory],
467 if test -d "${withval}"
469 LIBS="${LIBS} -L${withval}/lib -lfunit"
471 AC_MSG_WARN([Directory ${withval} does not exist.])
473 *) AC_MSG_WARN([--with-sim-funit option invalid for target ${target}])
477 AC_SUBST(ENABLE_CFLAGS)
480 AC_SUBST(CONFIG_DEPS)
481 AC_SUBST(CONFIG_SRCS)
483 # Begin stuff to support --enable-shared
484 AC_ARG_ENABLE(shared,
485 [ --enable-shared use shared libraries],
486 [case "${enableval}" in
494 # If we have shared libraries, try to set rpath reasonably.
495 if test "${shared}" = "true"; then
498 HLDFLAGS='-Wl,+s,+b,$(libdir)'
500 *-*-irix5* | *-*-irix6*)
501 HLDFLAGS='-Wl,-rpath,$(libdir)'
505 *-*-linux* | *-pc-linux-gnu)
506 HLDFLAGS='-Wl,-rpath,$(libdir)'
509 HLDFLAGS='-R $(libdir)'
512 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;'
517 # On SunOS, if the linker supports the -rpath option, use it to
518 # prevent ../bfd and ../opcodes from being included in the run time
522 echo 'main () { }' > conftest.c
523 ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t
524 if grep 'unrecognized' conftest.t >/dev/null 2>&1; then
526 elif grep 'No such file' conftest.t >/dev/null 2>&1; then
528 elif grep 'do not mix' conftest.t >/dev/null 2>&1; then
530 elif grep 'some text already loaded' conftest.t >/dev/null 2>&1; then
532 elif test "${shared}" = "true"; then
533 HLDFLAGS='-Wl,-rpath=$(libdir)'
535 HLDFLAGS='-Wl,-rpath='
537 rm -f conftest.t conftest.c conftest
542 # End stuff to support --enable-shared
544 # target_subdir is used by the testsuite to find the target libraries.
546 if test "${host}" != "${target}"; then
547 target_subdir="${target_alias}/"
549 AC_SUBST(target_subdir)
552 host_makefile_frag=${srcdir}/config/${gdb_host_cpu}/${gdb_host}.mh
553 if test ! -f ${host_makefile_frag}; then
554 AC_MSG_ERROR("*** Gdb does not support host ${host}")
556 frags="$frags $host_makefile_frag"
558 target_makefile_frag=${srcdir}/config/${gdb_target_cpu}/${gdb_target}.mt
559 if test ! -f ${target_makefile_frag}; then
560 AC_MSG_ERROR("*** Gdb does not support target ${target}")
562 frags="$frags $target_makefile_frag"
564 AC_SUBST_FILE(host_makefile_frag)
565 AC_SUBST_FILE(target_makefile_frag)
570 s/XM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
571 ' ${host_makefile_frag}`
574 s/TM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
575 ' ${target_makefile_frag}`
577 # these really aren't orthogonal true/false values of the same condition,
578 # but shells are slow enough that I like to reuse the test conditions
580 if test "${target}" = "${host}"; then
582 s/NAT_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
583 ' ${host_makefile_frag}`
585 # GDBserver is only useful in a "native" enviroment
586 # configdirs=`echo $configdirs | sed 's/gdbserver//'`
590 # If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile
591 # (NAT_FILE) is not set in config/*/*.m[ht] files, we don't make the
592 # corresponding links. But we have to remove the xm.h files and tm.h
593 # files anyway, e.g. when switching from "configure host" to
599 if test "${hostfile}" != ""; then
600 files="${files} config/${gdb_host_cpu}/${hostfile}"
601 links="${links} xm.h"
604 if test "${targetfile}" != ""; then
605 files="${files} config/${gdb_target_cpu}/${targetfile}"
606 links="${links} tm.h"
609 if test "${nativefile}" != ""; then
610 files="${files} config/${gdb_host_cpu}/${nativefile}"
611 links="${links} nm.h"
613 # A cross-only configuration.
614 files="${files} config/nm-empty.h"
615 links="${links} nm.h"
617 # start-sanitize-gdbtk
619 # Make it possible to use the GUI without doing a full install
620 if test "${enable_gdbtk}" = "yes" -a ! -d gdbtcl ; then
621 if test "$LN_S" = "ln -s" -a ! -f gdbtcl ; then
622 echo linking $srcdir/gdbtcl to gdbtcl
623 $LN_S $srcdir/gdbtcl gdbtcl
625 echo Warning: Unable to link $srcdir/gdbtcl to gdbtcl. You will need to do a
626 echo " " make install before you are able to run the GUI.
631 AC_LINK_FILES($files, $links)
633 dnl Check for exe extension set on certain hosts (e.g. Win32)
636 AC_CONFIG_SUBDIRS($configdirs)
637 AC_OUTPUT(Makefile .gdbinit:gdbinit.in,
639 dnl Autoconf doesn't provide a mechanism for modifying definitions
640 dnl provided by makefile fragments.
642 if test "${nativefile}" = ""; then
643 sed -e '/^NATDEPFILES[[ ]]*=[[ ]]*/s//# NATDEPFILES=/' \
644 < Makefile > Makefile.tem
645 mv -f Makefile.tem Makefile
649 sed -e '/^TM_FILE[ ]*=/s,^TM_FILE[ ]*=[ ]*,&config/'"${gdb_target_cpu}"'/,
650 /^XM_FILE[ ]*=/s,^XM_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,
651 /^NAT_FILE[ ]*=/s,^NAT_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,' <Makefile >Makefile.tmp
652 mv -f Makefile.tmp Makefile
655 case x$CONFIG_HEADERS in
661 gdb_host_cpu=$gdb_host_cpu
662 gdb_target_cpu=$gdb_target_cpu
663 nativefile=$nativefile