PKG: optimize v2 libretro-scummvm and strip obj. on all (#151)

* PKG: strip `lr-scummvm` & `lr-scummvm-legacy`

* PKG: optimize `libretro-scummvm` by removing heavy engines (leave only lesser ones by shared obj plugin size)
This commit is contained in:
Apaczer
2025-02-14 18:39:21 +01:00
committed by GitHub
parent e1c37564d6
commit 9058c40f9c
6 changed files with 176 additions and 95 deletions

View File

@@ -20,6 +20,7 @@ define LIBRETRO_SCUMMVM_LEGACY_BUILD_CMDS
CXXFLAGS="$(TARGET_CXXFLAGS) $(LIBRETRO_SCUMMVM_LEGACY_LTO_CXXFLAGS) -ffat-lto-objects" \ CXXFLAGS="$(TARGET_CXXFLAGS) $(LIBRETRO_SCUMMVM_LEGACY_LTO_CXXFLAGS) -ffat-lto-objects" \
LDFLAGS="$(TARGET_LDFLAGS) $(LIBRETRO_SCUMMVM_LEGACY_LTO_LDFLAGS) -ffat-lto-objects -shared -Wl,--no-undefined" \ LDFLAGS="$(TARGET_LDFLAGS) $(LIBRETRO_SCUMMVM_LEGACY_LTO_LDFLAGS) -ffat-lto-objects -shared -Wl,--no-undefined" \
$(MAKE) all TOOLSET="$(TARGET_CROSS)" -C $(@D)/backends/platform/libretro/build/ platform="$(RETROARCH_LIBRETRO_PLATFORM)" $(MAKE) all TOOLSET="$(TARGET_CROSS)" -C $(@D)/backends/platform/libretro/build/ platform="$(RETROARCH_LIBRETRO_PLATFORM)"
$(TARGET_STRIP) --strip-unneeded $(@D)/backends/platform/libretro/build/scummvm_libretro.so
endef endef
define LIBRETRO_SCUMMVM_LEGACY_INSTALL_TARGET_CMDS define LIBRETRO_SCUMMVM_LEGACY_INSTALL_TARGET_CMDS

View File

@@ -1,94 +0,0 @@
From 5a2e1d3ec02f976a446b94850fa3fcf260648f2b Mon Sep 17 00:00:00 2001
From: Apaczer <94932128+Apaczer@users.noreply.github.com>
Date: Mon, 3 Feb 2025 21:22:13 +0100
Subject: [PATCH 3/4] LIBRETRO-Makefile: optimize by reducing engines count
(LITE)
- discard HIGH_DEF engines from lite_engine.list & inline with legacy (add ultima4)
- add also -fno-PIC
Update lite_engines.list
---
backends/platform/libretro/Makefile | 5 +++--
backends/platform/libretro/lite_engines.list | 22 +++++++++++++-------
2 files changed, 18 insertions(+), 9 deletions(-)
diff --git a/backends/platform/libretro/Makefile b/backends/platform/libretro/Makefile
index af2063fef82..c66c6cccfa0 100644
--- a/backends/platform/libretro/Makefile
+++ b/backends/platform/libretro/Makefile
@@ -280,9 +280,9 @@ else ifeq ($(platform), miyoo)
LD = /opt/miyoo/usr/bin/arm-linux-g++
AR = /opt/miyoo/usr/bin/arm-linux-ar cru
RANLIB = /opt/miyoo/usr/bin/arm-linux-ranlib
- DEFINES += -DDINGUX -fomit-frame-pointer -ffast-math -march=armv5te -mtune=arm926ej-s -fPIC
+ DEFINES += -DDINGUX -fomit-frame-pointer -ffast-math -march=armv5te -mtune=arm926ej-s -fno-PIC
DEFINES += -ffunction-sections -fdata-sections -DDEFAULT_PERF_TUNER -DREDUCE_MEMORY_USAGE -DUNCACHED_PLUGINS
- LDFLAGS += -shared -Wl,--gc-sections -Wl,--version-script=$(ROOT_PATH)/link.T -fPIC
+ LDFLAGS += -shared -Wl,--gc-sections -Wl,--version-script=$(ROOT_PATH)/link.T -fno-PIC
USE_VORBIS = 0
USE_THEORADEC = 0
USE_TREMOR = 1
@@ -290,6 +290,7 @@ else ifeq ($(platform), miyoo)
USE_CURL = 0
USE_MT32EMU = 0
USE_HIGHRES := 0
+ LITE := 1
# MIYOOMINI
else ifeq ($(platform), miyoomini)
diff --git a/backends/platform/libretro/lite_engines.list b/backends/platform/libretro/lite_engines.list
index bc681b60598..efb6d85f6e8 100644
--- a/backends/platform/libretro/lite_engines.list
+++ b/backends/platform/libretro/lite_engines.list
@@ -1,32 +1,40 @@
+access
agi
agos
-agos2
cine
cruise
draci
drascula
eob
gob
-groovie
he
ihnm
kyra
+lab
lol
lure
made
-mortevielle
parallaction
+plumbers
queen
saga
sci
-sci32
scumm
scumm_7_8
sherlock
sky
-sword1
-sword2
teenagent
tinsel
-touche
tucker
+bbvs
+cge
+cge2
+dreamweb
+hugo
+illusions
+mads
+supernova
+tsage
+ultima4
+voyeur
+xeen
--
2.45.2.windows.1

View File

@@ -0,0 +1,113 @@
From 8902a8a1afb00339bb66b72710c0887a8d0ca449 Mon Sep 17 00:00:00 2001
From: Apaczer <94932128+Apaczer@users.noreply.github.com>
Date: Wed, 12 Feb 2025 22:11:13 +0100
Subject: [PATCH 3/5] LIBRETRO: disable large engines with HEAVY flag
0 - default
1 - enable
2 - disable
---
backends/platform/libretro/Makefile.common | 3 ++-
backends/platform/libretro/heavy_engines.list | 22 +++++++++++++++++++
.../libretro/scripts/configure_engines.sh | 16 +++++++++++++-
3 files changed, 39 insertions(+), 2 deletions(-)
create mode 100644 backends/platform/libretro/heavy_engines.list
diff --git a/backends/platform/libretro/Makefile.common b/backends/platform/libretro/Makefile.common
index 01f2ef19ec2..8e179c48c05 100644
--- a/backends/platform/libretro/Makefile.common
+++ b/backends/platform/libretro/Makefile.common
@@ -29,6 +29,7 @@ ENABLE_VKEYBD = 1
HAVE_GCC3 = 1
STATIC_LINKING ?= 0
LITE ?= 0
+HEAVY ?= 0
NO_WIP ?= 1
USE_LIBCO ?= 1
USE_MT32EMU ?= 1
@@ -212,7 +213,7 @@ endif
ifeq (,$(filter clean datafiles coreinfo,$(MAKECMDGOALS)))
$(info Configuring ScummVM engines...)
-ifneq ($(shell cd $(SCRIPTS_PATH); ./configure_engines.sh $(ROOT_PATH) $(SCUMMVM_PATH) $(NO_WIP) $(STATIC_LINKING) $(LITE) $(UNAVAILABLE_DEPS)),0)
+ifneq ($(shell cd $(SCRIPTS_PATH); ./configure_engines.sh $(ROOT_PATH) $(SCUMMVM_PATH) $(NO_WIP) $(STATIC_LINKING) $(LITE) $(HEAVY) $(UNAVAILABLE_DEPS)),0)
$(error Configuring ScummVM engines failed)
else
-include $(SCUMMVM_PATH)/config.mk.engines
diff --git a/backends/platform/libretro/heavy_engines.list b/backends/platform/libretro/heavy_engines.list
new file mode 100644
index 00000000000..85606b3fa9c
--- /dev/null
+++ b/backends/platform/libretro/heavy_engines.list
@@ -0,0 +1,22 @@
+ags
+
+glk
+
+kyra
+lol
+eob
+
+mads
+madsv2
+
+mm
+mm1
+xeen
+
+tsage
+
+ultima
+ultima1
+ultima4
+ultima6
+ultima8
diff --git a/backends/platform/libretro/scripts/configure_engines.sh b/backends/platform/libretro/scripts/configure_engines.sh
index 43a355bd395..3e1ccecf993 100755
--- a/backends/platform/libretro/scripts/configure_engines.sh
+++ b/backends/platform/libretro/scripts/configure_engines.sh
@@ -22,12 +22,13 @@
# $3 [REQ] NO_WIP [0,1]
# $4 [REQ] STATIC_LINKING [0,1]
# $5 [REQ] LITE [0,1,2]
+# $6 [REQ] HEAVY [0,1,2]
# $[...] [OPT] Engines dependencies not available
set -e
# Exit if in parameters are not provided
-if [ -z $1 ] || [ -z $2 ] || [ -z $3 ] || [ -z $4 ] || [ -z $5 ] ; then
+if [ -z $1 ] || [ -z $2 ] || [ -z $3 ] || [ -z $4 ] || [ -z $5 ] || [ -z $6 ]; then
exit 1
fi
@@ -42,6 +43,8 @@ STATIC_LINKING=$1
shift
LITE=$1
shift
+HEAVY=$1
+shift
no_deps=$@
cd "${SCUMMVM_PATH}"
@@ -60,6 +63,17 @@ tot_deps=""
# Test LITE
[ $LITE -ne 0 ] && engine_disable_all
+# Test HEAVY
+if [ $HEAVY -eq 1 ] ; then
+ for eng in $(cat "${BUILD_PATH}"/heavy_engines.list) ; do
+ engine_enable "$eng"
+ done
+elif [ $HEAVY -eq 2 ] ; then
+ for eng in $(cat "${BUILD_PATH}"/heavy_engines.list) ; do
+ engine_disable "$eng"
+ done
+fi
+
if [ $LITE -eq 1 ] ; then
for eng in $(cat "${BUILD_PATH}"/lite_engines.list) ; do
engine_enable "$eng"
--
2.45.2.windows.1

View File

@@ -0,0 +1,34 @@
From 67682387370edddb2205ff9c1b0fc80b41be23c6 Mon Sep 17 00:00:00 2001
From: Apaczer <94932128+Apaczer@users.noreply.github.com>
Date: Tue, 11 Feb 2025 22:22:49 +0100
Subject: [PATCH 5/5] LR-Makefile: use TREMOR explicitly
thus disable Fluidsynth from build
also use -fno-PIC
---
backends/platform/libretro/Makefile | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/backends/platform/libretro/Makefile b/backends/platform/libretro/Makefile
index 4a3cdc99236..a7508996a64 100644
--- a/backends/platform/libretro/Makefile
+++ b/backends/platform/libretro/Makefile
@@ -280,12 +280,13 @@ else ifeq ($(platform), miyoo)
LD = /opt/miyoo/usr/bin/arm-linux-g++
AR = /opt/miyoo/usr/bin/arm-linux-ar cru
RANLIB = /opt/miyoo/usr/bin/arm-linux-ranlib
- DEFINES += -DDINGUX -fomit-frame-pointer -ffast-math -march=armv5te -mtune=arm926ej-s -fPIC
+ DEFINES += -DDINGUX -fomit-frame-pointer -ffast-math -march=armv5te -mtune=arm926ej-s -fno-PIC
DEFINES += -ffunction-sections -fdata-sections -DDEFAULT_PERF_TUNER -DREDUCE_MEMORY_USAGE -DUNCACHED_PLUGINS
- LDFLAGS += -shared -Wl,--gc-sections -Wl,--version-script=$(ROOT_PATH)/link.T -fPIC
+ LDFLAGS += -shared -Wl,--gc-sections -Wl,--version-script=$(ROOT_PATH)/link.T -fno-PIC
USE_VORBIS = 0
USE_THEORADEC = 0
USE_TREMOR = 1
+ USE_FLUIDSYNTH = 0
USE_LIBCO = 0
USE_CURL = 0
USE_MT32EMU = 0
--
2.45.2.windows.1

View File

@@ -0,0 +1,26 @@
From 3e4f8c0f3f3a97cdf9a5e298e8018536029a0c24 Mon Sep 17 00:00:00 2001
From: Apaczer <94932128+Apaczer@users.noreply.github.com>
Date: Fri, 14 Feb 2025 14:54:36 +0100
Subject: [PATCH 6/6] LIBRETRO: force "disable all unstable eng" if NO_WIP=1
---
backends/platform/libretro/scripts/configure_engines.sh | 3 +++
1 file changed, 3 insertions(+)
diff --git a/backends/platform/libretro/scripts/configure_engines.sh b/backends/platform/libretro/scripts/configure_engines.sh
index 3e1ccecf993..cf69709655e 100755
--- a/backends/platform/libretro/scripts/configure_engines.sh
+++ b/backends/platform/libretro/scripts/configure_engines.sh
@@ -80,6 +80,9 @@ if [ $LITE -eq 1 ] ; then
done
fi
+# Test NO_WIP #2
+[ $NO_WIP -eq 1 ] && engine_disable_all_unstable
+
# Define engines list
for a in $_engines ; do
# Collect all default engines dependencies and force to yes
--
2.45.2.windows.1

View File

@@ -21,7 +21,8 @@ define LIBRETRO_SCUMMVM_BUILD_CMDS
CFLAGS="$(TARGET_CFLAGS) $(LIBRETRO_SCUMMVM_LTO_CFLAGS) -ffat-lto-objects" \ CFLAGS="$(TARGET_CFLAGS) $(LIBRETRO_SCUMMVM_LTO_CFLAGS) -ffat-lto-objects" \
CXXFLAGS="$(TARGET_CXXFLAGS) $(LIBRETRO_SCUMMVM_LTO_CXXFLAGS) -ffat-lto-objects" \ CXXFLAGS="$(TARGET_CXXFLAGS) $(LIBRETRO_SCUMMVM_LTO_CXXFLAGS) -ffat-lto-objects" \
LDFLAGS="$(TARGET_LDFLAGS) $(LIBRETRO_SCUMMVM_LTO_LDFLAGS) -ffat-lto-objects -shared -Wl,--no-undefined" \ LDFLAGS="$(TARGET_LDFLAGS) $(LIBRETRO_SCUMMVM_LTO_LDFLAGS) -ffat-lto-objects -shared -Wl,--no-undefined" \
$(MAKE) all TOOLSET="$(TARGET_CROSS)" -C $(@D)/backends/platform/libretro/ platform="$(RETROARCH_LIBRETRO_PLATFORM)" $(MAKE) all TOOLSET="$(TARGET_CROSS)" -C $(@D)/backends/platform/libretro/ HEAVY=2 platform="$(RETROARCH_LIBRETRO_PLATFORM)"
$(TARGET_STRIP) --strip-unneeded $(@D)/backends/platform/libretro/scummvm_libretro.so
endef endef
define LIBRETRO_SCUMMVM_INSTALL_TARGET_CMDS define LIBRETRO_SCUMMVM_INSTALL_TARGET_CMDS