[project @ 2003-12-28 13:02:46 by panne]
[ghc-hetmet.git] / configure.ac
index 99ea047..9bcbe61 100644 (file)
@@ -105,6 +105,24 @@ alpha*-unknown-freebsd*)
         HostVendor_CPP='unknown'
         HostOS_CPP='freebsd'
         ;;
+arm*-linux*)
+        HostPlatform=arm-unknown-linux # hack again
+        TargetPlatform=arm-unknown-linux
+        BuildPlatform=arm-unknown-linux
+        HostPlatform_CPP='arm_unknown_linux'                 
+        HostArch_CPP='arm'
+        HostVendor_CPP='unknown'
+        HostOS_CPP='linux'
+        ;;
+hppa*-*-linux*)
+        HostPlatform=hppa-unknown-linux # hack again
+        TargetPlatform=hppa-unknown-linux
+        BuildPlatform=hppa-unknown-linux
+        HostPlatform_CPP='hppa_unknown_linux'                
+        HostArch_CPP='hppa'
+        HostVendor_CPP='unknown'                             
+        HostOS_CPP='linux'
+        ;;
 hppa1.1-hp-hpux*)
        HostPlatform=hppa1.1-hp-hpux  # canonicalise for our purposes (hack)
        TargetPlatform=hppa1.1-hp-hpux
@@ -215,6 +233,15 @@ x86_64-*-linux*)
         HostVendor_CPP='unknown'
         HostOS_CPP='linux'
        ;;
+m68k-*-linux*)
+        HostPlatform=m68k-unknown-linux # hack again
+        TargetPlatform=m68k-unknown-linux                    
+        BuildPlatform=m68k-unknown-linux
+        HostPlatform_CPP='m68k_unknown_linux'
+        HostArch_CPP='m68k'
+        HostVendor_CPP='unknown'
+        HostOS_CPP='linux'
+        ;;
 m68k-next-nextstep2)
         HostPlatform_CPP='m68k_next_nextstep2'
         HostArch_CPP='m68k'
@@ -263,6 +290,15 @@ m68k-sun-sunos4*)
         HostVendor_CPP='sun'
         HostOS_CPP='sunos4'
         ;;
+mips-*-linux*)
+        HostPlatform=mips-unknown-linux # hack again
+        TargetPlatform=mips-unknown-linux
+        BuildPlatform=mips-unknown-linux
+        HostPlatform_CPP='mips_unknown_linux'
+        HostArch_CPP='mips'
+        HostVendor_CPP='unknown'
+        HostOS_CPP='linux'
+        ;;
 mips-dec-ultrix*)
         HostPlatform_CPP='mips_dec_ultrix'
         HostArch_CPP='mipsel'   # NB a little different
@@ -314,6 +350,15 @@ powerpc-unknown-linux*)
         HostVendor_CPP='unknown'
         HostOS_CPP='linux'
         ;;
+s390-ibm-linux*)
+       HostPlatform=s390-ibm-linux
+       TargetPlatform=s390-ibm-linux #hack
+       BuildPlatform=s390-ibm-linux #hack
+        HostPlatform_CPP='s390_ibm_linux'
+        HostArch_CPP='s390'
+        HostVendor_CPP='ibm'
+        HostOS_CPP='linux'
+        ;;
 sparc-sun-sunos4*)
        HostPlatform=sparc-sun-sunos4
        TargetPlatform=sparc-sun-sunos4 #hack
