From: Michael R. Crusoe <crusoe@debian.org>
Subject: Enable compilation on non-x86, non-arm, non-powerpc
--- a/src/cpuid.c
+++ b/src/cpuid.c
@@ -60,6 +60,9 @@ int parasail_can_use_neon() { return 0;
 
 static void run_cpuid(uint32_t eax, uint32_t ecx, uint32_t* abcd)
 {
+#if defined(__x86_64__) || defined(__i386__)
+// power & arm have their own cpuid_isa.c files
+
 #if defined(_MSC_VER)
     __cpuidex(abcd, eax, ecx);
 #else
@@ -73,6 +76,7 @@ static void run_cpuid(uint32_t eax, uint
               "+a" (eax), "+c" (ecx), "=d" (edx) );
     abcd[0] = eax; abcd[1] = ebx; abcd[2] = ecx; abcd[3] = edx;
 #endif
+#endif
 }
 
 
@@ -82,6 +86,7 @@ static void run_cpuid(uint32_t eax, uint
 
 static int check_4th_gen_intel_core_features()
 {
+#if defined(__x86_64__) || defined(__i386__)
     /* we only care about avx2, not the other features */
 #if 0
     const int the_4th_gen_features =
@@ -90,26 +95,41 @@ static int check_4th_gen_intel_core_feat
     const int the_4th_gen_features = _FEATURE_AVX2;
 #endif
     return _may_i_use_cpu_feature( the_4th_gen_features );
+#else
+    return 0;
+#endif
 }
 
 static int has_intel_avx512f_features()
 {
+#if defined(__x86_64__) || defined(__i386__)
     const unsigned long avx512f_features =
         (_FEATURE_AVX512F | _FEATURE_AVX512ER | _FEATURE_AVX512PF | _FEATURE_AVX512CD);
     return _may_i_use_cpu_feature( avx512f_features );
+#else
+    return 0;
+#endif
 }
 
 static int has_intel_avx512bw_features()
 {
+#if defined(__x86_64__) || defined(__i386__)
     const unsigned long avx512f_features =
         (_FEATURE_AVX512VL | _FEATURE_AVX512BW | _FEATURE_AVX512DQ);
     return _may_i_use_cpu_feature( avx512f_features );
+#else
+    return 0;
+#endif
 }
 
 static int has_intel_avx512vbmi_features()
 {
+#if defined(__x86_64__) || defined(__i386__)
     const unsigned long avx512vbmi_features = (_FEATURE_AVX512VBMI);
     return _may_i_use_cpu_feature( avx512vbmi_features );
+#else
+    return 0;
+#endif
 }
 
 #else /* non-Intel compiler */
@@ -188,6 +208,7 @@ static int check_4th_gen_intel_core_feat
 }
 
 static int has_intel_avx512f_features() {
+#if defined(__x86_64__) || defined(__i386__)
     uint32_t abcd[4];
     uint32_t osxsave_mask = (1U << 27); /* OSX. */
     uint32_t avx512f_mask = (1U << 16) | /* AVX-512F */
@@ -212,9 +233,13 @@ static int has_intel_avx512f_features()
         return 0;
 
     return 1;
+#else
+    return 0;
+#endif
 }
 
 static int has_intel_avx512bw_features() {
+#if defined(__x86_64__) || defined(__i386__)
     uint32_t abcd[4];
     uint32_t osxsave_mask = (1U << 27); /* OSX. */
     uint32_t avx512bw_mask = (1U << 30) | /* AVX-512BW */
@@ -237,10 +262,14 @@ static int has_intel_avx512bw_features()
         return 0;
 
     return 1;
+#else
+    return 0;
+#endif
 }
 
 static int has_intel_avx512vbmi_features()
 {
+#if defined(__x86_64__) || defined(__i386__)
     uint32_t abcd[4];
     uint32_t osxsave_mask = (1U << 27); /* OSX. */
     uint32_t avx512vbmi_mask = (1U << 1); /* AVX-512VBMI */
@@ -259,6 +288,9 @@ static int has_intel_avx512vbmi_features
         return 0;
 
     return 1;
+#else
+    return 0;
+#endif
 }
 
 #endif /* non-Intel compiler */
@@ -266,6 +298,7 @@ static int has_intel_avx512vbmi_features
 
 static int check_sse41()
 {
+#if defined(__x86_64__) || defined(__i386__)
     uint32_t info[4];
     uint32_t nIds;
 
@@ -279,11 +312,15 @@ static int check_sse41()
     }
 
     return 0;
+#else
+    return 0;
+#endif
 }
 
 
 static int check_sse2()
 {
+#if defined(__x86_64__) || defined(__i386__)
     uint32_t info[4];
     uint32_t nIds;
 
@@ -297,64 +334,91 @@ static int check_sse2()
     }
 
     return 0;
+#else
+    return 0;
+#endif
 }
 
 
 int parasail_can_use_avx512vbmi()
 {
+#if defined(__x86_64__) || defined(__i386__)
     static int avx512vbmi_features_available = -1;
     /* test is performed once */
     if (avx512vbmi_features_available < 0 )
         avx512vbmi_features_available = has_intel_avx512vbmi_features();
     return avx512vbmi_features_available;
+#else
+    return 0;
+#endif
 }
 
 int parasail_can_use_avx512bw()
 {
+#if defined(__x86_64__) || defined(__i386__)
     static int avx512bw_features_available = -1;
     /* test is performed once */
     if (avx512bw_features_available < 0 )
         avx512bw_features_available = has_intel_avx512bw_features();
     return avx512bw_features_available;
+#else
+    return 0;
+#endif
 }
 
 int parasail_can_use_avx512f()
 {
+#if defined(__x86_64__) || defined(__i386__)
     static int avx512f_features_available = -1;
     /* test is performed once */
     if (avx512f_features_available < 0 )
         avx512f_features_available = has_intel_avx512f_features();
     return avx512f_features_available;
+#else
+    return 0;
+#endif
 }
 
 int parasail_can_use_avx2()
 {
+#if defined(__x86_64__) || defined(__i386__)
     static int the_4th_gen_features_available = -1;
     /* test is performed once */
     if (the_4th_gen_features_available < 0 )
         the_4th_gen_features_available = check_4th_gen_intel_core_features();
 
     return the_4th_gen_features_available;
+#else
+    return 0;
+#endif
 }
 
 int parasail_can_use_sse41()
 {
+#if defined(__x86_64__) || defined(__i386__)
     static int can_use_sse41 = -1;
     /* test is performed once */
     if (can_use_sse41 < 0)
         can_use_sse41 = check_sse41();
 
     return can_use_sse41;
+#else
+    return 0;
+#endif
 }
 
 int parasail_can_use_sse2()
 {
+#if defined(__x86_64__) || defined(__i386__)
     static int can_use_sse2 = -1;
     /* test is performed once */
     if (can_use_sse2 < 0)
         can_use_sse2 = check_sse2();
 
     return can_use_sse2;
+#else
+    return 0;
+#endif
 }
 
 int parasail_can_use_altivec()
