File: psp2.mk

package info (click to toggle)
scummvm 2.9.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 450,268 kB
  • sloc: cpp: 4,297,604; asm: 28,322; python: 12,901; sh: 11,219; java: 8,477; xml: 7,843; perl: 2,633; ansic: 2,465; yacc: 1,670; javascript: 1,020; makefile: 933; lex: 578; awk: 275; objc: 82; sed: 11; php: 1
file content (53 lines) | stat: -rw-r--r-- 2,333 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
PSP2_EXE_STRIPPED := scummvm_stripped$(EXEEXT)

$(PSP2_EXE_STRIPPED): $(EXECUTABLE)
	$(STRIP) --strip-debug $< -o $@

psp2vpk: $(PSP2_EXE_STRIPPED) $(PLUGINS)
	rm -rf psp2pkg
	rm -f $(EXECUTABLE).vpk
	mkdir -p psp2pkg/sce_sys/livearea/contents
	mkdir -p psp2pkg/data/
	mkdir -p psp2pkg/doc/
	vita-elf-create $(PSP2_EXE_STRIPPED) $(EXECUTABLE).velf
	vita-make-fself -s -c $(EXECUTABLE).velf psp2pkg/eboot.bin
ifdef DYNAMIC_MODULES
	# Use psp2rela to convert the main binary to static, this allows plugins to use functions from it without any relocation
	# TODO: Use psp2rela -fetch_base flag instead of using objdump when the change is widespread
	set -e ;\
	textaddr=$$($(OBJDUMP) -p $(EXECUTABLE) | awk '/ LOAD / { vaddr=$$5; getline; if ($$6 == "r-x") print vaddr; }') ;\
	dataaddr=$$($(OBJDUMP) -p $(EXECUTABLE) | awk '/ LOAD / { vaddr=$$5; getline; if ($$6 == "rw-") print vaddr; }') ;\
	psp2rela -src=psp2pkg/eboot.bin -dst=psp2pkg/eboot.bin -static_mode -text_addr=$$textaddr -data_addr=$$dataaddr
endif
	vita-mksfoex -s TITLE_ID=VSCU00001 -d ATTRIBUTE2=12 "$(EXECUTABLE)" psp2pkg/sce_sys/param.sfo
	cp $(srcdir)/dists/psp2/icon0.png psp2pkg/sce_sys/
	cp $(srcdir)/dists/psp2/template.xml psp2pkg/sce_sys/livearea/contents/
	cp $(srcdir)/dists/psp2/bg.png psp2pkg/sce_sys/livearea/contents/
	cp $(srcdir)/dists/psp2/startup.png psp2pkg/sce_sys/livearea/contents/
	cp $(DIST_FILES_THEMES) psp2pkg/data/
ifdef DIST_FILES_ENGINEDATA
	cp $(DIST_FILES_ENGINEDATA) psp2pkg/data/
endif
ifdef DIST_FILES_NETWORKING
	cp $(DIST_FILES_NETWORKING) psp2pkg/data/
endif
ifdef DIST_FILES_VKEYBD
	cp $(DIST_FILES_VKEYBD) psp2pkg/data/
endif
ifdef DYNAMIC_MODULES
	mkdir -p psp2pkg/plugins
	# Each plugin is built as ELF with .suprx extension in main directory because of PLUGIN_SUFFIX variable
	# Then it's stripped and converted here to Vita ELF and SELF inside the package directory
	set -e ;\
	for p in $(PLUGINS); do \
		p=$${p%.suprx} ;\
		$(STRIP) --strip-debug $$p.suprx -o $$p.stripped.elf ;\
		vita-elf-create -n -e $(srcdir)/backends/plugins/psp2/plugin.yml $$p.stripped.elf $$p.velf ;\
		vita-make-fself -s $$p.velf psp2pkg/plugins/$$(basename "$$p").suprx ;\
	done
endif
	cp $(DIST_FILES_DOCS) psp2pkg/doc/
	cp $(srcdir)/dists/psp2/readme-psp2.md psp2pkg/doc/
	cd psp2pkg && zip -r ../$(EXECUTABLE).vpk . && cd ..

.PHONY: psp2vpk