Merge pull request #339 from compnerd/unistd

protect unistd.h inclusion with HAVE_UNISTD_H
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 97d306d..ead4696 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -221,7 +221,6 @@
 check_include_files("sys/guarded.h" HAVE_SYS_GUARDED_H)
 check_include_files("sys/stat.h" HAVE_SYS_STAT_H)
 check_include_files("sys/types.h" HAVE_SYS_TYPES_H)
-check_include_files("unistd.h" HAVE_UNISTD_H)
 check_include_files("objc/objc-internal.h" HAVE_OBJC)
 
 if(HAVE_MACH)
diff --git a/cmake/config.h.in b/cmake/config.h.in
index 12a2530..380d41e 100644
--- a/cmake/config.h.in
+++ b/cmake/config.h.in
@@ -192,9 +192,6 @@
 /* Define to 1 if you have the <TargetConditionals.h> header file. */
 #cmakedefine HAVE_TARGETCONDITIONALS_H
 
-/* Define to 1 if you have the <unistd.h> header file. */
-#cmakedefine01 HAVE_UNISTD_H
-
 /* Define to 1 if you have the `_pthread_workqueue_init' function. */
 #cmakedefine HAVE__PTHREAD_WORKQUEUE_INIT
 
diff --git a/dispatch/dispatch.h b/dispatch/dispatch.h
index a4b5459..d36259c 100644
--- a/dispatch/dispatch.h
+++ b/dispatch/dispatch.h
@@ -35,7 +35,7 @@
 #include <stdint.h>
 #include <stdbool.h>
 #include <stdarg.h>
-#if !defined(HAVE_UNISTD_H) || HAVE_UNISTD_H
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
 #endif
 #include <fcntl.h>
diff --git a/private/private.h b/private/private.h
index cb4f676..ee2b26e 100644
--- a/private/private.h
+++ b/private/private.h
@@ -41,7 +41,7 @@
 #include <mach/mach.h>
 #include <mach/message.h>
 #endif
-#if HAVE_UNISTD_H
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
 #endif
 #include <pthread.h>
diff --git a/src/internal.h b/src/internal.h
index 98e13a3..84505e5 100644
--- a/src/internal.h
+++ b/src/internal.h
@@ -285,7 +285,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#if HAVE_UNISTD_H
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
 #endif
 
diff --git a/src/queue.c b/src/queue.c
index 3d0f10c..d747a59 100644
--- a/src/queue.c
+++ b/src/queue.c
@@ -903,7 +903,9 @@
 }
 
 #if DISPATCH_USE_THREAD_LOCAL_STORAGE
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <sys/syscall.h>
 
 #ifndef __ANDROID__
diff --git a/tests/Foundation/bench.mm b/tests/Foundation/bench.mm
index 635679f..20d11c2 100644
--- a/tests/Foundation/bench.mm
+++ b/tests/Foundation/bench.mm
@@ -31,7 +31,9 @@
 #include <stdlib.h>
 #include <stdint.h>
 #include <stdbool.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <assert.h>
 #include <errno.h>
 #include <pthread.h>
diff --git a/tests/bsdtestharness.c b/tests/bsdtestharness.c
index 7aad1c0..08f3f7d 100644
--- a/tests/bsdtestharness.c
+++ b/tests/bsdtestharness.c
@@ -23,7 +23,9 @@
 #include <spawn.h>
 #include <stdio.h>
 #include <stdlib.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <signal.h>
 #ifdef __APPLE__
 #include <mach/clock_types.h>
diff --git a/tests/bsdtests.c b/tests/bsdtests.c
index 2c07a5d..09700fa 100644
--- a/tests/bsdtests.c
+++ b/tests/bsdtests.c
@@ -25,7 +25,9 @@
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <errno.h>
 #include <sys/errno.h>
 #include <sys/wait.h>
diff --git a/tests/bsdtests.h b/tests/bsdtests.h
index f296194..48e73a2 100644
--- a/tests/bsdtests.h
+++ b/tests/bsdtests.h
@@ -41,7 +41,9 @@
 #include <CoreFoundation/CoreFoundation.h>
 #endif
 
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <string.h>
 #include <stdint.h>
 
diff --git a/tests/cffd.c b/tests/cffd.c
index 7ba91ee..3655c01 100644
--- a/tests/cffd.c
+++ b/tests/cffd.c
@@ -22,7 +22,9 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <string.h>
 #include <sys/param.h>
 #include <sys/ucred.h>
