From 965e547d10d1d4652b0324ed2a7a737643971170 Mon Sep 17 00:00:00 2001 From: Pascal Terjan <pterjan@google.com> Date: Mon, 12 Nov 2018 12:51:09 +0000 Subject: [PATCH] Add support for Arm64 --- cmake/admDetermineSystem.cmake | 11 +++++++++-- cmake/cmake_compile_check/cpu_arm64_check.cpp | 10 ++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 cmake/cmake_compile_check/cpu_arm64_check.cpp diff --git a/cmake/admDetermineSystem.cmake b/cmake/admDetermineSystem.cmake index 3382ec709..110f1f110 100644 --- a/cmake/admDetermineSystem.cmake +++ b/cmake/admDetermineSystem.cmake @@ -2,6 +2,7 @@ # ADM_BIG_ENDIAN - big endian CPU detected # ADM_BSD_FAMILY - BSD family operating system was detected # ADM_CPU_ARMEL - ARM (min ARCH5) el +# ADM_CPU_ARM64 - ARM v8 CPU was detected # ADM_CPU_64BIT - 64-bit CPU was detected # ADM_CPU_X86 - x86 CPU architecture was detected # ADM_CPU_X86_32 - x86 32-bit CPU architecture was detected @@ -70,13 +71,19 @@ IF(NOT MSVC) PERFORM_SYSTEM_TEST(cpu_armel_check.cpp "ARM EL" ARMEL_SUPPORTED) IF(ARMEL_SUPPORTED) SET(ADM_CPU_ARMEL 1) + ELSE (ARMEL_SUPPORTED) + PERFORM_SYSTEM_TEST(cpu_arm64_check.cpp "ARM64" ARM64_SUPPORTED) + + IF(ARM64_SUPPORTED) + set(ADM_CPU_ARM64 1) + endif(ARM64_SUPPORTED) ENDIF(ARMEL_SUPPORTED) ENDIF (X86_32_SUPPORTED) ENDIF (X86_64_SUPPORTED) - IF (NOT ADM_CPU_X86_32 AND NOT ADM_CPU_X86_64 AND NOT ADM_CPU_ARMEL) + IF (NOT ADM_CPU_X86_32 AND NOT ADM_CPU_X86_64 AND NOT ADM_CPU_ARMEL AND NOT ADM_CPU_ARM64) MESSAGE(FATAL_ERROR "CPU not supported") - ENDIF (NOT ADM_CPU_X86_32 AND NOT ADM_CPU_X86_64 AND NOT ADM_CPU_ARMEL) + ENDIF (NOT ADM_CPU_X86_32 AND NOT ADM_CPU_X86_64 AND NOT ADM_CPU_ARMEL AND NOT ADM_CPU_ARM64) TEST_BIG_ENDIAN(CMAKE_WORDS_BIGENDIAN) diff --git a/cmake/cmake_compile_check/cpu_arm64_check.cpp b/cmake/cmake_compile_check/cpu_arm64_check.cpp new file mode 100644 index 000000000..c8981318e --- /dev/null +++ b/cmake/cmake_compile_check/cpu_arm64_check.cpp @@ -0,0 +1,10 @@ +void foo(void) +{ + + asm volatile ("mov x27,x28 " : : ); +} + +int main(int a, char **b) +{ + return 0; +} -- 2.19.1.930.g4563a0d9d0-goog