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 libintl.h wctype.h wchar.h)
77 AC_CHECK_FUNCS(setpgid sbrk select poll sigaction isascii bzero bcopy memcpy btowc)
80 # If we are configured native on GNU/Linux, work around problems with sys/procfs.h
81 if test "${target}" = "${host}"; then
84 AC_DEFINE(START_INFERIOR_TRAPS_EXPECTED,2)
85 AC_DEFINE(sys_quotactl)
90 AC_MSG_CHECKING([for gregset_t type])
91 AC_CACHE_VAL(gdb_cv_have_gregset_t,
92 [AC_TRY_LINK([#include <sys/procfs.h>],[gregset_t *gregsetp = 0],
93 gdb_cv_have_gregset_t=yes, gdb_cv_have_gregset_t=no)])
94 AC_MSG_RESULT($gdb_cv_have_gregset_t)
95 if test $gdb_cv_have_gregset_t = yes; then
96 AC_DEFINE(HAVE_GREGSET_T)
99 AC_MSG_CHECKING([for fpregset_t type])
100 AC_CACHE_VAL(gdb_cv_have_fpregset_t,
101 [AC_TRY_LINK([#include <sys/procfs.h>],[fpregset_t *fpregsetp = 0],
102 gdb_cv_have_fpregset_t=yes, gdb_cv_have_fpregset_t=no)])
103 AC_MSG_RESULT($gdb_cv_have_fpregset_t)
104 if test $gdb_cv_have_fpregset_t = yes; then
105 AC_DEFINE(HAVE_FPREGSET_T)
108 dnl See if host has libm. This is usually needed by simulators.
109 AC_CHECK_LIB(m, main)
111 dnl See if compiler supports "long long" type.
113 AC_MSG_CHECKING(for long long support in compiler)
114 AC_CACHE_VAL(gdb_cv_c_long_long,
116 extern long long foo;
117 switch (foo & 2) { case 0: return 1; }
119 gdb_cv_c_long_long=yes, gdb_cv_c_long_long=no)])
120 AC_MSG_RESULT($gdb_cv_c_long_long)
121 if test $gdb_cv_c_long_long = yes; then
122 AC_DEFINE(CC_HAS_LONG_LONG)
125 dnl See if the compiler and runtime support printing long long
127 AC_MSG_CHECKING(for long long support in printf)
128 AC_CACHE_VAL(gdb_cv_printf_has_long_long,
133 l = (l << 16) + 0x0123;
134 l = (l << 16) + 0x4567;
135 l = (l << 16) + 0x89ab;
136 l = (l << 16) + 0xcdef;
137 sprintf (buf, "0x%016llx", l);
138 return (strcmp ("0x0123456789abcdef", buf));
140 gdb_cv_printf_has_long_long=yes,
141 gdb_cv_printf_has_long_long=no,
142 gdb_cv_printf_has_long_long=no)])
143 if test $gdb_cv_printf_has_long_long = yes; then
144 AC_DEFINE(PRINTF_HAS_LONG_LONG)
146 AC_MSG_RESULT($gdb_cv_printf_has_long_long)
148 dnl See if compiler supports "long double" type. Can't use AC_C_LONG_DOUBLE
149 dnl because autoconf complains about cross-compilation issues. However, this
150 dnl code uses the same variables as the macro for compatibility.
152 AC_MSG_CHECKING(for long double support in compiler)
153 AC_CACHE_VAL(ac_cv_c_long_double,
154 [AC_TRY_COMPILE(, [long double foo;],
155 ac_cv_c_long_double=yes, ac_cv_c_long_double=no)])
156 AC_MSG_RESULT($ac_cv_c_long_double)
157 if test $ac_cv_c_long_double = yes; then
158 AC_DEFINE(HAVE_LONG_DOUBLE)
161 dnl See if the compiler and runtime support printing long doubles
163 AC_MSG_CHECKING(for long double support in printf)
164 AC_CACHE_VAL(gdb_cv_printf_has_long_double,
168 long double f = 3.141592653;
169 sprintf (buf, "%Lg", f);
170 return (strncmp ("3.14159", buf, 7));
172 gdb_cv_printf_has_long_double=yes,
173 gdb_cv_printf_has_long_double=no,
174 gdb_cv_printf_has_long_double=no)])
175 if test $gdb_cv_printf_has_long_double = yes; then
176 AC_DEFINE(PRINTF_HAS_LONG_DOUBLE)
178 AC_MSG_RESULT($gdb_cv_printf_has_long_double)
180 dnl See if the compiler and runtime support scanning long doubles
182 AC_MSG_CHECKING(for long double support in scanf)
183 AC_CACHE_VAL(gdb_cv_scanf_has_long_double,
186 char *buf = "3.141592653";
188 sscanf (buf, "%Lg", &f);
189 return !(f > 3.14159 && f < 3.14160);
191 gdb_cv_scanf_has_long_double=yes,
192 gdb_cv_scanf_has_long_double=no,
193 gdb_cv_scanf_has_long_double=no)])
194 if test $gdb_cv_scanf_has_long_double = yes; then
195 AC_DEFINE(SCANF_HAS_LONG_DOUBLE)
197 AC_MSG_RESULT($gdb_cv_scanf_has_long_double)
201 BFD_NEED_DECLARATION(malloc)
202 BFD_NEED_DECLARATION(realloc)
203 BFD_NEED_DECLARATION(free)
205 BFD_NEED_DECLARATION(strerror)
207 dnl See if thread_db library is around for Solaris thread debugging. Note that
208 dnl we must explicitly test for version 1 of the library because version 0
209 dnl (present on Solaris 2.4 or earlier) doesn't have the same API.
211 dnl Note that we only want this if we are both native (host == target), and
212 dnl not doing a canadian cross build (build == host).
214 if test ${build} = ${host} -a ${host} = ${target} ; then
217 AC_MSG_CHECKING(for HPUX/OSF thread support)
218 if test -f /usr/include/dce/cma_config.h ; then
219 if test "$GCC" = "yes" ; then
221 AC_DEFINE(HAVE_HPUX_THREAD_SUPPORT)
222 CONFIG_OBS="${CONFIG_OJS} hpux-thread.o"
223 CONFIG_SRCS="${CONFIG_SRCS} hpux-thread.c"
225 AC_MSG_RESULT(no (suppressed because you are not using GCC))
232 AC_MSG_CHECKING(for Solaris thread debugging library)
233 if test -f /usr/lib/libthread_db.so.1 ; then
235 AC_DEFINE(HAVE_THREAD_DB_LIB)
236 CONFIG_OBS="${CONFIG_OBS} sol-thread.o"
237 CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c"
238 AC_CHECK_LIB(dl, dlopen)
239 if test "$GCC" = "yes" ; then
240 # The GNU linker requires the -export-dynamic option to make
241 # all symbols visible in the dynamic symbol table.
242 hold_ldflags=$LDFLAGS
243 AC_MSG_CHECKING(for the ld -export-dynamic flag)
244 LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
245 AC_TRY_LINK(, [int i;], found=yes, found=no)
246 LDFLAGS=$hold_ldflags
247 AC_MSG_RESULT($found)
248 if test $found = yes; then
249 CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -Wl,-export-dynamic"
257 AC_SUBST(CONFIG_LDFLAGS)
260 dnl Handle optional features that can be enabled.
263 AC_ARG_ENABLE(netrom,
265 [case "${enableval}" in
266 yes) enable_netrom=yes ;;
267 no) enable_netrom=no ;;
268 *) AC_MSG_ERROR(bad value ${enableval} given for netrom option) ;;
271 if test "${enable_netrom}" = "yes"; then
272 CONFIG_OBS="${CONFIG_OBS} remote-nrom.o"
273 CONFIG_SRCS="${CONFIG_SRCS} remote-nrom.c"
278 AC_SUBST(MMALLOC_CFLAGS)
282 [ --with-mmalloc use memory mapped malloc package],
283 [case "${withval}" in
284 yes) want_mmalloc=true ;;
285 no) want_mmalloc=false;;
286 *) AC_MSG_ERROR(bad value ${withval} for GDB with-mmalloc option) ;;
287 esac],[want_mmalloc=false])dnl
289 if test x$want_mmalloc = xtrue; then
290 AC_DEFINE(USE_MMALLOC)
291 AC_DEFINE(MMCHECK_FORCE)
292 MMALLOC_CFLAGS="-I$srcdir/../mmalloc"
293 MMALLOC='../mmalloc/libmmalloc.a'
296 # start-sanitize-gdbtk
298 AC_ARG_ENABLE(ide, [ --enable-ide Enable IDE support])
299 if test "$enable_ide" = yes; then
307 AC_ARG_WITH(foundry-libs,
308 [ --with-foundry-libs=directory use the Foundry SDK in directory],
309 [FOUNDRY_LIB_BASE=${withval}])
310 AC_SUBST(FOUNDRY_LIB_BASE)
313 # This is the Foundry SDK
315 # These variables are used to determine where the Foundry libs and
316 # header files are located.
318 if test "$FOUNDRY_LIB_BASE" != ""; then
319 LIBGUI="${FOUNDRY_LIB_BASE}/lib/libgui.a"
320 GUI_CFLAGS_X="-I${FOUNDRY_LIB_BASE}/include"
321 if test x$enable_ide = xyes; then
322 IDE_CFLAGS_X="-I${FOUNDRY_LIB_BASE}/include -DIDE"
323 IDE_X="-L${FOUNDRY_LIB_BASE}/lib -lilu-Tk -lilu-c -lilu"
325 IDE_CFLAGS_X="-I${FOUNDRY_LIB_BASE}/include"
327 LIBIDETCL="${FOUNDRY_LIB_BASE}/lib/libidetcl.a"
328 LIBIDE="${FOUNDRY_LIB_BASE}/lib/libide.a"
329 IDE_DEPS="${FOUNDRY_LIB_BASE}/lib/libilu-Tk.a ${FOUNDRY_LIB_BASE}/lib/libilu-c.a ${FOUNDRY_LIB_BASE}/lib/libilu.a"
331 LIBGUI="../libgui/src/libgui.a"
332 GUI_CFLAGS_X="-I${srcdir}/../libgui/src"
333 if test x$enable_ide = xyes; then
334 IDE_CFLAGS_X="-I${srcdir}/../libidetcl/src -I${srcdir}/../libide/src -DIDE -I${srcdir}/../ilu/runtime/mainloop"
335 IDE_X="-L../ilu/runtime/mainloop -lilu-Tk -L../ilu/runtime/c -lilu-c -L../ilu/runtime/kernel -lilu"
337 IDE_CFLAGS_X="-I${srcdir}/../libidetcl/src -I${srcdir}/../libide/src"
339 LIBIDETCL="../libidetcl/src/libidetcl.a"
340 LIBIDE="../libide/src/libide.a"
341 IDE_DEPS="../ilu/runtime/mainloop/libilu-Tk.a ../ilu/runtime/c/libilu-c.a ../ilu/runtime/kernel/libilu.a"
344 AC_SUBST(GUI_CFLAGS_X)
345 AC_SUBST(IDE_CFLAGS_X)
355 [case "${enableval}" in
359 AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.])
362 AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.])
370 AC_MSG_ERROR(bad value ${enableval} given for gdbtk option) ;;
373 # Default is on for everything but go32 and cygwin32
382 # In the cygwin32 environment, we need some additional flags.
383 AC_CACHE_CHECK([for cygwin32], gdb_cv_os_cygwin32,
384 [AC_EGREP_CPP(lose, [
387 #endif],[gdb_cv_os_cygwin32=yes],[gdb_cv_os_cygwin32=no])])
394 WINDRES=${WINDRES-windres}
397 if test x$gdb_cv_os_cygwin32 = xyes; then
398 if test x$enable_ide = xyes; then
399 WIN32LIBS="-ladvapi32"
406 if test "${enable_gdbtk}" = "yes"; then
409 if test -z "${no_tcl}"; then
413 # If $no_tk is nonempty, then we can't do Tk, and there is no
414 # point to doing Tcl.
415 if test -z "${no_tk}"; then
422 # now look for tix library stuff
424 . ${ac_cv_c_tclconfig}/tclConfig.sh
427 tixdir=../tix/win/tcl8.0
430 tixdir=../tix/unix/tk8.0
433 if test "${TCL_SHARED_BUILD}" = "1"; then
434 TIX_LIB_EXT="${TCL_SHLIB_SUFFIX}"
436 # Can't win them all: SunOS 4 (others?) appends a version
437 # number after the ".so"
440 TIX_LIB_EXT="${TIX_LIB_EXT}.1.0" ;;
447 if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
448 TIXLIB="-L${tixdir} -ltix${TIXVERSION}"
449 TIX_DEPS="${tixdir}/libtix${TIXVERSION}${TIX_LIB_EXT}"
451 TIXLIB="-L${tixdir} -ltix`echo ${TIXVERSION} | tr -d .`"
452 TIX_DEPS="${tixdir}/libtix`echo ${TIXVERSION} | tr -d .`${TIX_LIB_EXT}"
456 ENABLE_CFLAGS="${ENABLE_CFLAGS} -DGDBTK"
458 # Include some libraries that Tcl and Tk want.
459 if test "${enable_ide}" = "yes"; then
460 TCL_LIBS='$(LIBIDETCL) $(LIBIDE) $(LIBGUI) $(IDE) $(ITCL) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
461 CONFIG_DEPS='$(LIBIDETCL) $(LIBIDE) $(LIBGUI) $(IDE_DEPS) $(ITCL_DEPS) $(TIX_DEPS) $(TK_DEPS) $(TCL_DEPS)'
463 TCL_LIBS='$(LIBGUI) $(ITCL) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
464 CONFIG_DEPS='$(LIBGUI) $(ITCL_DEPS) $(TIX_DEPS) $(TK_DEPS) $(TCL_DEPS)'
466 # Yes, the ordering seems wrong here. But it isn't.
467 # TK_LIBS is the list of libraries that need to be linked
468 # after Tcl/Tk. Note that this isn't put into LIBS. If it
469 # were in LIBS then any link tests after this point would
470 # try to include things like `$(LIBGUI)', which wouldn't work.
471 GDBTKLIBS="${TCL_LIBS} ${TK_LIBS}"
472 CONFIG_OBS="${CONFIG_OBS} gdbtk.o gdbtk-cmds.o gdbtk-hooks.o"
474 if test x$gdb_cv_os_cygwin32 = xyes; then
475 WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32 -luser32"
476 WIN32LDAPP="-Wl,--subsystem,console"
477 CONFIG_OBS="${CONFIG_OBS} gdbres.o"
483 AC_SUBST(ENABLE_GDBTK)
494 # Enable GPU2 library for MIPS simulator
495 AC_ARG_WITH(sim-gpu2,
496 [ --with-sim-gpu2=path Use GPU2 library under given directory],
499 if test -d "${withval}"
501 LIBS="${LIBS} -L${withval}/lib -lgpu2 -L${x_libraries} -lX11 -lXext"
503 AC_MSG_WARN([Directory ${withval} does not exist.])
505 *) AC_MSG_WARN([--with-sim-gpu2 option invalid for target ${target}])
508 # Enable target accurate FP library
509 AC_ARG_WITH(sim-funit,
510 [ --with-sim-funit=path Use target FP lib under given directory],
513 if test -d "${withval}"
515 LIBS="${LIBS} -L${withval}/lib -lfunit"
517 AC_MSG_WARN([Directory ${withval} does not exist.])
519 *) AC_MSG_WARN([--with-sim-funit option invalid for target ${target}])
523 dnl Solaris puts wctype in /usr/lib/libw.a
524 AC_CHECK_LIB(w, wctype, [LIBS="$LIBS -lw"])
526 AC_SUBST(ENABLE_CFLAGS)
529 AC_SUBST(CONFIG_DEPS)
530 AC_SUBST(CONFIG_SRCS)
532 # Begin stuff to support --enable-shared
533 AC_ARG_ENABLE(shared,
534 [ --enable-shared use shared libraries],
535 [case "${enableval}" in
543 # If we have shared libraries, try to set rpath reasonably.
544 if test "${shared}" = "true"; then
547 HLDFLAGS='-Wl,+s,+b,$(libdir)'
549 *-*-irix5* | *-*-irix6*)
550 HLDFLAGS='-Wl,-rpath,$(libdir)'
554 *-*-linux* | *-pc-linux-gnu)
555 HLDFLAGS='-Wl,-rpath,$(libdir)'
558 HLDFLAGS='-R $(libdir)'
561 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;'
566 # On SunOS, if the linker supports the -rpath option, use it to
567 # prevent ../bfd and ../opcodes from being included in the run time
571 echo 'main () { }' > conftest.c
572 ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t
573 if grep 'unrecognized' conftest.t >/dev/null 2>&1; then
575 elif grep 'No such file' conftest.t >/dev/null 2>&1; then
577 elif grep 'do not mix' conftest.t >/dev/null 2>&1; then
579 elif grep 'some text already loaded' conftest.t >/dev/null 2>&1; then
581 elif test "${shared}" = "true"; then
582 HLDFLAGS='-Wl,-rpath=$(libdir)'
584 HLDFLAGS='-Wl,-rpath='
586 rm -f conftest.t conftest.c conftest
591 # End stuff to support --enable-shared
593 # target_subdir is used by the testsuite to find the target libraries.
595 if test "${host}" != "${target}"; then
596 target_subdir="${target_alias}/"
598 AC_SUBST(target_subdir)
601 host_makefile_frag=${srcdir}/config/${gdb_host_cpu}/${gdb_host}.mh
602 if test ! -f ${host_makefile_frag}; then
603 AC_MSG_ERROR("*** Gdb does not support host ${host}")
605 frags="$frags $host_makefile_frag"
607 target_makefile_frag=${srcdir}/config/${gdb_target_cpu}/${gdb_target}.mt
608 if test ! -f ${target_makefile_frag}; then
609 AC_MSG_ERROR("*** Gdb does not support target ${target}")
611 frags="$frags $target_makefile_frag"
613 AC_SUBST_FILE(host_makefile_frag)
614 AC_SUBST_FILE(target_makefile_frag)
619 s/XM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
620 ' ${host_makefile_frag}`
623 s/TM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
624 ' ${target_makefile_frag}`
626 # these really aren't orthogonal true/false values of the same condition,
627 # but shells are slow enough that I like to reuse the test conditions
629 if test "${target}" = "${host}"; then
631 s/NAT_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
632 ' ${host_makefile_frag}`
634 # GDBserver is only useful in a "native" enviroment
635 # configdirs=`echo $configdirs | sed 's/gdbserver//'`
639 # If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile
640 # (NAT_FILE) is not set in config/*/*.m[ht] files, we don't make the
641 # corresponding links. But we have to remove the xm.h files and tm.h
642 # files anyway, e.g. when switching from "configure host" to
648 if test "${hostfile}" != ""; then
649 files="${files} config/${gdb_host_cpu}/${hostfile}"
650 links="${links} xm.h"
653 if test "${targetfile}" != ""; then
654 files="${files} config/${gdb_target_cpu}/${targetfile}"
655 links="${links} tm.h"
658 if test "${nativefile}" != ""; then
659 files="${files} config/${gdb_host_cpu}/${nativefile}"
660 links="${links} nm.h"
662 # A cross-only configuration.
663 files="${files} config/nm-empty.h"
664 links="${links} nm.h"
666 # start-sanitize-gdbtk
668 # Make it possible to use the GUI without doing a full install
669 if test "${enable_gdbtk}" = "yes" -a ! -d gdbtcl ; then
670 if test "$LN_S" = "ln -s" -a ! -f gdbtcl ; then
671 echo linking $srcdir/gdbtcl to gdbtcl
672 $LN_S $srcdir/gdbtcl gdbtcl
674 echo Warning: Unable to link $srcdir/gdbtcl to gdbtcl. You will need to do a
675 echo " " make install before you are able to run the GUI.
680 AC_LINK_FILES($files, $links)
682 dnl Check for exe extension set on certain hosts (e.g. Win32)
685 AC_CONFIG_SUBDIRS($configdirs)
686 AC_OUTPUT(Makefile .gdbinit:gdbinit.in,
688 dnl Autoconf doesn't provide a mechanism for modifying definitions
689 dnl provided by makefile fragments.
691 if test "${nativefile}" = ""; then
692 sed -e '/^NATDEPFILES[[ ]]*=[[ ]]*/s//# NATDEPFILES=/' \
693 < Makefile > Makefile.tem
694 mv -f Makefile.tem Makefile
698 sed -e '/^TM_FILE[ ]*=/s,^TM_FILE[ ]*=[ ]*,&config/'"${gdb_target_cpu}"'/,
699 /^XM_FILE[ ]*=/s,^XM_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,
700 /^NAT_FILE[ ]*=/s,^NAT_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,' <Makefile >Makefile.tmp
701 mv -f Makefile.tmp Makefile
704 case x$CONFIG_HEADERS in
710 gdb_host_cpu=$gdb_host_cpu
711 gdb_target_cpu=$gdb_target_cpu
712 nativefile=$nativefile