aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/build-data/buildh.in7
-rw-r--r--src/utils/cpuid.cpp5
2 files changed, 10 insertions, 2 deletions
diff --git a/src/build-data/buildh.in b/src/build-data/buildh.in
index 724801040..90d274d58 100644
--- a/src/build-data/buildh.in
+++ b/src/build-data/buildh.in
@@ -35,6 +35,13 @@
#define BOTAN_USE_GCC_INLINE_ASM 0
#endif
+#ifdef __GNUC__
+ #define BOTAN_GCC_VERSION \
+ (__GNUC__ * 100 + __GNUC_MINOR__ * 10 + __GNUC_PATCH__)
+#else
+ #define BOTAN_GCC_VERSION 0
+#endif
+
/* Target identification and feature test macros */
%{target_os_defines}
diff --git a/src/utils/cpuid.cpp b/src/utils/cpuid.cpp
index e4f5a1318..19a2db788 100644
--- a/src/utils/cpuid.cpp
+++ b/src/utils/cpuid.cpp
@@ -26,14 +26,15 @@
#include <ia32intrin.h>
#define CALL_CPUID(type, out) do { __cpuid(out, type); } while(0);
-#elif defined(BOTAN_BUILD_COMPILER_IS_GCC) && \
- ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+#elif BOTAN_GCC_VERSION >= 430
// Only available starting in GCC 4.3
#include <cpuid.h>
#define CALL_CPUID(type, out) \
do { __get_cpuid(type, out, out+1, out+2, out+3); } while(0);
+#else
+ #warning "No method of calling CPUID for this compiler"
#endif
#endif