diff --git a/mongoose.c b/mongoose.c
index 0e5f283a5be14ced052fe5e14715ac309f95b4e1..e56dc6691e38318b710023b8b30771e47798f55d 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -1274,8 +1274,13 @@ typedef HANDLE process_id_t;
 
 #else                    ////////////// UNIX specific defines and includes
 
+#if !defined(MONGOOSE_NO_FILESYSTEM) &&\
+    (!defined(MONGOOSE_NO_DAV) || !defined(MONGOOSE_NO_DIRECTORY_LISTING))
 #include <dirent.h>
+#endif
+#if !defined(MONGOOSE_NO_FILESYSTEM) && !defined(MONGOOSE_NO_DL)
 #include <dlfcn.h>
+#endif
 #include <inttypes.h>
 #include <pwd.h>
 #define O_BINARY 0