Replaced rsync implementation with cp and tar, and made Robocopy copy with more aggressive patterns.

This commit is contained in:
Portal 2026-03-08 09:09:03 -04:00
parent dc91a1dad0
commit 1594925c41

View file

@ -99,6 +99,7 @@ if(CMAKE_HOST_WIN32)
"${CMAKE_CURRENT_SOURCE_DIR}/x64/Release" "${CMAKE_CURRENT_SOURCE_DIR}/x64/Release"
"${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}"
/S /MT /R:0 /W:0 /NP /S /MT /R:0 /W:0 /NP
/XF "*.msscmp"
) )
message(STATUS "Starting asset copy...") message(STATUS "Starting asset copy...")
execute_process( execute_process(
@ -106,45 +107,58 @@ if(CMAKE_HOST_WIN32)
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client" "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client"
"${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}"
/S /MT /R:0 /W:0 /NP /S /MT /R:0 /W:0 /NP
/XF "*.cpp" "*.c" "*.h" "*.hpp" "*.asm" /XF
"*.xml" "*.lang" "*.vcxproj" "*.vcxproj.*" "*.sln" "*.c" "*.cpp" "*.h" "*.hpp" "*.xui" "*.inl" "*.asm" # Source code.
"*.docx" "*.xls" "*.vcxproj" "*.vcxproj.*" "*.sln" "*.cd" # Project files.
"*.bat" "*.cmd" "*.ps1" "*.py" "*.xml" "*.lang" "*.resx" "*.loc" # Language files.
"*Test*" "*.docx" "*.xls" # Office documents.
/XD "Durango*" "Orbis*" "PS*" "Xbox" "*.bat" "*.cmd" "*.ps1" "*.py" # Scripts.
) "*.lib" "*.lib.*" # Static lib.
message(STATUS "Patching Windows64Media...") "*.swf" "*.msscmp" "*.wav" # Uncompiled/unused res.
execute_process( "*Test*" # Test files. (who could have guessed)
COMMAND robocopy.exe "MediaPS*" "MediaOrbis.arc" "MediaDurango.arc" # Console media.
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/DurangoMedia" "ReadMe.txt" "Network Implementation Notes.txt" # Extra.
"${CMAKE_CURRENT_BINARY_DIR}/Windows64Media" /XD
/S /MT /R:0 /W:0 /NP "Durango*" "Orbis*" "PS*" "Xbox" # Console data.
/XF "*.h" "*.xml" "*.lang" "*.bat" "sce_sys" "TROPDIR" # Playstation data.
"Graphics" "DummyTexturePack" "GameConfig" # Extra.
) )
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Windows64/GameHDD")
elseif(CMAKE_HOST_UNIX) elseif(CMAKE_HOST_UNIX)
message(STATUS "Starting redist copy...") message(STATUS "Starting redist copy...")
execute_process( execute_process(
COMMAND rsync -av "${CMAKE_CURRENT_SOURCE_DIR}/x64/Release/" "${CMAKE_CURRENT_BINARY_DIR}/" COMMAND cp -av "${CMAKE_CURRENT_SOURCE_DIR}/x64/Release/" "${CMAKE_CURRENT_BINARY_DIR}/"
) )
message(STATUS "Starting asset copy...") message(STATUS "Starting asset copy...")
execute_process( execute_process(
COMMAND rsync -av COMMAND tar
"--exclude=*.cpp" "--exclude=*.c" "--exclude=*.h" "--exclude=*.hpp" "--exclude=*.asm" "--exclude=*.c" "--exclude=*.cpp" "--exclude=*.h" "--exclude=*.hpp" # Source code.
"--exclude=*.xml" "--exclude=*.lang" "--exclude=*.vcxproj" "--exclude=*.vcxproj.*" "--exclude=*.sln" "--exclude=*.xui" "--exclude=*.inl" "--exclude=*.asm"
"--exclude=*.docx" "--exclude=*.xls" "--exclude=*.vcxproj" "--exclude=*.vcxproj.*" # Project files.
"--exclude=*.bat" "--exclude=*.cmd" "--exclude=*.ps1" "--exclude=*.py" "--exclude=*.sln" "--exclude=*.cd"
"--exclude=*Test*" "--exclude=*.xml" "--exclude=*.lang" # Language files.
"--exclude=Durango*" "--exclude=Orbis*" "--exclude=PS*" "--exclude=Xbox" "--exclude=*.resx" "--exclude=*.loc"
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/" "${CMAKE_CURRENT_BINARY_DIR}/" "--exclude=*.docx" "--exclude=*.xls" # Office documents.
) "--exclude=*.bat" "--exclude=*.cmd" # Scripts.
message(STATUS "Patching Windows64Media...") "--exclude=*.ps1" "--exclude=*.py"
execute_process( "--exclude=*.lib" "--exclude=*.lib.*" # Static lib.
COMMAND rsync -av "--exclude=*.swf" "--exclude=*.msscmp" "--exclude=*.wav" # Uncompiled/unused res.
"--exclude=*.h" "--exclude=*.xml" "--exclude=*.lang" "--exclude=*.bat" "--exclude=*Test*" # Test files. (who could have guessed)
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/DurangoMedia/" "${CMAKE_CURRENT_BINARY_DIR}/Windows64Media/" "--exclude=MediaPS*" "--exclude=MediaOrbis.arc" # Console media.
"--exclude=MediaDurango.arc"
"--exclude=ReadMe.txt" "--exclude=Network Implementation Notes.txt" # Extra.
"--exclude=Durango*" "--exclude=Orbis*" # Console data.
"--exclude=PS*" "--exclude=Xbox"
"--exclude=sce_sys" "--exclude=TROPDIR" # Playstation data.
"--exclude=Graphics" "--exclude=DummyTexturePack" # Extra.
"--exclude=GameConfig"
-cf - -C "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/" .
COMMAND tar -xvf - -C "${CMAKE_CURRENT_BINARY_DIR}/"
) )
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Windows64/GameHDD")
else() else()
message(FATAL_ERROR "Redist and asset copying is only supported on Windows (Robocopy) and Unix systems (rsync).") message(FATAL_ERROR "Redist and asset copying is only supported on Windows (Robocopy) and Unix systems (cp, tar).")
endif() endif()
set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT MinecraftClient) set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT MinecraftClient)