1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2025-09-02 10:57:59 +00:00

Detect ARM processors when using clang

This commit is contained in:
Carles Fernandez
2019-11-02 00:12:47 +01:00
parent 681022b9c9
commit d6b4ba4fc3

View File

@@ -50,16 +50,22 @@ endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
execute_process(COMMAND echo "int main(){}" execute_process(COMMAND echo "int main(){}"
COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} -dM ${VERBOSE_BUILDING} -E - COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} -dM ${VERBOSE_BUILDING} -E -
OUTPUT_VARIABLE TEST_FOR_ARM_RESULTS) OUTPUT_VARIABLE TEST_FOR_ARM_RESULTS
)
string(REGEX MATCH "__arm" ARM_FOUND "${TEST_FOR_ARM_RESULTS}") string(REGEX MATCH "__arm" ARM_FOUND "${TEST_FOR_ARM_RESULTS}")
if(ARM_FOUND STREQUAL "") if(ARM_FOUND STREQUAL "")
string(REGEX MATCH "__aarch64" ARM_FOUND "${TEST_FOR_ARM_RESULTS}") string(REGEX MATCH "__aarch64" ARM_FOUND "${TEST_FOR_ARM_RESULTS}")
endif() endif()
if(ARM_FOUND STREQUAL "")
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "arm")
set(ARM_FOUND ${CMAKE_HOST_SYSTEM_PROCESSOR})
endif()
endif()
if(NOT ARM_FOUND STREQUAL "") if(NOT ARM_FOUND STREQUAL "")
set(IS_ARM TRUE) set(IS_ARM TRUE)
message(STATUS "ARM system detected") message(STATUS "ARM system detected.")
# detect the version # detect the version
check_arm_version("__ARM_ARCH_2__" ${TEST_FOR_ARM_RESULTS} "armv2" ARM_VERSION) check_arm_version("__ARM_ARCH_2__" ${TEST_FOR_ARM_RESULTS} "armv2" ARM_VERSION)
@@ -88,22 +94,32 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
check_arm_version("__ARM_ARCH_8A__" ${TEST_FOR_ARM_RESULTS} "armv8-a" ARM_VERSION) check_arm_version("__ARM_ARCH_8A__" ${TEST_FOR_ARM_RESULTS} "armv8-a" ARM_VERSION)
check_arm_version("__ARM_ARCH_8A" ${TEST_FOR_ARM_RESULTS} "armv8-a" ARM_VERSION) check_arm_version("__ARM_ARCH_8A" ${TEST_FOR_ARM_RESULTS} "armv8-a" ARM_VERSION)
# anything else just define as arm # anything else just define as unknown
if(ARM_VERSION STREQUAL "") if(ARM_VERSION STREQUAL "")
message(STATUS "Couldn't detect ARM version. Setting to 'arm'") message(STATUS "Couldn't detect ARM version.")
set(ARM_VERSION "arm") set(ARM_VERSION "unknown")
else() else()
message(STATUS "ARM version ${ARM_VERSION} detected") message(STATUS "ARM version ${ARM_VERSION} detected.")
endif() endif()
else() else()
message(STATUS "System is not ARM") message(STATUS "System is not ARM.")
endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "arm")
set(IS_ARM TRUE)
set(ARM_VERSION ${CMAKE_HOST_SYSTEM_PROCESSOR})
message(STATUS "ARM version ${ARM_VERSION} detected.")
endif() endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "ARMClang") elseif(CMAKE_CXX_COMPILER_ID STREQUAL "ARMClang")
set(IS_ARM TRUE) set(IS_ARM TRUE)
set(ARM_VERSION "arm") set(ARM_VERSION "arm")
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "arm")
set(ARM_VERSION ${CMAKE_HOST_SYSTEM_PROCESSOR})
message(STATUS "ARM version ${ARM_VERSION} detected.")
endif()
else() else()
message(STATUS "Not detecting ARM on non-GNUCXX or non-ARMClang compiler. Defaulting to false") message(STATUS "Not detecting ARM on non-GNUCXX or non-Clang compiler. Defaulting to false.")
message(STATUS "If you are compiling for ARM, set IS_ARM=ON manually") message(STATUS "If you are compiling for ARM, set -DIS_ARM=ON manually.")
endif() endif()
set(IS_ARM ${IS_ARM} CACHE BOOL "Compiling for ARM") set(IS_ARM ${IS_ARM} CACHE BOOL "Compiling for ARM")