cpu.h: Fix compiler detection
authorErik de Castro Lopo <erikd@mega-nerd.com>
Wed, 15 Feb 2017 07:22:23 +0000 (18:22 +1100)
committerErik de Castro Lopo <erikd@mega-nerd.com>
Wed, 15 Feb 2017 09:16:01 +0000 (20:16 +1100)
GCC version 4.6 was throwing an error on `__has_attribute` which
seems to be Clang specific. Solution was to un-nest the CPP code
so that Clang is confirmed before the `__has_attribute` is hit.

src/libFLAC/include/private/cpu.h

index 623efc5..c2372d9 100644 (file)
@@ -88,7 +88,7 @@
     #define FLAC__AVX2_SUPPORTED 1
     #define FLAC__FMA_SUPPORTED 1
   #endif
-#elif defined __GNUC__ || defined __clang__
+#elif defined __GNUC__ && defined __clang__
   #if defined __clang__ && __has_attribute(__target__) /* clang */
     #define FLAC__SSE_TARGET(x) __attribute__ ((__target__ (x)))
     #if __has_builtin(__builtin_ia32_maxps)
     #if __has_builtin(__builtin_ia32_pabsd256)
       #define FLAC__AVX2_SUPPORTED 1
     #endif
-  #elif !defined __clang__ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 9)) /* GCC 4.9+ */
+#elif defined (__GNUC__) &&  (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 9)) /* GCC 4.9+ */
     #define FLAC__SSE_TARGET(x) __attribute__ ((__target__ (x)))
     #define FLAC__SSE_SUPPORTED 1
     #define FLAC__SSE2_SUPPORTED 1