From fb50e78e49da9ddc4b6ff5c6a0978e817d4b8b97 Mon Sep 17 00:00:00 2001 From: Sandy Carter Date: Sat, 21 Jan 2023 17:33:51 -0500 Subject: [PATCH] examples: Only copy assets once --- cmake/bgfx/examples.cmake | 80 +++++++++++++++++++++------------------ 1 file changed, 44 insertions(+), 36 deletions(-) diff --git a/cmake/bgfx/examples.cmake b/cmake/bgfx/examples.cmake index 434d31a..d96abf0 100755 --- a/cmake/bgfx/examples.cmake +++ b/cmake/bgfx/examples.cmake @@ -160,6 +160,50 @@ function(add_example ARG_NAME) elseif(UNIX AND NOT APPLE) target_link_libraries(example-${ARG_NAME} PUBLIC X11) endif() + + if(BGFX_BUILD_EXAMPLES) + if(IOS OR WIN32) + # on iOS we need to build a bundle so have to copy the data rather than symlink + # and on windows we can't create symlinks + add_custom_command( + TARGET example-${ARG_NAME} COMMAND ${CMAKE_COMMAND} -E copy_directory ${BGFX_DIR}/examples/runtime/ + $ + ) + else() + # For everything else symlink some folders into our output directory + add_custom_command( + TARGET example-${ARG_NAME} + COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/font + $/font + ) + add_custom_command( + TARGET example-${ARG_NAME} + COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/images + $/images + ) + add_custom_command( + TARGET example-${ARG_NAME} + COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/meshes + $/meshes + ) + add_custom_command( + TARGET example-${ARG_NAME} + COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/shaders + $/shaders + ) + add_custom_command( + TARGET example-${ARG_NAME} + COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/text + $/text + ) + add_custom_command( + TARGET example-${ARG_NAME} + COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/textures + $/textures + ) + endif() + endif() + else() if(BGFX_INSTALL_EXAMPLES) add_executable(example-${ARG_NAME} WIN32 ${SOURCES}) @@ -213,42 +257,6 @@ function(add_example ARG_NAME) # Directory name set_target_properties(example-${ARG_NAME} PROPERTIES FOLDER "bgfx/examples") - - if(IOS OR WIN32) - # on iOS we need to build a bundle so have to copy the data rather than symlink - # and on windows we can't create symlinks - add_custom_command( - TARGET example-${ARG_NAME} COMMAND ${CMAKE_COMMAND} -E copy_directory ${BGFX_DIR}/examples/runtime/ - $ - ) - else() - # For everything else symlink some folders into our output directory - add_custom_command( - TARGET example-${ARG_NAME} COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/font - $/font - ) - add_custom_command( - TARGET example-${ARG_NAME} COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/images - $/images - ) - add_custom_command( - TARGET example-${ARG_NAME} COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/meshes - $/meshes - ) - add_custom_command( - TARGET example-${ARG_NAME} COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/shaders - $/shaders - ) - add_custom_command( - TARGET example-${ARG_NAME} COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/text - $/text - ) - add_custom_command( - TARGET example-${ARG_NAME} COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/textures - $/textures - ) - endif() - endfunction() # Build all examples target