|
|
@@ -46,10 +46,21 @@ if(CMAKE_HOST_UNIX)
|
|
|
if(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux|CYGWIN.*|Darwin|^GNU$|Android")
|
|
|
exec_program(${CMAKE_UNAME} ARGS -m OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_PROCESSOR
|
|
|
RETURN_VALUE val)
|
|
|
- if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin" AND
|
|
|
- CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "Power Macintosh")
|
|
|
- # OS X ppc 'uname -m' may report 'Power Macintosh' instead of 'powerpc'
|
|
|
- set(CMAKE_HOST_SYSTEM_PROCESSOR "powerpc")
|
|
|
+ if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
|
|
|
+ if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
|
|
+ # Check whether we are running under Rosetta on arm64 hardware.
|
|
|
+ execute_process(COMMAND sysctl -q hw.optional.arm64
|
|
|
+ OUTPUT_VARIABLE _sysctl_stdout
|
|
|
+ ERROR_VARIABLE _sysctl_stderr
|
|
|
+ RESULT_VARIABLE _sysctl_result
|
|
|
+ )
|
|
|
+ if(_sysctl_result EQUAL 0 AND _sysctl_stdout MATCHES "hw.optional.arm64: 1")
|
|
|
+ set(CMAKE_HOST_SYSTEM_PROCESSOR "arm64")
|
|
|
+ endif()
|
|
|
+ elseif(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "Power Macintosh")
|
|
|
+ # OS X ppc 'uname -m' may report 'Power Macintosh' instead of 'powerpc'
|
|
|
+ set(CMAKE_HOST_SYSTEM_PROCESSOR "powerpc")
|
|
|
+ endif()
|
|
|
endif()
|
|
|
elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "OpenBSD")
|
|
|
exec_program(arch ARGS -s OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_PROCESSOR
|