1998-08-18 Jason Molenda (jsm@bugshack.cygnus.com)
[deliverable/binutils-gdb.git] / gdb / configure.in
index 2498c1e2e815bf6fc20ae8df0b0c266593f6e171..db975545d0f5c6ac31a60b05f23a00028e560d73 100644 (file)
@@ -28,12 +28,22 @@ AC_AIX
 AC_MINIX
 AC_ISC_POSIX
 
+DLLTOOL=${DLLTOOL-dlltool}
+AC_SUBST(DLLTOOL)
+
 AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..)
 AC_CANONICAL_SYSTEM
 
+dnl gdb doesn't use gettext, but bfd does.  We call this to ensure we
+dnl link with the correct libraries.
+ALL_LINGUAS=
+CY_GNU_GETTEXT
+
 dnl List of object files added by configure.
 
 CONFIG_OBS=
+CONFIG_DEPS=
+CONFIG_SRCS=
 
 configdirs="doc testsuite"
 
@@ -55,19 +65,27 @@ AC_PROG_AWK
 
 AC_ARG_PROGRAM
 
+AC_TYPE_SIGNAL
+
 AC_HEADER_STDC
-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)
+AC_CHECK_HEADERS(ctype.h curses.h endian.h libintl.h limits.h link.h \
+                 memory.h objlist.h ptrace.h sgtty.h stddef.h stdlib.h \
+                 string.h strings.h sys/procfs.h sys/ptrace.h sys/reg.h \
+                 term.h termio.h termios.h unistd.h wait.h sys/wait.h \
+                 wchar.h wctype.h)
+
 AC_HEADER_STAT
 
 AC_C_CONST
 
-AC_CHECK_FUNCS(setpgid sbrk select poll)
+AC_CHECK_FUNCS(setpgid sbrk select poll sigaction isascii bzero bcopy memcpy btowc)
+AC_FUNC_ALLOCA
 
-# If we are configured native on Linux, work around problems with sys/procfs.h
+# If we are configured native on GNU/Linux, work around problems with sys/procfs.h
 if test "${target}" = "${host}"; then
   case "${host}" in
-  i[3456]86-*-linux*)
-       AC_DEFINE(START_INFERIOR_TRAPS_EXPECTED,"2")
+  i[[3456]]86-*-linux*)
+       AC_DEFINE(START_INFERIOR_TRAPS_EXPECTED,2)
        AC_DEFINE(sys_quotactl)
        ;;
   esac
