diff --git a/configure.ac b/configure.ac
index 346e1e114e9a0d502b58627702cc132bc16b707b..1b65cf4bb2fb809affe15a76529ee665c4aa9a99 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@ AC_SYS_LARGEFILE
 AC_CHECK_HEADERS([dirent.h fcntl.h grp.h limits.h pwd.h signal.h string.h])
 AC_CHECK_HEADERS([sys/resource.h sys/stat.h sys/times.h sys/time.h])
 AC_CHECK_HEADERS([sys/utsname.h sys/wait.h])
-AC_CHECK_HEADERS([libutil.h pty.h utmp.h])
+AC_CHECK_HEADERS([bsd/libutil.h libutil.h pty.h utmp.h])
 AC_CHECK_HEADERS([termios.h time.h unistd.h utime.h])
 
 AC_CHECK_FUNCS([getgrgid_r getgrnam_r getpwnam_r getpwuid_r getpwnam getpwuid])
diff --git a/include/HsUnix.h b/include/HsUnix.h
index cb8d4667e72fa6ba1a6cdfe1eccb19bb05a67b0f..d8a072a7a0830e43064bf547985fc31ad9f49d9c 100644
--- a/include/HsUnix.h
+++ b/include/HsUnix.h
@@ -75,7 +75,9 @@
 #include <dirent.h>
 #endif
 
-#ifdef HAVE_LIBUTIL_H
+#if defined(HAVE_BSD_LIBUTIL_H)
+#include <bsd/libutil.h>
+#elif defined(HAVE_LIBUTIL_H)
 #include <libutil.h>
 #endif
 #ifdef HAVE_PTY_H