[project @ 2003-06-05 14:05:36 by reid]
[ghc-hetmet.git] / aclocal.m4
index 8c11730..6a1498b 100644 (file)
@@ -1,4 +1,4 @@
-dnl $Id: aclocal.m4,v 1.104 2002/06/25 08:32:19 simonmar Exp $
+dnl $Id: aclocal.m4,v 1.119 2003/06/05 14:05:36 reid Exp $
 dnl 
 dnl Extra autoconf macros for the Glasgow fptools
 dnl
 dnl 
 dnl Extra autoconf macros for the Glasgow fptools
 dnl
@@ -188,6 +188,28 @@ fi
 
 
 dnl
 
 
 dnl
+dnl Check for Greencard and version.
+dnl
+AC_DEFUN(FPTOOLS_GREENCARD,
+[
+AC_PATH_PROG(GreencardCmd,greencard)
+AC_CACHE_CHECK([for version of greencard], fptools_cv_greencard_version,
+changequote(, )dnl
+[if test x"$GreencardCmd" != x; then
+   fptools_cv_greencard_version="`$GreencardCmd --version |
+                         grep 'version' | sed -e 's/greencard. version \([^ ]*\).*/\1/g'`"
+else
+   fptools_cv_greencard_version=""
+fi
+changequote([, ])dnl
+])
+FPTOOLS_PROG_CHECK_VERSION([$fptools_cv_greencard_version],-lt,$1,
+  [AC_MSG_ERROR([greencard version $1 or later is required (found '$fptools_cv_greencard_version')])])dnl
+GreencardVersion=$fptools_cv_greencard_version
+AC_SUBST(GreencardVersion)
+])
+
+dnl
 dnl Check for Happy and version.  If we're building GHC, then we need
 dnl at least Happy version 1.13.  If there's no installed Happy, we look
 dnl for a happy source tree and point the build system at that instead.
 dnl Check for Happy and version.  If we're building GHC, then we need
 dnl at least Happy version 1.13.  If there's no installed Happy, we look
 dnl for a happy source tree and point the build system at that instead.
@@ -223,6 +245,26 @@ AC_SUBST(HappyVersion)
 ])
 
 dnl
 ])
 
 dnl
+dnl Check for Haddock and version.  If there's no installed Haddock, we look
+dnl for a haddock source tree and point the build system at that instead.
+dnl
+AC_DEFUN(FPTOOLS_HADDOCK,
+[
+if test -d $srcdir/haddock; then
+   SrcTreeHaddockCmd=$hardtop/haddock/src/haddock-inplace
+fi
+if test x"$UseSrcTreeHaddock" = xYES; then
+  HaddockCmd=$SrcTreeHaddockCmd
+else
+  AC_PATH_PROG(HaddockCmd,haddock,$SrcTreeHaddockCmd)
+fi
+dnl Darn, I forgot to make Haddock print out its version number when
+dnl invoked with -v.  We could try generating some HTML and grepping
+dnl through that to find the version number, but I think we'll make
+dnl do without it for now.
+])
+
+dnl
 dnl What's the best way of doing context diffs?
 dnl
 dnl (NB: NeXTStep thinks diff'ing a file against itself is "trouble")
 dnl What's the best way of doing context diffs?
 dnl
 dnl (NB: NeXTStep thinks diff'ing a file against itself is "trouble")
@@ -317,7 +359,13 @@ if test -z "$ArCmdRaw"; then
     echo "You don't seem to have ar in your PATH...I have no idea how to make a library"
     exit 1;
 fi
     echo "You don't seem to have ar in your PATH...I have no idea how to make a library"
     exit 1;
 fi
-if $ArCmdRaw clqsZ conftest.a >/dev/null 2>/dev/null; then
+dnl GNU ar needs special treatment: it appears to have problems with
+dnl object files with the same name if you use the 's' modifier, but
+dnl simple 'ar q' works fine, and doesn't need a separate ranlib.
+if $ArCmdRaw --version | grep 'GNU' >/dev/null 2>/dev/null; then
+    ArCmdArgs='q'
+    NeedRanLib=''
+elif $ArCmdRaw clqsZ conftest.a >/dev/null 2>/dev/null; then
     ArCmdArgs="clqsZ"
     NeedRanLib=''
 elif $ArCmdRaw clqs conftest.a >/dev/null 2>/dev/null; then
     ArCmdArgs="clqsZ"
     NeedRanLib=''
 elif $ArCmdRaw clqs conftest.a >/dev/null 2>/dev/null; then
@@ -397,10 +445,10 @@ AC_DEFUN(FPTOOLS_HAVE_GCC,
     fptools_cv_have_gcc='no'
 else
 changequote(, )dnl
     fptools_cv_have_gcc='no'
 else
 changequote(, )dnl
-    is_gcc_v1="`$CC -v 2>&1 | grep 'version ' | sed -e 's/.*version [^0-9]*\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/expr 2000 \\\>= \1 \\\* 1000 + \2/g' `"
+    gcc_version_str="`$CC -v 2>&1 | grep 'version ' | sed -e 's/.*version [^0-9]*\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\1\.\2/g' `"
 changequote([, ])dnl
     fptools_cv_have_gcc='yes'
 changequote([, ])dnl
     fptools_cv_have_gcc='yes'
-    if test `eval $is_gcc_v1 2>/dev/null` = "1"; then
+    FPTOOLS_PROG_CHECK_VERSION($gcc_version_str, -lt, "2.0",
         fptools_cv_have_gcc='no'
         echo ""
        echo "your gcc version appears to be ..."
         fptools_cv_have_gcc='no'
         echo ""
        echo "your gcc version appears to be ..."
@@ -408,13 +456,31 @@ changequote([, ])dnl
         echo "gcc prior to 2.0 and have never worked with ghc."
         echo "we recommend 2.95.3, although versions back to 2.7.2 should be ok."
         AC_MSG_ERROR([gcc 1.X has never been supported])
         echo "gcc prior to 2.0 and have never worked with ghc."
         echo "we recommend 2.95.3, although versions back to 2.7.2 should be ok."
         AC_MSG_ERROR([gcc 1.X has never been supported])
-    fi
+    )
 fi
 ])
 HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'`
 AC_SUBST(HaveGcc)
 ])
 
 fi
 ])
 HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'`
 AC_SUBST(HaveGcc)
 ])
 
