diff options
author | Kai Blaschke <kai.blaschke@gdata.de> | 2024-02-18 13:07:13 +0100 |
---|---|---|
committer | Kai Blaschke <kai.blaschke@kb-dev.net> | 2024-02-19 14:11:14 +0100 |
commit | e2251a0e8bab878b453debd9211e0ba34564d08c (patch) | |
tree | e21b7aad3a87335bda5b01ce6e906f6f187fff60 /cmake/TargetArch.cmake | |
parent | 30e1871d3f44629e00a1f66d8164e3e62c7f889f (diff) |
Add detection for ARM64 and remove PPC.
Also removed i386 as valid architecture for macOS, as it's no longer supported (even x86_64 is currently being phased out in favor of Silicon-based Macs).
ARM64 would also be required for a potential Raspberry Pi port (also needs a Vulkan or OpenGL ES renderer).
Diffstat (limited to 'cmake/TargetArch.cmake')
-rw-r--r-- | cmake/TargetArch.cmake | 53 |
1 files changed, 12 insertions, 41 deletions
diff --git a/cmake/TargetArch.cmake b/cmake/TargetArch.cmake index 3761e4d..2e204fd 100644 --- a/cmake/TargetArch.cmake +++ b/cmake/TargetArch.cmake @@ -28,71 +28,42 @@ set(archdetect_c_code " #else #error cmake_ARCH arm #endif +#elif defined(__arm64__) + #error cmake_ARCH arm64 #elif defined(__i386) || defined(__i386__) || defined(_M_IX86) #error cmake_ARCH i386 #elif defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(_M_X64) #error cmake_ARCH x86_64 #elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64) #error cmake_ARCH ia64 -#elif defined(__ppc__) || defined(__ppc) || defined(__powerpc__) \\ - || defined(_ARCH_COM) || defined(_ARCH_PWR) || defined(_ARCH_PPC) \\ - || defined(_M_MPPC) || defined(_M_PPC) - #if defined(__ppc64__) || defined(__powerpc64__) || defined(__64BIT__) - #error cmake_ARCH ppc64 - #else - #error cmake_ARCH ppc - #endif #endif #error cmake_ARCH unknown ") -# Set ppc_support to TRUE before including this file or ppc and ppc64 -# will be treated as invalid architectures since they are no longer supported by Apple - function(target_architecture output_var) - if(APPLE AND CMAKE_OSX_ARCHITECTURES) - # On OS X we use CMAKE_OSX_ARCHITECTURES *if* it was set - # First let's normalize the order of the values - - # Note that it's not possible to compile PowerPC applications if you are using - # the OS X SDK version 10.6 or later - you'll need 10.4/10.5 for that, so we - # disable it by default - # See this page for more information: - # http://stackoverflow.com/questions/5333490/how-can-we-restore-ppc-ppc64-as-well-as-full-10-4-10-5-sdk-support-to-xcode-4 - - # Architecture defaults to i386 or ppc on OS X 10.5 and earlier, depending on the CPU type detected at runtime. - # On OS X 10.6+ the default is x86_64 if the CPU supports it, i386 otherwise. + if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_OSX_ARCHITECTURES) + # On macOS, we use CMAKE_OSX_ARCHITECTURES *if* it was set + # Apple currently only supports x86_64 and arm64 architectures to target Intel-based + # and Silicon-based Macs. Building as a universal binary will make each machine + # use the proper native code to run the resulting executable. foreach(osx_arch ${CMAKE_OSX_ARCHITECTURES}) - if("${osx_arch}" STREQUAL "ppc" AND ppc_support) - set(osx_arch_ppc TRUE) - elseif("${osx_arch}" STREQUAL "i386") - set(osx_arch_i386 TRUE) - elseif("${osx_arch}" STREQUAL "x86_64") + if("${osx_arch}" STREQUAL "x86_64") set(osx_arch_x86_64 TRUE) - elseif("${osx_arch}" STREQUAL "ppc64" AND ppc_support) - set(osx_arch_ppc64 TRUE) + elseif("${osx_arch}" STREQUAL "arm64") + set(osx_arch_arm64 TRUE) else() message(FATAL_ERROR "Invalid OS X arch name: ${osx_arch}") endif() endforeach() - # Now add all the architectures in our normalized order - if(osx_arch_ppc) - list(APPEND ARCH ppc) - endif() - - if(osx_arch_i386) - list(APPEND ARCH i386) - endif() - if(osx_arch_x86_64) list(APPEND ARCH x86_64) endif() - if(osx_arch_ppc64) - list(APPEND ARCH ppc64) + if(osx_arch_arm64) + list(APPEND ARCH arm64) endif() else() file(WRITE "${CMAKE_BINARY_DIR}/arch.c" "${archdetect_c_code}") |