From 9bb99499a20ed87fc81df759f5927dcad8b9a3a2 Mon Sep 17 00:00:00 2001 From: John Zhao Date: Fri, 12 Feb 2016 01:52:59 +0800 Subject: [PATCH] Update TargetArch.cmake --- cmake/TargetArch.cmake | 71 +++++++++++++++++++++++++++++++----------- 1 file changed, 52 insertions(+), 19 deletions(-) diff --git a/cmake/TargetArch.cmake b/cmake/TargetArch.cmake index 81015d9..e66deaa 100755 --- a/cmake/TargetArch.cmake +++ b/cmake/TargetArch.cmake @@ -1,32 +1,65 @@ # Based on the Qt 5 processor detection code, so should be very accurate -# https://qt.gitorious.org/qt/qtbase/blobs/master/src/corelib/global/qprocessordetection.h -# Currently handles arm (v5, v6, v7), x86 (32/64), ia64, and ppc (32/64) +# http://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/global/qprocessordetection.h +# Currently handles arm (v5, v6, v7, v8), x86 (32/64), ia64, and ppc (32/64) # Regarding POWER/PowerPC, just as is noted in the Qt source, # "There are many more known variants/revisions that we do not handle/detect." set(archdetect_c_code " -#if defined(__arm__) || defined(__TARGET_ARCH_ARM) - #if defined(__ARM_ARCH_7__) \\ - || defined(__ARM_ARCH_7A__) \\ - || defined(__ARM_ARCH_7R__) \\ - || defined(__ARM_ARCH_7M__) \\ - || (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 7) - #error cmake_ARCH armv7 +#if defined(__arm__) || defined(__TARGET_ARCH_ARM) || defined(_M_ARM) \\ + || defined(__aarch64__) || defined(__ARM64__) + #if defined(__aarch64__) || defined(__ARM64__) + #define cmake_ARM_64 + #else + #define cmake_ARM_32 + #endif + #if defined(__ARM_ARCH) && __ARM_ARCH > 1 + #define cmake_ARM __ARM_ARCH + #elif defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM > 1 + #define cmake_ARM __TARGET_ARCH_ARM + #elif defined(_M_ARM) && _M_ARM > 1 + #define cmake_ARM _M_ARM + #elif defined(__ARM64_ARCH_8__) \\ + || defined(__aarch64__) \\ + || defined(__ARMv8__) \\ + || defined(__ARMv8_A__) + #define cmake_ARM 8 + #elif defined(__ARM_ARCH_7__) \\ + || defined(__ARM_ARCH_7A__) \\ + || defined(__ARM_ARCH_7R__) \\ + || defined(__ARM_ARCH_7M__) \\ + || defined(__ARM_ARCH_7S__) \\ + || defined(_ARM_ARCH_7) \\ + || defined(__CORE_CORTEXA__) + #define cmake_ARM 7 #elif defined(__ARM_ARCH_6__) \\ - || defined(__ARM_ARCH_6J__) \\ - || defined(__ARM_ARCH_6T2__) \\ - || defined(__ARM_ARCH_6Z__) \\ - || defined(__ARM_ARCH_6K__) \\ - || defined(__ARM_ARCH_6ZK__) \\ - || defined(__ARM_ARCH_6M__) \\ - || (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 6) - #error cmake_ARCH armv6 + || defined(__ARM_ARCH_6J__) \\ + || defined(__ARM_ARCH_6T2__) \\ + || defined(__ARM_ARCH_6Z__) \\ + || defined(__ARM_ARCH_6K__) \\ + || defined(__ARM_ARCH_6ZK__) \\ + || defined(__ARM_ARCH_6M__) + #define cmake_ARM 6 #elif defined(__ARM_ARCH_5TEJ__) \\ - || (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 5) + || defined(__ARM_ARCH_5TE__) + #define cmake_ARM 5 + #else + #define cmake_ARM 0 + #endif + #if cmake_ARM >= 8 + #error cmake_ARCH armv8 + #elif cmake_ARM >= 7 + #error cmake_ARCH armv7 + #elif cmake_ARM >= 6 + #error cmake_ARCH armv6 + #elif cmake_ARM >= 5 #error cmake_ARCH armv5 #else - #error cmake_ARCH arm + #if defined(cmake_ARM_64) + #error cmake_ARCH arm64 + #else + #error cmake_ARCH arm + #endif #endif #elif defined(__i386) || defined(__i386__) || defined(_M_IX86) #error cmake_ARCH i386