diff --git a/Engine/lib/Torque_postBuild.cmake b/Engine/lib/Torque_postBuild.cmake index d5863dd61..15e448701 100644 --- a/Engine/lib/Torque_postBuild.cmake +++ b/Engine/lib/Torque_postBuild.cmake @@ -19,7 +19,7 @@ if (APPLE) addFramework("IOKit") #grrr damn you sdl! addFramework("Carbon") - set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} iconv) + set(TORQUE_LINK_FRAMEWORKS ${TORQUE_LINK_FRAMEWORKS} iconv) if(NOT TORQUE_DEDICATED) addFramework("OpenGL") addFramework("CoreVideo") diff --git a/Engine/source/CMakeLists.txt b/Engine/source/CMakeLists.txt index fe93f6145..c444a1477 100644 --- a/Engine/source/CMakeLists.txt +++ b/Engine/source/CMakeLists.txt @@ -309,8 +309,17 @@ endif (WIN32) # Prepare OSX Plist if (APPLE) - set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_MAC_SOURCES} "${CMAKE_SOURCE_DIR}/Tools/CMake/torque.icns") - set_source_files_properties("${CMAKE_SOURCE_DIR}/Tools/CMake/torque.icns" PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") + set(MACOSX_RESOURCES "${CMAKE_SOURCE_DIR}/Tools/CMake/torque.icns" + "${TORQUE_APP_GAME_DIRECTORY}/data" + "${TORQUE_APP_GAME_DIRECTORY}/core" + "${TORQUE_APP_GAME_DIRECTORY}/tools" + "${TORQUE_APP_GAME_DIRECTORY}/main.${TORQUE_SCRIPT_EXTENSION}") + + set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_MAC_SOURCES} ${MACOSX_RESOURCES}) + + source_group("Resources" FILES ${MACOSX_RESOURCES}) + + set_source_files_properties(${MACOSX_RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") set(EXECUTABLE_NAME "${TORQUE_APP_NAME}") configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/Info.plist.in" "${TORQUE_APP_ROOT_DIRECTORY}/source/Info.plist" COPYONLY) @@ -358,8 +367,6 @@ if (APPLE) XCODE_ATTRIBUTE_INSTALL_PATH "/Applications" XCODE_ATTRIBUTE_SKIP_INSTALL "No") - # Ensure the shared libraries are actually referenced at the correct path - set(CMAKE_XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@executable_path/../Frameworks") elseif (WIN32) add_executable(${TORQUE_APP_NAME} WIN32 ${TORQUE_SOURCE_FILES}) @@ -406,8 +413,17 @@ if(MSVC) set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${TORQUE_APP_NAME}) endif() +set_property(GLOBAL PROPERTY USE_FOLDERS ON) +foreach (TORQUE_LIBRARY ${TORQUE_LINK_LIBRARIES}) + set_target_properties(${TORQUE_LIBRARY} PROPERTIES + FOLDER "Libraries") +endforeach() + target_compile_definitions(${TORQUE_APP_NAME} PUBLIC ${TORQUE_COMPILE_DEFINITIONS}) target_link_libraries(${TORQUE_APP_NAME} ${TORQUE_LINK_LIBRARIES}) +if(APPLE) +target_link_libraries(${TORQUE_APP_NAME} ${TORQUE_LINK_FRAMEWORKS}) +endif(APPLE) target_link_options(${TORQUE_APP_NAME} PUBLIC ${TORQUE_LINK_OPTIONS}) if (TORQUE_TARGET_PROPERTIES) set_target_properties(${TORQUE_APP_NAME} PROPERTIES ${TORQUE_TARGET_PROPERTIES}) @@ -430,7 +446,7 @@ append_defs() foreach (LIBRARY_BINARY ${TORQUE_ADDITIONAL_LIBRARY_BINARIES}) if (APPLE) # For OSX, we want these binaries to be copied to the Frameworks directory - #add_custom_command(TARGET ${TORQUE_APP_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${LIBRARY_BINARY} "${TORQUE_APP_GAME_DIRECTORY}/${TORQUE_APP_NAME}.app/Contents/Frameworks") + add_custom_command(TARGET ${TORQUE_APP_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${LIBRARY_BINARY} "${TORQUE_APP_GAME_DIRECTORY}/${TORQUE_APP_NAME}.app/Contents/Frameworks/$(CONFIGURATION)") else() # All other platforms expect the file next to the executable add_custom_command(TARGET ${TORQUE_APP_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${LIBRARY_BINARY} "${TORQUE_APP_GAME_DIRECTORY}") @@ -447,7 +463,6 @@ if (UNIX) # For eg. OSX some links are not valid targets - for example frameworks provided by OS if (TARGET ${GAME_LINK_LIBRARY}) get_target_property(LINK_LIBRARY_TYPE ${GAME_LINK_LIBRARY} TYPE) - # Only pay attention to shared libraries and make them output to the app resources if ("${LINK_LIBRARY_TYPE}" STREQUAL "SHARED_LIBRARY") if (APPLE) diff --git a/Tools/CMake/torqueMacOSconfigs.cmake b/Tools/CMake/torqueMacOSconfigs.cmake index e8aea05c5..06de88552 100644 --- a/Tools/CMake/torqueMacOSconfigs.cmake +++ b/Tools/CMake/torqueMacOSconfigs.cmake @@ -55,8 +55,10 @@ endforeach() set(CMAKE_FRAMEWORK_PATH "/Applications/XCode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks") set(CMAKE_FIND_FRAMEWORK FIRST) +# minimum for multi arch build is 11. +set(CMAKE_OSX_DEPLOYMENT_TARGET "11" CACHE STRING "" FORCE) set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE STRING "" FORCE) -set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13" CACHE STRING "" FORCE) +set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET[arch=arm64] "11.0" CACHE STRING "arm 64 minimum deployment target" FORCE) set(CMAKE_XCODE_ATTRIBUTE_SDKROOT macosx) set(CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH "NO") set(CMAKE_SYSTEM_NAME Darwin) @@ -69,6 +71,11 @@ set(CMAKE_SHARED_LIBRARY_PREFIX "lib") set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib") set(CMAKE_SHARED_MODULE_PREFIX "lib") set(CMAKE_SHARED_MODULE_SUFFIX ".so") + +set(CMAKE_C_COMPILER_TARGET x86_64-arm64-apple-macosx11) +set(CMAKE_CXX_COMPILER_TARGET x86_64-arm64-apple-macosx11) +set(CMAKE_ASM_COMPILER_TARGET x86_64-arm64-apple-macosx11) + set(CMAKE_C_COMPILER_ABI ELF) set(CMAKE_CXX_COMPILER_ABI ELF) set(CMAKE_C_HAS_ISYSROOT 1) @@ -121,6 +128,7 @@ endif() set(CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY TRUE) # Add all libraries to project link phase (lets Xcode handle linking) set(CMAKE_XCODE_LINK_BUILD_PHASE_MODE KNOWN_LOCATION) +set(CMAKE_XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@loader_path/../Frameworks") # Enable codesigning with secure timestamp when not in Debug configuration (required for Notarization) set(CMAKE_XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS[variant=Release] "--timestamp") diff --git a/Tools/CMake/torque_macros.cmake b/Tools/CMake/torque_macros.cmake index 7f9fdf8bc..e98cb1f6c 100644 --- a/Tools/CMake/torque_macros.cmake +++ b/Tools/CMake/torque_macros.cmake @@ -128,6 +128,6 @@ endmacro (filterOut) ################# apple frameworks ################### macro(addFramework framework) if (APPLE) - set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} "${CMAKE_FRAMEWORK_PATH}/${framework}.framework") + set(TORQUE_LINK_FRAMEWORKS ${TORQUE_LINK_FRAMEWORKS} "${CMAKE_FRAMEWORK_PATH}/${framework}.framework") endif() endmacro() \ No newline at end of file