Explorar el Código

Working multi-arch archiving

-Working multi arch compile
-Required assets now copy to the app bundle
TODO: Make the logic to wrap around whether its multi arch
-The changes in torqumacosconfigs.cmake are not required if we are only building one architecture, also if it is x86_64 we can drop min deployment target to 10.13
marauder2k7 hace 2 años
padre
commit
b6617b1b0f

+ 1 - 1
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")

+ 21 - 6
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)

+ 9 - 1
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")

+ 1 - 1
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()