+dnl
+dnl Some OSs (Mandrake Linux, in particular) configure GCC with
+dnl -momit-leaf-frame-pointer on by default.  If this is the case, we
+dnl need to turn it off for mangling to work.  The test is currently a bit
+dnl crude, using only the version number of gcc.
+dnl
+AC_DEFUN(FPTOOLS_GCC_NEEDS_NO_OMIT_LFPTR,
+[AC_CACHE_CHECK([whether gcc needs -mno-omit-leaf-frame-pointer], fptools_cv_gcc_needs_no_omit_lfptr,
+[
+ fptools_cv_gcc_needs_no_omit_lfptr='no'
+ FPTOOLS_PROG_CHECK_VERSION($gcc_version_str, -ge, "3.2",
+     fptools_cv_gcc_needs_no_omit_lfptr='yes')
+])
+if test "$fptools_cv_gcc_needs_no_omit_lfptr" = "yes"; then
+   AC_DEFINE(HAVE_GCC_MNO_OMIT_LFPTR)
+fi
+])
+
 dnl Small feature test for perl version. Assumes PerlCmd
 dnl contains path to perl binary
 dnl
 dnl Small feature test for perl version. Assumes PerlCmd
 dnl contains path to perl binary
 dnl
@@ -423,15 +489,19 @@ AC_DEFUN(FPTOOLS_CHECK_PERL_VERSION,
 if grep "version 5" conftest.out >/dev/null 2>&1; then
    :
 else
 if grep "version 5" conftest.out >/dev/null 2>&1; then
    :
 else
-  if grep "v5.6" conftest.out >/dev/null 2>&1; then
-     :
-  else
-     if grep "version 6" conftest.out >/dev/null 2>&1; then
-       :
-     else
-       echo "Your version of perl probably won't work."
-     fi
-  fi
+   if grep "v5.6" conftest.out >/dev/null 2>&1; then
+      :
+   else
+      if grep "v5.8" conftest.out >/dev/null 2>&1; then
+         :
+      else
+         if grep "version 6" conftest.out >/dev/null 2>&1; then
+            :
+         else
+            echo "Your version of perl probably won't work."
+         fi  
+      fi
+   fi
 fi
 rm -fr conftest*
 ])
 fi
 rm -fr conftest*
 ])