diff --git a/tests/dispatch_after.c b/tests/dispatch_after.c
index 6c95a3b..2b46dc9 100644
--- a/tests/dispatch_after.c
+++ b/tests/dispatch_after.c
@@ -20,7 +20,9 @@
 
 #include <dispatch/dispatch.h>
 #include <stdio.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <stdlib.h>
 #include <assert.h>
 #ifdef __APPLE__
diff --git a/tests/dispatch_apply.c b/tests/dispatch_apply.c
index 380fd35..d77d8bb 100644
--- a/tests/dispatch_apply.c
+++ b/tests/dispatch_apply.c
@@ -20,7 +20,9 @@
 
 #include <dispatch/dispatch.h>
 #include <stdio.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <stdlib.h>
 #include <assert.h>
 #ifdef __APPLE__
diff --git a/tests/dispatch_cascade.c b/tests/dispatch_cascade.c
index 1f3cd40..fce2790 100644
--- a/tests/dispatch_cascade.c
+++ b/tests/dispatch_cascade.c
@@ -20,7 +20,9 @@
 
 #include <stdio.h>
 #include <dispatch/dispatch.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <stdlib.h>
 
 #include <bsdtests.h>
diff --git a/tests/dispatch_concur.c b/tests/dispatch_concur.c
index e7f0226..960f565 100644
--- a/tests/dispatch_concur.c
+++ b/tests/dispatch_concur.c
@@ -20,7 +20,9 @@
 
 #include <dispatch/dispatch.h>
 #include <dispatch/private.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <stdlib.h>
 #include <stdio.h>
 #include <sys/types.h>
diff --git a/tests/dispatch_context_for_key.c b/tests/dispatch_context_for_key.c
index c10a869..bcf1ab8 100644
--- a/tests/dispatch_context_for_key.c
+++ b/tests/dispatch_context_for_key.c
@@ -21,7 +21,9 @@
 #include <dispatch/dispatch.h>
 #include <stdlib.h>
 #include <stdio.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <assert.h>
 
 #include <bsdtests.h>
diff --git a/tests/dispatch_deadname.c b/tests/dispatch_deadname.c
index 805944e..3c75280 100644
--- a/tests/dispatch_deadname.c
+++ b/tests/dispatch_deadname.c
@@ -24,7 +24,9 @@
 #include <mach/mach.h>
 #endif
 #include <stdio.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <stdlib.h>
 #include <assert.h>
 
diff --git a/tests/dispatch_drift.c b/tests/dispatch_drift.c
index a6631a8..e483f36 100644
--- a/tests/dispatch_drift.c
+++ b/tests/dispatch_drift.c
@@ -23,7 +23,9 @@
 #endif
 #include <dispatch/dispatch.h>
 #include <sys/time.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <stdio.h>
 #include <stdlib.h>
 #ifdef __APPLE__
diff --git a/tests/dispatch_group.c b/tests/dispatch_group.c
index a9a8e8b..af59742 100644
--- a/tests/dispatch_group.c
+++ b/tests/dispatch_group.c
@@ -19,7 +19,9 @@
  */
 
 #include <dispatch/dispatch.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/tests/dispatch_io.c b/tests/dispatch_io.c
index a29cb56..12870ce 100644
--- a/tests/dispatch_io.c
+++ b/tests/dispatch_io.c
@@ -25,7 +25,9 @@
 #include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <errno.h>
 #include <fts.h>
 #ifdef __APPLE__
diff --git a/tests/dispatch_io_net.c b/tests/dispatch_io_net.c
index fd680ae..eaa84b8 100644
--- a/tests/dispatch_io_net.c
+++ b/tests/dispatch_io_net.c
@@ -20,7 +20,9 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <errno.h>
 #include <netdb.h>
 #include <sys/types.h>
diff --git a/tests/dispatch_overcommit.c b/tests/dispatch_overcommit.c
index c103c68..4c18741 100644
--- a/tests/dispatch_overcommit.c
+++ b/tests/dispatch_overcommit.c
@@ -25,7 +25,9 @@
 #include <dispatch/dispatch.h>
 #include <dispatch/private.h>
 #include <stdio.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <stdlib.h>
 #include <assert.h>
 #ifdef __APPLE__
diff --git a/tests/dispatch_priority.c b/tests/dispatch_priority.c
index a2eb954..c500e87 100644
--- a/tests/dispatch_priority.c
+++ b/tests/dispatch_priority.c
@@ -21,7 +21,9 @@
 #include <stdio.h>
 #include <dispatch/dispatch.h>
 #include <dispatch/private.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <stdlib.h>
 #include <assert.h>
 #ifdef __APPLE__
