From 61fef8080b6446672f3f0f400a3f9ddb631a9380 Mon Sep 17 00:00:00 2001 From: Jeff Hutchinson Date: Mon, 10 May 2021 16:15:45 -0400 Subject: [PATCH] mend --- Engine/lib/convexDecomp/NvThreadConfig.cpp | 2 +- Tools/CMake/libraries/lpng.cmake | 5 ++++ Tools/CMake/torque3d.cmake | 30 ++++++++++++++++++---- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/Engine/lib/convexDecomp/NvThreadConfig.cpp b/Engine/lib/convexDecomp/NvThreadConfig.cpp index 7a1b08750..75d604a84 100644 --- a/Engine/lib/convexDecomp/NvThreadConfig.cpp +++ b/Engine/lib/convexDecomp/NvThreadConfig.cpp @@ -136,7 +136,7 @@ void tc_spinloop() #elif defined( _WIN64 ) YieldProcessor( ); #elif (defined( __arm64__ ) && defined( __APPLE__ )) || defined( __arch64__ ) - asm( "yield" ); + pthread_yield_np(); #else __asm { pause }; #endif diff --git a/Tools/CMake/libraries/lpng.cmake b/Tools/CMake/libraries/lpng.cmake index 44271904a..93a32a406 100644 --- a/Tools/CMake/libraries/lpng.cmake +++ b/Tools/CMake/libraries/lpng.cmake @@ -24,6 +24,11 @@ project(lpng) # addDef(PNG_NO_ASSEMBLER_CODE) +# Issues with Neon at the moment (Arm support) +# https://sourceforge.net/p/libpng/bugs/281/ +set(PNG_ARM_NEON off CACHE STRING "") +add_definitions(-DPNG_ARM_NEON_OPT=0) + addInclude(${libDir}/zlib) finishLibrary("${libDir}/${PROJECT_NAME}") diff --git a/Tools/CMake/torque3d.cmake b/Tools/CMake/torque3d.cmake index c64a18986..afff2d5c8 100644 --- a/Tools/CMake/torque3d.cmake +++ b/Tools/CMake/torque3d.cmake @@ -692,8 +692,8 @@ if(WIN32) endif() if (APPLE) - addFramework("Cocoa") - addFramework("OpenGL") + addFramework("Cocoa") + addFramework("OpenGL") #These are needed by sdl2 static lib addFramework("CoreAudio") addFramework("AudioUnit") @@ -704,9 +704,29 @@ if (APPLE) addFramework("Carbon") addFramework("AudioToolbox") addLib("iconv") - #set a few arch defaults - set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE STRING "OSX Architecture" FORCE) - set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "OSX Deployment target" FORCE) +endif() + +#detect Architecture +if (APPLE AND NOT IOS) + option(TORQUE_MACOS_UNIVERSAL_BINARY OFF) + + # Detect architecture if not using universal + if (TORQUE_MACOS_UNIVERSAL_BINARY) + set(ARCHITECTURE_STRING_APPLE "x86_64;arm64") + set(DEPLOYMENT_TARGET_APPLE "10.13") + else() + check_c_compiler_flag("-arch arm64" armSupportedApple) + if(armSupportedApple) + set(ARCHITECTURE_STRING_APPLE "arm64") + set(DEPLOYMENT_TARGET_APPLE "11.0") + else() + set(ARCHITECTURE_STRING_APPLE "x86_64") + set(DEPLOYMENT_TARGET_APPLE "10.9") + endif() + endif() + + set(CMAKE_OSX_ARCHITECTURES ${ARCHITECTURE_STRING_APPLE} CACHE STRING "OSX Architecture" FORCE) + set(CMAKE_OSX_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET_APPLE} CACHE STRING "OSX Deployment target" FORCE) endif() if(UNIX AND NOT APPLE)