Create an application bundle for examples on Mac OS X

This commit is contained in:
Cameron Cawley
2025-09-03 19:15:48 +01:00
committed by Sam Lantinga
parent b6a55c2856
commit 20c00babbc

View File

@@ -64,14 +64,10 @@ macro(add_sdl_example_executable TARGET)
if(NOT AST_SOURCES) if(NOT AST_SOURCES)
message(FATAL_ERROR "add_sdl_example_executable needs at least one source") message(FATAL_ERROR "add_sdl_example_executable needs at least one source")
endif() endif()
set(EXTRA_SOURCES "")
if(AST_DATAFILES)
list(APPEND EXTRA_SOURCES ${DATAFILES})
endif()
if(ANDROID) if(ANDROID)
add_library(${TARGET} SHARED ${AST_SOURCES} ${EXTRA_SOURCES}) add_library(${TARGET} SHARED ${AST_SOURCES} ${AST_DATAFILES})
else() else()
add_executable(${TARGET} ${AST_SOURCES} ${EXTRA_SOURCES}) add_executable(${TARGET} ${AST_SOURCES} ${AST_DATAFILES})
endif() endif()
SDL_AddCommonCompilerFlags(${TARGET}) SDL_AddCommonCompilerFlags(${TARGET})
target_include_directories(${TARGET} PRIVATE "${SDL3_SOURCE_DIR}/src/video/khronos") target_include_directories(${TARGET} PRIVATE "${SDL3_SOURCE_DIR}/src/video/khronos")
@@ -85,13 +81,9 @@ macro(add_sdl_example_executable TARGET)
COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${AST_DATAFILES} $<TARGET_FILE_DIR:${TARGET}>/sdl-${TARGET} COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${AST_DATAFILES} $<TARGET_FILE_DIR:${TARGET}>/sdl-${TARGET}
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
) )
else() elseif(NOT APPLE)
add_dependencies(${TARGET} copy-sdl-example-resources) add_dependencies(${TARGET} copy-sdl-example-resources)
endif() endif()
if(APPLE)
# Make sure resource files get installed into macOS/iOS .app bundles.
set_target_properties(${TARGET} PROPERTIES RESOURCE "${AST_DATAFILES}")
endif()
if(EMSCRIPTEN) if(EMSCRIPTEN)
foreach(res IN LISTS AST_DATAFILES) foreach(res IN LISTS AST_DATAFILES)
get_filename_component(res_name "${res}" NAME) get_filename_component(res_name "${res}" NAME)
@@ -101,7 +93,18 @@ macro(add_sdl_example_executable TARGET)
set_property(TARGET ${TARGET} APPEND PROPERTY ADDITIONAL_CLEAN_FILES "$<TARGET_FILE_DIR:${TARGET}>/$<JOIN:${AST_DATAFILES},$<SEMICOLON>$<TARGET_FILE_DIR:${TARGET}>/>") set_property(TARGET ${TARGET} APPEND PROPERTY ADDITIONAL_CLEAN_FILES "$<TARGET_FILE_DIR:${TARGET}>/$<JOIN:${AST_DATAFILES},$<SEMICOLON>$<TARGET_FILE_DIR:${TARGET}>/>")
endif() endif()
if(WINDOWS) if(APPLE)
# Set Apple App ID / Bundle ID. This is needed to launch apps on some Apple
# platforms (iOS, for example).
set_target_properties(${TARGET} PROPERTIES
RESOURCES "${AST_DATAFILES}"
MACOSX_BUNDLE TRUE
MACOSX_BUNDLE_GUI_IDENTIFIER "org.libsdl.${TARGET}"
MACOSX_BUNDLE_BUNDLE_VERSION "${SDL3_VERSION}"
MACOSX_BUNDLE_SHORT_VERSION_STRING "${SDL3_VERSION}"
)
set_property(SOURCE ${AST_DATAFILES} PROPERTY MACOSX_PACKAGE_LOCATION "Resources")
elseif(WINDOWS)
# CET support was added in VS 16.7 # CET support was added in VS 16.7
if(MSVC_VERSION GREATER 1926 AND CMAKE_GENERATOR_PLATFORM MATCHES "Win32|x64") if(MSVC_VERSION GREATER 1926 AND CMAKE_GENERATOR_PLATFORM MATCHES "Win32|x64")
set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -CETCOMPAT") set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -CETCOMPAT")
@@ -217,18 +220,6 @@ if(RISCOS)
endforeach() endforeach()
endif() endif()
# Set Apple App ID / Bundle ID. This is needed to launch apps on some Apple
# platforms (iOS, for example).
if(APPLE)
foreach(CURRENT_TARGET ${SDL_EXAMPLE_EXECUTABLES})
set_target_properties("${CURRENT_TARGET}" PROPERTIES
MACOSX_BUNDLE_GUI_IDENTIFIER "org.libsdl.${CURRENT_TARGET}"
MACOSX_BUNDLE_BUNDLE_VERSION "${SDL3_VERSION}"
MACOSX_BUNDLE_SHORT_VERSION_STRING "${SDL3_VERSION}"
)
endforeach()
endif()
if(SDL_INSTALL_EXAMPLES) if(SDL_INSTALL_EXAMPLES)
if(RISCOS) if(RISCOS)
install( install(