about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--configure.ac16
-rw-r--r--src/boost/format.hpp9
-rw-r--r--src/libmain/shared.cc3
-rw-r--r--src/libstore/exec.cc1
-rw-r--r--src/libstore/store.cc1
-rw-r--r--src/nix-env/main.cc2
6 files changed, 29 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac
index 3e0bca31ef9e..85244ebabfaf 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,6 +26,22 @@ AC_PROG_CC
 AC_PROG_CXX
 AC_PROG_RANLIB
 
+# Check for pubsetbuf.
+AC_MSG_CHECKING([for pubsetbuf])
+AC_LANG_PUSH(C++)
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <iostream>
+using namespace std;
+static char buf[1024];]],
+    [[cerr.rdbuf()->pubsetbuf(buf, sizeof(buf));]])],
+    [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PUBSETBUF, 1, [whether pubsetbuf is available])],
+    AC_MSG_RESULT(no))
+AC_LANG_POP(C++)
+
+# Check for <locale>
+AC_LANG_PUSH(C++)
+AC_CHECK_HEADERS([locale])
+AC_LANG_POP(C++)
+
 AC_PATH_PROG(wget, wget)
 AC_PATH_PROG(xmllint, xmllint)
 AC_PATH_PROG(xsltproc, xsltproc)
diff --git a/src/boost/format.hpp b/src/boost/format.hpp
index a287048ed338..1476cb796d46 100644
--- a/src/boost/format.hpp
+++ b/src/boost/format.hpp
@@ -24,10 +24,13 @@
 #include <sstream>
 #include <cassert>
 
+#if HAVE_LOCALE
 #include <locale>
-//#define BOOST_NO_STD_LOCALE
-//#define BOOST_NO_LOCALE_ISIDIGIT
-//#include <cctype>
+#else
+#define BOOST_NO_STD_LOCALE
+#define BOOST_NO_LOCALE_ISIDIGIT
+#include <cctype>
+#endif
 
 #include <boost/format/macros_default.hpp>
 
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc
index b99a74bb4027..92349488e761 100644
--- a/src/libmain/shared.cc
+++ b/src/libmain/shared.cc
@@ -1,3 +1,4 @@
+
 #include <iostream>
 #include <cctype>
 
@@ -71,7 +72,9 @@ int main(int argc, char * * argv)
     ATinit(argc, argv, &bottomOfStack);
 
     /* Turn on buffering for cerr. */
+#if HAVE_PUBSETBUF
     cerr.rdbuf()->pubsetbuf(buf, sizeof(buf));
+#endif
 
     try {
         initAndRun(argc, argv);
diff --git a/src/libstore/exec.cc b/src/libstore/exec.cc
index 47a385f147d5..2adf03841c4f 100644
--- a/src/libstore/exec.cc
+++ b/src/libstore/exec.cc
@@ -1,4 +1,5 @@
 #include <iostream>
+#include <cstdio>
 
 #include <sys/types.h>
 #include <sys/stat.h>
diff --git a/src/libstore/store.cc b/src/libstore/store.cc
index acdb4708e2d5..20625b9fe82c 100644
--- a/src/libstore/store.cc
+++ b/src/libstore/store.cc
@@ -1,4 +1,5 @@
 #include <iostream>
+#include <algorithm>
 
 #include <sys/wait.h>
 #include <unistd.h>
diff --git a/src/nix-env/main.cc b/src/nix-env/main.cc
index 06678fc518d7..6150b2fb6c00 100644
--- a/src/nix-env/main.cc
+++ b/src/nix-env/main.cc
@@ -1,3 +1,5 @@
+#include <cerrno>
+
 #include "globals.hh"
 #include "normalise.hh"
 #include "shared.hh"