initial support for llvm-20

This commit is contained in:
John Törnblom committed 2025-03-18 00:07:29 +01:00
1 parent 23be0e5765
commit 5305ddf027
7 files changed
+53 -10

No files matched your search

+29 -4
View File
@@ -16,20 +16,27 @@
DESTDIR ?= /opt/ps5-payload-sdk
CCS := clang-19 clang-18 clang-17 clang-16 clang-15 clang
CCS := clang-20 clang-19 clang-18 clang-17 clang-16 clang-15 clang
CCS := $(foreach CC,$(CCS),$(if $(shell command -v $(CC) 2> /dev/null),$(CC)))
CC := $(firstword $(CCS))
ifndef CC
$(error No suitable compiler found)
endif
LDS := ld.lld-19 ld.lld-18 ld.lld-17 ld.lld-16 ld.lld-15 ld.lld ld
LDS := ld.lld-20 ld.lld-19 ld.lld-18 ld.lld-17 ld.lld-16 ld.lld-15 ld.lld ld
LDS := $(foreach LD,$(LDS),$(if $(shell command -v $(LD) 2> /dev/null),$(LD)))
LD := $(firstword $(LDS))
ifndef LD
$(error No suitable linker found)
endif
ARS := llvm-ar-20 llvm-ar-19 llvm-ar-18 llvm-ar-17 llvm-ar-16 llvm-ar-15 llvm-ar ar
ARS := $(foreach AR,$(ARS),$(if $(shell command -v $(AR) 2> /dev/null),$(AR)))
AR := $(firstword $(ARS))
ifndef AR
$(error No suitable archiver found)
endif
CFLAGS += -ffreestanding -fno-builtin -nostdlib -fPIC
CFLAGS += -target x86_64-sie-ps5 -fno-plt -fno-stack-protector
CFLAGS += -fvisibility-nodllstorageclass=default -Wall -Werror
@@ -41,7 +48,25 @@ OBJ := crt.o syscall.o klog.o nid.o kernel.o rtld.o rtld_so.o rtld_sprx.o \
.PHONY: all clean install
all: crt1.o
all: crt1.o crti.o crtn.o crtbegin.o crtend.o crtbeginS.o crtendS.o
crtbeginS.o:
$(AR) -rsc $@
crtendS.o:
$(AR) -rsc $@
crtbegin.o:
$(AR) -rsc $@
crtend.o:
$(AR) -rsc $@
crti.o:
$(AR) -rsc $@
crtn.o:
$(AR) -rsc $@
crt1.o: $(OBJ)
$(LD) -m elf_x86_64 -r -o $@ $^
@@ -52,6 +77,6 @@ crt1.o: $(OBJ)
clean:
rm -f *.o *.a
install: crt1.o
install: crt1.o crti.o crtn.o crtbegin.o crtend.o crtbeginS.o crtendS.o
install -d $(DESTDIR)/target/lib
install $^ $(DESTDIR)/target/lib
+3
View File
@@ -51,6 +51,9 @@ install: install-tools install-symlinks install-ldscripts install-toolchains
install-ldscripts: $(LDSCRIPTS)
install -d $(DESTDIR)/ldscripts
install $^ $(DESTDIR)/ldscripts
install -d $(DESTDIR)/target/lib
ln -sf ../../ldscripts/elf_x86_64.x $(DESTDIR)/target/lib/main.script
ln -sf ../../ldscripts/elf_x86_64.x $(DESTDIR)/target/lib/prx.script
install-toolchains: $(TOOLCHAINS)
install -d $(DESTDIR)/toolchain
+2 -1
View File
@@ -19,7 +19,8 @@ if [ -x "$(command -v "${LLVM_CONFIG}")" ]; then
exec "${LLVM_CONFIG}"
fi
CANDIDATES=("llvm-config-19"
CANDIDATES=("llvm-config-20"
"llvm-config-19"
"llvm-config-18"
"llvm-config-17"
"llvm-config-16"
+7
View File
@@ -56,6 +56,13 @@ if [[ "${TU}" == "" ]]; then
LIBS_KERN=""
fi
# clang-20 started appending crt objects when linking
if [[ $($SCRIPT_DIR/llvm-config --version | cut -d. -f1) -ge 20 ]]; then
export SCE_PROSPERO_SDK_DIR="${PS5_PAYLOAD_SDK}"
LIBS_CRT=""
fi
# ensure clang knows where prospero-lld is at
export PATH="${SCRIPT_DIR}:${PATH}"
+6
View File
@@ -62,6 +62,12 @@ if [[ "${TU}" == "" ]]; then
LIBS_KERN=""
fi
# clang++-20 started appending crt objects when linking
if [[ $($SCRIPT_DIR/llvm-config --version | cut -d. -f1) -ge 20 ]]; then
export SCE_PROSPERO_SDK_DIR="${PS5_PAYLOAD_SDK}/"
LIBS_CRT=""
fi
# ensure clang++ knows where prospero-lld is at
export PATH="${SCRIPT_DIR}:${PATH}"
+2 -3
View File
@@ -16,14 +16,14 @@
DESTDIR ?= /opt/ps5-payload-sdk
CCS := clang-19 clang-18 clang-17 clang-16 clang-15 clang
CCS := clang-20 clang-19 clang-18 clang-17 clang-16 clang-15 clang
CCS := $(foreach CC,$(CCS),$(if $(shell command -v $(CC) 2> /dev/null),$(CC)))
CC := $(firstword $(CCS))
ifndef CC
$(error No suitable compiler found)
endif
ARS := llvm-ar-19 llvm-ar-18 llvm-ar-17 llvm-ar-16 llvm-ar-15 llvm-ar ar
ARS := llvm-ar-20 llvm-ar-19 llvm-ar-18 llvm-ar-17 llvm-ar-16 llvm-ar-15 llvm-ar ar
ARS := $(foreach AR,$(ARS),$(if $(shell command -v $(AR) 2> /dev/null),$(AR)))
AR := $(firstword $(ARS))
ifndef AR
@@ -53,4 +53,3 @@ clean:
install: $(ARCHIVE)
install -d $(DESTDIR)/target/lib
install $^ $(DESTDIR)/target/lib
+4 -2
View File
@@ -17,14 +17,14 @@
PYTHON ?= python3
DESTDIR ?= /opt/ps5-payload-sdk
CCS := clang-19 clang-18 clang-17 clang-16 clang-15 clang
CCS := clang-20 clang-19 clang-18 clang-17 clang-16 clang-15 clang
CCS := $(foreach CC,$(CCS),$(if $(shell command -v $(CC) 2> /dev/null),$(CC)))
CC := $(firstword $(CCS))
ifndef CC
$(error No suitable compiler found)
endif
LDS := ld.lld-19 ld.lld-18 ld.lld-17 ld.lld-16 ld.lld-15 ld.lld
LDS := ld.lld-20 ld.lld-19 ld.lld-18 ld.lld-17 ld.lld-16 ld.lld-15 ld.lld ld
LDS := $(foreach LD,$(LDS),$(if $(shell command -v $(LD) 2> /dev/null),$(LD)))
LD := $(firstword $(LDS))
ifndef LD
@@ -77,3 +77,5 @@ clean:
install: $(SHARED)
install -d $(DESTDIR)/target/lib
install $(SHARED) $(DESTDIR)/target/lib
ln -sf libkernel_web.so $(DESTDIR)/target/lib/libkernel_stub_weak.so
ln -sf libSceLibcInternal.so $(DESTDIR)/target/lib/libc_stub_weak.so