From 50b67cf1f47d2caa5b876175129ff8943cba616a Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Mon, 2 Nov 2009 07:17:29 +0100 Subject: [PATCH] Detect architecture and features automatically on GNU Use the preprocessor definitions to detect the ARM architecture and features like the availability of the pld instruction. The QT_ARCH_ARM/QT_ARCH_ARMV6 detection should be moved to a more central place. --- src/gui/painting/qdrawhelper_arm_p.h | 40 ++++++++++++++++++++++++++++++++++ 1 files changed, 40 insertions(+), 0 deletions(-) diff --git a/src/gui/painting/qdrawhelper_arm_p.h b/src/gui/painting/qdrawhelper_arm_p.h index b468db8..b6f2ce6 100644 --- a/src/gui/painting/qdrawhelper_arm_p.h +++ b/src/gui/painting/qdrawhelper_arm_p.h @@ -57,6 +57,46 @@ QT_BEGIN_NAMESPACE +// On a GNU compiler figure out on which architecture we are +// building and set QT_ARM_ARCH to the number, define if PLD +// is available and set QT_ARCH_ARM or QT_ARCH_ARMV6 +#if defined(Q_CC_GNU) && (defined(QT_ARCH_ARM) || defined(QT_ARCH_ARMV6)) + +// the core versions come from gcc/config/arm-cores.def +#if defined(__ARM_ARCH_4__) || defined(__ARM_ARCH_4T__) +#define QT_ARM_ARCH 4 +#endif + +#if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) +#define QT_ARM_ARCH 5 +#endif + +#if defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__) +#define QT_ARM_ARCH 5 +#define QT_ARM_HAS_PLD +#endif + +#if defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6M__) +#define QT_ARM_ARCH 6 +#endif + +#if defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) +#define QT_ARM_ARCH 7 +#endif + +#ifndef QT_ARM_ARCH +#error "Could not detect the ARM architecture." +#endif + +// Now define the global visible information +#if QT_ARM_ARCH > 5 +#define QT_ARM_HAS_PLD +#endif + +#elif defined(Q_CC_RVCT) && defined(QT_HAVE_ARMV6) +#define QT_ARM_HAS_PLD +#endif + #if defined(Q_CC_RVCT) && defined(QT_HAVE_ARMV6) extern "C" void qt_blend_rgb32_on_rgb32_armv6(uchar *destPixels, int dbpl, -- 1.6.1