diff --git a/builtins/zlib/adler32.c b/builtins/zlib/adler32.c
index c523560ec6b5f6f23d63752f98ce91b393a71ae8..44df5d7094ce61ff12b0a7a4d3f95501a4ac64d0 100644
--- a/builtins/zlib/adler32.c
+++ b/builtins/zlib/adler32.c
@@ -8,7 +8,7 @@
 
 #include "zutil.h"
 
-#ifdef __x86_64__
+#if defined (__x86_64__) && defined (__linux__)
 #include <xmmintrin.h>
 #include <tmmintrin.h>
 #include <immintrin.h>
@@ -144,7 +144,7 @@ uLong ZEXPORT adler32_default(uLong adler, const Bytef *buf, uInt len)
     return adler | (sum2 << 16);
 }
 
-#ifdef __x86_64__
+#if defined (__x86_64__) && defined (__linux__)
 
 #ifdef _MSC_VER
 
diff --git a/builtins/zlib/crc32.c b/builtins/zlib/crc32.c
index 17732879ae9bf4addf32638da2f31871e23db322..254d8aba54433e53313c4250daad2b076c7f719b 100644
--- a/builtins/zlib/crc32.c
+++ b/builtins/zlib/crc32.c
@@ -273,7 +273,7 @@ local unsigned long crc32_generic(crc, buf, len)
     return crc ^ 0xffffffffUL;
 }
 
-#ifdef __x86_64__
+#if defined (__x86_64__) && defined (__linux__)
 
 /* Function stolen from linux kernel 3.14. It computes the CRC over the given
  * buffer with initial CRC value <crc32>. The buffer is <len> byte in length,
diff --git a/builtins/zlib/deflate.c b/builtins/zlib/deflate.c
index a4aff0e736825a0bcaf439594f2ae29d0cedc616..4d8275e2651a81d3fdada3c1de63ebe8385f7f80 100644
--- a/builtins/zlib/deflate.c
+++ b/builtins/zlib/deflate.c
@@ -165,7 +165,7 @@ static uint32_t hash_func(deflate_state *s, uint32_t UNUSED(h), void* str) {
     return __crc32cw(0, *(uint32_t*)str) & s->hash_mask;
 }
 
-#else // No __ARM_FEATURE_CRC32 (ARMv8 without crc32 support)
+#else // ARMv8 without crc32 support
 
 static uint32_t hash_func(deflate_state *s, uint32_t h, void* str) {
     return hash_func_default(s, h, str);
@@ -1488,7 +1488,7 @@ static void fill_window_default(s)
            "not enough room for search");
 }
 
-#if(defined __x86_64__)
+#if defined (__x86_64__) && defined (__linux__)
 
 /* ===========================================================================
  * Fill the window when the lookahead becomes insufficient.
@@ -1793,6 +1793,7 @@ void fill_window(deflate_state *s){
 void fill_window(deflate_state *s){
     return fill_window_default(s);
 }
+
 #endif
 
 /* ===========================================================================