mirror of
https://github.com/s0liton/ps5-romm.git
synced 2026-10-06 08:00:31 +02:00
89 lines
3.6 KiB
Makefile
89 lines
3.6 KiB
Makefile
# romm-sync
|
|
#
|
|
# make host macOS/Linux build for development, in build/host/
|
|
# make ps5 PS5 payload, needs the SDK (see tools/ps5-build.sh)
|
|
# tools/ps5-build.sh "make ps5" inside the Docker SDK image
|
|
# make deploy PS5_HOST=<ip> send the payload to the loader on port 9021
|
|
# make install PS5_HOST=<ip> same, plus copy it into etaHEN's autostart over FTP
|
|
# make ps5 VERSION=1.2.3 override the version baked into the build
|
|
# make tools release-sign, for signing releases (tools/release-sign.c)
|
|
|
|
SRCS := src/main.c src/util.c src/http.c src/romm.c src/config.c src/state.c \
|
|
src/profiles.c src/sync.c src/watch.c src/detect.c src/autostart.c src/memcard.c src/zip.c src/bundle.c src/gameid.c src/library.c src/pair.c src/web.c src/update.c \
|
|
third_party/cJSON.c third_party/md5.c third_party/monocypher.c third_party/monocypher-ed25519.c
|
|
HDRS := $(wildcard src/*.h) third_party/cJSON.h third_party/md5.h third_party/monocypher.h third_party/monocypher-ed25519.h
|
|
UI_HEADER := build/gen/ui_index.h build/gen/icon_png.h
|
|
COMMON_CFLAGS := -std=gnu11 -O2 -Wall -Wextra -Wno-unused-parameter -Wno-unknown-warning-option -Wno-unreachable-code-generic-assoc -Isrc -Ithird_party -Ibuild/gen
|
|
ifdef VERSION
|
|
COMMON_CFLAGS += -DAPP_VERSION='"$(VERSION)"'
|
|
endif
|
|
COMMON_CFLAGS += $(EXTRA_CFLAGS)
|
|
|
|
PS5_HOST ?= ps5
|
|
PS5_PORT ?= 9021
|
|
|
|
.PHONY: all host ps5 tools deploy install run clean
|
|
|
|
all: host
|
|
|
|
build/gen/ui_index.h: ui/index.html third_party/qrcode.js tools/embed.py
|
|
@mkdir -p $(dir $@)
|
|
python3 tools/embed.py $< $@ UI_INDEX_HTML
|
|
|
|
build/gen/icon_png.h: assets/icon0.png tools/embed.py
|
|
@mkdir -p $(dir $@)
|
|
python3 tools/embed.py $< $@ ICON_PNG
|
|
|
|
# host build
|
|
HOST_CC ?= cc
|
|
HOST_BIN := build/host/romm-sync
|
|
|
|
host: $(HOST_BIN)
|
|
|
|
# Host builds also trust the test key in tests/, so the e2e test can sign updates.
|
|
$(HOST_BIN): $(SRCS) src/platform_host.c $(HDRS) $(UI_HEADER)
|
|
@mkdir -p $(dir $@)
|
|
$(HOST_CC) $(COMMON_CFLAGS) -DROMM_UPDATE_TEST_KEY -o $@ $(SRCS) src/platform_host.c -lcurl -lz -lpthread
|
|
|
|
tools: build/host/release-sign
|
|
|
|
build/host/release-sign: tools/release-sign.c src/update_keys.h third_party/monocypher.c third_party/monocypher-ed25519.c
|
|
@mkdir -p $(dir $@)
|
|
$(HOST_CC) -std=gnu11 -O2 -Wall -Isrc -Ithird_party -o $@ $(filter %.c,$^)
|
|
|
|
run: host
|
|
ROMM_SYNC_DATA=$${ROMM_SYNC_DATA:-./host-data} $(HOST_BIN)
|
|
|
|
# PS5 build
|
|
PS5_PAYLOAD_SDK ?= /opt/ps5-payload-sdk
|
|
PS5_CC := $(PS5_PAYLOAD_SDK)/bin/prospero-clang
|
|
PS5_PKGCONF := $(PS5_PAYLOAD_SDK)/bin/prospero-pkg-config
|
|
PS5_ELF := build/ps5/romm-sync.elf
|
|
# The SDK's Mozilla CA bundle, built into the payload so HTTPS works out of the box.
|
|
PS5_CA := $(PS5_PAYLOAD_SDK)/target/user/homebrew/etc/ca-bundle.crt
|
|
|
|
ps5: $(PS5_ELF)
|
|
|
|
build/gen/cacert_pem.h: $(PS5_CA) tools/embed.py
|
|
@mkdir -p $(dir $@)
|
|
python3 tools/embed.py $< $@ CACERT_PEM
|
|
|
|
$(PS5_ELF): $(SRCS) src/platform_ps5.c $(HDRS) $(UI_HEADER) build/gen/cacert_pem.h
|
|
@mkdir -p $(dir $@)
|
|
$(PS5_CC) $(COMMON_CFLAGS) -DROMM_EMBED_CA $$($(PS5_PKGCONF) --cflags libcurl) -DCURL_STATICLIB \
|
|
-o $@ $(SRCS) src/platform_ps5.c \
|
|
$$($(PS5_PKGCONF) --static --libs libcurl) -pthread -lSceSystemService -lSceAppInstUtil
|
|
|
|
deploy: $(PS5_ELF)
|
|
nc -w 1 $(PS5_HOST) $(PS5_PORT) < $(PS5_ELF)
|
|
|
|
# Copy the payload into etaHEN's autostart folder over FTP (port 2121), then run it.
|
|
PS5_FTP ?= ftp://$(PS5_HOST):2121
|
|
install: $(PS5_ELF)
|
|
curl -sS --ftp-create-dirs -T $(PS5_ELF) $(PS5_FTP)/data/etaHEN/payloads/romm-sync.elf
|
|
printf '' | curl -sS -T - $(PS5_FTP)/data/etaHEN/payloads/romm-sync.elf.auto_start
|
|
nc -w 1 $(PS5_HOST) $(PS5_PORT) < $(PS5_ELF)
|
|
|
|
clean:
|
|
rm -rf build
|