mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-21 21:16:28 +02:00
Add Xbox UWP build workflow
This commit is contained in:
@@ -12,6 +12,31 @@ set(SDL2_ROOT "${THIRD_PARTY_ROOT}/sdl2")
|
||||
set(ANGLE_ROOT "${THIRD_PARTY_ROOT}/angle")
|
||||
set(RUNTIME_ROOT "${THIRD_PARTY_ROOT}/runtime")
|
||||
|
||||
set(GEN1RECOMP_VERSION "0.0.0" CACHE STRING "Gen1Recomp release version")
|
||||
if(NOT GEN1RECOMP_VERSION MATCHES "^[0-9]+\\.[0-9]+\\.[0-9]+$")
|
||||
message(FATAL_ERROR "GEN1RECOMP_VERSION must use X.Y.Z format.")
|
||||
endif()
|
||||
string(REPLACE "." ";" VERSION_PARTS "${GEN1RECOMP_VERSION}")
|
||||
foreach(part IN LISTS VERSION_PARTS)
|
||||
if(part GREATER 65535)
|
||||
message(FATAL_ERROR "MSIX version components cannot exceed 65535.")
|
||||
endif()
|
||||
endforeach()
|
||||
set(GEN1RECOMP_UWP_PUBLISHER "CN=Gen1Recomp" CACHE STRING
|
||||
"Publisher subject from the MSIX signing certificate")
|
||||
set(UWP_PUBLISHER_XML "${GEN1RECOMP_UWP_PUBLISHER}")
|
||||
string(REPLACE "&" "&" UWP_PUBLISHER_XML "${UWP_PUBLISHER_XML}")
|
||||
string(REPLACE "\"" """ UWP_PUBLISHER_XML "${UWP_PUBLISHER_XML}")
|
||||
string(REPLACE "<" "<" UWP_PUBLISHER_XML "${UWP_PUBLISHER_XML}")
|
||||
string(REPLACE ">" ">" UWP_PUBLISHER_XML "${UWP_PUBLISHER_XML}")
|
||||
set(UWP_PACKAGE_VERSION "${GEN1RECOMP_VERSION}.0")
|
||||
set(PACKAGE_MANIFEST "${CMAKE_CURRENT_BINARY_DIR}/Package.appxmanifest")
|
||||
configure_file(
|
||||
"${CMAKE_CURRENT_LIST_DIR}/Package.appxmanifest.in"
|
||||
"${PACKAGE_MANIFEST}"
|
||||
@ONLY
|
||||
)
|
||||
|
||||
set(REQUIRED_FILES
|
||||
"${THIRD_PARTY_ROOT}/manifest.json"
|
||||
"${LOVE_ROOT}/lib/lovestatic.lib"
|
||||
@@ -32,19 +57,28 @@ foreach(path IN LISTS REQUIRED_FILES)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set(GEN1RECOMP_LOVE "${GAME_ROOT}/.bazinga/work/game.love" CACHE FILEPATH
|
||||
"Path to the game.love payload produced by scripts/pack_love.sh")
|
||||
if(NOT EXISTS "${GEN1RECOMP_LOVE}")
|
||||
message(FATAL_ERROR
|
||||
"Missing game.love payload: ${GEN1RECOMP_LOVE}\n"
|
||||
"Build it with scripts/build_xbox_uwp.sh or scripts/pack_love.sh.")
|
||||
endif()
|
||||
|
||||
set(GAME_ARCHIVE "${CMAKE_CURRENT_BINARY_DIR}/gen1recomp.love")
|
||||
set_source_files_properties("${GAME_ARCHIVE}" PROPERTIES GENERATED TRUE)
|
||||
add_custom_target(gen1recomp_love ALL
|
||||
COMMAND powershell -NoProfile -ExecutionPolicy Bypass -File
|
||||
"${CMAKE_CURRENT_LIST_DIR}/scripts/package-game.ps1"
|
||||
-SourceRoot "${GAME_ROOT}" -Output "${GAME_ARCHIVE}"
|
||||
BYPRODUCTS "${GAME_ARCHIVE}"
|
||||
add_custom_command(
|
||||
OUTPUT "${GAME_ARCHIVE}"
|
||||
COMMAND "${CMAKE_COMMAND}" -E copy_if_different
|
||||
"${GEN1RECOMP_LOVE}" "${GAME_ARCHIVE}"
|
||||
DEPENDS "${GEN1RECOMP_LOVE}"
|
||||
VERBATIM
|
||||
)
|
||||
add_custom_target(gen1recomp_love ALL DEPENDS "${GAME_ARCHIVE}")
|
||||
set_source_files_properties("${GAME_ARCHIVE}" PROPERTIES GENERATED TRUE)
|
||||
|
||||
add_custom_target(verify_uwp_dependencies
|
||||
COMMAND powershell -NoProfile -ExecutionPolicy Bypass -File
|
||||
"${CMAKE_CURRENT_LIST_DIR}/scripts/verify-dependencies.ps1"
|
||||
"${GAME_ROOT}/scripts/xbox-uwp/verify_dependencies.ps1"
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
@@ -53,6 +87,7 @@ add_dependencies(${PROJECT_NAME} gen1recomp_love verify_uwp_dependencies)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
CXX_STANDARD 17
|
||||
CXX_STANDARD_REQUIRED YES
|
||||
VS_GLOBAL_DefaultLanguage "en-US"
|
||||
VS_SDK_REFERENCES "Microsoft.VCLibs, Version=14.0"
|
||||
)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE "${SDL2_ROOT}/include/SDL2")
|
||||
@@ -65,7 +100,7 @@ target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||
)
|
||||
|
||||
set(PACKAGE_ROOT_FILES
|
||||
"${CMAKE_CURRENT_LIST_DIR}/Package.appxmanifest"
|
||||
"${PACKAGE_MANIFEST}"
|
||||
"${GAME_ARCHIVE}"
|
||||
"${LOVE_ROOT}/bin/love.dll"
|
||||
"${LOVE_ROOT}/bin/lua51.dll"
|
||||
@@ -74,6 +109,7 @@ set(PACKAGE_ROOT_FILES
|
||||
"${ANGLE_ROOT}/bin/libGLESv2.dll"
|
||||
"${ANGLE_ROOT}/bin/d3dcompiler_47.dll"
|
||||
)
|
||||
set_source_files_properties("${PACKAGE_MANIFEST}" PROPERTIES GENERATED TRUE)
|
||||
|
||||
set(RUNTIME_NAMES
|
||||
brotlicommon.dll brotlidec.dll bz2.dll fmt.dll freetype.dll libpng16.dll
|
||||
@@ -98,4 +134,16 @@ set_source_files_properties(${PACKAGE_ASSETS} PROPERTIES
|
||||
VS_DEPLOYMENT_CONTENT TRUE
|
||||
VS_DEPLOYMENT_LOCATION "Assets"
|
||||
)
|
||||
target_sources(${PROJECT_NAME} PRIVATE ${PACKAGE_ROOT_FILES} ${PACKAGE_ASSETS})
|
||||
|
||||
file(GLOB PACKAGE_LICENSES CONFIGURE_DEPENDS "${THIRD_PARTY_ROOT}/licenses/*.txt")
|
||||
set_source_files_properties(${PACKAGE_LICENSES} PROPERTIES
|
||||
VS_TOOL_OVERRIDE "Content"
|
||||
VS_COPY_TO_OUT_DIR Always
|
||||
VS_DEPLOYMENT_CONTENT TRUE
|
||||
VS_DEPLOYMENT_LOCATION "licenses"
|
||||
)
|
||||
target_sources(${PROJECT_NAME} PRIVATE
|
||||
${PACKAGE_ROOT_FILES}
|
||||
${PACKAGE_ASSETS}
|
||||
${PACKAGE_LICENSES}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user