diff --git a/src/libutil/util.cc b/src/libutil/util.cc
index d29802bcdcbe50108693fa9a0bb87020e8888df9..34c1d96dcb87c19226ab092b4a0869b9e11d7e58 100644
--- a/src/libutil/util.cc
+++ b/src/libutil/util.cc
@@ -1567,7 +1567,11 @@ std::unique_ptr<InterruptCallback> createInterruptCallback(std::function<void()>
 
 AutoCloseFD createUnixDomainSocket(const Path & path, mode_t mode)
 {
-    AutoCloseFD fdSocket = socket(PF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0);
+    AutoCloseFD fdSocket = socket(PF_UNIX, SOCK_STREAM
+        #ifdef SOCK_CLOEXEC
+        | SOCK_CLOEXEC
+        #endif
+        , 0);
     if (!fdSocket)
         throw SysError("cannot create Unix domain socket");