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)