@@ -114,10 +132,14 @@ AC_MSG_CHECKING(for long long support in printf)
 AC_CACHE_VAL(gdb_cv_printf_has_long_long,
 [AC_TRY_RUN([
 int main () {
-  char buf[16];
-  long long l = 0x12345;
-  sprintf (buf, "%llx", l);
-  return (strcmp ("12345", buf));
+  char buf[32];
+  long long l = 0;
+  l = (l << 16) + 0x0123;
+  l = (l << 16) + 0x4567;
+  l = (l << 16) + 0x89ab;
+  l = (l << 16) + 0xcdef;
+  sprintf (buf, "0x%016llx", l);
+  return (strcmp ("0x0123456789abcdef", buf));
 }],
 gdb_cv_printf_has_long_long=yes,
 gdb_cv_printf_has_long_long=no,
@@ -159,12 +181,33 @@ if test $gdb_cv_printf_has_long_double = yes; then
 fi
 AC_MSG_RESULT($gdb_cv_printf_has_long_double)
 
+dnl See if the compiler and runtime support scanning long doubles
+
+AC_MSG_CHECKING(for long double support in scanf)
+AC_CACHE_VAL(gdb_cv_scanf_has_long_double,
+[AC_TRY_RUN([
+int main () {
+  char *buf = "3.141592653";
+  long double f = 0;
+  sscanf (buf, "%Lg", &f);
+  return !(f > 3.14159 && f < 3.14160);
+}],
+gdb_cv_scanf_has_long_double=yes,
+gdb_cv_scanf_has_long_double=no,
+gdb_cv_scanf_has_long_double=no)])
+if test $gdb_cv_scanf_has_long_double = yes; then
+  AC_DEFINE(SCANF_HAS_LONG_DOUBLE)
+fi
+AC_MSG_RESULT($gdb_cv_scanf_has_long_double)
+
 AC_FUNC_MMAP
 
 BFD_NEED_DECLARATION(malloc)
 BFD_NEED_DECLARATION(realloc)
 BFD_NEED_DECLARATION(free)
 
+BFD_NEED_DECLARATION(strerror)
+
 dnl See if thread_db library is around for Solaris thread debugging.  Note that
 dnl we must explicitly test for version 1 of the library because version 0
 dnl (present on Solaris 2.4 or earlier) doesn't have the same API.
@@ -173,37 +216,49 @@ dnl Note that we only want this if we are both native (host == target), and
 dnl not doing a canadian cross build (build == host).
 
 if test ${build} = ${host} -a ${host} = ${target} ; then
-       case ${host_os} in
-       hpux*)
-               AC_MSG_CHECKING(for HPUX/OSF thread support)
-               if test -f /usr/include/dce/cma_config.h ; then
-                       if test "$GCC" = "yes" ; then
-                               AC_MSG_RESULT(yes)
-                               AC_DEFINE(HAVE_HPUX_THREAD_SUPPORT)
-                               CONFIG_OBS="${CONFIG_OJS} hpux-thread.o"
-                       else
-                               AC_MSG_RESULT(no (suppressed because you are not using GCC))
-                       fi
-               else
-                       AC_MSG_RESULT(no)
-               fi
-               ;;
-       solaris*)
-               AC_MSG_CHECKING(for Solaris thread debugging library)
-               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"
-                       AC_CHECK_LIB(dl, dlopen)
-                       if test "$GCC" = "yes" ; then
-                               CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -Xlinker -export-dynamic"
-                       fi
-               else
-                       AC_MSG_RESULT(no)
-               fi
-               ;;
-       esac
-       AC_SUBST(CONFIG_LDFLAGS)
+   case ${host_os} in
+   hpux*)
+      AC_MSG_CHECKING(for HPUX/OSF thread support)
+      if test -f /usr/include/dce/cma_config.h ; then
+         if test "$GCC" = "yes" ; then
+            AC_MSG_RESULT(yes)
+            AC_DEFINE(HAVE_HPUX_THREAD_SUPPORT)
+            CONFIG_OBS="${CONFIG_OJS} hpux-thread.o"
+            CONFIG_SRCS="${CONFIG_SRCS} hpux-thread.c"
+         else
+            AC_MSG_RESULT(no (suppressed because you are not using GCC))
+         fi
+      else
+         AC_MSG_RESULT(no)
+      fi
+      ;;
+   solaris*)
+      AC_MSG_CHECKING(for Solaris thread debugging library)
+      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_SRCS="${CONFIG_SRCS} sol-thread.c"
+         AC_CHECK_LIB(dl, dlopen)
+         if test "$GCC" = "yes" ; then
+            # The GNU linker requires the -export-dynamic option to make
+            # all symbols visible in the dynamic symbol table.
+            hold_ldflags=$LDFLAGS
+            AC_MSG_CHECKING(for the ld -export-dynamic flag)
+            LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
+            AC_TRY_LINK(, [int i;], found=yes, found=no)
+            LDFLAGS=$hold_ldflags
+            AC_MSG_RESULT($found)
+            if test $found = yes; then
+               CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -Wl,-export-dynamic"
+            fi
+         fi
+      else
+         AC_MSG_RESULT(no)
+      fi
+      ;;
+   esac
+   AC_SUBST(CONFIG_LDFLAGS)
 fi
 
 dnl Handle optional features that can be enabled.
@@ -219,32 +274,84 @@ esac])
 
 if test "${enable_netrom}" = "yes"; then
        CONFIG_OBS="${CONFIG_OBS} remote-nrom.o" 
+        CONFIG_SRCS="${CONFIG_SRCS} remote-nrom.c"
 fi
 
