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 dnl See if thread_db library is around for Solaris thread debugging. Note that
204 dnl we must explicitly test for version 1 of the library because version 0
205 dnl (present on Solaris 2.4 or earlier) doesn't have the same API.
207 dnl Note that we only want this if we are both native (host == target), and
208 dnl not doing a canadian cross build (build == host).
210 if test ${build} = ${host} -a ${host} = ${target} ; then
213 AC_MSG_CHECKING(for HPUX/OSF thread support)
214 if test -f /usr/include/dce/cma_config.h ; then
215 if test "$GCC" = "yes" ; then
217 AC_DEFINE(HAVE_HPUX_THREAD_SUPPORT)
218 CONFIG_OBS="${CONFIG_OJS} hpux-thread.o"
219 CONFIG_SRCS="${CONFIG_SRCS} hpux-thread.c"
221 AC_MSG_RESULT(no (suppressed because you are not using GCC))
228 AC_MSG_CHECKING(for Solaris thread debugging library)
229 if test -f /usr/lib/libthread_db.so.1 ; then
231 AC_DEFINE(HAVE_THREAD_DB_LIB)
232 CONFIG_OBS="${CONFIG_OBS} sol-thread.o"
233 CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c"
234 AC_CHECK_LIB(dl, dlopen)
235 if test "$GCC" = "yes" ; then
236 # The GNU linker requires the -export-dynamic option to make
237 # all symbols visible in the dynamic symbol table.
238 hold_ldflags=$LDFLAGS
239 AC_MSG_CHECKING(for the ld -export-dynamic flag)
240 LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
241 AC_TRY_LINK(, [int i;], found=yes, found=no)
242 LDFLAGS=$hold_ldflags
243 AC_MSG_RESULT($found)
244 if test $found = yes; then
245 CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -Wl,-export-dynamic"
253 AC_SUBST(CONFIG_LDFLAGS)
256 dnl Handle optional features that can be enabled.
259 AC_ARG_ENABLE(netrom,
261 [case "${enableval}" in
262 yes) enable_netrom=yes ;;
263 no) enable_netrom=no ;;
264 *) AC_MSG_ERROR(bad value ${enableval} given for netrom option) ;;
267 if test "${enable_netrom}" = "yes"; then
268 CONFIG_OBS="${CONFIG_OBS} remote-nrom.o"
269 CONFIG_SRCS="${CONFIG_SRCS} remote-nrom.c"
274 AC_SUBST(MMALLOC_CFLAGS)
278 [ --with-mmalloc use memory mapped malloc package],
279 [case "${withval}" in
280 yes) want_mmalloc=true ;;
281 no) want_mmalloc=false;;
282 *) AC_MSG_ERROR(bad value ${withval} for GDB with-mmalloc option) ;;
283 esac],[want_mmalloc=false])dnl
285 if test x$want_mmalloc = xtrue; then
286 AC_DEFINE(USE_MMALLOC)
287 AC_DEFINE(MMCHECK_FORCE)
288 MMALLOC_CFLAGS="-I$srcdir/../mmalloc"
289 MMALLOC='../mmalloc/libmmalloc.a'
292 # start-sanitize-gdbtk
294 AC_ARG_ENABLE(ide, [ --enable-ide Enable IDE support])
295 if test "$enable_ide" = yes; then
307 [case "${enableval}" in
311 AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.])
314 AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.])
322 AC_MSG_ERROR(bad value ${enableval} given for gdbtk option) ;;
325 # Default is on for everything but go32 and cygwin32
334 # In the cygwin32 environment, we need some additional flags.
335 AC_CACHE_CHECK([for cygwin32], gdb_cv_os_cygwin32,
336 [AC_EGREP_CPP(lose, [
339 #endif],[gdb_cv_os_cygwin32=yes],[gdb_cv_os_cygwin32=no])])
346 WINDRES=${WINDRES-windres}
349 if test x$gdb_cv_os_cygwin32 = xyes; then
350 if test x$enable_ide = xyes; then
351 WIN32LIBS="-ladvapi32"
357 if test "${enable_gdbtk}" = "yes"; then
360 if test -z "${no_tcl}"; then
364 # If $no_tk is nonempty, then we can't do Tk, and there is no
365 # point to doing Tcl.
366 if test -z "${no_tk}"; then
373 # now look for tix library stuff
375 . ${ac_cv_c_tclconfig}/tclConfig.sh
378 tixdir=../tix/win/tcl8.0
381 tixdir=../tix/unix/tk8.0
384 if test "${TCL_SHARED_BUILD}" = "1"; then
385 TIX_LIB_EXT="${TCL_SHLIB_SUFFIX}"
387 # Can't win them all: SunOS 4 (others?) appends a version
388 # number after the ".so"
391 TIX_LIB_EXT="${TIX_LIB_EXT}.1.0" ;;
398 if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
399 TIXLIB="-L${tixdir} -ltix${TIXVERSION}"
400 TIX_DEPS="${tixdir}/libtix${TIXVERSION}${TIX_LIB_EXT}"
402 TIXLIB="-L${tixdir} -ltix`echo ${TIXVERSION} | tr -d .`"
403 TIX_DEPS="${tixdir}/libtix`echo ${TIXVERSION} | tr -d .`${TIX_LIB_EXT}"
408 # Include some libraries that Tcl and Tk want.
409 if test "${enable_ide}" = "yes"; then
410 TCL_LIBS='$(LIBIDETCL) $(LIBIDE) $(LIBGUI) $(IDE) $(ITCL) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
411 CONFIG_DEPS='$(LIBIDETCL) $(LIBIDE) $(LIBGUI) $(IDE_DEPS) $(ITCL_DEPS) $(TIX_DEPS) $(TK_DEPS) $(TCL_DEPS)'
413 TCL_LIBS='$(LIBGUI) $(ITCL) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
414 CONFIG_DEPS='$(LIBGUI) $(ITCL_DEPS) $(TIX_DEPS) $(TK_DEPS) $(TCL_DEPS)'
416 # Yes, the ordering seems wrong here. But it isn't.
417 # TK_LIBS is the list of libraries that need to be linked
419 LIBS="${LIBS} ${TCL_LIBS} ${TK_LIBS}"
420 CONFIG_OBS="${CONFIG_OBS} gdbtk.o"
422 if test x$gdb_cv_os_cygwin32 = xyes; then
423 WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32 -luser32"
424 WIN32LDAPP="-Wl,--subsystem,windows"
425 CONFIG_OBS="${CONFIG_OBS} gdbres.o"
431 AC_SUBST(ENABLE_GDBTK)
441 # Enable GPU2 library for MIPS simulator
442 AC_ARG_WITH(sim-gpu2,
443 [ --with-sim-gpu2=path Use GPU2 library under given directory],
446 if test -d "${withval}"
448 LIBS="${LIBS} -L${withval}/lib -lgpu2 -L${x_libraries} -lX11"
450 AC_MSG_WARN([Directory ${withval} does not exist.])
452 *) AC_MSG_WARN([--with-sim-gpu2 option invalid for target ${target}])
455 # Enable target accurate FP library
456 AC_ARG_WITH(sim-funit,
457 [ --with-sim-funit=path Use target FP lib under given directory],
460 if test -d "${withval}"
462 LIBS="${LIBS} -L${withval}/lib -lfunit"
464 AC_MSG_WARN([Directory ${withval} does not exist.])
466 *) AC_MSG_WARN([--with-sim-funit option invalid for target ${target}])
470 AC_SUBST(ENABLE_CFLAGS)
473 AC_SUBST(CONFIG_DEPS)
474 AC_SUBST(CONFIG_SRCS)
476 # Begin stuff to support --enable-shared
477 AC_ARG_ENABLE(shared,
478 [ --enable-shared use shared libraries],
479 [case "${enableval}" in
487 # If we have shared libraries, try to set rpath reasonably.
488 if test "${shared}" = "true"; then
491 HLDFLAGS='-Wl,+s,+b,$(libdir)'
493 *-*-irix5* | *-*-irix6*)
494 HLDFLAGS='-Wl,-rpath,$(libdir)'
498 *-*-linux* | *-pc-linux-gnu)
499 HLDFLAGS='-Wl,-rpath,$(libdir)'
502 HLDFLAGS='-R $(libdir)'
505 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;'
510 # On SunOS, if the linker supports the -rpath option, use it to
511 # prevent ../bfd and ../opcodes from being included in the run time
515 echo 'main () { }' > conftest.c
516 ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t
517 if grep 'unrecognized' conftest.t >/dev/null 2>&1; then
519 elif grep 'No such file' conftest.t >/dev/null 2>&1; then
521 elif grep 'do not mix' conftest.t >/dev/null 2>&1; then
523 elif grep 'some text already loaded' conftest.t >/dev/null 2>&1; then
525 elif test "${shared}" = "true"; then
526 HLDFLAGS='-Wl,-rpath=$(libdir)'
528 HLDFLAGS='-Wl,-rpath='
530 rm -f conftest.t conftest.c conftest
535 # End stuff to support --enable-shared
537 # target_subdir is used by the testsuite to find the target libraries.
539 if test "${host}" != "${target}"; then
540 target_subdir="${target_alias}/"
542 AC_SUBST(target_subdir)
545 host_makefile_frag=${srcdir}/config/${gdb_host_cpu}/${gdb_host}.mh
546 if test ! -f ${host_makefile_frag}; then
547 AC_MSG_ERROR("*** Gdb does not support host ${host}")
549 frags="$frags $host_makefile_frag"
551 target_makefile_frag=${srcdir}/config/${gdb_target_cpu}/${gdb_target}.mt
552 if test ! -f ${target_makefile_frag}; then
553 AC_MSG_ERROR("*** Gdb does not support target ${target}")
555 frags="$frags $target_makefile_frag"
557 AC_SUBST_FILE(host_makefile_frag)
558 AC_SUBST_FILE(target_makefile_frag)
563 s/XM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
564 ' ${host_makefile_frag}`
567 s/TM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
568 ' ${target_makefile_frag}`
570 # these really aren't orthogonal true/false values of the same condition,
571 # but shells are slow enough that I like to reuse the test conditions
573 if test "${target}" = "${host}"; then
575 s/NAT_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
576 ' ${host_makefile_frag}`
578 # GDBserver is only useful in a "native" enviroment
579 # configdirs=`echo $configdirs | sed 's/gdbserver//'`
583 # If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile
584 # (NAT_FILE) is not set in config/*/*.m[ht] files, we don't make the
585 # corresponding links. But we have to remove the xm.h files and tm.h
586 # files anyway, e.g. when switching from "configure host" to
592 if test "${hostfile}" != ""; then
593 files="${files} config/${gdb_host_cpu}/${hostfile}"
594 links="${links} xm.h"
597 if test "${targetfile}" != ""; then
598 files="${files} config/${gdb_target_cpu}/${targetfile}"
599 links="${links} tm.h"
602 if test "${nativefile}" != ""; then
603 files="${files} config/${gdb_host_cpu}/${nativefile}"
604 links="${links} nm.h"
606 # A cross-only configuration.
607 files="${files} config/nm-empty.h"
608 links="${links} nm.h"
610 # start-sanitize-gdbtk
612 # Make it possible to use the GUI without doing a full install
613 if test "${enable_gdbtk}" = "yes" -a ! -d gdbtcl ; then
614 if test "$LN_S" = "ln -s" -a ! -f gdbtcl ; then
615 echo linking $srcdir/gdbtcl to gdbtcl
616 $LN_S $srcdir/gdbtcl gdbtcl
618 echo Warning: Unable to link $srcdir/gdbtcl to gdbtcl. You will need to do a
619 echo " " make install before you are able to run the GUI.
624 AC_LINK_FILES($files, $links)
626 dnl Check for exe extension set on certain hosts (e.g. Win32)
629 AC_CONFIG_SUBDIRS($configdirs)
630 AC_OUTPUT(Makefile .gdbinit:gdbinit.in,
632 dnl Autoconf doesn't provide a mechanism for modifying definitions
633 dnl provided by makefile fragments.
635 if test "${nativefile}" = ""; then
636 sed -e '/^NATDEPFILES[[ ]]*=[[ ]]*/s//# NATDEPFILES=/' \
637 < Makefile > Makefile.tem
638 mv -f Makefile.tem Makefile
642 sed -e '/^TM_FILE[ ]*=/s,^TM_FILE[ ]*=[ ]*,&config/'"${gdb_target_cpu}"'/,
643 /^XM_FILE[ ]*=/s,^XM_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,
644 /^NAT_FILE[ ]*=/s,^NAT_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,' <Makefile >Makefile.tmp
645 mv -f Makefile.tmp Makefile
648 case x$CONFIG_HEADERS in
654 gdb_host_cpu=$gdb_host_cpu
655 gdb_target_cpu=$gdb_target_cpu
656 nativefile=$nativefile