@@ -621,6 +691,10 @@ AC_CACHE_VAL(AC_CV_NAME,
 # include <GL/gl.h>
 #endif
 
 # include <GL/gl.h>
 #endif
 
+#ifdef HAVE_SYS_RESOURCE_H
+# include <sys/resource.h>
+#endif
+
 typedef $1 testing;
 
 main() {
 typedef $1 testing;
 
 main() {
@@ -679,7 +753,6 @@ dnl    This is set up so that the argument can be a shell variable.
 dnl
 AC_DEFUN(FPTOOLS_CHECK_CCONST,
 [
 dnl
 AC_DEFUN(FPTOOLS_CHECK_CCONST,
 [
-eval "def_name=CCONST_$1"
 eval "cv_name=ac_cv_cconst_$1"
 AC_MSG_CHECKING(value of $1)
 AC_CACHE_VAL($cv_name,
 eval "cv_name=ac_cv_cconst_$1"
 AC_MSG_CHECKING(value of $1)
 AC_CACHE_VAL($cv_name,
@@ -697,7 +770,7 @@ eval "$cv_name=-1",
 eval "$cv_name=-1")])dnl
 eval "fptools_check_cconst_result=`echo '$'{$cv_name}`"
 AC_MSG_RESULT($fptools_check_cconst_result)
 eval "$cv_name=-1")])dnl
 eval "fptools_check_cconst_result=`echo '$'{$cv_name}`"
 AC_MSG_RESULT($fptools_check_cconst_result)
-AC_DEFINE_UNQUOTED($def_name, $fptools_check_cconst_result)
+AC_DEFINE_UNQUOTED(CCONST_$1, $fptools_check_cconst_result)
 unset fptools_check_cconst_result
 ])
 
 unset fptools_check_cconst_result
 ])
 
@@ -722,11 +795,11 @@ AC_CACHE_VAL(fptools_cv_have_o_binary,
 [
 AC_LANG_SAVE
 AC_LANG_C
 [
 AC_LANG_SAVE
 AC_LANG_C
-AC_TRY_COMPILE(,
+AC_TRY_COMPILE(
 [#ifdef HAVE_FCNTL_H
 #include <fcntl.h>
 [#ifdef HAVE_FCNTL_H
 #include <fcntl.h>
-#endif
-int x = O_BINARY;],
+#endif],
+[int x = O_BINARY;],
 fptools_cv_have_o_binary=yes,
 fptools_cv_have_o_binary=no)
 AC_LANG_RESTORE
 fptools_cv_have_o_binary=yes,
 fptools_cv_have_o_binary=no)
 AC_LANG_RESTORE
@@ -737,130 +810,12 @@ AC_DEFINE(HAVE_O_BINARY)
 fi
 ])
 
 fi
 ])
 
-dnl *** Which one comes first, .text or .data? ***
-dnl 
-AC_DEFUN(FPTOOLS_CODE_BEFORE_DATA,
-[AC_CACHE_CHECK([if code section appears before data], fptools_cv_code_bef_data,
-[AC_TRY_RUN([
-int f() { return 1; }
-int i;
-int main() { return ((char*)&f > (char*)&i); }
-
-],
-fptools_cv_code_bef_data=yes, fptools_cv_code_bef_data=no,false)])
-if test "$fptools_cv_code_bef_data" = yes; then
-  AC_DEFINE(CODE_BEFORE_DATA)
-fi
-])
-
 dnl *** Helper function **
 dnl 
 AC_DEFUN(FPTOOLS_IN_SCOPE,
 [AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no)
 ])
 
 dnl *** Helper function **
 dnl 
 AC_DEFUN(FPTOOLS_IN_SCOPE,
 [AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no)
 ])
 