@@ -433,24 +478,21 @@ dnl ** What command to use to compile compiler sources ?
 dnl --------------------------------------------------------------
 
 AC_ARG_WITH(ghc,
-[  --with-ghc=<haskell compiler>
-        Use a command different from 'ghc' to compile GHC-specific Haskell code
-           (including GHC itself).
-],
+[AC_HELP_STRING([--with-ghc=ARG],
+       [Use ARG as the path to GHC  [default=autodetect]])],
 [ WithGhc="$withval" ],
 [ 
   if test "$GHC" = ""; then
     AC_PATH_PROG(GHC,ghc)
   fi
   WithGhc=$GHC
-]
-)
+])
 AC_SUBST(WithGhc)
 
 AC_ARG_WITH(hc,
-[  --with-hc=<haskell compiler>
-        Use a command different from 'ghc' to compile generic Haskell code.
-],
+[AC_HELP_STRING([--with-hc=ARG],
+        [Use ARG as the path to the compiler for compiling ordinary
+        Haskell code  (default= value of --with-ghc)])],
 [WithHc="$withval"],
 [WithHc=$WithGhc]
 )
@@ -470,9 +512,8 @@ AC_PATH_PROG(HBC,hbc)
 dnl ** Which gcc to use?
 dnl --------------------------------------------------------------
 AC_ARG_WITH(gcc,
-[  --with-gcc=<gcc command>
-        Use a different command instead of 'gcc' for the GNU C compiler.
-],
+[AC_HELP_STRING([--with-gcc=ARG],
+        [Use ARG as the path to GCC  [default=autodetect]])],
 [WhatGccIsCalled="$withval"
  if test "x$HostPlatform" = "xi386-unknown-mingw32"; then
     # Canonicalise to <drive>:/path/to/gcc
@@ -486,11 +527,15 @@ AC_SUBST(WhatGccIsCalled)
 dnl ** Booting from .hc files?
 dnl --------------------------------------------------------------
 AC_ARG_ENABLE(hc-boot,
-[  --enable-hc-boot
-        Boot the Glasgow Haskell Compiler from intermediate .hc files.
-        (This option is mostly of interest to porters.)
+[AC_HELP_STRING([--enable-hc-boot],
+[Boot the Glasgow Haskell Compiler from intermediate .hc files.
+ (This option is mostly of interest to porters.) [default=no]])],
+[ if test x"$enableval" = x"yes"; then
+       BootingFromHc=YES
+  else
+       BootingFromHc=NO
+  fi
 ],
-[BootingFromHc=YES],
 [BootingFromHc=NO]
 )
 AC_SUBST(BootingFromHc)
@@ -498,12 +543,16 @@ AC_SUBST(BootingFromHc)
 dnl ** Booting from unregisterised .hc files?
 dnl --------------------------------------------------------------
 AC_ARG_ENABLE(hc-boot-unregisterised,
-[  --enable-hc-boot-unregisterised
-        With --enable-hc-boot, treat the intermediate .hc files as
-        unregisterised rather than registerised code.
-        (This option is mostly of interest to porters.)
+[AC_HELP_STRING([--enable-hc-boot-unregisterised],
+[ With --enable-hc-boot, treat the intermediate .hc files as
+ unregisterised rather than registerised code.
+ (This option is mostly of interest to porters.) [default=no]])],
+[ if test x"$enableval" = x"yes"; then
+       BootingFromUnregisterisedHc=YES
+  else
+       BootingFromUnregisterisedHc=NO
+  fi
 ],
-[BootingFromUnregisterisedHc=YES],
 [BootingFromUnregisterisedHc=NO]
 )
 AC_SUBST(BootingFromUnregisterisedHc)
@@ -522,10 +571,14 @@ fi;
 dnl ** Enable multi-thread friendly RTS?
 dnl --------------------------------------------------------------
 AC_ARG_ENABLE(threaded-rts,
-[  --enable-threaded-rts
-        Support better interop with OS threads.
+[AC_HELP_STRING([--enable-threaded-rts],
+[Support better interop with OS threads. [default=no]])],
+[ if test x"$enableval" = x"yes"; then
+       ThreadedRts=YES
+  else
+       ThreadedRts=NO
+  fi
 ],
-[ThreadedRts=YES],
 [ThreadedRts=NO]
 )
 AC_SUBST(ThreadedRts)
@@ -566,43 +619,43 @@ dnl fi
 dnl ** Enable the building of the ObjectIO?
 dnl --------------------------------------------------------------
 AC_ARG_ENABLE(objectio,
-[  --enable-objectio
-        Build ObjectIO, a portable GUI library for Haskell.
+[AC_HELP_STRING([--enable-objectio],
+[Build ObjectIO, a portable GUI library for Haskell. [default=no]])],
+[ if test x"$enableval" = x"yes"; then
+       GhcLibsWithObjectIO=YES
+  else
+       GhcLibsWithObjectIO=NO
+  fi
 ],
-[GhcLibsWithObjectIO=YES],
 [GhcLibsWithObjectIO=NO]
 )
 AC_SUBST(GhcLibsWithObjectIO)
 
-dnl ** Enable the building of the OpenGL/GLUT binding in hslibs?
+dnl ** Enable the building of the OpenAL binding?
 dnl --------------------------------------------------------------
-AC_ARG_ENABLE(hopengl,
-[  --enable-hopengl
-        Build HOpenGL, a Haskell binding for OpenGL/GLUT.
-        On Mac OS X, use --enable-hopengl=x11 to use X11 instead
-        of the "native" libraries.
-],
-[GhcLibsWithHOpenGL=YES],
-[GhcLibsWithHOpenGL=NO]
-)
-UseQuartzOpenGL=NO
-if test x"$TargetOS_CPP" = x"darwin"; then
-  if test x"$enable_hopengl" != x"x11"; then
-    AC_DEFINE([USE_QUARTZ_OPENGL], [1],
-              [Define to 1 if native OpenGL should be used on Mac OS X])
-    UseQuartzOpenGL=YES
-  fi
-fi
-
-AC_SUBST(GhcLibsWithHOpenGL)
+AC_ARG_ENABLE([openal],
+  AC_HELP_STRING([--enable-openal],
+                 [Build OpenAL binding [[default=autodetect]]]),
+  [ if test x"$enableval" = x"yes"; then
+       GhcLibsWithOpenAL=YES
+    else
+       GhcLibsWithOpenAL=NO
+    fi
+  ],
+  [GhcLibsWithOpenAL=yes])
+
+AC_SUBST([GhcLibsWithOpenAL])
 
 dnl ** .NET interop support?
 dnl --------------------------------------------------------------
 AC_ARG_ENABLE(dotnet,
-[  --enable-dotnet
-        Build .NET interop layer.
-],
-[DotnetSupport=YES; AC_DEFINE([WANT_DOTNET_SUPPORT], [1], [Define to 1 if you want to include .NET interop support.])],
+[AC_HELP_STRING([--enable-dotnet],
+[Build .NET interop layer. [default=no]])],
+[ if test x"$enableval" = x"yes"; then
+       DotnetSupport=YES; AC_DEFINE([WANT_DOTNET_SUPPORT], [1], [Define to 1 if you want to include .NET interop support.])
+  else 
+       DotnetSupport=NO
+  fi],
 [DotnetSupport=NO]
 )
 AC_SUBST(DotnetSupport)
@@ -616,6 +669,16 @@ dnl --------------------------------------------------------------
 dnl * General configuration checks
 dnl --------------------------------------------------------------
 
+dnl ** Can the unix package be built?
+dnl --------------------------------------------------------------
+
+if test x"$TargetPlatform" = x"i386-unknown-mingw32"; then
+   GhcLibsWithUnix=NO
+else
+   GhcLibsWithUnix=YES
+fi
+AC_SUBST([GhcLibsWithUnix])
+
 dnl ** does #! work?
 AC_SYS_INTERPRETER()
 
@@ -671,7 +734,7 @@ dnl ** figure out how to do context diffs
 FP_PROG_CONTEXT_DIFF
 
 dnl ** Find find command (for Win32's benefit)
-FPTOOLS_FIND_FIND
+FP_PROG_FIND
 
 dnl ** figure out how to do a BSD-ish install
 AC_PROG_INSTALL
@@ -733,9 +796,8 @@ else
 fi
 
 AC_ARG_WITH(greencard,
-[  --with-greencard=<greencard compiler>
-        Use a command different from 'greencard' to compile GreenCard files
-],
+[AC_HELP_STRING([--with-greencard=ARG],
+        [Use ARG as the path to greencard  [default=autodetct]])],
 [
 GreenCardCmd=$withval;
 FPTOOLS_GREENCARD(3.00)
@@ -743,10 +805,15 @@ FPTOOLS_GREENCARD(3.00)
 )
 
 AC_ARG_ENABLE(src-tree-happy,
-[  --enable-src-tree-happy
-        Build and use source tree (fptools/happy) version of Happy.
+[AC_HELP_STRING([--enable-src-tree-happy],
+       [Build and use source tree (fptools/happy) version of Happy. 
+        [default=autodetect]])],
+[ if test x"$enableval" = x"yes"; then
+       UseSrcTreeHappy=YES
+  else
+       UseSrcTreeHappy=NO
+  fi
 ],
-[UseSrcTreeHappy=YES],
 [UseSrcTreeHappy=NO]
 )
 dnl ** check for installed happy binary + version
@@ -756,20 +823,30 @@ FPTOOLS_HAPPY
 fi;
 
 AC_ARG_ENABLE(src-tree-haddock,
-[  --enable-src-tree-haddock
-        Build and use source tree (fptools/haddock) version of Haddock.
+[AC_HELP_STRING([--enable-src-tree-haddock],
+        [Build and use source tree (fptools/haddock) version of Haddock.
+        [default=autodetect]])],
+[ if test x"$enableval" = x"yes"; then
+       UseSrcTreeHaddock=YES
+  else
+       UseSrcTreeHaddock=NO
+  fi
 ],
-[UseSrcTreeHaddock=YES],
 [UseSrcTreeHaddock=NO]
 )
 dnl ** check for installed haddock
 FPTOOLS_HADDOCK
 
 AC_ARG_ENABLE(src-tree-alex,
-[  --enable-src-tree-alex
-        Build and use source tree (fptools/alex) version of Alex.
+[AC_HELP_STRING([--enable-src-tree-alex],
+        [Build and use source tree (fptools/alex) version of Alex.
+        [default=autodetect]])],
+[ if test x"$enableval" = x"yes"; then
+       UseSrcTreeAlex=YES
+  else
+       UseSrcTreeAlex=NO
+  fi
 ],
-[UseSrcTreeAlex=YES],
 [UseSrcTreeAlex=NO]
 )
 dnl ** check for installed alex binary + version
@@ -801,13 +878,13 @@ AC_CHECK_HEADER(readline/readline.h, [HaveReadlineReadlineH=YES], [HaveReadlineR
 AC_CHECK_HEADER(readline/history.h, [HaveReadlineHistoryH=YES], [HaveReadlineHistoryH=NO])
 
 if test $HaveReadlineReadlineH = YES && test $HaveReadlineHistoryH = YES ; then
-  HaveReadlineHeaders=YES
+  GhcLibsWithReadline=YES
   AC_DEFINE([HAVE_READLINE_HEADERS], [1], [Define to 1 if readline/readline.h and readline/history.h exist.])
 else
-  HaveReadlineHeaders=NO
+  GhcLibsWithReadline=NO
   AC_DEFINE([HAVE_READLINE_HEADERS], [0], [Define to 1 if readline/readline.h and readline/history.h exist.])
 fi
-AC_SUBST(HaveReadlineHeaders)
+AC_SUBST(GhcLibsWithReadline)
 
 dnl ** check for DOS include files
 AC_CHECK_HEADERS(dos.h conio.h io.h std.h) 
@@ -815,12 +892,32 @@ AC_CHECK_HEADERS(dos.h conio.h io.h std.h)
 dnl ** check for Windows include files
 AC_CHECK_HEADERS(windows.h)
 
+dnl ** check for OpenGL/GLUT include paths and libraries
+FP_CHECK_GLUT
+
+if test x"$no_GLU" = xyes; then
+  GhcLibsWithOpenGL=NO
+else
+  GhcLibsWithOpenGL=YES
+fi
+AC_SUBST([GhcLibsWithOpenGL])
+
+if test x"$no_GLUT" = xyes; then
+  GhcLibsWithGLUT=NO
+else
+  GhcLibsWithGLUT=YES
+fi
+AC_SUBST([GhcLibsWithGLUT])
+
 dnl ** check for OpenGL include files
-if test $UseQuartzOpenGL = YES ; then
-  AC_CHECK_HEADERS(OpenGL/gl.h)
+fp_save_cppflags="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+if test x"$use_quartz_opengl" = xyes; then
+  AC_CHECK_HEADERS([OpenGL/gl.h])
 else
-  AC_CHECK_HEADERS(GL/gl.h)
+  AC_CHECK_HEADERS([GL/gl.h])
 fi
+CPPFLAGS="$fp_save_cppflags"
 
 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
 AC_HEADER_TIME
@@ -836,7 +933,7 @@ AC_CHECK_HEADER(malloc.h,[AC_CHECK_FUNCS(valloc)])
 
 dnl ** check for POSIX regex
 HavePosixRegex=NO
-AC_CHECK_HEADER(regex.h,[AC_CHECK_FUNC(regcomp, [HavePosixRegex=YES])])
+AC_CHECK_HEADERS(regex.h,[AC_CHECK_FUNC(regcomp, [HavePosixRegex=YES])])
 AC_SUBST(HavePosixRegex)
 
 dnl ** how do we get a timezone name, and UTC offset ?
@@ -938,9 +1035,10 @@ FPTOOLS_CHECK_HTYPE(blkcnt_t)
 FPTOOLS_CHECK_HTYPE(nlink_t)
 FPTOOLS_CHECK_HTYPE(ssize_t)
 FPTOOLS_CHECK_HTYPE(rlim_t)
+FPTOOLS_CHECK_HTYPE(wint_t)
 
 dnl ** Map OpenGL data types to Haskell types
-if test $GhcLibsWithHOpenGL = YES ; then
+if test $GhcLibsWithOpenGL = YES ; then
 FPTOOLS_CHECK_HTYPE(GLboolean)
 FPTOOLS_CHECK_HTYPE(GLbyte)
 FPTOOLS_CHECK_HTYPE(GLubyte)
@@ -1037,7 +1135,7 @@ AC_CHECK_FUNCS(setenv unsetenv)
 
 
 dnl ** check for specific library functions that we are interested in
-AC_CHECK_FUNCS(access ftime getclock getpagesize getrusage gettimeofday mktime mprotect readlink setitimer stat lstat symlink sysconf timelocal times vadvise localtime_r gmtime_r readdir_r getgrgid_r getgrnam_r getpwuid_r getpwnam_r)
+AC_CHECK_FUNCS(access ftime getclock getpagesize getrusage gettimeofday mktime mprotect readlink setitimer stat lstat siginterrupt symlink sysconf timelocal times vadvise localtime_r gmtime_r readdir_r getgrgid_r getgrnam_r getpwuid_r getpwnam_r)
 
 dnl ** Solaris2 needs additionl flag for getpw*_r()
 case "$TargetPlatform" in
@@ -1078,8 +1176,8 @@ if test $HaveLibMingwEx = YES ; then
 fi
 
 if test "$HaveLibGmp" = "NO"; then
-if test "$HostArch_CPP" = "ia64"; then
-AC_MSG_ERROR([You need to install libgmp (the in-tree version does not work on IA64).])
+if test "$HostArch_CPP" = "ia64" -o "$HostArch_CPP" = "mipseb" ; then
+AC_MSG_ERROR([You need to install libgmp (the in-tree version does not work on IA64 or mips64).])
 fi;
 fi;
 
@@ -1089,7 +1187,11 @@ AC_CHECK_LIB(iberty, xmalloc)
 AC_CHECK_LIB(bfd,    bfd_init)
 
 dnl ** check for wide-char classifications
-AC_CHECK_HEADERS(wctype.h)
+dnl FreeBSD has an emtpy wctype.h, so test one of the affected
+dnl functions if it's really there.
+AC_CHECK_HEADERS(wctype.h,
+  [AC_CHECK_FUNCS(iswspace)]
+)
 
 dnl ** check for readline, for Hugs and hslibs' Readline
 dnl ncurses supersedes termcap and curses, but for compatibility,
@@ -1126,28 +1228,12 @@ else
 fi
 
 dnl ** check for math library
-FPTOOLS_CHECK_LIBM()
-AC_SUBST(LIBM)
+AC_CHECK_LIB([m], [main], [LIBM="-lm"], [LIBM=])
+AC_SUBST([LIBM])
 
 dnl ** check for X Window System
 AC_PATH_XTRA()
 
-dnl ** check for OpenGL/GLUT/GLX include paths and libraries
-if test $GhcLibsWithHOpenGL = YES ; then
-  if test $UseQuartzOpenGL = YES ; then
-    dnl Take a shortcut for Mac OS X native OpenGL:
-    dnl It's in a non-standard location, but it's always there
-    GL_CFLAGS=
-       GL_LIBS=
-       GLUT_LIBS=
-       AC_SUBST(GL_CFLAGS)
-       AC_SUBST(GL_LIBS)
-       AC_SUBST(GLUT_LIBS)
-  else
-    FPTOOLS_HAVE_OPENGL
-  fi
-fi
-
 dnl ################################################################
 dnl Check for libraries
 dnl ################################################################
@@ -1300,25 +1386,15 @@ dnl --------------------------------------------------
 dnl * test for GTK+
 dnl --------------------------------------------------
 
-AC_PATH_PROGS(GTK_CONFIG, gtk-config gtk12-config)
-if test "$GTK_CONFIG" != ""; then
-   AC_CACHE_CHECK([for version of GTK+], fptools_cv_gtk_version, [
-       fptools_cv_gtk_version=`$GTK_CONFIG --version`
-    ])
-    GTK_VERSION=$fptools_cv_gtk_version
-else
-    GTK_VERSION=
+AC_PATH_PROGS([GTK_CONFIG], [gtk-config gtk12-config])
+if test -n "$GTK_CONFIG"; then
+  AC_CACHE_CHECK([for version of GTK+], [fp_cv_gtk_version],
+    [fp_cv_gtk_version=`$GTK_CONFIG --version`])
+  FP_COMPARE_VERSIONS([$fp_cv_gtk_version], [-lt], [1.2],
+    [AC_MSG_WARN([GTK+ not usable, need at least version 1.2])
+     GTK_CONFIG=])
 fi
-
-case $fptools_cv_gtk_version in
-  1.[[23]].*) ;;
-  *) AC_MSG_WARN([GTK+ not usable; need at least version 1.2])
-     GTK_CONFIG=
-     ;;
-esac
-
-AC_SUBST(GTK_CONFIG)
-AC_SUBST(GTK_VERSION)
+AC_SUBST([GTK_CONFIG])
 
 dnl --------------------------------------------------
 dnl * Miscellaneous feature tests
@@ -1350,6 +1426,8 @@ esac
 AC_SUBST(LdCmd)
 FPTOOLS_LD_X
 
+FP_EMPTY_STRUCTS
+
 AC_MSG_CHECKING([for SIGPOLL])
 AC_EGREP_CPP(we_have_sigpoll,
 [#include <signal.h>