-# start-sanitize-gm
-ENABLE_GM=
-
-AC_ARG_ENABLE(gm,
-[  --enable-gm ],
-[case "${enableval}" in
-yes)   CONFIG_OBS="${CONFIG_OBS} gmagic.o"
-       ENABLE_CFLAGS=-DGENERAL_MAGIC
-       ;;
-no)    ;;
-*)     AC_MSG_ERROR(bad value ${enableval} given for gm option) ;;
-esac])
-
-# end-sanitize-gm
-
-AC_ARG_ENABLE(sim-powerpc,
-[  --enable-sim-powerpc ],
-[case "${enableval}" in
-yes)   powerpc_sim=yes ;;
-no)    powerpc_sim=no ;;
-*)     AC_MSG_ERROR(bad value ${enableval} given for sim-powerpc option) ;;
-esac],[if test x"$GCC" != x""; then powerpc_sim=yes; else powerpc_sim=no; fi])
+MMALLOC_CFLAGS=
+MMALLOC=
+AC_SUBST(MMALLOC_CFLAGS)
+AC_SUBST(MMALLOC)
+
+AC_ARG_WITH(mmalloc,
+[  --with-mmalloc             use memory mapped malloc package],
+[case "${withval}" in
+  yes)  want_mmalloc=true ;;
+  no)   want_mmalloc=false;;
+  *)    AC_MSG_ERROR(bad value ${withval} for GDB with-mmalloc option) ;;
+esac],[want_mmalloc=false])dnl
+
+if test x$want_mmalloc = xtrue; then
+   AC_DEFINE(USE_MMALLOC)
+   AC_DEFINE(MMCHECK_FORCE)
+   MMALLOC_CFLAGS="-I$srcdir/../mmalloc"
+   MMALLOC='../mmalloc/libmmalloc.a'
+fi
 
 # start-sanitize-gdbtk
+ENABLE_IDE=
+AC_ARG_ENABLE(ide, [  --enable-ide            Enable IDE support])
+if test "$enable_ide" = yes; then
+   enable_ide=yes
+   ENABLE_IDE=1
+else
+   enable_ide=no
+fi
+AC_SUBST(ENABLE_IDE)
+
+AC_ARG_WITH(foundry-libs,
+[  --with-foundry-libs=directory       use the Foundry SDK in directory],
+[FOUNDRY_LIB_BASE=${withval}])
+AC_SUBST(FOUNDRY_LIB_BASE)
+
+#
+# This is the Foundry SDK
+#
+# These variables are used to determine where the Foundry libs and
+# header files are located.
+#
+if test "$FOUNDRY_LIB_BASE" != ""; then
+    LIBGUI="${FOUNDRY_LIB_BASE}/lib/libgui.a"
+    GUI_CFLAGS_X="-I${FOUNDRY_LIB_BASE}/include"
+    if test x$enable_ide = xyes; then
+        IDE_CFLAGS_X="-I${FOUNDRY_LIB_BASE}/include -DIDE"
+       IDE_X="-L${FOUNDRY_LIB_BASE}/lib -lilu-Tk -lilu-c -lilu"
+    else
+        IDE_CFLAGS_X="-I${FOUNDRY_LIB_BASE}/include"
+    fi
+    LIBIDETCL="${FOUNDRY_LIB_BASE}/lib/libidetcl.a"
+    LIBIDE="${FOUNDRY_LIB_BASE}/lib/libide.a"
+    IDE_DEPS="${FOUNDRY_LIB_BASE}/lib/libilu-Tk.a ${FOUNDRY_LIB_BASE}/lib/libilu-c.a ${FOUNDRY_LIB_BASE}/lib/libilu.a"
+else
+    LIBGUI="../libgui/src/libgui.a"
+    GUI_CFLAGS_X="-I${srcdir}/../libgui/src"
+    if test x$enable_ide = xyes; then
+        IDE_CFLAGS_X="-I${srcdir}/../libidetcl/src -I${srcdir}/../libide/src -DIDE -I${srcdir}/../ilu/runtime/mainloop"
+       IDE_X="-L../ilu/runtime/mainloop -lilu-Tk -L../ilu/runtime/c -lilu-c -L../ilu/runtime/kernel -lilu"
+    else
+        IDE_CFLAGS_X="-I${srcdir}/../libidetcl/src -I${srcdir}/../libide/src"
+    fi
+    LIBIDETCL="../libidetcl/src/libidetcl.a"
+    LIBIDE="../libide/src/libide.a"
+    IDE_DEPS="../ilu/runtime/mainloop/libilu-Tk.a ../ilu/runtime/c/libilu-c.a ../ilu/runtime/kernel/libilu.a"
+fi
+AC_SUBST(LIBGUI)
+AC_SUBST(GUI_CFLAGS_X)
+AC_SUBST(IDE_CFLAGS_X)
+AC_SUBST(IDE_X)
+AC_SUBST(LIBIDETCL)
+AC_SUBST(LIBIDE)
+AC_SUBST(IDE_DEPS)
+
 ENABLE_GDBTK=
 
 AC_ARG_ENABLE(gdbtk,
@@ -255,7 +362,7 @@ AC_ARG_ENABLE(gdbtk,
        *go32*)
            AC_MSG_WARN([GDB does not support GDBtk on host ${host}.  GDBtk will be disabled.])
            enable_gdbtk=no ;;
-       *cygwin32* | *windows*)
+       *windows*)
            AC_MSG_WARN([GDB does not support GDBtk on host ${host}.  GDBtk will be disabled.])
            enable_gdbtk=no ;;
        *)
