protect unistd.h inclusion with a check for Unix

This ensures that all the inclusions of unistd.h inclusion are protected
with the check that the header exists.  This header is only available on
unix like environments to define the standard of compliance.  This
protection is needed for other environments like Windows.
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>