X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fconfigure.in;h=cec924591f613443286aca247d9d8f209b2e6dc3;hb=b6ba6518e9254bc25f88088228e93ac966ebccd1;hp=8435420a91a82175193e3316368bb8ad31b79e08;hpb=5c44784c11ecc8febfff615b88496c56c9ad5274;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/configure.in b/gdb/configure.in index 8435420a91..cec924591f 100644 --- a/gdb/configure.in +++ b/gdb/configure.in @@ -1,5 +1,6 @@ dnl Autoconf configure script for GDB, the GNU debugger. -dnl Copyright 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +dnl Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001 +dnl Free Software Foundation, Inc. dnl dnl This file is part of GDB. dnl @@ -22,6 +23,7 @@ dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.13)dnl AC_INIT(main.c) AC_CONFIG_HEADER(config.h:config.in) +AM_MAINTAINER_MODE AC_PROG_CC AC_AIX @@ -39,8 +41,15 @@ CY_GNU_GETTEXT dnl List of object files added by configure. CONFIG_OBS= +CONFIG_LIB_OBS= CONFIG_DEPS= CONFIG_SRCS= +CONFIG_INITS= +ENABLE_CFLAGS= +CONFIG_ALL= +CONFIG_CLEAN= +CONFIG_INSTALL= +CONFIG_UNINSTALL= configdirs="doc testsuite" @@ -64,50 +73,105 @@ changequote(,)dnl . ${srcdir}/configure.tgt +targ=${target} ; . ${srcdir}/../bfd/config.bfd + dnl changequote([,])dnl +dnl use BFD to determine the default architecture and byte order +dnl (bfd_vec->byteorder provides the latter). +targ=${target} +. ${srcdir}/../bfd/config.bfd + +dnl We only want the first arch, if there is more than one. +targ_archs=`echo ${targ_archs} | sed -e 's/ .*//;'` + +if test x"${targ_archs}" != x ; then + AC_DEFINE_UNQUOTED(DEFAULT_BFD_ARCH, ${targ_archs}) +fi +if test x"${targ_defvec}" != x ; then + AC_DEFINE_UNQUOTED(DEFAULT_BFD_VEC, ${targ_defvec}) +fi + AC_PROG_AWK AC_PROG_INSTALL AC_CHECK_TOOL(AR, ar) AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(DLLTOOL, dlltool) +AC_CHECK_TOOL(WINDRES, windres) AC_PROG_YACC +dnl MiG is needed for the Hurd. +AC_CHECK_TOOL(MIG, mig) + AC_ARG_PROGRAM AC_TYPE_SIGNAL AC_HEADER_STDC -AC_CHECK_HEADERS(ctype.h curses.h endian.h link.h \ +dnl Solaris 7 needs _MSE_INT_H defined to avoid a clash between +dnl and that causes AC_CHECK_HEADERS to think doesn't +dnl exist. + +case $host_os in solaris2.7 | solaris2.8) case "$GCC" in yes) + AC_DEFINE(_MSE_INT_H) +esac; esac + +AC_CHECK_HEADERS(ctype.h endian.h link.h thread_db.h proc_service.h \ memory.h objlist.h ptrace.h sgtty.h stddef.h stdlib.h \ - string.h sys/procfs.h sys/ptrace.h sys/reg.h \ + string.h sys/procfs.h sys/ptrace.h sys/reg.h stdint.h \ term.h termio.h termios.h unistd.h wait.h sys/wait.h \ wchar.h wctype.h asm/debugreg.h sys/debugreg.h sys/select.h \ - time.h) + time.h sys/file.h sys/ioctl.h sys/user.h sys/fault.h sys/syscall.h \ + dirent.h sys/ndir.h sys/dir.h ndir.h \ + curses.h ncurses.h \ + poll.h sys/poll.h) AC_HEADER_STAT AC_C_CONST AC_CHECK_FUNCS(setpgid sbrk sigaction isascii bzero bcopy btowc poll sigprocmask) +AC_FUNC_VFORK AC_FUNC_ALLOCA -dnl See if ptrace.h provides the PTRACE_GETXFPREGS request. -dnl PTRACE_GETXFPREGS is a Cygnus invention, since we wrote our own -dnl Linux kernel patch for SSE support. That patch may or may not -dnl actually make it into the official distribution. If you find that -dnl years have gone by since this configure test was added, and Linux -dnl isn't using PTRACE_GETXFPREGS, that means that our patch didn't -dnl make it, and you can delete this code. -AC_MSG_CHECKING(for PTRACE_GETXFPREGS) -AC_CACHE_VAL(gdb_cv_have_ptrace_getxfpregs, +# See if machine/reg.h supports the %fs and %gs i386 segment registers. +# Older i386 BSD's don't have the r_fs and r_gs members of `struct reg'. +AC_CACHE_CHECK([for r_fs in struct reg], gdb_cv_struct_reg_r_fs, +[AC_TRY_COMPILE([#include ], [struct reg r; r.r_fs;], +gdb_cv_struct_reg_r_fs=yes, gdb_cv_struct_reg_r_fs=no)]) +if test $gdb_cv_struct_reg_r_fs = yes; then + AC_DEFINE(HAVE_STRUCT_REG_R_FS) +fi +AC_CACHE_CHECK([for r_gs in struct reg], gdb_cv_struct_reg_r_gs, +[AC_TRY_COMPILE([#include ], [struct reg r; r.r_gs;], +gdb_cv_struct_reg_r_gs=yes, gdb_cv_struct_reg_r_gs=no)]) +if test $gdb_cv_struct_reg_r_gs = yes; then + AC_DEFINE(HAVE_STRUCT_REG_R_GS) +fi + +dnl See if ptrace.h provides the PTRACE_GETREGS request. +AC_MSG_CHECKING(for PTRACE_GETREGS) +AC_CACHE_VAL(gdb_cv_have_ptrace_getregs, +[AC_TRY_COMPILE([#include ], + [PTRACE_GETREGS;], + [gdb_cv_have_ptrace_getregs=yes], + [gdb_cv_have_ptrace_getregs=no])]) +AC_MSG_RESULT($gdb_cv_have_ptrace_getregs) +if test $gdb_cv_have_ptrace_getregs = yes; then + AC_DEFINE(HAVE_PTRACE_GETREGS) +fi + +dnl See if ptrace.h provides the PTRACE_GETFPXREGS request. +AC_MSG_CHECKING(for PTRACE_GETFPXREGS) +AC_CACHE_VAL(gdb_cv_have_ptrace_getfpxregs, [AC_TRY_COMPILE([#include ], - [PTRACE_GETXFPREGS;], - [gdb_cv_have_ptrace_getxfpregs=yes], - [gdb_cv_have_ptrace_getxfpregs=no])]) -AC_MSG_RESULT($gdb_cv_have_ptrace_getxfpregs) -if test $gdb_cv_have_ptrace_getxfpregs = yes; then - AC_DEFINE(HAVE_PTRACE_GETXFPREGS) + [PTRACE_GETFPXREGS;], + [gdb_cv_have_ptrace_getfpxregs=yes], + [gdb_cv_have_ptrace_getfpxregs=no])]) +AC_MSG_RESULT($gdb_cv_have_ptrace_getfpxregs) +if test $gdb_cv_have_ptrace_getfpxregs = yes; then + AC_DEFINE(HAVE_PTRACE_GETFPXREGS) fi AC_CHECK_LIB(socket, socketpair) @@ -144,33 +208,24 @@ AC_MSG_RESULT($gdb_cv_hpux_sswide) # If we are configured native on GNU/Linux, work around problems with # sys/procfs.h -# Also detect which type of /proc is in use, such as for Unixware. +# Also detect which type of /proc is in use, such as for Unixware or Solaris. if test "${target}" = "${host}"; then - gdb_cv_hostos_is_solaris=no case "${host}" in i[[3456]]86-*-linux*) AC_DEFINE(START_INFERIOR_TRAPS_EXPECTED,2) AC_DEFINE(sys_quotactl) ;; - *-*-solaris*) - gdb_cv_hostos_is_solaris=yes ;; + ia64-*-aix*) + AC_DEFINE(NEW_PROC_API) + ;; + *-*-unixware* | *-*-sysv4.2* | *-*-sysv5*) + AC_DEFINE(NEW_PROC_API) + ;; + *-*-solaris2.[[678]]) + AC_DEFINE(NEW_PROC_API) + ;; esac - AC_MSG_CHECKING(for directory proc entries) -# The [gdb_host != sun4sol2] hack is because Solaris does provide the -# multiple procfs files as of Solaris 2.6, but GDB can't use it right now. - if test "$ac_cv_header_sys_procfs_h" = yes -a \ - "$gdb_cv_hostos_is_solaris" = no \ - -a -d /proc/$$ \ - -a -f /proc/$$/ctl \ - -a -f /proc/$$/as \ - -a -f /proc/$$/map \ - -a -f /proc/$$/status; then - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_MULTIPLE_PROC_FDS) - else - AC_MSG_RESULT(no) - fi fi if test "$ac_cv_header_sys_procfs_h" = yes; then @@ -178,6 +233,56 @@ if test "$ac_cv_header_sys_procfs_h" = yes; then BFD_HAVE_SYS_PROCFS_TYPE(prrun_t) BFD_HAVE_SYS_PROCFS_TYPE(gregset_t) BFD_HAVE_SYS_PROCFS_TYPE(fpregset_t) + BFD_HAVE_SYS_PROCFS_TYPE(prgregset_t) + BFD_HAVE_SYS_PROCFS_TYPE(prfpregset_t) + BFD_HAVE_SYS_PROCFS_TYPE(prgregset32_t) + BFD_HAVE_SYS_PROCFS_TYPE(prfpregset32_t) + BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t) + BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t) + BFD_HAVE_SYS_PROCFS_TYPE(prsysent_t) + BFD_HAVE_SYS_PROCFS_TYPE(pr_sigset_t) + BFD_HAVE_SYS_PROCFS_TYPE(pr_sigaction64_t) + BFD_HAVE_SYS_PROCFS_TYPE(pr_siginfo64_t) + + dnl Check for struct link_map32 type, which allows a 64-bit Solaris + dnl debugger to debug a 32-bit Solaris app with 32-bit shared libraries. + + AC_MSG_CHECKING(for struct link_map32 in sys/link.h) + AC_CACHE_VAL(gdb_cv_have_struct_link_map32, + [AC_TRY_COMPILE([#define _SYSCALL32 +#include ], [struct link_map32 l;], + gdb_cv_have_struct_link_map32=yes, + gdb_cv_have_struct_link_map32=no)]) + AC_MSG_RESULT($gdb_cv_have_struct_link_map32) + if test $gdb_cv_have_struct_link_map32 = yes; then + AC_DEFINE(HAVE_STRUCT_LINK_MAP32) + fi + + dnl Check for broken prfpregset_t type + + dnl For Linux/i386, glibc 2.1.3 was released with a bogus + dnl prfpregset_t type (it's a typedef for the pointer to a struct + dnl instead of the struct itself). We detect this here, and work + dnl around it in lin-thread.c. + + if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then + AC_MSG_CHECKING(whether prfpregset_t type is broken) + AC_CACHE_VAL(gdb_cv_prfpregset_t_broken, + [AC_TRY_RUN([#include + int main () + { + if (sizeof (prfpregset_t) == sizeof (void *)) + return 1; + return 0; + }], + gdb_cv_prfpregset_t_broken=no, + gdb_cv_prfpregset_t_broken=yes, + gdb_cv_prfpregset_t_broken=yes)]) + AC_MSG_RESULT($gdb_cv_prfpregset_t_broken) + if test $gdb_cv_prfpregset_t_broken = yes; then + AC_DEFINE(PRFPREGSET_T_BROKEN) + fi + fi dnl Check for PIOCSET ioctl entry @@ -312,7 +417,7 @@ if test ${build} = ${host} -a ${host} = ${target} ; then if test "$GCC" = "yes" ; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_HPUX_THREAD_SUPPORT) - CONFIG_OBS="${CONFIG_OJS} hpux-thread.o" + CONFIG_LIB_OBS="${CONFIG_LIB_OBS} hpux-thread.o" CONFIG_SRCS="${CONFIG_SRCS} hpux-thread.c" else AC_MSG_RESULT(no (suppressed because you are not using GCC)) @@ -326,7 +431,7 @@ if test ${build} = ${host} -a ${host} = ${target} ; then if test -f /usr/lib/libthread_db.so.1 ; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_THREAD_DB_LIB) - CONFIG_OBS="${CONFIG_OBS} sol-thread.o" + CONFIG_LIB_OBS="${CONFIG_LIB_OBS} sol-thread.o" CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c" AC_CHECK_LIB(dl, dlopen) if test "$GCC" = "yes" ; then @@ -365,8 +470,92 @@ if test ${build} = ${host} -a ${host} = ${target} ; then AC_SUBST(CONFIG_LDFLAGS) fi +dnl The CLI cannot be disabled yet, but may be in the future + +dnl Handle CLI sub-directory configury. +AC_ARG_ENABLE(gdbcli, +[ --enable-gdbcli Enable GDB-CLI interface], +[ + case "${enableval}" in + yes) enable_gdbcli=yes ;; + "") enable_gdbcli=yes ;; + no) + AC_MSG_ERROR(The CLI cannot be disabled yet) + ;; + *) + AC_MSG_ERROR(Bad value for --enable-gdbcli: ${enableval}) + ;; + esac +], +[enable_gdbcli=yes]) +case ${enable_gdbcli} in + "yes" ) + if test -d "${srcdir}/cli" ; then + CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_CLI_OBS)" + CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_CLI_DEPS)" + CONFIG_SRCS="${CONFIG_SRCS} \$(SUBDIR_CLI_SRCS)" + CONFIG_INITS="${CONFIG_INITS} \$(SUBDIR_CLI_INITS)" + ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_CLI_CFLAGS)" + CONFIG_ALL="${CONFIG_ALL} \$(SUBDIR_CLI_ALL)" + CONFIG_CLEAN="${CONFIG_CLEAN} \$(SUBDIR_CLI_CLEAN)" + CONFIG_INSTALL="${CONFIG_INSTALL} \$(SUBDIR_CLI_INSTALL)" + CONFIG_UNINSTALL="${CONFIG_UNINSTALL} \$(SUBDIR_CLI_UNINSTALL)" + fi + ;; +esac + dnl Handle optional features that can be enabled. -ENABLE_CFLAGS= + +dnl Handle MI sub-directory configury. +AC_ARG_ENABLE(gdbmi, +[ --enable-gdbmi Enable GDB-MI interface], +[ + case "${enable_gdbmi}" in + yes | no) ;; + "") enable_gdbmi=yes ;; + *) + AC_MSG_ERROR(Bad value for --enable-gdbmi: ${enableval}) + ;; + esac +]) +case ${enable_gdbmi} in + "yes" ) + if test -d "${srcdir}/mi" ; then + CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_MI_OBS)" + CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_MI_DEPS)" + CONFIG_SRCS="${CONFIG_SRCS} \$(SUBDIR_MI_SRCS)" + CONFIG_INITS="${CONFIG_INITS} \$(SUBDIR_MI_INITS)" + ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_MI_CFLAGS)" + CONFIG_ALL="${CONFIG_ALL} \$(SUBDIR_MI_ALL)" + CONFIG_CLEAN="${CONFIG_CLEAN} \$(SUBDIR_MI_CLEAN)" + CONFIG_INSTALL="${CONFIG_INSTALL} \$(SUBDIR_MI_INSTALL)" + CONFIG_UNINSTALL="${CONFIG_UNINSTALL} \$(SUBDIR_MI_UNINSTALL)" + fi + ;; +esac + +# Configure UI_OUT by default (before 5.2 it can be disabled) +# It must be configured if gdbmi is configured + +UIOUT_CFLAGS= +AC_SUBST(UIOUT_CFLAGS) + +AC_ARG_WITH(uiout, +[ --with-uiout Use new uiout functions intead of *printf's], +[case "${withval}" in + yes) want_uiout=true ;; + no) if test $enable_gdbmi = yes; then + AC_MSG_ERROR(uiout is needed for MI and cannot be disabled) + else + want_uiout=false + fi ;; + *) AC_MSG_ERROR(bad value ${withval} for GDB with-uiout option) ;; +esac], +[want_uiout=true])dnl + +if test $want_uiout = true; then + UIOUT_CFLAGS="-DUI_OUT=1" +fi AC_ARG_ENABLE(tui, [ --enable-tui Enable full-screen terminal user interface], @@ -381,17 +570,19 @@ AC_ARG_ENABLE(tui, ]) case ${enable_tui} in "yes" ) - AC_DEFINE(TUI) - BUILD_TUI=all-tui - TUI_LIBRARY=tui/libtui.a - ;; - * ) - BUILD_TUI= - TUI_LIBRARY= - ;; + if test -d "${srcdir}/tui" ; then + CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_TUI_OBS)" + CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_TUI_DEPS)" + CONFIG_SRCS="${CONFIG_SRCS} \$(SUBDIR_TUI_SRCS)" + CONFIG_INITS="${CONFIG_INITS} \$(SUBDIR_TUI_INITS)" + ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_TUI_CFLAGS)" + CONFIG_ALL="${CONFIG_ALL} \$(SUBDIR_TUI_ALL)" + CONFIG_CLEAN="${CONFIG_CLEAN} \$(SUBDIR_TUI_CLEAN)" + CONFIG_INSTALL="${CONFIG_INSTALL} \$(SUBDIR_TUI_INSTALL)" + CONFIG_UNINSTALL="${CONFIG_UNINSTALL} \$(SUBDIR_TUI_UNINSTALL)" + fi + ;; esac -AC_SUBST(BUILD_TUI) -AC_SUBST(TUI_LIBRARY) AC_ARG_ENABLE(netrom, [ --enable-netrom Enable NetROM support], @@ -402,14 +593,26 @@ no) enable_netrom=no ;; esac]) if test "${enable_netrom}" = "yes"; then - CONFIG_OBS="${CONFIG_OBS} remote-nrom.o" + CONFIG_LIB_OBS="${CONFIG_LIB_OBS} remote-nrom.o" CONFIG_SRCS="${CONFIG_SRCS} remote-nrom.c" fi + +# NOTE: Don't add -Wall or -Wunused, they both include +# -Wunused-parameter which reports bogus warnings. +# NOTE: If you add to this list, remember to update +# gdb/doc/gdbint.texinfo. +build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \ +-Wformat -Wparentheses -Wpointer-arith" +# Up for debate: -Wswitch -Wcomment -trigraphs -Wtrigraphs +# -Wunused-function -Wunused-label -Wunused-variable -Wunused-value +# -Wchar-subscripts -Wuninitialized -Wtraditional -Wshadow -Wcast-qual +# -Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes +# -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls +# -Woverloaded-virtual -Winline -Werror" AC_ARG_ENABLE(build-warnings, [ --enable-build-warnings Enable build-time compiler warnings if gcc is used], -[build_warnings="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations" -case "${enableval}" in +[case "${enableval}" in yes) ;; no) build_warnings="-w";; ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` @@ -419,22 +622,42 @@ case "${enableval}" in *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;; esac if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then - echo "Setting warning flags = $build_warnings" 6>&1 -fi + echo "Setting compiler warning flags = $build_warnings" 6>&1 +fi])dnl +AC_ARG_ENABLE(gdb-build-warnings, +[ --enable-gdb-build-warnings Enable GDB specific build-time compiler warnings if gcc is used], +[case "${enableval}" in + yes) ;; + no) build_warnings="-w";; + ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` + build_warnings="${build_warnings} ${t}";; + *,) t=`echo "${enableval}" | sed -e "s/,/ /g"` + build_warnings="${t} ${build_warnings}";; + *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;; +esac +if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then + echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1 +fi])dnl WARN_CFLAGS="" WERROR_CFLAGS="" if test "x${build_warnings}" != x -a "x$GCC" = xyes then - # Separate out the -Werror flag as some files just cannot be - # compiled with it enabled. - for w in ${build_warnings}; do - case $w in - -Werr*) WERROR_CFLAGS=-Werror ;; - *) WARN_CFLAGS="${WARN_CFLAGS} $w" - esac - done -fi],[build_warnings=""])dnl - + AC_MSG_CHECKING(compiler warning flags) + # Separate out the -Werror flag as some files just cannot be + # compiled with it enabled. + for w in ${build_warnings}; do + case $w in + -Werr*) WERROR_CFLAGS=-Werror ;; + *) # Check that GCC accepts it + if $CC $w 2>&1 | grep 'unrecognized option' > /dev/null; then + : + else + WARN_CFLAGS="${WARN_CFLAGS} $w" + fi + esac + done + AC_MSG_RESULT(${WARN_CFLAGS}${WERROR_CFLAGS}) +fi AC_SUBST(WARN_CFLAGS) AC_SUBST(WERROR_CFLAGS) @@ -458,6 +681,37 @@ if test x$want_mmalloc = xtrue; then MMALLOC='../mmalloc/libmmalloc.a' fi +AC_ARG_WITH(included-regex, +[ --with-included-regex Use included regex], +[case "${withval}" in + yes) want_included_regex=true ;; + no) want_included_regex=false;; + *) AC_MSG_ERROR(bad value ${withval} for GDB with-included-regex option) ;; +esac],[want_included_regex=true])dnl + +if test $want_included_regex = false; then + AC_MSG_CHECKING(for GNU regex) + AC_CACHE_VAL(gdb_cv_have_gnu_regex, +[AC_TRY_COMPILE([#include +#include +#include ], +[#if !defined _GNU_REGEX_INTERFACE_VERSION || !defined __GLIBC__ || __GLIBC__ < 2 +#error No valid GNU regex. +#endif +], + [gdb_cv_have_gnu_regex=yes], + [gdb_cv_have_gnu_regex=no])]) + AC_MSG_RESULT($gdb_cv_have_gnu_regex) + if test $gdb_cv_have_gnu_regex = no; then + want_included_regex=true + fi +fi + +if test x${want_included_regex} = xtrue; then + REGEX="gnu-regex.o" + AC_DEFINE(USE_INCLUDED_REGEX) +fi +AC_SUBST(REGEX) # In the Cygwin environment, we need some additional flags. AC_CACHE_CHECK([for cygwin], gdb_cv_os_cygwin, @@ -466,10 +720,15 @@ AC_CACHE_CHECK([for cygwin], gdb_cv_os_cygwin, lose #endif],[gdb_cv_os_cygwin=yes],[gdb_cv_os_cygwin=no])]) -DLLTOOL=${DLLTOOL-dlltool} -WINDRES=${WINDRES-windres} -AC_SUBST(DLLTOOL) -AC_SUBST(WINDRES) + +dnl Figure out which of the many generic ser-*.c files the _host_ supports. +SER_HARDWIRE="ser-unix.o ser-pipe.o ser-tcp.o" +case ${host} in + *go32* ) SER_HARDWIRE=ser-go32.o ;; + *djgpp* ) SER_HARDWIRE=ser-go32.o ;; +esac +AC_SUBST(SER_HARDWIRE) + dnl Figure out which term library to use. if test x$gdb_host = xgo32; then @@ -498,9 +757,204 @@ AC_SUBST(TERM_LIB) WIN32LIBS= if test x$gdb_cv_os_cygwin = xyes; then WIN32LIBS="-luser32" + case "${target}" in + *cygwin*) WIN32LIBS="$WIN32LIBS -limagehlp" + ;; + esac fi AC_SUBST(WIN32LIBS) +LIBGUI="../libgui/src/libgui.a" +GUI_CFLAGS_X="-I${srcdir}/../libgui/src" +AC_SUBST(LIBGUI) +AC_SUBST(GUI_CFLAGS_X) + +AC_ARG_WITH(cpu, +[ --with-cpu=CPU Set the default CPU variant to debug], +[case "${target}" in + powerpc-* | powerpcle-* ) + ## It would be nice to keep this table in sync with the one in + ## gcc/configure. + case "${with_cpu}" in + ppc-uisa | rs6000 | 403 | 403GC | 505 | 860 | 601 | 602 | 603 \ + | 604 | 750 ) + ## Those are all handled in variants in rs6000-tdep.c, so they're fine. + ;; + common | power | power2 | rios | rios1 | rios2 | rsc | rsc1 ) + ## These are all RS6000 variants, as far as GDB is concerned. + with_cpu=rs6000 + ;; + 603e | ec603e ) + with_cpu=603 + ;; + 604e ) + with_cpu=604 + ;; + * ) + AC_MSG_WARN(GDB: unknown --with-cpu value: \`${with_cpu}'; using \`ppc-uisa'.) + with_cpu=ppc-uisa + ;; + esac + ;; + * ) + AC_MSG_WARN(GDB may ignore the --with-cpu flag for ${target} targets) + ;; +esac +AC_DEFINE_UNQUOTED(TARGET_CPU_DEFAULT, "${with_cpu}") +],) + + +AC_ARG_ENABLE(gdbtk, +[ --enable-gdbtk Enable GDBTK GUI front end], +[case "${enableval}" in + yes) + case "$host" in + *go32*) + AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.]) + enable_gdbtk=no ;; + *windows*) + AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.]) + enable_gdbtk=no ;; + *) + enable_gdbtk=yes ;; + esac ;; + no) + enable_gdbtk=no ;; + *) + AC_MSG_ERROR(bad value ${enableval} given for gdbtk option) ;; +esac], +[ +# Default is on for everything but go32 and Cygwin +case "$host" in + *go32* | *windows*) + ;; + *) + if test -d "${srcdir}/gdbtk" ; then + enable_gdbtk=yes + fi + ;; +esac +]) + +WIN32LDAPP= +AC_SUBST(WIN32LIBS) +AC_SUBST(WIN32LDAPP) + +configdir="unix" + +GDBTKLIBS= +if test "${enable_gdbtk}" = "yes"; then + + CY_AC_PATH_TCLCONFIG + if test -z "${no_tcl}"; then + CY_AC_LOAD_TCLCONFIG + CY_AC_PATH_TKCONFIG + + # If $no_tk is nonempty, then we can't do Tk, and there is no + # point to doing Tcl. + if test -z "${no_tk}"; then + CY_AC_LOAD_TKCONFIG + CY_AC_PATH_TCLH + CY_AC_PATH_TKH + CY_AC_PATH_ITCLH + CY_AC_PATH_ITKH + CY_AC_PATH_TIXH + + # now look for Itcl library stuff + + CY_AC_PATH_ITCLCONFIG + if test -z "${no_itcl}"; then + CY_AC_LOAD_ITCLCONFIG + case "${host}" in + *-*-cygwin*) + itcldir=../itcl/itcl/win/ + ;; + *) + itcldir=../itcl/itcl/unix/ + ;; + esac + + + ITCLLIB="${ITCL_BUILD_LIB_SPEC}" + ITCL_DEPS="${itcldir}${ITCL_LIB_FILE}" + fi + + + # now look for Itk library stuff + CY_AC_PATH_ITKCONFIG + if test -z "${no_itcl}"; then + CY_AC_LOAD_ITKCONFIG + + case "${host}" in + *-*-cygwin*) + itkdir=../itcl/itk/win/ + ;; + *) + itkdir=../itcl/itk/unix/ + ;; + esac + + ITKLIB="${ITK_BUILD_LIB_SPEC}" + ITK_DEPS="${itkdir}${ITK_LIB_FILE}" + fi + + # now look for Tix library stuff + CY_AC_PATH_TIXCONFIG + if test -z "${no_tix}"; then + CY_AC_LOAD_TIXCONFIG + TIXLIB="${TIX_BUILD_LIB_SPEC}" + TIX_DEPS="${TIX_BUILD_LOCATION}/${TIX_LIB_FILE}" + fi + + ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_GDBTK_CFLAGS)" + # Tcl/Tk 8.1 require -fwritable strings. I don't + # know whether 8.2 will or not, but I bet it will. + # I don't have to worry about 7.x since we don't support it. + GDBTK_CFLAGS="" + if test "$GCC" = "yes"; then + if test "$TCL_VERSION" != "8.0" ; then + GDBTK_CFLAGS="-fwritable-strings" + fi + fi + + # Include some libraries that Tcl and Tk want. + TCL_LIBS='$(LIBGUI) $(ITCL) $(ITK) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)' + # Yes, the ordering seems wrong here. But it isn't. + # TK_LIBS is the list of libraries that need to be linked + # after Tcl/Tk. Note that this isn't put into LIBS. If it + # were in LIBS then any link tests after this point would + # try to include things like `$(LIBGUI)', which wouldn't work. + GDBTKLIBS="${TCL_LIBS} ${TK_LIBS}" + + CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_GDBTK_OBS)" + CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_GDBTK_DEPS)" + CONFIG_SRCS="${CONFIG_SRCS} \$(SUBDIR_GDBTK_SRCS)" + CONFIG_INITS="${CONFIG_INITS} \$(SUBDIR_GDBTK_INITS)" + CONFIG_ALL="${CONFIG_ALL} \$(SUBDIR_GDBTK_ALL)" + CONFIG_CLEAN="${CONFIG_CLEAN} \$(SUBDIR_GDBTK_CLEAN)" + CONFIG_INSTALL="${CONFIG_INSTALL} \$(SUBDIR_GDBTK_INSTALL)" + CONFIG_UNINSTALL="${CONFIG_UNINSTALL} \$(SUBDIR_GDBTK_UNINSTALL)" + + if test x$gdb_cv_os_cygwin = xyes; then + WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32" + WIN32LDAPP="-Wl,--subsystem,console" + CONFIG_OBS="${CONFIG_OBS} gdbres.o" + fi + fi + fi +fi + +AC_SUBST(X_CFLAGS) +AC_SUBST(X_LDFLAGS) +AC_SUBST(X_LIBS) +AC_SUBST(ITCLLIB) +AC_SUBST(ITCL_DEPS) +AC_SUBST(ITKLIB) +AC_SUBST(ITK_DEPS) +AC_SUBST(TIXLIB) +AC_SUBST(TIX_DEPS) +AC_SUBST(GDBTKLIBS) +AC_SUBST(GDBTK_CFLAGS) AC_PATH_X @@ -541,8 +995,14 @@ AC_SUBST(IGNORE_SIM_OBS) AC_SUBST(ENABLE_CFLAGS) AC_SUBST(CONFIG_OBS) +AC_SUBST(CONFIG_LIB_OBS) AC_SUBST(CONFIG_DEPS) AC_SUBST(CONFIG_SRCS) +AC_SUBST(CONFIG_INITS) +AC_SUBST(CONFIG_ALL) +AC_SUBST(CONFIG_CLEAN) +AC_SUBST(CONFIG_INSTALL) +AC_SUBST(CONFIG_UNINSTALL) # Begin stuff to support --enable-shared AC_ARG_ENABLE(shared, @@ -566,7 +1026,7 @@ if test "${shared}" = "true"; then ;; *-*-linux*aout*) ;; - *-*-linux* | *-pc-linux-gnu) + *-*-linux* | *-pc-linux-gnu*) HLDFLAGS='-Wl,-rpath,$(libdir)' ;; *-*-solaris*) @@ -638,6 +1098,10 @@ targetfile=`sed -n ' s/TM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p ' ${target_makefile_frag}` +GDB_MULTI_ARCH=`sed -n ' +s/GDB_MULTI_ARCH[ ]*=[ ]*\([^ ]*\)[ ]*/\1/p +' ${target_makefile_frag}` + # these really aren't orthogonal true/false values of the same condition, # but shells are slow enough that I like to reuse the test conditions # whenever possible @@ -651,6 +1115,34 @@ s/NAT_FILE[ ]*=[ ]*\([^ ]*\)/\1/p fi changequote([,]) +# New targets should just set gdb_multi_arch=yes in configure.tgt. +# Old targets being converted can either do that or set GDB_MULTI_ARCH +# in the target specific makefile frag. Eventually gdb_multi_arch=yes +# will be the default. +if test x"${GDB_MULTI_ARCH}" = x ; then + case "${gdb_multi_arch}" in + yes ) GDB_MULTI_ARCH=GDB_MULTI_ARCH_PURE ;; + no ) GDB_MULTI_ARCH=0 ;; + 0|1|2 ) GDB_MULTI_ARCH=${gdb_multi_arch} ;; + esac +fi +if test x"${GDB_MULTI_ARCH}" != x ; then + AC_DEFINE_UNQUOTED(GDB_MULTI_ARCH, ${GDB_MULTI_ARCH}) +fi +# Warn the user when they use an old pratice +case "${GDB_MULTI_ARCH}" in + "" ) ;; + 0 | GDB_MULTI_ARCH_PARTIAL | 1 | GDB_MULTI_ARCH_TM | 2 ) + AC_MSG_WARN("GDB: Target is not pure multi-arch") ;; + GDB_MULTI_ARCH_PURE ) + if test x"${targetfile}" != x ; then + AC_MSG_WARN("GDB: Ingoring TM_FILE in ${target_makefile_frag}") + targetfile="" + fi ;; + *) AC_MSG_ERROR("GDB: Unknown GDB_MULTI_ARCH value ${GDB_MULTI_ARCH}");; +esac + + SUBDIRS="doc testsuite nlm" if test "${enable_multi_ice}" = "yes"; then SUBDIRS="${SUBDIRS} multi-ice" @@ -659,32 +1151,46 @@ fi AC_SUBST(SUBDIRS) # If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile -# (NAT_FILE) is not set in config/*/*.m[ht] files, we don't make the -# corresponding links. But we have to remove the xm.h files and tm.h -# files anyway, e.g. when switching from "configure host" to -# "configure none". +# (NAT_FILE) is not set in config/*/*.m[ht] files, we link to an empty +# version. files= links= + rm -f xm.h +xm_h="" if test "${hostfile}" != ""; then -files="${files} config/${gdb_host_cpu}/${hostfile}" -links="${links} xm.h" + xm_h=xm.h + GDB_XM_FILE="config/${gdb_host_cpu}/${hostfile}" + files="${files} ${GDB_XM_FILE}" + links="${links} xm.h" + AC_DEFINE_UNQUOTED(GDB_XM_FILE, ${GDB_XM_FILE}) fi +AC_SUBST(xm_h) + rm -f tm.h +tm_h="" if test "${targetfile}" != ""; then -files="${files} config/${gdb_target_cpu}/${targetfile}" -links="${links} tm.h" + tm_h=tm.h + GDB_TM_FILE="config/${gdb_target_cpu}/${targetfile}" + files="${files} ${GDB_TM_FILE}" + links="${links} tm.h" + AC_DEFINE_UNQUOTED(GDB_TM_FILE, ${GDB_TM_FILE}) fi +AC_SUBST(tm_h) + rm -f nm.h +nm_h="" if test "${nativefile}" != ""; then -files="${files} config/${gdb_host_cpu}/${nativefile}" -links="${links} nm.h" -else -# A cross-only configuration. -files="${files} config/nm-empty.h" -links="${links} nm.h" + nm_h=nm.h + GDB_NM_FILE="config/${gdb_host_cpu}/${nativefile}" + files="${files} ${GDB_NM_FILE}" + links="${links} nm.h" + AC_DEFINE_UNQUOTED(GDB_NM_FILE, ${GDB_NM_FILE}) fi +AC_SUBST(nm_h) + +AC_PROG_LN_S AC_LINK_FILES($files, $links) @@ -692,7 +1198,7 @@ dnl Check for exe extension set on certain hosts (e.g. Win32) AC_EXEEXT AC_CONFIG_SUBDIRS($configdirs) -AC_OUTPUT(Makefile tui/Makefile .gdbinit:gdbinit.in, +AC_OUTPUT(Makefile .gdbinit:gdbinit.in, [ dnl Autoconf doesn't provide a mechanism for modifying definitions dnl provided by makefile fragments.