Скачал тулчейн, которым для PlayStation Classic обычно компилят:
wget http://releases.linaro.org/components/toolchain/binaries/latest-5/arm-linux-gnueabihf/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf.tar.xz
Распаковал в /opt
sudo tar -xvf gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf.tar.xz -C /opt
Сделал скрипт, как написано на
https://github.com/Jetup13/PlayStation-Classic-Wiki/wiki/Dev-Environment#virtual-boxТо есть, в текстовом редакторе создал файл
nano ~/arm-cross-compile-env.sh
Указал там пути
#!/bin/bash export PATH=/opt/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf/bin:$PATH export CC=arm-linux-gnueabihf-gcc export CXX=arm-linux-gnueabihf-g++ export AR=arm-linux-gnueabihf-ar export AS=arm-linux-gnueabihf-as export LD=arm-linux-gnueabihf-ld export RANLIB=arm-linux-gnueabihf-ranlib export STRIP=arm-linux-gnueabihf-strip export NM=arm-linux-gnueabihf-nm export OBJCOPY=arm-linux-gnueabihf-objcopy export OBJDUMP=arm-linux-gnueabihf-objdump export PKG_CONFIG_PATH=/usr/arm-linux-gnueabihf/lib/pkgconfig |
сделал исполняемым
chmod +x ~/arm-cross-compile-env.sh
подключил
source ~/arm-cross-compile-env.sh
На виртуалке с Debian 12 небыло ещё git, установил
apt update
apt install git
Скачал последнюю версию ядра для Паприум:
git clone --depth 1 https://github.com/pav1388/Genesis-Plus-GX-PUNCHiUM.git
зашёл туда
cd Genesis-Plus-GX-PUNCHiUM
nano Makefile.libretro
В Makefile.libretro нашёл и удалил секцию что было для PlayStation Classic, добавил эту:
# (armv8 a35, hard point, neon based) ### # Playstation Classic else ifeq ($(platform), classic_armv8_a35) TARGET := $(TARGET_NAME)_libretro.so fpic := -fPIC SHARED := -shared -Wl,--version-script=$(CORE_DIR)/libretro/link.T -Wl,--no-undefined
# Essential compile flags without LTO-related flags CFLAGS += -O2 \ -fdata-sections -ffunction-sections -Wl,--gc-sections \ -fno-stack-protector -fomit-frame-pointer \ -marm -mtune=cortex-a35 -mfpu=neon-fp-armv8 -mfloat-abi=hard \ -march=armv8-a
CXXFLAGS += $(CFLAGS) ASFLAGS += $(CFLAGS)
HAVE_NEON = 1 ARCH = arm BUILTIN_GPU = neon USE_DYNAREC = 1 ####################################### |
То есть, без агрессивных оптимизаций, мешали компилить и лень было разбираться
Запустил компиляцию:
platform=classic_armv8_a35 make -f Makefile.libretro
Сделал strip (не обязательно, на ~400Кб меньше стал бинарник)
/opt/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-strip genesis_plus_gx_libretro.so
Если не работает, то как минимум странно, вроде бы всё по-феншую. Почти, можно пробовать агрессивные ключи оптимизации, но я сумневаюсь оно заметно быстрее станет.
---------------------
Сделано было в VirtualBox 7.0 с Debian 12, под рукой другого небыло. На удивление, быстро скомпилилось.