-dnl *** What's the end-of-text-section marker called? ***
-dnl
-AC_DEFUN([FPTOOLS_END_TEXT_SECTION],
-[AC_CACHE_CHECK([for end of text section marker],
-                [fptools_cv_end_of_text],
-               [fptools_cv_end_of_text=""
-                not_done=1
-                for i in data_start _data_start etext _etext __etext; do
-                  FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text)
-                  if test "$fptools_end_of_text" = yes; then
-                    fptools_cv_end_of_text=$i
-                    not_done=0
-                    break
-                  fi
-                done
-                if test "$not_done" = 1; then
-                  FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text)
-                  if test "$fptools_end_of_text" = yes; then
-                    fptools_cv_end_of_text="etext"
-                  fi
-                fi])
-                if test -n "$fptools_cv_end_of_text"; then
-                  AC_DEFINE_UNQUOTED([TEXT_SECTION_END_MARKER], $fptools_cv_end_of_text)
-                else
-                  AC_DEFINE_UNQUOTED([TEXT_SECTION_END_MARKER], dunno_end_of_text)
-                fi
- AC_CACHE_CHECK([for end of text section marker declaration],
-               [fptools_cv_end_of_text_decl],
-               [fptools_cv_end_of_text_decl=""
-                not_done=1
-                for i in data_start _data_start etext _etext __etext; do
-                  FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text_decl)
-                  if test "$fptools_end_of_text_decl" = yes; then
-                    fptools_cv_end_of_text_decl=$i
-                    not_done=0
-                    break
-                  fi
-                done
-                if test "$not_done" = 1; then
-                  FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text_decl)
-                  if test "$fptools_end_of_text_decl" = yes; then
-                    fptools_cv_end_of_text_decl="etext asm(\"etext\")"
-                  fi
-                fi])
-                if test -n "$fptools_cv_end_of_text_decl"; then
-                  AC_DEFINE_UNQUOTED([TEXT_SECTION_END_MARKER_DECL], $fptools_cv_end_of_text_decl)
-                else
-                  AC_DEFINE_UNQUOTED([TEXT_SECTION_END_MARKER_DECL], dunno_end_of_text_decl)
-                fi
-])                
-dnl *** What's the end-of-data-section marker called? ***
-dnl
-AC_DEFUN([FPTOOLS_END_DATA_SECTION],
-[AC_CACHE_CHECK([for end of data section marker],
-                [fptools_cv_end_of_data],
-               [fptools_cv_end_of_data=""
-                not_done=1
-                for i in end _end __end; do
-                  FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data)
-                  if test "$fptools_end_of_data" = yes; then
-                    fptools_cv_end_of_data=$i
-                    not_done=0
-                    break
-                  fi
-                done
-                if test "$not_done" = 1; then
-                  FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data)
-                  if test "$fptools_end_of_data" = yes; then
-                    fptools_cv_end_of_data="end"
-                  fi
-                fi])
-                if test -n "$fptools_cv_end_of_data"; then
-                  AC_DEFINE_UNQUOTED([DATA_SECTION_END_MARKER], $fptools_cv_end_of_data)
-                else
-                  AC_DEFINE_UNQUOTED([DATA_SECTION_END_MARKER], dunno_end_of_data)
-                fi
- AC_CACHE_CHECK([for end of data section marker declaration],
-               [fptools_cv_end_of_data_decl],
-               [fptools_cv_end_of_data_decl=""
-                not_done=1
-                for i in end _end __end; do
-                  FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data_decl)
-                  if test "$fptools_end_of_data_decl" = yes; then
-                    fptools_cv_end_of_data_decl=$i
-                    not_done=0
-                    break
-                  fi
-                done
-                if test "$not_done" = 1; then
-                  FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data_decl)
-                  if test "$fptools_end_of_data_decl" = yes; then
-                    fptools_cv_end_of_data_decl="end asm(\"end\")"
-                  fi
-                fi])
-                if test -n "$fptools_cv_end_of_data_decl"; then
-                  AC_DEFINE_UNQUOTED([DATA_SECTION_END_MARKER_DECL], $fptools_cv_end_of_data_decl)
-                else
-                  AC_DEFINE_UNQUOTED([DATA_SECTION_END_MARKER_DECL], dunno_end_of_data_decl)
-                fi
-])                
 
 dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
 
 
 dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
 
@@ -1081,9 +1036,7 @@ esac
 ])
 
 dnl ######################################################################
 ])
 
 dnl ######################################################################
-dnl NOTE: Because of portability issues between different autoconf
-dnl versions the AC_HELP_STRING macro has been removed from FPTOOLS_HAVE_OPENGL.
-dnl Furthermore, caching has been completely rewritten.
+dnl Note: Caching has been completely rewritten, but is still no perfect yet.
 dnl ######################################################################
 
 dnl ########################### -*- Mode: M4 -*- #######################
 dnl ######################################################################
 
 dnl ########################### -*- Mode: M4 -*- #######################
