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)
78 # If we are configured native on GNU/Linux, work around problems with sys/procfs.h
79 if test "${target}" = "${host}"; then
82 AC_DEFINE(START_INFERIOR_TRAPS_EXPECTED,2)
83 AC_DEFINE(sys_quotactl)
88 AC_MSG_CHECKING([for gregset_t type])
89 AC_CACHE_VAL(gdb_cv_have_gregset_t,
90 [AC_TRY_LINK([#include <sys/procfs.h>],[gregset_t *gregsetp = 0],
91 gdb_cv_have_gregset_t=yes, gdb_cv_have_gregset_t=no)])
92 AC_MSG_RESULT($gdb_cv_have_gregset_t)
93 if test $gdb_cv_have_gregset_t = yes; then
94 AC_DEFINE(HAVE_GREGSET_T)
97 AC_MSG_CHECKING([for fpregset_t type])
98 AC_CACHE_VAL(gdb_cv_have_fpregset_t,
99 [AC_TRY_LINK([#include <sys/procfs.h>],[fpregset_t *fpregsetp = 0],
100 gdb_cv_have_fpregset_t=yes, gdb_cv_have_fpregset_t=no)])
101 AC_MSG_RESULT($gdb_cv_have_fpregset_t)
102 if test $gdb_cv_have_fpregset_t = yes; then
103 AC_DEFINE(HAVE_FPREGSET_T)
106 dnl See if host has libm. This is usually needed by simulators.
107 AC_CHECK_LIB(m, main)
109 dnl See if compiler supports "long long" type.
111 AC_MSG_CHECKING(for long long support in compiler)
112 AC_CACHE_VAL(gdb_cv_c_long_long,
114 extern long long foo;
115 switch (foo & 2) { case 0: return 1; }
117 gdb_cv_c_long_long=yes, gdb_cv_c_long_long=no)])
118 AC_MSG_RESULT($gdb_cv_c_long_long)
119 if test $gdb_cv_c_long_long = yes; then
120 AC_DEFINE(CC_HAS_LONG_LONG)
123 dnl See if the compiler and runtime support printing long long
125 AC_MSG_CHECKING(for long long support in printf)
126 AC_CACHE_VAL(gdb_cv_printf_has_long_long,
131 l = (l << 16) + 0x0123;
132 l = (l << 16) + 0x4567;
133 l = (l << 16) + 0x89ab;
134 l = (l << 16) + 0xcdef;
135 sprintf (buf, "0x%016llx", l);
136 return (strcmp ("0x0123456789abcdef", buf));
138 gdb_cv_printf_has_long_long=yes,
139 gdb_cv_printf_has_long_long=no,
140 gdb_cv_printf_has_long_long=no)])
141 if test $gdb_cv_printf_has_long_long = yes; then
142 AC_DEFINE(PRINTF_HAS_LONG_LONG)
144 AC_MSG_RESULT($gdb_cv_printf_has_long_long)
146 dnl See if compiler supports "long double" type. Can't use AC_C_LONG_DOUBLE
147 dnl because autoconf complains about cross-compilation issues. However, this
148 dnl code uses the same variables as the macro for compatibility.
150 AC_MSG_CHECKING(for long double support in compiler)
151 AC_CACHE_VAL(ac_cv_c_long_double,
152 [AC_TRY_COMPILE(, [long double foo;],
153 ac_cv_c_long_double=yes, ac_cv_c_long_double=no)])
154 AC_MSG_RESULT($ac_cv_c_long_double)
155 if test $ac_cv_c_long_double = yes; then
156 AC_DEFINE(HAVE_LONG_DOUBLE)
159 dnl See if the compiler and runtime support printing long doubles
161 AC_MSG_CHECKING(for long double support in printf)
162 AC_CACHE_VAL(gdb_cv_printf_has_long_double,
166 long double f = 3.141592653;
167 sprintf (buf, "%Lg", f);
168 return (strncmp ("3.14159", buf, 7));
170 gdb_cv_printf_has_long_double=yes,
171 gdb_cv_printf_has_long_double=no,
172 gdb_cv_printf_has_long_double=no)])
173 if test $gdb_cv_printf_has_long_double = yes; then
174 AC_DEFINE(PRINTF_HAS_LONG_DOUBLE)
176 AC_MSG_RESULT($gdb_cv_printf_has_long_double)
178 dnl See if the compiler and runtime support scanning long doubles
180 AC_MSG_CHECKING(for long double support in scanf)
181 AC_CACHE_VAL(gdb_cv_scanf_has_long_double,
184 char *buf = "3.141592653";
186 sscanf (buf, "%Lg", &f);
187 return !(f > 3.14159 && f < 3.14160);
189 gdb_cv_scanf_has_long_double=yes,
190 gdb_cv_scanf_has_long_double=no,
191 gdb_cv_scanf_has_long_double=no)])
192 if test $gdb_cv_scanf_has_long_double = yes; then
193 AC_DEFINE(SCANF_HAS_LONG_DOUBLE)
195 AC_MSG_RESULT($gdb_cv_scanf_has_long_double)
199 BFD_NEED_DECLARATION(malloc)
200 BFD_NEED_DECLARATION(realloc)
201 BFD_NEED_DECLARATION(free)
203 BFD_NEED_DECLARATION(strerror)
205 dnl See if thread_db library is around for Solaris thread debugging. Note that
206 dnl we must explicitly test for version 1 of the library because version 0
207 dnl (present on Solaris 2.4 or earlier) doesn't have the same API.
209 dnl Note that we only want this if we are both native (host == target), and
210 dnl not doing a canadian cross build (build == host).
212 if test ${build} = ${host} -a ${host} = ${target} ; then
215 AC_MSG_CHECKING(for HPUX/OSF thread support)
216 if test -f /usr/include/dce/cma_config.h ; then
217 if test "$GCC" = "yes" ; then
219 AC_DEFINE(HAVE_HPUX_THREAD_SUPPORT)
220 CONFIG_OBS="${CONFIG_OJS} hpux-thread.o"
221 CONFIG_SRCS="${CONFIG_SRCS} hpux-thread.c"
223 AC_MSG_RESULT(no (suppressed because you are not using GCC))
230 AC_MSG_CHECKING(for Solaris thread debugging library)
231 if test -f /usr/lib/libthread_db.so.1 ; then
233 AC_DEFINE(HAVE_THREAD_DB_LIB)
234 CONFIG_OBS="${CONFIG_OBS} sol-thread.o"
235 CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c"
236 AC_CHECK_LIB(dl, dlopen)
237 if test "$GCC" = "yes" ; then
238 # The GNU linker requires the -export-dynamic option to make
239 # all symbols visible in the dynamic symbol table.
240 hold_ldflags=$LDFLAGS
241 AC_MSG_CHECKING(for the ld -export-dynamic flag)
242 LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
243 AC_TRY_LINK(, [int i;], found=yes, found=no)
244 LDFLAGS=$hold_ldflags
245 AC_MSG_RESULT($found)
246 if test $found = yes; then
247 CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -Wl,-export-dynamic"
255 AC_SUBST(CONFIG_LDFLAGS)
258 dnl Handle optional features that can be enabled.
261 AC_ARG_ENABLE(netrom,
263 [case "${enableval}" in
264 yes) enable_netrom=yes ;;
265 no) enable_netrom=no ;;
266 *) AC_MSG_ERROR(bad value ${enableval} given for netrom option) ;;
269 if test "${enable_netrom}" = "yes"; then
270 CONFIG_OBS="${CONFIG_OBS} remote-nrom.o"
271 CONFIG_SRCS="${CONFIG_SRCS} remote-nrom.c"
276 AC_SUBST(MMALLOC_CFLAGS)
280 [ --with-mmalloc use memory mapped malloc package],
281 [case "${withval}" in
282 yes) want_mmalloc=true ;;
283 no) want_mmalloc=false;;
284 *) AC_MSG_ERROR(bad value ${withval} for GDB with-mmalloc option) ;;
285 esac],[want_mmalloc=false])dnl
287 if test x$want_mmalloc = xtrue; then
288 AC_DEFINE(USE_MMALLOC)
289 AC_DEFINE(MMCHECK_FORCE)
290 MMALLOC_CFLAGS="-I$srcdir/../mmalloc"
291 MMALLOC='../mmalloc/libmmalloc.a'
294 # start-sanitize-gdbtk
296 AC_ARG_ENABLE(ide, [ --enable-ide Enable IDE support])
297 if test "$enable_ide" = yes; then
309 [case "${enableval}" in
313 AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.])
316 AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.])
324 AC_MSG_ERROR(bad value ${enableval} given for gdbtk option) ;;
327 # Default is on for everything but go32 and cygwin32
336 # In the cygwin32 environment, we need some additional flags.
337 AC_CACHE_CHECK([for cygwin32], gdb_cv_os_cygwin32,
338 [AC_EGREP_CPP(lose, [
341 #endif],[gdb_cv_os_cygwin32=yes],[gdb_cv_os_cygwin32=no])])
348 WINDRES=${WINDRES-windres}
351 if test x$gdb_cv_os_cygwin32 = xyes; then
352 if test x$enable_ide = xyes; then
353 WIN32LIBS="-ladvapi32"
360 if test "${enable_gdbtk}" = "yes"; then
363 if test -z "${no_tcl}"; then
367 # If $no_tk is nonempty, then we can't do Tk, and there is no
368 # point to doing Tcl.
369 if test -z "${no_tk}"; then
376 # now look for tix library stuff
378 . ${ac_cv_c_tclconfig}/tclConfig.sh
381 tixdir=../tix/win/tcl8.0
384 tixdir=../tix/unix/tk8.0
387 if test "${TCL_SHARED_BUILD}" = "1"; then
388 TIX_LIB_EXT="${TCL_SHLIB_SUFFIX}"
390 # Can't win them all: SunOS 4 (others?) appends a version
391 # number after the ".so"
394 TIX_LIB_EXT="${TIX_LIB_EXT}.1.0" ;;
401 if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
402 TIXLIB="-L${tixdir} -ltix${TIXVERSION}"
403 TIX_DEPS="${tixdir}/libtix${TIXVERSION}${TIX_LIB_EXT}"
405 TIXLIB="-L${tixdir} -ltix`echo ${TIXVERSION} | tr -d .`"
406 TIX_DEPS="${tixdir}/libtix`echo ${TIXVERSION} | tr -d .`${TIX_LIB_EXT}"
411 # Include some libraries that Tcl and Tk want.
412 if test "${enable_ide}" = "yes"; then
413 TCL_LIBS='$(LIBIDETCL) $(LIBIDE) $(LIBGUI) $(IDE) $(ITCL) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
414 CONFIG_DEPS='$(LIBIDETCL) $(LIBIDE) $(LIBGUI) $(IDE_DEPS) $(ITCL_DEPS) $(TIX_DEPS) $(TK_DEPS) $(TCL_DEPS)'
416 TCL_LIBS='$(LIBGUI) $(ITCL) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
417 CONFIG_DEPS='$(LIBGUI) $(ITCL_DEPS) $(TIX_DEPS) $(TK_DEPS) $(TCL_DEPS)'
419 # Yes, the ordering seems wrong here. But it isn't.
420 # TK_LIBS is the list of libraries that need to be linked
421 # after Tcl/Tk. Note that this isn't put into LIBS. If it
422 # were in LIBS then any link tests after this point would
423 # try to include things like `$(LIBGUI)', which wouldn't work.
424 GDBTKLIBS="${TCL_LIBS} ${TK_LIBS}"
425 CONFIG_OBS="${CONFIG_OBS} gdbtk.o"
427 if test x$gdb_cv_os_cygwin32 = xyes; then
428 WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32 -luser32"
429 WIN32LDAPP="-Wl,--subsystem,windows"
430 CONFIG_OBS="${CONFIG_OBS} gdbres.o"
436 AC_SUBST(ENABLE_GDBTK)
447 # Enable GPU2 library for MIPS simulator
448 AC_ARG_WITH(sim-gpu2,
449 [ --with-sim-gpu2=path Use GPU2 library under given directory],
452 if test -d "${withval}"
454 LIBS="${LIBS} -L${withval}/lib -lgpu2 -L${x_libraries} -lX11"
456 AC_MSG_WARN([Directory ${withval} does not exist.])
458 *) AC_MSG_WARN([--with-sim-gpu2 option invalid for target ${target}])
461 # Enable target accurate FP library
462 AC_ARG_WITH(sim-funit,
463 [ --with-sim-funit=path Use target FP lib under given directory],
466 if test -d "${withval}"
468 LIBS="${LIBS} -L${withval}/lib -lfunit"
470 AC_MSG_WARN([Directory ${withval} does not exist.])
472 *) AC_MSG_WARN([--with-sim-funit option invalid for target ${target}])
476 AC_SUBST(ENABLE_CFLAGS)
479 AC_SUBST(CONFIG_DEPS)
480 AC_SUBST(CONFIG_SRCS)
482 # Begin stuff to support --enable-shared
483 AC_ARG_ENABLE(shared,
484 [ --enable-shared use shared libraries],
485 [case "${enableval}" in
493 # If we have shared libraries, try to set rpath reasonably.
494 if test "${shared}" = "true"; then
497 HLDFLAGS='-Wl,+s,+b,$(libdir)'
499 *-*-irix5* | *-*-irix6*)
500 HLDFLAGS='-Wl,-rpath,$(libdir)'
504 *-*-linux* | *-pc-linux-gnu)
505 HLDFLAGS='-Wl,-rpath,$(libdir)'
508 HLDFLAGS='-R $(libdir)'
511 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;'
516 # On SunOS, if the linker supports the -rpath option, use it to
517 # prevent ../bfd and ../opcodes from being included in the run time
521 echo 'main () { }' > conftest.c
522 ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t
523 if grep 'unrecognized' conftest.t >/dev/null 2>&1; then
525 elif grep 'No such file' conftest.t >/dev/null 2>&1; then
527 elif grep 'do not mix' conftest.t >/dev/null 2>&1; then
529 elif grep 'some text already loaded' conftest.t >/dev/null 2>&1; then
531 elif test "${shared}" = "true"; then
532 HLDFLAGS='-Wl,-rpath=$(libdir)'
534 HLDFLAGS='-Wl,-rpath='
536 rm -f conftest.t conftest.c conftest
541 # End stuff to support --enable-shared
543 # target_subdir is used by the testsuite to find the target libraries.
545 if test "${host}" != "${target}"; then
546 target_subdir="${target_alias}/"
548 AC_SUBST(target_subdir)
551 host_makefile_frag=${srcdir}/config/${gdb_host_cpu}/${gdb_host}.mh
552 if test ! -f ${host_makefile_frag}; then
553 AC_MSG_ERROR("*** Gdb does not support host ${host}")
555 frags="$frags $host_makefile_frag"
557 target_makefile_frag=${srcdir}/config/${gdb_target_cpu}/${gdb_target}.mt
558 if test ! -f ${target_makefile_frag}; then
559 AC_MSG_ERROR("*** Gdb does not support target ${target}")
561 frags="$frags $target_makefile_frag"
563 AC_SUBST_FILE(host_makefile_frag)
564 AC_SUBST_FILE(target_makefile_frag)
569 s/XM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
570 ' ${host_makefile_frag}`
573 s/TM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
574 ' ${target_makefile_frag}`
576 # these really aren't orthogonal true/false values of the same condition,
577 # but shells are slow enough that I like to reuse the test conditions
579 if test "${target}" = "${host}"; then
581 s/NAT_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
582 ' ${host_makefile_frag}`
584 # GDBserver is only useful in a "native" enviroment
585 # configdirs=`echo $configdirs | sed 's/gdbserver//'`
589 # If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile
590 # (NAT_FILE) is not set in config/*/*.m[ht] files, we don't make the
591 # corresponding links. But we have to remove the xm.h files and tm.h
592 # files anyway, e.g. when switching from "configure host" to
598 if test "${hostfile}" != ""; then
599 files="${files} config/${gdb_host_cpu}/${hostfile}"
600 links="${links} xm.h"
603 if test "${targetfile}" != ""; then
604 files="${files} config/${gdb_target_cpu}/${targetfile}"
605 links="${links} tm.h"
608 if test "${nativefile}" != ""; then
609 files="${files} config/${gdb_host_cpu}/${nativefile}"
610 links="${links} nm.h"
612 # A cross-only configuration.
613 files="${files} config/nm-empty.h"
614 links="${links} nm.h"
616 # start-sanitize-gdbtk
618 # Make it possible to use the GUI without doing a full install
619 if test "${enable_gdbtk}" = "yes" -a ! -d gdbtcl ; then
620 if test "$LN_S" = "ln -s" -a ! -f gdbtcl ; then
621 echo linking $srcdir/gdbtcl to gdbtcl
622 $LN_S $srcdir/gdbtcl gdbtcl
624 echo Warning: Unable to link $srcdir/gdbtcl to gdbtcl. You will need to do a
625 echo " " make install before you are able to run the GUI.
630 AC_LINK_FILES($files, $links)
632 dnl Check for exe extension set on certain hosts (e.g. Win32)
635 AC_CONFIG_SUBDIRS($configdirs)
636 AC_OUTPUT(Makefile .gdbinit:gdbinit.in,
638 dnl Autoconf doesn't provide a mechanism for modifying definitions
639 dnl provided by makefile fragments.
641 if test "${nativefile}" = ""; then
642 sed -e '/^NATDEPFILES[[ ]]*=[[ ]]*/s//# NATDEPFILES=/' \
643 < Makefile > Makefile.tem
644 mv -f Makefile.tem Makefile
648 sed -e '/^TM_FILE[ ]*=/s,^TM_FILE[ ]*=[ ]*,&config/'"${gdb_target_cpu}"'/,
649 /^XM_FILE[ ]*=/s,^XM_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,
650 /^NAT_FILE[ ]*=/s,^NAT_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,' <Makefile >Makefile.tmp
651 mv -f Makefile.tmp Makefile
654 case x$CONFIG_HEADERS in
660 gdb_host_cpu=$gdb_host_cpu
661 gdb_target_cpu=$gdb_target_cpu
662 nativefile=$nativefile