CMake: Windows includes lovrc.bat in builds;

Also made a nifty helper function to move resources to the build folder,
in an effort to avoid writing duplicate versions of these functions for
each platform.
This commit is contained in:
bjorn 2022-12-30 21:20:27 -08:00
parent c81a356799
commit d438578c42
3 changed files with 24 additions and 19 deletions

View File

@ -26,6 +26,7 @@ jobs:
name: lovr.exe
path: |
build/Release/lovr.exe
build/Release/lovrc.bat
build/Release/*.dll
linux:
name: Linux

View File

@ -623,7 +623,17 @@ foreach(path ${LOVR_RESOURCES})
endforeach()
# Add a custom target that is always out of date so libraries are always moved
add_custom_target(move_libraries ALL)
add_custom_target(move_files ALL)
# Moves something from etc to the build directory
function(move_resource)
add_custom_command(TARGET move_files POST_BUILD
DEPENDS ${SRC}
COMMAND ${CMAKE_COMMAND} -E copy
"${CMAKE_CURRENT_SOURCE_DIR}/etc/${ARGV0}"
$<TARGET_FILE_DIR:lovr>/${ARGV0}
)
endfunction()
# Platforms
if(WIN32)
@ -652,7 +662,7 @@ if(WIN32)
function(move_dll)
if(TARGET ${ARGV0})
add_custom_command(TARGET move_libraries POST_BUILD
add_custom_command(TARGET move_files POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_FILE:${ARGV0}>
$<TARGET_FILE_DIR:lovr>/$<TARGET_FILE_NAME:${ARGV0}>
@ -670,6 +680,7 @@ if(WIN32)
foreach(target ${ALL_PLUGIN_TARGETS})
move_dll(${target})
endforeach()
move_resource("lovrc.bat")
elseif(APPLE)
find_library(AVFOUNDATION AVFoundation)
target_link_libraries(lovr objc ${AVFOUNDATION})
@ -696,13 +707,13 @@ elseif(APPLE)
if(TARGET ${ARGV0})
get_target_property(TARGET_TYPE ${ARGV0} TYPE)
if(${TARGET_TYPE} STREQUAL "MODULE_LIBRARY")
add_custom_command(TARGET move_libraries POST_BUILD
add_custom_command(TARGET move_files POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_FILE:${ARGV0}>
${EXE_DIR}/$<TARGET_FILE_NAME:${ARGV0}>
)
else()
add_custom_command(TARGET move_libraries POST_BUILD
add_custom_command(TARGET move_files POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_SONAME_FILE:${ARGV0}>
${EXE_DIR}/$<TARGET_SONAME_FILE_NAME:${ARGV0}>
@ -808,13 +819,13 @@ elseif(ANDROID)
# Copy plugin libraries to lib folder before packaging APK
foreach(target ${ALL_PLUGIN_TARGETS})
add_custom_command(TARGET move_libraries POST_BUILD
add_custom_command(TARGET move_files POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_FILE:${target}>
raw/lib/${ANDROID_ABI}/$<TARGET_FILE_NAME:${target}>
)
endforeach()
add_dependencies(buildAPK move_libraries)
add_dependencies(buildAPK move_files)
endif()
elseif(UNIX)
target_sources(lovr PRIVATE src/core/os_linux.c)
@ -827,13 +838,13 @@ elseif(UNIX)
if(TARGET ${ARGV0})
get_target_property(TARGET_TYPE ${ARGV0} TYPE)
if(${TARGET_TYPE} STREQUAL "MODULE_LIBRARY")
add_custom_command(TARGET move_libraries POST_BUILD
add_custom_command(TARGET move_files POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_FILE:${ARGV0}>
${CMAKE_BINARY_DIR}/bin/$<TARGET_FILE_NAME:${ARGV0}>
)
elseif(${TARGET_TYPE} STREQUAL "SHARED_LIBRARY")
add_custom_command(TARGET move_libraries POST_BUILD
add_custom_command(TARGET move_files POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_SONAME_FILE:${ARGV0}>
${CMAKE_BINARY_DIR}/bin/$<TARGET_SONAME_FILE_NAME:${ARGV0}>
@ -841,14 +852,6 @@ elseif(UNIX)
endif()
endif()
endfunction()
function(move_app_image_file)
set(SRC "${CMAKE_CURRENT_SOURCE_DIR}/etc/${ARGV0}")
set(DST "${CMAKE_BINARY_DIR}/bin/${ARGV0}")
add_custom_command(TARGET lovr POST_BUILD
DEPENDS ${SRC}
COMMAND ${CMAKE_COMMAND} -E copy ${SRC} ${DST}
)
endfunction()
move_lib(${LOVR_GLFW})
move_lib(${LOVR_LUA})
move_lib(${LOVR_ODE})
@ -859,8 +862,8 @@ elseif(UNIX)
move_lib(${target})
endforeach()
if(LOVR_BUILD_BUNDLE)
move_app_image_file("lovr.desktop")
move_app_image_file("AppRun")
move_app_image_file("logo.svg")
move_resource("lovr.desktop")
move_resource("AppRun")
move_resource("logo.svg")
endif()
endif()

1
etc/lovrc.bat Normal file
View File

@ -0,0 +1 @@
lovr --console %*