mirror of
https://github.com/mortyzip/KeepAwake.git
synced 2026-10-17 18:02:47 +02:00
89 lines
2.9 KiB
Makefile
89 lines
2.9 KiB
Makefile
# Payload Manager reads the version from the filename, e.g. keepawake_ps5_v1.4.0.elf
|
|
VERSION := 1.5.0
|
|
|
|
PS5_PAYLOAD_SDK ?= $(abspath ../ps5-payload-sdk)
|
|
PS4SDK ?= $(abspath ../ps4-payload-sdk)
|
|
|
|
PS5_HOST ?= ps5
|
|
PS5_PORT ?= 9021
|
|
PS4_HOST ?= ps4
|
|
PS4_PORT ?= 9090
|
|
|
|
# The SDKs need an LLVM toolchain; use Homebrew's when it isn't on PATH.
|
|
ifneq ($(wildcard /opt/homebrew/opt/llvm/bin/llvm-config),)
|
|
export LLVM_CONFIG ?= /opt/homebrew/opt/llvm/bin/llvm-config
|
|
endif
|
|
LLVM_BIN := $(shell $(or $(LLVM_CONFIG),llvm-config) --bindir 2>/dev/null)
|
|
LLVM_PFX := $(if $(LLVM_BIN),$(LLVM_BIN)/)
|
|
|
|
PS5_ELF := keepawake_ps5_v$(VERSION).elf
|
|
PS4_BIN := keepawake_ps4_v$(VERSION).bin
|
|
|
|
# The control page is embedded into the payloads as a C array.
|
|
PAGE_H := build/index_html.h
|
|
DEPS := src/web.h $(PAGE_H)
|
|
DEFINES := -DKEEPAWAKE_VERSION=\"v$(VERSION)\" -Ibuild
|
|
|
|
# PS5: ELF for the ps5-payload-sdk ELF loader.
|
|
PS5_CC := $(PS5_PAYLOAD_SDK)/bin/prospero-clang
|
|
PS5_CFLAGS := -Wall -Werror -O2 -lSceSystemService -lSceUserService $(DEFINES)
|
|
|
|
# PS4: raw binary for GoldHEN's BinLoader, linked against libPS4.
|
|
LIBPS4 := $(PS4SDK)/libPS4
|
|
PS4_CC := $(LLVM_PFX)clang
|
|
PS4_LD := $(or $(wildcard $(LLVM_PFX)ld.lld),ld.lld)
|
|
PS4_OBJCOPY := $(LLVM_PFX)llvm-objcopy
|
|
PS4_CFLAGS := --target=x86_64-unknown-freebsd -I$(LIBPS4)/include $(DEFINES) \
|
|
-Os -std=c11 -ffreestanding -fno-builtin -nostdlib -fPIE \
|
|
-ffunction-sections -fdata-sections -masm=intel -march=btver2 \
|
|
-Wall -Werror
|
|
PS4_LDFLAGS := -T $(LIBPS4)/linker.x --gc-sections --build-id=none \
|
|
-L$(LIBPS4) -lPS4
|
|
|
|
all: ps5 ps4
|
|
|
|
ps5: $(PS5_ELF)
|
|
ps4: $(PS4_BIN)
|
|
|
|
$(PAGE_H): src/index.html
|
|
@mkdir -p build
|
|
cd src && xxd -i index.html > ../$@
|
|
|
|
$(PS5_ELF): src/ps5.c $(DEPS)
|
|
$(PS5_CC) $(PS5_CFLAGS) -o $@ src/ps5.c
|
|
|
|
$(PS4_BIN): src/ps4.c $(DEPS)
|
|
@mkdir -p build
|
|
$(PS4_CC) $(PS4_CFLAGS) -c -o build/ps4.o src/ps4.c
|
|
$(PS4_CC) --target=x86_64-unknown-freebsd -c -o build/ps4_crt0.o $(LIBPS4)/crt0.s
|
|
$(PS4_LD) -o build/ps4.elf build/ps4_crt0.o build/ps4.o $(PS4_LDFLAGS)
|
|
$(PS4_OBJCOPY) -O binary build/ps4.elf $@
|
|
|
|
# Runs the PS5 code on this computer with the console calls stubbed out, for
|
|
# working on the control page: make host && ./build/keepawake_host
|
|
# Needs BSD network headers (struct if_data), so macOS or BSD only.
|
|
host: build/keepawake_host
|
|
|
|
build/keepawake_host: src/ps5.c tools/host_stubs.c $(DEPS)
|
|
cc -Wall -Werror $(DEFINES) -DKEEPAWAKE_SETTINGS=\"build/keepawake.cfg\" -o $@ src/ps5.c tools/host_stubs.c
|
|
|
|
version:
|
|
@echo $(VERSION)
|
|
|
|
clean:
|
|
rm -rf build keepawake*.elf keepawake*.bin
|
|
|
|
test-ps5: $(PS5_ELF)
|
|
$(PS5_PAYLOAD_SDK)/bin/prospero-deploy -h $(PS5_HOST) -p $(PS5_PORT) $<
|
|
|
|
test-ps4: $(PS4_BIN)
|
|
nc -w 1 $(PS4_HOST) $(PS4_PORT) < $<
|
|
|
|
quit-ps5:
|
|
curl -fsS -X POST http://$(PS5_HOST):9031/quit
|
|
|
|
quit-ps4:
|
|
curl -fsS -X POST http://$(PS4_HOST):9031/quit
|
|
|
|
.PHONY: all ps5 ps4 host version clean test-ps5 test-ps4 quit-ps5 quit-ps4
|