@@ -9,7 +9,7 @@ RA_SUBVERSION=1.22.2-1
99ifneq ($(VERSION_OVERRIDE ) ,)
1010VERSION = $(VERSION_OVERRIDE )
1111endif
12-
12+
1313RELEASE_NAME := $(TARGET ) -v$(VERSION )
1414
1515ifdef OS
@@ -43,6 +43,8 @@ PACKAGES_EMU_DEST := $(PACKAGES_DIR)/Emu
4343PACKAGES_APP_DEST := $(PACKAGES_DIR ) /App
4444PACKAGES_RAPP_DEST := $(PACKAGES_DIR ) /RApp
4545TEMP_DIR := $(ROOT_DIR ) /cache/temp
46+ DESYNC_SRC := $(THIRD_PARTY_DIR ) /desync
47+ CHUNK_STORE := $(RELEASE_DIR ) /chunks.castr
4648INCLUDE_DIR := $(ROOT_DIR ) /include
4749ifeq (,$(GTEST_INCLUDE_DIR ) )
4850GTEST_INCLUDE_DIR = /usr/include/
@@ -63,7 +65,7 @@ APP_COMPONENTS = batteryMonitorUI playActivityUI clock randomGamePicker
6365
6466# ##########################################################
6567
66- .PHONY : all version core apps external release clean deepclean git-clean with-toolchain patch lib test unit-test \
68+ .PHONY : all version core apps external release chunk clean deepclean git-clean with-toolchain patch lib test unit-test desync-bin desync-host \
6769 $(CORE_COMPONENTS ) $(APP_COMPONENTS ) installUI
6870
6971all : dist
@@ -206,8 +208,32 @@ $(THIRD_PARTY_DIR)/RetroArch-patch/bin/retroarch_miyoo354:
206208 fi
207209 @cd $(THIRD_PARTY_DIR)/RetroArch-patch && make
208210
211+ $(DESYNC_SRC ) /go.mod :
212+ git submodule update --init third-party/desync
213+
214+ $(BIN_DIR ) /desync : $(DESYNC_SRC ) /go.mod
215+ @$(ECHO ) $(COLOR_BLUE ) " \n-- Build desync (ARM)" $(COLOR_NORMAL )
216+ @cd $(DESYNC_SRC ) && GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=0 \
217+ PATH=" $$ PATH:/usr/local/go/bin" go build -ldflags=" -s -w" -o $(BIN_DIR ) /desync ./cmd/desync
218+
219+ desync-bin : $(BIN_DIR ) /desync
220+
221+ $(CACHE ) /desync : $(DESYNC_SRC ) /go.mod
222+ @$(ECHO ) $(COLOR_BLUE ) " \n-- Build desync (host)" $(COLOR_NORMAL )
223+ @mkdir -p $(CACHE )
224+ @cd $(DESYNC_SRC ) && PATH=" $$ PATH:/usr/local/go/bin" \
225+ go build -ldflags=" -s -w" -o $(CACHE ) /desync ./cmd/desync
226+
227+ desync-host : $(CACHE ) /desync
228+
209229external : $(CACHE ) /.setup $(THIRD_PARTY_DIR ) /RetroArch-patch/bin/retroarch_miyoo354
210230 @$(ECHO ) $(PRINT_RECIPE )
231+ # Add desync to installer (must be pre-built on host with: make desync-bin)
232+ @if [ -f $(BIN_DIR)/desync ]; then \
233+ cp $(BIN_DIR)/desync $(INSTALLER_DIR)/bin/; \
234+ else \
235+ echo "WARNING: desync not found — run 'make desync-bin' on the host before building"; \
236+ fi
211237# Add RetroArch
212238 @cp $(THIRD_PARTY_DIR)/RetroArch-patch/bin/* $(BUILD_DIR)/RetroArch/
213239 @echo $(RA_SUBVERSION) > $(BUILD_DIR)/RetroArch/onion_ra_version.txt
@@ -242,27 +268,38 @@ dist: build
242268# Package configs
243269 @cp -R $(TEMP_DIR)/configs/Saves/CurrentProfile/ $(TEMP_DIR)/configs/Saves/GuestProfile
244270 @echo -n "Packaging configs..."
245- @cd $(TEMP_DIR)/configs && 7z a -mtm=off $(BUILD_DIR)/.tmp_update/config/configs.pak . -bsp1 -bso0
271+ @cd $(TEMP_DIR)/configs && 7z a -ms=off - mtm=off $(BUILD_DIR)/.tmp_update/config/configs.pak . -bsp1 -bso0
246272 @echo " DONE"
247273 @rm -rf $(TEMP_DIR)/configs
248274 @rmdir $(TEMP_DIR)
249275# Package RetroArch separately
250276 @echo -n "Packaging RetroArch..."
251- @cd $(BUILD_DIR) && 7z a -mtm=off retroarch.pak ./RetroArch -bsp1 -bso0
277+ @cd $(BUILD_DIR) && 7z a -ms=off - mtm=off retroarch.pak ./RetroArch -bsp1 -bso0
252278 @echo " DONE"
253279 @mkdir -p $(DIST_DIR)/RetroArch
254280 @mv $(BUILD_DIR)/retroarch.pak $(DIST_DIR)/RetroArch/
255281 @echo $(RA_SUBVERSION) > $(DIST_DIR)/RetroArch/ra_package_version.txt
256282# Package Onion core
257283 @echo -n "Packaging Onion..."
258- @cd $(BUILD_DIR) && 7z a -mtm=off $(DIST_DIR)/miyoo/app/.tmp_update/onion.pak . -x!RetroArch -bsp1 -bso0
284+ @cd $(BUILD_DIR) && 7z a -ms=off - mtm=off $(DIST_DIR)/miyoo/app/.tmp_update/onion.pak . -x!RetroArch -bsp1 -bso0
259285 @echo " DONE"
260286 @$(ECHO) $(PRINT_DONE)
261287
262288release : dist
263289 @$(ECHO ) $(PRINT_RECIPE )
264290 @rm -f $(RELEASE_DIR ) /$(RELEASE_NAME ) .zip
265- @cd $(DIST_DIR ) && 7z a -mtc=off $(RELEASE_DIR ) /$(RELEASE_NAME ) .zip . -bsp1 -bso0
291+ @find $(DIST_DIR ) -type f -exec touch -t 198001010000 {} +
292+ @cd $(DIST_DIR ) && 7z a $(RELEASE_DIR ) /$(RELEASE_NAME ) .zip . -bsp1 -bso0
293+ @$(ECHO ) $(PRINT_DONE )
294+
295+ chunk :
296+ @$(ECHO ) $(PRINT_RECIPE )
297+ @echo " Generating desync index and chunks..."
298+ @mkdir -p $(CHUNK_STORE )
299+ @$(CACHE ) /desync make \
300+ -s $(CHUNK_STORE ) -m 512:1024:2048 \
301+ $(RELEASE_DIR ) /$(RELEASE_NAME ) .caidx \
302+ $(RELEASE_DIR ) /$(RELEASE_NAME ) .zip
266303 @$(ECHO ) $(PRINT_DONE )
267304
268305clean :
@@ -283,7 +320,7 @@ dev: clean
283320
284321asan : clean
285322 @$(MAKE_ASAN )
286-
323+
287324git-clean :
288325 @git clean -xfd -e .vscode
289326
0 commit comments