Merge pull request #1117 from marauder2k9-torque/AppleToolchainTest

Apple toolchain fixes
This commit is contained in:
Brian Roberts 2023-10-22 09:35:14 -05:00 committed by GitHub
commit 083e367be1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 251 additions and 54 deletions

View file

@ -57,7 +57,6 @@ torqueAddSourceDirectories("platform" "platform/threads" "platform/async"
"platform/input" "platform/output")
torqueAddSourceDirectories("platform/nativeDialogs")
# Handle T3D
torqueAddSourceDirectories("T3D/fps" "T3D/fx" "T3D/vehicles" "T3D/physics"
"T3D/decal" "T3D/sfx" "T3D/gameBase" "T3D/turret"
@ -199,9 +198,11 @@ torqueAddSourceDirectories("i18n")
if (UNIX)
torqueAddSourceDirectories("platformPOSIX")
if (TORQUE_CPU_X32 OR TORQUE_CPU_X64)
torqueAddSourceDirectories("platformX86UNIX")
endif (TORQUE_CPU_X32 OR TORQUE_CPU_X64)
if(NOT APPLE)
if (TORQUE_CPU_X32 OR TORQUE_CPU_X64)
torqueAddSourceDirectories("platformX86UNIX")
endif (TORQUE_CPU_X32 OR TORQUE_CPU_X64)
endif(NOT APPLE)
endif (UNIX)
# Handle platformMac
@ -308,8 +309,23 @@ 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}"
"${TORQUE_APP_GAME_DIRECTORY}/${TORQUE_APP_NAME}.torsion"
"${TORQUE_APP_GAME_DIRECTORY}/Template.torsion.exports")
if(TORQUE_TESTING)
set(MACOSX_RESOURCES ${MACOSX_RESOURCES} "${TORQUE_APP_GAME_DIRECTORY}/runTests.${TORQUE_SCRIPT_EXTENSION}")
endif()
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)
@ -351,10 +367,19 @@ endif (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
if (APPLE)
add_executable(${TORQUE_APP_NAME} MACOSX_BUNDLE ${TORQUE_SOURCE_FILES})
set_target_properties(${TORQUE_APP_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${TORQUE_APP_ROOT_DIRECTORY}/source/Info.plist")
set_target_properties(${TORQUE_APP_NAME} PROPERTIES
BUNDLE true
MACOSX_BUNDLE_INFO_PLIST "${TORQUE_APP_ROOT_DIRECTORY}/source/Info.plist"
XCODE_ATTRIBUTE_INSTALL_PATH "/Applications"
XCODE_ATTRIBUTE_SKIP_INSTALL "No"
XCODE_ATTRIBUTE_LINKER_DISPLAYS_MANGLED_NAMES[variant=Debug] YES
XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH[variant=Debug] YES
XCODE_ATTRIBUTE_ENABLE_TESTABILITY[variant=Debug] YES
XCODE_ATTRIBUTE_SDL_FILE_DIR[variant=Debug] parent
XCODE_ATTRIBUTE_SDL_FILE_DIR[variant=RelWithDebInfo] parent
XCODE_ATTRIBUTE_SDL_FILE_DIR[variant=Release] resource
MACOSX_RPATH TRUE)
# 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})
@ -401,8 +426,27 @@ 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)
if(WIN32)
target_link_libraries(${TORQUE_APP_NAME} ${TORQUE_LINK_WINDOWS})
endif(WIN32)
if(UNIX AND NOT APPLE)
target_link_libraries(${TORQUE_APP_NAME} ${TORQUE_LINK_LINUX})
endif(UNIX AND NOT 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})
@ -425,7 +469,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}")
@ -442,11 +486,11 @@ 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)
set_target_properties(${GAME_LINK_LIBRARY} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${TORQUE_APP_GAME_DIRECTORY}/${TORQUE_APP_NAME}.app/Contents/Frameworks")
set_target_properties(${GAME_LINK_LIBRARY} PROPERTIES
XCODE_ATTRIBUTE_INSTALL_PATH "@rpath")
else()
set_target_properties(${GAME_LINK_LIBRARY} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${TORQUE_APP_GAME_DIRECTORY}")
endif(APPLE)

View file

@ -646,7 +646,7 @@ StringTableEntry Platform::getExecutablePath()
return cwd;
}
NSString* string = [[NSBundle mainBundle] pathForResource:@"main" ofType:@"cs"];
NSString* string = [[NSBundle mainBundle] pathForResource:@"main" ofType:@"tscript"];
if(!string)
string = [[NSBundle mainBundle] bundlePath];