Update macos

- Add TODO for missing options
- Fix formatting
- Set GODOT_ARCH in case of arch being 'universal'
- Simplify the test project when SYSTEM_NAME is Darwin
Samuel Nicholas 2024-12-29 11:05:00 +10:30
parent c485dafbbd
commit a22f19fb0d
2 changed files with 35 additions and 31 deletions

View File

@ -7,22 +7,23 @@ MacOS platform
]=======================================================================] ]=======================================================================]
# Find Requirements # APPLE is set to True when the target system is an Apple platform
IF(APPLE) # (macOS, iOS, tvOS, visionOS or watchOS).
if( APPLE )
set( CMAKE_OSX_SYSROOT $ENV{SDKROOT} ) set( CMAKE_OSX_SYSROOT $ENV{SDKROOT} )
find_library( COCOA_LIBRARY REQUIRED find_library( COCOA_LIBRARY REQUIRED
NAMES Cocoa NAMES Cocoa
PATHS ${CMAKE_OSX_SYSROOT}/System/Library PATHS ${CMAKE_OSX_SYSROOT}/System/Library
PATH_SUFFIXES Frameworks PATH_SUFFIXES Frameworks
NO_DEFAULT_PATH) NO_DEFAULT_PATH )
ENDIF (APPLE) endif( APPLE )
function( macos_options ) function( macos_options )
# macos options here # TODO "macos_deployment_target" "macOS deployment target" "default"
# TODO "macos_sdk_path" "macOS SDK path" ""
# TODO if has_osxcross(): "osxcross_sdk" "OSXCross SDK version" "darwin16"
endfunction() endfunction()
function( macos_generate ) function( macos_generate )
# OSX_ARCHITECTURES does not support generator expressions. # OSX_ARCHITECTURES does not support generator expressions.
@ -36,7 +37,9 @@ function( macos_generate )
set_target_properties( ${TARGET_NAME} set_target_properties( ${TARGET_NAME}
PROPERTIES PROPERTIES
# Specify multiple architectures for universal builds
OSX_ARCHITECTURES "${OSX_ARCH}" OSX_ARCHITECTURES "${OSX_ARCH}"
GODOT_ARCH ${SYSTEM_ARCH}
) )
target_compile_definitions(${TARGET_NAME} target_compile_definitions(${TARGET_NAME}

View File

@ -20,6 +20,22 @@ foreach( TARGET_ALIAS template_debug template_release editor )
set( TARGET_NAME "godot-cpp.test.${TARGET_ALIAS}" ) set( TARGET_NAME "godot-cpp.test.${TARGET_ALIAS}" )
set( LINK_TARGET "godot-cpp::${TARGET_ALIAS}" ) set( LINK_TARGET "godot-cpp::${TARGET_ALIAS}" )
### Get useful properties of the library
get_target_property( GODOT_PLATFORM ${LINK_TARGET} GODOT_PLATFORM )
get_target_property( GODOT_TARGET ${LINK_TARGET} GODOT_TARGET )
get_target_property( GODOT_ARCH ${LINK_TARGET} GODOT_ARCH )
get_target_property( OSX_ARCH ${LINK_TARGET} OSX_ARCHITECTURES )
set( DEV_TAG "$<$<BOOL:${GODOT_DEV_BUILD}>:.dev>" )
if( CMAKE_SYSTEM_NAME STREQUAL Darwin )
set( OUTPUT_DIR "${OUTPUT_DIR}/libgdexample.macos.${TEST_TARGET}.framework")
set( OUTPUT_NAME "gdexample.macos.${TEST_TARGET}${DEV_TAG}" )
else()
set( OUTPUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/project/bin/" )
set( OUTPUT_NAME "gdexample.${GODOT_PLATFORM}.${GODOT_TARGET}${DEV_TAG}.${GODOT_ARCH}" )
endif()
add_library( ${TARGET_NAME} SHARED EXCLUDE_FROM_ALL ) add_library( ${TARGET_NAME} SHARED EXCLUDE_FROM_ALL )
target_sources( ${TARGET_NAME} target_sources( ${TARGET_NAME}
@ -38,14 +54,6 @@ foreach( TARGET_ALIAS template_debug template_release editor )
target_link_libraries( ${TARGET_NAME} PRIVATE ${LINK_TARGET} ) target_link_libraries( ${TARGET_NAME} PRIVATE ${LINK_TARGET} )
### Get useful properties of the library
get_target_property( GODOT_PLATFORM ${LINK_TARGET} GODOT_PLATFORM )
get_target_property( GODOT_TARGET ${LINK_TARGET} GODOT_TARGET )
get_target_property( GODOT_ARCH ${LINK_TARGET} GODOT_ARCH )
set( OUTPUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/project/bin/" )
set( DEV_TAG "$<$<BOOL:${GODOT_DEV_BUILD}>:.dev>" )
set_target_properties( ${TARGET_NAME} set_target_properties( ${TARGET_NAME}
PROPERTIES PROPERTIES
CXX_STANDARD 17 CXX_STANDARD 17
@ -68,27 +76,20 @@ foreach( TARGET_ALIAS template_debug template_release editor )
PREFIX "lib" PREFIX "lib"
OUTPUT_NAME "gdexample.${GODOT_PLATFORM}.${GODOT_TARGET}${DEV_TAG}.${GODOT_ARCH}" OUTPUT_NAME "gdexample.${GODOT_PLATFORM}.${GODOT_TARGET}${DEV_TAG}.${GODOT_ARCH}"
#macos options, ignored on other platforms
OSX_ARCHITECTURES "${OSX_ARCH}"
# enable RPATH on MACOS, with the BUILD_RPATH_USE_ORIGIN
# this should allow loading libraries from relative paths on macos.
MACOSX_RPATH ON
# Some IDE's respect this property to logically group targets # Some IDE's respect this property to logically group targets
FOLDER "godot-cpp" FOLDER "godot-cpp"
) )
# CMAKE_SYSTEM_NAME refers to the target system # Only blank the suffix on osx to match SCons
if( CMAKE_SYSTEM_NAME STREQUAL Darwin ) if( CMAKE_SYSTEM_NAME STREQUAL Darwin )
get_target_property( OSX_ARCH ${LINK_TARGET} OSX_ARCHITECTURES ) set_target_properties( ${TARGET_NAME} PROPERTIES SUFFIX "" )
set( OUTPUT_DIR "${OUTPUT_DIR}/libgdexample.macos.${TEST_TARGET}.framework")
set_target_properties( ${TARGET_NAME}
PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "$<1:${OUTPUT_DIR}>"
RUNTIME_OUTPUT_DIRECTORY "$<1:${OUTPUT_DIR}>"
OUTPUT_NAME "gdexample.macos.${TARGET_ALIAS}${DEV_TAG}"
SUFFIX ""
#macos options
OSX_ARCHITECTURES "${OSX_ARCH}"
)
endif () endif ()
endforeach() endforeach()