@@ -1111,8 +1064,8 @@ dnl ####################################################################
 dnl @synopsis FPTOOLS_HAVE_OPENGL
 dnl 
 dnl Search for OpenGL.  We search first for Mesa (a GPL'ed version of
 dnl @synopsis FPTOOLS_HAVE_OPENGL
 dnl 
 dnl Search for OpenGL.  We search first for Mesa (a GPL'ed version of
-dnl OpenGL) before a vendor's version of OpenGL, unless we were
-dnl specifically asked not to with `--with-Mesa=no' or `--without-Mesa'.
+dnl OpenGL) before a vendor's version of OpenGL if we were specifically
+dnl asked to with `--with-Mesa=yes' or `--with-Mesa'.
 dnl
 dnl The four "standard" OpenGL libraries are searched for: "-lGL",
 dnl "-lGLU", "-lGLX" (or "-lMesaGL", "-lMesaGLU" as the case may be) and
 dnl
 dnl The four "standard" OpenGL libraries are searched for: "-lGL",
 dnl "-lGLU", "-lGLX" (or "-lMesaGL", "-lMesaGLU" as the case may be) and
@@ -1156,12 +1109,13 @@ AC_DEFUN(FPTOOLS_HAVE_OPENGL,
   AC_REQUIRE([AC_PATH_XTRA])
   AC_REQUIRE([FPTOOLS_CHECK_LIBM])
 
   AC_REQUIRE([AC_PATH_XTRA])
   AC_REQUIRE([FPTOOLS_CHECK_LIBM])
 
-dnl Check for Mesa first, unless we were asked not to.
-dnl    AC_HELP_STRING([--with-Mesa],
-dnl                   [Prefer the Mesa library over a vendors native OpenGL library (default=yes)],
-dnl                   with_Mesa_help_string)
-dnl    AC_ARG_ENABLE(Mesa, $with_Mesa_help_string, use_Mesa=$enableval, use_Mesa=yes)
-  AC_ARG_ENABLE(Mesa, [  --with-Mesa             Prefer the Mesa library over a vendors native OpenGL library (default=no)], use_Mesa=$enableval, use_Mesa=no)
+dnl Check for Mesa first if we were asked to.
+  AC_ARG_ENABLE(Mesa,
+[  --enable-mesa
+       Prefer Mesa over a vendor's native OpenGL library (default=no)
+],
+                use_Mesa=$enableval,
+                use_Mesa=no)
 
   if test x"$use_Mesa" = xyes; then
      GL_search_list="MesaGL  GL  opengl32"
 
   if test x"$use_Mesa" = xyes; then
      GL_search_list="MesaGL  GL  opengl32"
@@ -1177,10 +1131,10 @@ dnl    AC_ARG_ENABLE(Mesa, $with_Mesa_help_string, use_Mesa=$enableval, use_Mesa
   AC_LANG_C
 
 dnl If we are running under X11 then add in the appropriate libraries.
   AC_LANG_C
 
 dnl If we are running under X11 then add in the appropriate libraries.
-  if ! test x"$no_x" = xyes; then
+  if test x"$no_x" != xyes; then
 dnl Add everything we need to compile and link X programs to GL_CFLAGS
 dnl and GL_X_LIBS.
 dnl Add everything we need to compile and link X programs to GL_CFLAGS
 dnl and GL_X_LIBS.
-    GL_CFLAGS="$X_CFLAGS"
+    GL_CFLAGS="$CPPFLAGS $X_CFLAGS"
     GL_X_LIBS="$X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS $LIBM"
   fi
   GL_save_CPPFLAGS="$CPPFLAGS"
     GL_X_LIBS="$X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS $LIBM"
   fi
   GL_save_CPPFLAGS="$CPPFLAGS"
@@ -1189,15 +1143,18 @@ dnl and GL_X_LIBS.
   GL_save_LIBS="$LIBS"
   LIBS="$GL_X_LIBS"
 
   GL_save_LIBS="$LIBS"
   LIBS="$GL_X_LIBS"
 
-  FPTOOLS_SEARCH_LIBS([#include <GL/gl.h>],   glEnd,           $GL_search_list,  have_GL=yes,   have_GL=no)
-  FPTOOLS_SEARCH_LIBS([#include <GL/glu.h>],  gluNewQuadric,   $GLU_search_list, have_GLU=yes,  have_GLU=no)
-  FPTOOLS_SEARCH_LIBS([#include <GL/glx.h>],  glXChooseVisual, $GLX_search_list, have_GLX=yes,  have_GLX=no)
-  FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], glutMainLoop,    glut glut32,      have_glut=yes, have_glut=no)
+  dnl Including <GL/glut.h> instead of plain <GL/gl.h> avoids problems on
+  dnl platforms like WinDoze where special headers like <windows.h> or
+  dnl some macro trickery would be needed
+  FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], glEnd,         $GL_search_list,  have_GL=yes,   have_GL=no)
+  FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], gluNewQuadric, $GLU_search_list, have_GLU=yes,  have_GLU=no)
+  FPTOOLS_SEARCH_LIBS([#include <GL/glx.h>],  glXWaitX,      $GLX_search_list, have_GLX=yes,  have_GLX=no)
+  FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], glutMainLoop,  glut32 glut,      have_glut=yes, have_glut=no)
 
   if test -n "$LIBS"; then
 
   if test -n "$LIBS"; then
-    GL_LIBS="$LIBS"
+    GL_LIBS="$LDFLAGS $LIBS"
   else
   else
-    GL_LIBS=
+    GL_LIBS="$LDFLAGS"
     GL_CFLAGS=
   fi
 
     GL_CFLAGS=
   fi
 
@@ -1236,7 +1193,7 @@ fi
 
 dnl
 dnl Check to see whether CC (gcc) supports a particular option.
 
 dnl
 dnl Check to see whether CC (gcc) supports a particular option.
-dnl 
+dnl
 AC_DEFUN(FPTOOLS_CC_FLAG,
 [
 AC_CACHE_CHECK([whether $CC accepts $1], [ac_cv_cc_$2],
 AC_DEFUN(FPTOOLS_CC_FLAG,
 [
 AC_CACHE_CHECK([whether $CC accepts $1], [ac_cv_cc_$2],
@@ -1260,7 +1217,8 @@ dnl Check to see whether 'struct msghdr' contains msg_control
 dnl 
 AC_DEFUN(FPTOOLS_MSGHDR_MSG_CONTROL,
 [AC_CACHE_CHECK([for msg_control in struct msghdr], fptools_cv_struct_msghdr_msg_control,
 dnl 
 AC_DEFUN(FPTOOLS_MSGHDR_MSG_CONTROL,
 [AC_CACHE_CHECK([for msg_control in struct msghdr], fptools_cv_struct_msghdr_msg_control,
-[AC_TRY_COMPILE([#include <sys/uio.h>
+[AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/uio.h>
 #include <sys/socket.h>], [struct msghdr m; m.msg_control;],
 fptools_cv_struct_msghdr_msg_control=yes, fptools_cv_struct_msghdr_msg_control=no)])
 if test $fptools_cv_struct_msghdr_msg_control = yes; then
 #include <sys/socket.h>], [struct msghdr m; m.msg_control;],
 fptools_cv_struct_msghdr_msg_control=yes, fptools_cv_struct_msghdr_msg_control=no)])
 if test $fptools_cv_struct_msghdr_msg_control = yes; then
@@ -1274,7 +1232,8 @@ dnl Check to see whether 'struct msghdr' contains msg_accrights
 dnl 
 AC_DEFUN(FPTOOLS_MSGHDR_MSG_ACCRIGHTS,
 [AC_CACHE_CHECK([for msg_accrights in struct msghdr], fptools_cv_struct_msghdr_msg_accrights,
 dnl 
 AC_DEFUN(FPTOOLS_MSGHDR_MSG_ACCRIGHTS,
 [AC_CACHE_CHECK([for msg_accrights in struct msghdr], fptools_cv_struct_msghdr_msg_accrights,
-[AC_TRY_COMPILE([#include <sys/uio.h>
+[AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/uio.h>
 #include <sys/socket.h>], [struct msghdr m; m.msg_accrights;],
 fptools_cv_struct_msghdr_msg_accrights=yes, fptools_cv_struct_msghdr_msg_accrights=no)])
 if test $fptools_cv_struct_msghdr_msg_accrights = yes; then
 #include <sys/socket.h>], [struct msghdr m; m.msg_accrights;],
 fptools_cv_struct_msghdr_msg_accrights=yes, fptools_cv_struct_msghdr_msg_accrights=no)])
 if test $fptools_cv_struct_msghdr_msg_accrights = yes; then