diff --git a/tests/dispatch_proc.c b/tests/dispatch_proc.c
index 6c3b701..0c0a18d 100644
--- a/tests/dispatch_proc.c
+++ b/tests/dispatch_proc.c
@@ -20,7 +20,9 @@
 
 #include <dispatch/dispatch.h>
 #include <stdio.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <stdlib.h>
 #include <assert.h>
 #include <spawn.h>
diff --git a/tests/dispatch_queue_finalizer.c b/tests/dispatch_queue_finalizer.c
index e70df43..acd2275 100644
--- a/tests/dispatch_queue_finalizer.c
+++ b/tests/dispatch_queue_finalizer.c
@@ -19,7 +19,9 @@
  */
 
 #include <dispatch/dispatch.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/tests/dispatch_read.c b/tests/dispatch_read.c
index 9c09a06..3e938fd 100644
--- a/tests/dispatch_read.c
+++ b/tests/dispatch_read.c
@@ -24,7 +24,9 @@
 #include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <errno.h>
 
 #include <dispatch/dispatch.h>
diff --git a/tests/dispatch_read2.c b/tests/dispatch_read2.c
index 398aa2c..13021e9 100644
--- a/tests/dispatch_read2.c
+++ b/tests/dispatch_read2.c
@@ -25,7 +25,9 @@
 #include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <errno.h>
 #include <fts.h>
 #ifdef __APPLE__
diff --git a/tests/dispatch_readsync.c b/tests/dispatch_readsync.c
index f01d982..293387a 100644
--- a/tests/dispatch_readsync.c
+++ b/tests/dispatch_readsync.c
@@ -21,7 +21,9 @@
 #include <dispatch/dispatch.h>
 #include <dispatch/private.h>
 #include <stdlib.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #ifdef __ANDROID__
 #include <linux/sysctl.h>
 #else
diff --git a/tests/dispatch_select.c b/tests/dispatch_select.c
index 2ec1c89..d663722 100644
--- a/tests/dispatch_select.c
+++ b/tests/dispatch_select.c
@@ -21,7 +21,9 @@
 #include <stdio.h>
 #include <fcntl.h>
 #include <stdlib.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <sys/stat.h>
 #include <dispatch/dispatch.h>
 
diff --git a/tests/dispatch_sema.c b/tests/dispatch_sema.c
index f428472..7195ef7 100644
--- a/tests/dispatch_sema.c
+++ b/tests/dispatch_sema.c
@@ -19,7 +19,9 @@
  */
 
 #include <dispatch/dispatch.h>
+#if !USE_WIN32_SEM
 #include <pthread.h>
+#endif
 #include <stdio.h>
 #include <assert.h>
 
diff --git a/tests/dispatch_sync_on_main.c b/tests/dispatch_sync_on_main.c
index 227120c..1076147 100644
--- a/tests/dispatch_sync_on_main.c
+++ b/tests/dispatch_sync_on_main.c
@@ -22,7 +22,9 @@
 #include <dispatch/private.h>
 #include <stdlib.h>
 #include <stdio.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #include <CoreFoundation/CoreFoundation.h>
 
 #include <bsdtests.h>
diff --git a/tests/dispatch_test.c b/tests/dispatch_test.c
index ea58194..8beda90 100644
--- a/tests/dispatch_test.c
+++ b/tests/dispatch_test.c
@@ -27,7 +27,9 @@
 
 #include <stdlib.h>
 #include <stdio.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #if __has_include(<sys/event.h>)
 #define HAS_SYS_EVENT_H 1
 #include <sys/event.h>
diff --git a/tests/dispatch_vm.c b/tests/dispatch_vm.c
index 6877411..e4617ba 100644
--- a/tests/dispatch_vm.c
+++ b/tests/dispatch_vm.c
@@ -21,7 +21,9 @@
 #include <sys/event.h>
 #include <stdio.h>
 #include <stdlib.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 #ifdef __APPLE__
 #include <libkern/OSAtomic.h>
 #endif
diff --git a/tests/dispatch_vnode.c b/tests/dispatch_vnode.c
index 45cae72..b97ab75 100644
--- a/tests/dispatch_vnode.c
+++ b/tests/dispatch_vnode.c
@@ -21,7 +21,9 @@
 #include <stdio.h>
 #include <fcntl.h>
 #include <stdlib.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 #include <unistd.h>
+#endif
 
 #include <dispatch/dispatch.h>