@@ -269,13 +376,37 @@ esac],
 [
 # Default is on for everything but go32 and cygwin32
 case "$host" in
-    *go32* | *cygwin32* | *windows*)
+    *go32* | *windows*)
        ;;
     *)
        enable_gdbtk=yes ;;
     esac
 ])
 
+# In the cygwin32 environment, we need some additional flags.
+AC_CACHE_CHECK([for cygwin32], gdb_cv_os_cygwin32,
+[AC_EGREP_CPP(lose, [
+#ifdef __CYGWIN32__
+lose
+#endif],[gdb_cv_os_cygwin32=yes],[gdb_cv_os_cygwin32=no])])
+
+WIN32LIBS=
+WIN32LDAPP=
+AC_SUBST(WIN32LIBS)
+AC_SUBST(WIN32LDAPP)
+
+WINDRES=${WINDRES-windres}
+AC_SUBST(WINDRES)
+
+if test x$gdb_cv_os_cygwin32 = xyes; then
+    if test x$enable_ide = xyes; then
+       WIN32LIBS="-ladvapi32"
+    fi
+fi
+
+configdir="unix"
+
+GDBTKLIBS=
 if test "${enable_gdbtk}" = "yes"; then
 
     CY_AC_PATH_TCLCONFIG
@@ -289,16 +420,66 @@ if test "${enable_gdbtk}" = "yes"; then
           CY_AC_LOAD_TKCONFIG
           CY_AC_PATH_TCLH
           CY_AC_PATH_TKH
+          CY_AC_PATH_ITCLH
+          CY_AC_PATH_TIX
+
+          # now look for tix library stuff
+          TIXVERSION=4.1.8.0
+          . ${ac_cv_c_tclconfig}/tclConfig.sh
+          case "${host}" in
+          *-*-cygwin32*)
+               tixdir=../tix/win/tcl8.0
+               ;;
+          *)
+               tixdir=../tix/unix/tk8.0
+               ;;
+          esac 
+          if test "${TCL_SHARED_BUILD}" = "1"; then
+               TIX_LIB_EXT="${TCL_SHLIB_SUFFIX}"
+
+               # Can't win them all: SunOS 4 (others?) appends a version
+                # number after the ".so"
+               case "${host}" in
+               *-*-sunos4*)
+                   TIX_LIB_EXT="${TIX_LIB_EXT}.1.0" ;;
+                esac
+          
+          else
+               TIX_LIB_EXT=".a"
+          fi
+
+          if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
+               TIXLIB="-L${tixdir} -ltix${TIXVERSION}"
+               TIX_DEPS="${tixdir}/libtix${TIXVERSION}${TIX_LIB_EXT}"
+          else
+               TIXLIB="-L${tixdir} -ltix`echo ${TIXVERSION} | tr -d .`"
+               TIX_DEPS="${tixdir}/libtix`echo ${TIXVERSION} | tr -d .`${TIX_LIB_EXT}"
+          fi
 
           ENABLE_GDBTK=1
+           ENABLE_CFLAGS="${ENABLE_CFLAGS} -DGDBTK"
 
           # Include some libraries that Tcl and Tk want.
-          TCL_LIBS='$(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
+          if test "${enable_ide}" = "yes"; then        
+             TCL_LIBS='$(LIBIDETCL) $(LIBIDE) $(LIBGUI) $(IDE) $(ITCL) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
+             CONFIG_DEPS='$(LIBIDETCL) $(LIBIDE) $(LIBGUI) $(IDE_DEPS) $(ITCL_DEPS) $(TIX_DEPS) $(TK_DEPS) $(TCL_DEPS)'
+          else
+             TCL_LIBS='$(LIBGUI) $(ITCL) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
+             CONFIG_DEPS='$(LIBGUI) $(ITCL_DEPS) $(TIX_DEPS) $(TK_DEPS) $(TCL_DEPS)'
+          fi
           # 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.
-          LIBS="${LIBS} ${TCL_LIBS} ${TK_LIBS}"
-          CONFIG_OBS="${CONFIG_OBS} gdbtk.o"
+          # 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} gdbtk.o gdbtk-cmds.o gdbtk-hooks.o"
+
+          if test x$gdb_cv_os_cygwin32 = xyes; then
+             WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32 -luser32"
+             WIN32LDAPP="-Wl,--subsystem,console"
+             CONFIG_OBS="${CONFIG_OBS} gdbres.o"
+          fi
        fi
     fi
 fi
@@ -307,11 +488,50 @@ AC_SUBST(ENABLE_GDBTK)
 AC_SUBST(X_CFLAGS)
 AC_SUBST(X_LDFLAGS)
 AC_SUBST(X_LIBS)
+AC_SUBST(TIXLIB)
+AC_SUBST(TIX_DEPS)
+AC_SUBST(GDBTKLIBS)
 # end-sanitize-gdbtk
 
+AC_PATH_X
+# start-sanitize-sky
+# Enable GPU2 library for MIPS simulator
+AC_ARG_WITH(sim-gpu2,
+[  --with-sim-gpu2=path                        Use GPU2 library under given directory],
+[case "${target}" in
+  mips*-sky-*)
+    if test -d "${withval}"
+    then
+      LIBS="${LIBS} -L${withval}/lib -lgpu2 -L${x_libraries} -lX11 -lXext"
+    else
+      AC_MSG_WARN([Directory ${withval} does not exist.])
+    fi ;;
+  *)  AC_MSG_WARN([--with-sim-gpu2 option invalid for target ${target}])
+esac])dnl
+
+# Enable target accurate FP library
+AC_ARG_WITH(sim-funit,
+[  --with-sim-funit=path               Use target FP lib under given directory],
+[case "${target}" in
+  mips*-sky-*)
+    if test -d "${withval}"
+    then
+      LIBS="${LIBS} -L${withval}/lib -lfunit"
+    else
+      AC_MSG_WARN([Directory ${withval} does not exist.])
+    fi ;;
+  *)  AC_MSG_WARN([--with-sim-funit option invalid for target ${target}])
+esac])dnl
+# end-sanitize-sky
+
+dnl Solaris puts wctype in /usr/lib/libw.a
+AC_CHECK_LIB(w, wctype, [LIBS="$LIBS -lw"])
+
 AC_SUBST(ENABLE_CFLAGS)
 
 AC_SUBST(CONFIG_OBS)
