2021-03-01 14:40:02 -05:00
|
|
|
include(../../cmake/AddPlatformExecutable.cmake)
|
|
|
|
|
2022-02-15 11:29:56 -05:00
|
|
|
if(ENABLE_MACOS)
|
|
|
|
find_library(METAL Metal)
|
|
|
|
|
2022-02-18 08:44:17 -05:00
|
|
|
set(EXTRA_LIBRARIES GFXMetal ${METAL})
|
2022-02-18 14:36:38 -05:00
|
|
|
set(EXTRA_SRC ${CMAKE_CURRENT_SOURCE_DIR}/sdl_metal.mm)
|
2022-02-15 11:29:56 -05:00
|
|
|
endif()
|
|
|
|
|
2022-02-21 11:03:34 -05:00
|
|
|
if(ENABLE_VULKAN)
|
|
|
|
set(EXTRA_SRC ${CMAKE_CURRENT_SOURCE_DIR}/sdl_vulkan.cpp)
|
|
|
|
endif()
|
|
|
|
|
2022-02-21 11:09:55 -05:00
|
|
|
if(TARGET SDL2::SDL2)
|
|
|
|
set(EXTRA_LIBRARIES SDL2::SDL2)
|
|
|
|
endif()
|
|
|
|
|
2022-02-21 07:53:08 -05:00
|
|
|
if(TARGET SDL2::Main)
|
|
|
|
set(EXTRA_LIBRARIES SDL2::Main)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(TARGET SDL2::SDL2main)
|
|
|
|
set(EXTRA_LIBRARIES SDL2::SDL2main)
|
|
|
|
endif()
|
|
|
|
|
2021-03-01 14:40:02 -05:00
|
|
|
add_platform(
|
2022-02-18 14:36:38 -05:00
|
|
|
SRC
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/file.cpp
|
|
|
|
${EXTRA_SRC}
|
2021-03-01 14:40:02 -05:00
|
|
|
MAIN_FILE
|
|
|
|
main.cpp.in
|
2021-09-13 13:47:29 -04:00
|
|
|
EXECUTABLE_PROPERTIES
|
|
|
|
MACOSX_BUNDLE ON
|
|
|
|
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in"
|
2021-03-01 14:40:02 -05:00
|
|
|
LINK_LIBRARIES
|
|
|
|
Core
|
|
|
|
GFXVulkan
|
2022-02-15 11:29:56 -05:00
|
|
|
${EXTRA_LIBRARIES}
|
2021-03-01 14:40:02 -05:00
|
|
|
)
|
|
|
|
|
|
|
|
function(add_platform_commands target)
|
|
|
|
if(NOT SKIP_DATA)
|
2021-09-13 17:19:59 -04:00
|
|
|
if(ENABLE_MACOS)
|
|
|
|
add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/data $<TARGET_FILE_DIR:${target}>/../Resources/data)
|
|
|
|
else()
|
|
|
|
add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/data $<TARGET_FILE_DIR:${target}>/data)
|
|
|
|
endif()
|
2021-03-01 14:40:02 -05:00
|
|
|
endif()
|
|
|
|
|
2021-05-11 16:32:59 -04:00
|
|
|
# we HAVE to create this dummy target to convince CMake to properly copy over shader files.
|
|
|
|
# before you ask, we have used POST_BUILD before but that only runs if the TARGET specified is built.
|
|
|
|
# when you change a shader source file on disk, BuildShaders is triggered but that doesn't retrigger your actual
|
|
|
|
# app target to be rebuilt, so the shaders are never copied correctly. With this (dumb) system, we ensure they
|
|
|
|
# always are. WHY CMAKE WHY
|
|
|
|
set(DUMMY_NAME ${target}-CopyShaders)
|
2021-03-01 14:40:02 -05:00
|
|
|
|
2022-02-03 09:15:04 -05:00
|
|
|
add_custom_target(${DUMMY_NAME} ALL DEPENDS ${CMAKE_BINARY_DIR}/${target}-dummy)
|
2021-05-11 16:32:59 -04:00
|
|
|
|
2021-09-13 17:19:59 -04:00
|
|
|
if(ENABLE_MACOS)
|
2022-02-03 09:15:04 -05:00
|
|
|
add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${target}-dummy
|
2021-09-13 17:19:59 -04:00
|
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:${target}>/../Resources/shaders
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/shaders $<TARGET_FILE_DIR:${target}>/../Resources/shaders
|
|
|
|
)
|
|
|
|
else()
|
2022-02-03 09:15:04 -05:00
|
|
|
add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${target}-dummy
|
2021-09-13 17:19:59 -04:00
|
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:${target}>/shaders
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/shaders $<TARGET_FILE_DIR:${target}>/shaders
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
2021-05-11 16:32:59 -04:00
|
|
|
|
|
|
|
add_dependencies(${target} ${DUMMY_NAME})
|
2021-03-01 14:40:02 -05:00
|
|
|
endfunction()
|