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(ctype.h curses.h endian.h libintl.h limits.h link.h \
72 memory.h objlist.h ptrace.h sgtty.h stddef.h stdlib.h \
73 string.h strings.h sys/procfs.h sys/ptrace.h sys/reg.h \
74 term.h termio.h termios.h unistd.h wait.h sys/wait.h \
81 AC_CHECK_FUNCS(setpgid sbrk select poll sigaction isascii bzero bcopy memcpy btowc)
84 # If we are configured native on GNU/Linux, work around problems with sys/procfs.h
85 if test "${target}" = "${host}"; then
88 AC_DEFINE(START_INFERIOR_TRAPS_EXPECTED,2)
89 AC_DEFINE(sys_quotactl)
94 AC_MSG_CHECKING([for gregset_t type])
95 AC_CACHE_VAL(gdb_cv_have_gregset_t,
96 [AC_TRY_LINK([#include <sys/procfs.h>],[gregset_t *gregsetp = 0],
97 gdb_cv_have_gregset_t=yes, gdb_cv_have_gregset_t=no)])
98 AC_MSG_RESULT($gdb_cv_have_gregset_t)
99 if test $gdb_cv_have_gregset_t = yes; then
100 AC_DEFINE(HAVE_GREGSET_T)
103 AC_MSG_CHECKING([for fpregset_t type])
104 AC_CACHE_VAL(gdb_cv_have_fpregset_t,
105 [AC_TRY_LINK([#include <sys/procfs.h>],[fpregset_t *fpregsetp = 0],
106 gdb_cv_have_fpregset_t=yes, gdb_cv_have_fpregset_t=no)])
107 AC_MSG_RESULT($gdb_cv_have_fpregset_t)
108 if test $gdb_cv_have_fpregset_t = yes; then
109 AC_DEFINE(HAVE_FPREGSET_T)
112 dnl See if host has libm. This is usually needed by simulators.
113 AC_CHECK_LIB(m, main)
115 dnl See if compiler supports "long long" type.
117 AC_MSG_CHECKING(for long long support in compiler)
118 AC_CACHE_VAL(gdb_cv_c_long_long,
120 extern long long foo;
121 switch (foo & 2) { case 0: return 1; }
123 gdb_cv_c_long_long=yes, gdb_cv_c_long_long=no)])
124 AC_MSG_RESULT($gdb_cv_c_long_long)
125 if test $gdb_cv_c_long_long = yes; then
126 AC_DEFINE(CC_HAS_LONG_LONG)
129 dnl See if the compiler and runtime support printing long long
131 AC_MSG_CHECKING(for long long support in printf)
132 AC_CACHE_VAL(gdb_cv_printf_has_long_long,
137 l = (l << 16) + 0x0123;
138 l = (l << 16) + 0x4567;
139 l = (l << 16) + 0x89ab;
140 l = (l << 16) + 0xcdef;
141 sprintf (buf, "0x%016llx", l);
142 return (strcmp ("0x0123456789abcdef", buf));
144 gdb_cv_printf_has_long_long=yes,
145 gdb_cv_printf_has_long_long=no,
146 gdb_cv_printf_has_long_long=no)])
147 if test $gdb_cv_printf_has_long_long = yes; then
148 AC_DEFINE(PRINTF_HAS_LONG_LONG)
150 AC_MSG_RESULT($gdb_cv_printf_has_long_long)
152 dnl See if compiler supports "long double" type. Can't use AC_C_LONG_DOUBLE
153 dnl because autoconf complains about cross-compilation issues. However, this
154 dnl code uses the same variables as the macro for compatibility.
156 AC_MSG_CHECKING(for long double support in compiler)
157 AC_CACHE_VAL(ac_cv_c_long_double,
158 [AC_TRY_COMPILE(, [long double foo;],
159 ac_cv_c_long_double=yes, ac_cv_c_long_double=no)])
160 AC_MSG_RESULT($ac_cv_c_long_double)
161 if test $ac_cv_c_long_double = yes; then
162 AC_DEFINE(HAVE_LONG_DOUBLE)
165 dnl See if the compiler and runtime support printing long doubles
167 AC_MSG_CHECKING(for long double support in printf)
168 AC_CACHE_VAL(gdb_cv_printf_has_long_double,
172 long double f = 3.141592653;
173 sprintf (buf, "%Lg", f);
174 return (strncmp ("3.14159", buf, 7));
176 gdb_cv_printf_has_long_double=yes,
177 gdb_cv_printf_has_long_double=no,
178 gdb_cv_printf_has_long_double=no)])
179 if test $gdb_cv_printf_has_long_double = yes; then
180 AC_DEFINE(PRINTF_HAS_LONG_DOUBLE)
182 AC_MSG_RESULT($gdb_cv_printf_has_long_double)
184 dnl See if the compiler and runtime support scanning long doubles
186 AC_MSG_CHECKING(for long double support in scanf)
187 AC_CACHE_VAL(gdb_cv_scanf_has_long_double,
190 char *buf = "3.141592653";
192 sscanf (buf, "%Lg", &f);
193 return !(f > 3.14159 && f < 3.14160);
195 gdb_cv_scanf_has_long_double=yes,
196 gdb_cv_scanf_has_long_double=no,
197 gdb_cv_scanf_has_long_double=no)])
198 if test $gdb_cv_scanf_has_long_double = yes; then
199 AC_DEFINE(SCANF_HAS_LONG_DOUBLE)
201 AC_MSG_RESULT($gdb_cv_scanf_has_long_double)
205 BFD_NEED_DECLARATION(malloc)
206 BFD_NEED_DECLARATION(realloc)
207 BFD_NEED_DECLARATION(free)
209 BFD_NEED_DECLARATION(strerror)
211 dnl See if thread_db library is around for Solaris thread debugging. Note that
212 dnl we must explicitly test for version 1 of the library because version 0
213 dnl (present on Solaris 2.4 or earlier) doesn't have the same API.
215 dnl Note that we only want this if we are both native (host == target), and
216 dnl not doing a canadian cross build (build == host).
218 if test ${build} = ${host} -a ${host} = ${target} ; then
221 AC_MSG_CHECKING(for HPUX/OSF thread support)
222 if test -f /usr/include/dce/cma_config.h ; then
223 if test "$GCC" = "yes" ; then
225 AC_DEFINE(HAVE_HPUX_THREAD_SUPPORT)
226 CONFIG_OBS="${CONFIG_OJS} hpux-thread.o"
227 CONFIG_SRCS="${CONFIG_SRCS} hpux-thread.c"
229 AC_MSG_RESULT(no (suppressed because you are not using GCC))
236 AC_MSG_CHECKING(for Solaris thread debugging library)
237 if test -f /usr/lib/libthread_db.so.1 ; then
239 AC_DEFINE(HAVE_THREAD_DB_LIB)
240 CONFIG_OBS="${CONFIG_OBS} sol-thread.o"
241 CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c"
242 AC_CHECK_LIB(dl, dlopen)
243 if test "$GCC" = "yes" ; then
244 # The GNU linker requires the -export-dynamic option to make
245 # all symbols visible in the dynamic symbol table.
246 hold_ldflags=$LDFLAGS
247 AC_MSG_CHECKING(for the ld -export-dynamic flag)
248 LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
249 AC_TRY_LINK(, [int i;], found=yes, found=no)
250 LDFLAGS=$hold_ldflags
251 AC_MSG_RESULT($found)
252 if test $found = yes; then
253 CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -Wl,-export-dynamic"
261 AC_SUBST(CONFIG_LDFLAGS)
264 dnl Handle optional features that can be enabled.
267 AC_ARG_ENABLE(netrom,
269 [case "${enableval}" in
270 yes) enable_netrom=yes ;;
271 no) enable_netrom=no ;;
272 *) AC_MSG_ERROR(bad value ${enableval} given for netrom option) ;;
275 if test "${enable_netrom}" = "yes"; then
276 CONFIG_OBS="${CONFIG_OBS} remote-nrom.o"
277 CONFIG_SRCS="${CONFIG_SRCS} remote-nrom.c"
280 AC_ARG_ENABLE(warnings,
281 [ --enable-warnings Enable compiler warnings if gcc is used],
282 [case "${enableval}" in
283 yes) enable_warnings=yes ;;
284 no) enable_warnings=no ;;
285 *) AC_MSG_ERROR(bad value ${enableval} given for warnings options) ;;
288 if test "x$enable_warnings" = xyes -a "x$GCC" = xyes
290 WARN_CFLAGS="-Wall -Wstrict-prototypes"
294 AC_SUBST(WARN_CFLAGS)
298 AC_SUBST(MMALLOC_CFLAGS)
302 [ --with-mmalloc Use memory mapped malloc package],
303 [case "${withval}" in
304 yes) want_mmalloc=true ;;
305 no) want_mmalloc=false;;
306 *) AC_MSG_ERROR(bad value ${withval} for GDB with-mmalloc option) ;;
307 esac],[want_mmalloc=false])dnl
309 if test x$want_mmalloc = xtrue; then
310 AC_DEFINE(USE_MMALLOC)
311 AC_DEFINE(MMCHECK_FORCE)
312 MMALLOC_CFLAGS="-I$srcdir/../mmalloc"
313 MMALLOC='../mmalloc/libmmalloc.a'
316 # start-sanitize-gdbtk
319 AC_ARG_ENABLE(ide, [ --enable-ide Enable IDE support])
320 if test "$enable_ide" = yes; then
328 AC_ARG_WITH(foundry-libs,
329 [ --with-foundry-libs=DIR Use the Foundry SDK in DIR],
330 [FOUNDRY_LIB_BASE=${withval}])
331 AC_SUBST(FOUNDRY_LIB_BASE)
334 # This is the Foundry SDK
336 # These variables are used to determine where the Foundry libs and
337 # header files are located.
339 if test "$FOUNDRY_LIB_BASE" != ""; then
340 LIBGUI="${FOUNDRY_LIB_BASE}/lib/libgui.a"
341 GUI_CFLAGS_X="-I${FOUNDRY_LIB_BASE}/include"
342 if test x$enable_ide = xyes; then
343 IDE_CFLAGS_X="-I${FOUNDRY_LIB_BASE}/include -DIDE"
344 IDE_X="-L${FOUNDRY_LIB_BASE}/lib -lilu-Tk -lilu-c -lilu"
346 IDE_CFLAGS_X="-I${FOUNDRY_LIB_BASE}/include"
348 LIBIDETCL="${FOUNDRY_LIB_BASE}/lib/libidetcl.a"
349 LIBIDE="${FOUNDRY_LIB_BASE}/lib/libide.a"
350 IDE_DEPS="${FOUNDRY_LIB_BASE}/lib/libilu-Tk.a ${FOUNDRY_LIB_BASE}/lib/libilu-c.a ${FOUNDRY_LIB_BASE}/lib/libilu.a"
352 LIBGUI="../libgui/src/libgui.a"
353 GUI_CFLAGS_X="-I${srcdir}/../libgui/src"
354 if test x$enable_ide = xyes; then
355 IDE_CFLAGS_X="-I${srcdir}/../libidetcl/src -I${srcdir}/../libide/src -DIDE -I${srcdir}/../ilu/runtime/mainloop"
356 IDE_X="-L../ilu/runtime/mainloop -lilu-Tk -L../ilu/runtime/c -lilu-c -L../ilu/runtime/kernel -lilu"
358 IDE_CFLAGS_X="-I${srcdir}/../libidetcl/src -I${srcdir}/../libide/src"
360 LIBIDETCL="../libidetcl/src/libidetcl.a"
361 LIBIDE="../libide/src/libide.a"
362 IDE_DEPS="../ilu/runtime/mainloop/libilu-Tk.a ../ilu/runtime/c/libilu-c.a ../ilu/runtime/kernel/libilu.a"
365 AC_SUBST(GUI_CFLAGS_X)
366 AC_SUBST(IDE_CFLAGS_X)
376 [ --enable-gdbtk Enable GDBTK GUI front end],
377 [case "${enableval}" in
381 AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.])
384 AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.])
392 AC_MSG_ERROR(bad value ${enableval} given for gdbtk option) ;;
395 # Default is on for everything but go32 and cygwin32
404 # In the cygwin32 environment, we need some additional flags.
405 AC_CACHE_CHECK([for cygwin32], gdb_cv_os_cygwin32,
406 [AC_EGREP_CPP(lose, [
409 #endif],[gdb_cv_os_cygwin32=yes],[gdb_cv_os_cygwin32=no])])
416 WINDRES=${WINDRES-windres}
419 if test x$gdb_cv_os_cygwin32 = xyes; then
420 if test x$enable_ide = xyes; then
421 WIN32LIBS="-ladvapi32"
428 if test "${enable_gdbtk}" = "yes"; then
431 if test -z "${no_tcl}"; then
435 # If $no_tk is nonempty, then we can't do Tk, and there is no
436 # point to doing Tcl.
437 if test -z "${no_tk}"; then
444 # now look for tix library stuff
446 . ${ac_cv_c_tclconfig}/tclConfig.sh
449 tixdir=../tix/win/tcl8.0
452 tixdir=../tix/unix/tk8.0
455 if test "${TCL_SHARED_BUILD}" = "1"; then
456 TIX_LIB_EXT="${TCL_SHLIB_SUFFIX}"
458 # Can't win them all: SunOS 4 (others?) appends a version
459 # number after the ".so"
462 TIX_LIB_EXT="${TIX_LIB_EXT}.1.0" ;;
469 if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
470 TIXLIB="-L${tixdir} -ltix${TIXVERSION}"
471 TIX_DEPS="${tixdir}/libtix${TIXVERSION}${TIX_LIB_EXT}"
473 TIXLIB="-L${tixdir} -ltix`echo ${TIXVERSION} | tr -d .`"
474 TIX_DEPS="${tixdir}/libtix`echo ${TIXVERSION} | tr -d .`${TIX_LIB_EXT}"
478 ENABLE_CFLAGS="${ENABLE_CFLAGS} -DGDBTK"
480 # Include some libraries that Tcl and Tk want.
481 if test "${enable_ide}" = "yes"; then
482 TCL_LIBS='$(LIBIDETCL) $(LIBIDE) $(LIBGUI) $(IDE) $(ITCL) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
483 CONFIG_DEPS='$(LIBIDETCL) $(LIBIDE) $(LIBGUI) $(IDE_DEPS) $(ITCL_DEPS) $(TIX_DEPS) $(TK_DEPS) $(TCL_DEPS)'
485 TCL_LIBS='$(LIBGUI) $(ITCL) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
486 CONFIG_DEPS='$(LIBGUI) $(ITCL_DEPS) $(TIX_DEPS) $(TK_DEPS) $(TCL_DEPS)'
488 # Yes, the ordering seems wrong here. But it isn't.
489 # TK_LIBS is the list of libraries that need to be linked
490 # after Tcl/Tk. Note that this isn't put into LIBS. If it
491 # were in LIBS then any link tests after this point would
492 # try to include things like `$(LIBGUI)', which wouldn't work.
493 GDBTKLIBS="${TCL_LIBS} ${TK_LIBS}"
494 CONFIG_OBS="${CONFIG_OBS} gdbtk.o gdbtk-cmds.o gdbtk-hooks.o"
496 if test x$gdb_cv_os_cygwin32 = xyes; then
497 WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32 -luser32"
498 WIN32LDAPP="-Wl,--subsystem,console"
499 CONFIG_OBS="${CONFIG_OBS} gdbres.o"
505 AC_SUBST(ENABLE_GDBTK)
516 # Enable GPU2 library for MIPS simulator
517 AC_ARG_WITH(sim-gpu2,
518 [ --with-sim-gpu2=DIR Use GPU2 library under given DIR],
521 if test -d "${withval}"
523 LIBS="${LIBS} -L${withval}/lib -lgpu2 -L${x_libraries} -lX11 -lXext"
525 AC_MSG_WARN([Directory ${withval} does not exist.])
527 *) AC_MSG_WARN([--with-sim-gpu2 option invalid for target ${target}])
530 # Enable target accurate FP library
531 AC_ARG_WITH(sim-funit,
532 [ --with-sim-funit=DIR Use target FP lib under given DIR],
535 if test -d "${withval}"
537 LIBS="${LIBS} -L${withval}/lib -lfunit"
539 AC_MSG_WARN([Directory ${withval} does not exist.])
541 *) AC_MSG_WARN([--with-sim-funit option invalid for target ${target}])
545 dnl Solaris puts wctype in /usr/lib/libw.a
546 AC_CHECK_LIB(w, wctype, [LIBS="$LIBS -lw"])
548 AC_SUBST(ENABLE_CFLAGS)
551 AC_SUBST(CONFIG_DEPS)
552 AC_SUBST(CONFIG_SRCS)
554 # Begin stuff to support --enable-shared
555 AC_ARG_ENABLE(shared,
556 [ --enable-shared Use shared libraries],
557 [case "${enableval}" in
565 # If we have shared libraries, try to set rpath reasonably.
566 if test "${shared}" = "true"; then
569 HLDFLAGS='-Wl,+s,+b,$(libdir)'
571 *-*-irix5* | *-*-irix6*)
572 HLDFLAGS='-Wl,-rpath,$(libdir)'
576 *-*-linux* | *-pc-linux-gnu)
577 HLDFLAGS='-Wl,-rpath,$(libdir)'
580 HLDFLAGS='-R $(libdir)'
583 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;'
588 # On SunOS, if the linker supports the -rpath option, use it to
589 # prevent ../bfd and ../opcodes from being included in the run time
593 echo 'main () { }' > conftest.c
594 ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t
595 if grep 'unrecognized' conftest.t >/dev/null 2>&1; then
597 elif grep 'No such file' conftest.t >/dev/null 2>&1; then
599 elif grep 'do not mix' conftest.t >/dev/null 2>&1; then
601 elif grep 'some text already loaded' conftest.t >/dev/null 2>&1; then
603 elif test "${shared}" = "true"; then
604 HLDFLAGS='-Wl,-rpath=$(libdir)'
606 HLDFLAGS='-Wl,-rpath='
608 rm -f conftest.t conftest.c conftest
613 # End stuff to support --enable-shared
615 # target_subdir is used by the testsuite to find the target libraries.
617 if test "${host}" != "${target}"; then
618 target_subdir="${target_alias}/"
620 AC_SUBST(target_subdir)
623 host_makefile_frag=${srcdir}/config/${gdb_host_cpu}/${gdb_host}.mh
624 if test ! -f ${host_makefile_frag}; then
625 AC_MSG_ERROR("*** Gdb does not support host ${host}")
627 frags="$frags $host_makefile_frag"
629 target_makefile_frag=${srcdir}/config/${gdb_target_cpu}/${gdb_target}.mt
630 if test ! -f ${target_makefile_frag}; then
631 AC_MSG_ERROR("*** Gdb does not support target ${target}")
633 frags="$frags $target_makefile_frag"
635 AC_SUBST_FILE(host_makefile_frag)
636 AC_SUBST_FILE(target_makefile_frag)
641 s/XM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
642 ' ${host_makefile_frag}`
645 s/TM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
646 ' ${target_makefile_frag}`
648 # these really aren't orthogonal true/false values of the same condition,
649 # but shells are slow enough that I like to reuse the test conditions
651 if test "${target}" = "${host}"; then
653 s/NAT_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
654 ' ${host_makefile_frag}`
656 # GDBserver is only useful in a "native" enviroment
657 # configdirs=`echo $configdirs | sed 's/gdbserver//'`
661 # If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile
662 # (NAT_FILE) is not set in config/*/*.m[ht] files, we don't make the
663 # corresponding links. But we have to remove the xm.h files and tm.h
664 # files anyway, e.g. when switching from "configure host" to
670 if test "${hostfile}" != ""; then
671 files="${files} config/${gdb_host_cpu}/${hostfile}"
672 links="${links} xm.h"
675 if test "${targetfile}" != ""; then
676 files="${files} config/${gdb_target_cpu}/${targetfile}"
677 links="${links} tm.h"
680 if test "${nativefile}" != ""; then
681 files="${files} config/${gdb_host_cpu}/${nativefile}"
682 links="${links} nm.h"
684 # A cross-only configuration.
685 files="${files} config/nm-empty.h"
686 links="${links} nm.h"
688 # start-sanitize-gdbtk
690 # Make it possible to use the GUI without doing a full install
691 if test "${enable_gdbtk}" = "yes" -a ! -d gdbtcl ; then
692 if test "$LN_S" = "ln -s" -a ! -f gdbtcl ; then
693 echo linking $srcdir/gdbtcl to gdbtcl
694 $LN_S $srcdir/gdbtcl gdbtcl
696 echo Warning: Unable to link $srcdir/gdbtcl to gdbtcl. You will need to do a
697 echo " " make install before you are able to run the GUI.
702 AC_LINK_FILES($files, $links)
704 dnl Check for exe extension set on certain hosts (e.g. Win32)
707 AC_CONFIG_SUBDIRS($configdirs)
708 AC_OUTPUT(Makefile .gdbinit:gdbinit.in,
710 dnl Autoconf doesn't provide a mechanism for modifying definitions
711 dnl provided by makefile fragments.
713 if test "${nativefile}" = ""; then
714 sed -e '/^NATDEPFILES[[ ]]*=[[ ]]*/s//# NATDEPFILES=/' \
715 < Makefile > Makefile.tem
716 mv -f Makefile.tem Makefile
720 sed -e '/^TM_FILE[ ]*=/s,^TM_FILE[ ]*=[ ]*,&config/'"${gdb_target_cpu}"'/,
721 /^XM_FILE[ ]*=/s,^XM_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,
722 /^NAT_FILE[ ]*=/s,^NAT_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,' <Makefile >Makefile.tmp
723 mv -f Makefile.tmp Makefile
726 case x$CONFIG_HEADERS in
732 gdb_host_cpu=$gdb_host_cpu
733 gdb_target_cpu=$gdb_target_cpu
734 nativefile=$nativefile