+AC_SUBST(CONFIG_DEPS)
+AC_SUBST(CONFIG_SRCS)
 
 # Begin stuff to support --enable-shared
 AC_ARG_ENABLE(shared,
@@ -448,18 +668,26 @@ files="${files} config/nm-empty.h"
 links="${links} nm.h"
 fi
 # start-sanitize-gdbtk
-
+AC_PROG_LN_S
 # Make it possible to use the GUI without doing a full install
-if test "${enable_gdbtk}" = "yes" -a ! -f gdbtk.tcl ; then
-files="${files} gdbtk.tcl"
-links="${links} gdbtk.tcl"
+if test "${enable_gdbtk}" = "yes" -a ! -d gdbtcl ; then
+  if test "$LN_S" = "ln -s" -a ! -f gdbtcl ; then
+  echo linking $srcdir/gdbtcl to gdbtcl
+  $LN_S $srcdir/gdbtcl gdbtcl
+  else
+  echo Warning: Unable to link $srcdir/gdbtcl to gdbtcl.  You will need to do a
+  echo "         " make install before you are able to run the GUI.
+  fi
 fi
 # end-sanitize-gdbtk
 
 AC_LINK_FILES($files, $links)
 
+dnl Check for exe extension set on certain hosts (e.g. Win32)
+AM_EXEEXT
+
 AC_CONFIG_SUBDIRS($configdirs)
-AC_OUTPUT(Makefile
+AC_OUTPUT(Makefile .gdbinit:gdbinit.in,
 [
 dnl Autoconf doesn't provide a mechanism for modifying definitions 
 dnl provided by makefile fragments.
@@ -477,14 +705,6 @@ sed -e '/^TM_FILE[         ]*=/s,^TM_FILE[         ]*=[    ]*,&config/'"${gdb_target_cpu}"'/,
 mv -f Makefile.tmp Makefile
 changequote([,])dnl
 
-case ${srcdir} in
-.)
-;;
-*)
-grep "source ${srcdir}/.gdbinit" .gdbinit >/dev/null 2>/dev/null || \
-echo "source ${srcdir}/.gdbinit" >> .gdbinit
-esac
-
 case x$CONFIG_HEADERS in
 xconfig.h:config.in)
 echo > stamp-h ;;
This page took 0.048213 seconds and 4 git commands to generate.