RetroPie-Setup/scriptmodules/emulators/mupen64plus/remove_fast_math.diff
Jools Wills 5ceb82220f mupen64plus - fix building on rpi5 with aarch64 kernel + arm userland
Remove -ffast-math from makefiles on armv8. This option causes the following error when building on the rpi5 (armv8.2a):

    /usr/lib/gcc/arm-linux-gnueabihf/12/include/arm_neon.h: In function ‘float16x4_t vmul_n_f16(float16x4_t, float16_t)’:
    /usr/lib/gcc/arm-linux-gnueabihf/12/include/arm_neon.h:17755:14: error: conversion of scalar ‘float’ to vector ‘float16x4_t’ involves truncation

This also disables it for other armv8 platforms (that didn't have this problem), but the option does come with some risks and was added to code which I don't think will benefit such as mupen64plus-ui-console.
2024-11-09 15:38:59 +00:00

66 lines
3 KiB
Diff

--- a/mupen64plus-audio-sdl/projects/unix/Makefile
+++ b/mupen64plus-audio-sdl/projects/unix/Makefile
@@ -99,7 +99,7 @@ OBJDIR = _obj$(POSTFIX)
# base CFLAGS, LDLIBS, and LDFLAGS
OPTFLAGS ?= -O3 -flto
WARNFLAGS ?= -Wall
-CFLAGS += $(OPTFLAGS) $(WARNFLAGS) -ffast-math -fvisibility=hidden -I$(SRCDIR)
+CFLAGS += $(OPTFLAGS) $(WARNFLAGS) -fvisibility=hidden -I$(SRCDIR)
LDFLAGS += $(SHARED)
# Since we are building a shared library, we must compile with -fPIC on some architectures
--- a/mupen64plus-input-sdl/projects/unix/Makefile
+++ b/mupen64plus-input-sdlprojects/unix/Makefile
@@ -96,7 +96,7 @@ OBJDIR = _obj$(POSTFIX)
# base CFLAGS, LDLIBS, and LDFLAGS
OPTFLAGS ?= -O3 -flto
WARNFLAGS ?= -Wall
-CFLAGS += $(OPTFLAGS) $(WARNFLAGS) -ffast-math -fvisibility=hidden -I$(SRCDIR) -D_GNU_SOURCE=1
+CFLAGS += $(OPTFLAGS) $(WARNFLAGS) -fvisibility=hidden -I$(SRCDIR) -D_GNU_SOURCE=1
LDFLAGS += $(SHARED)
LDLIBS += -lm
--- a/mupen64plus-rsp-hle/projects/unix/Makefile
+++ b/mupen64plus-rsp-hle/projects/unix/Makefile
@@ -147,7 +147,7 @@ OBJDIR = _obj$(POSTFIX)
# base CFLAGS, LDLIBS, and LDFLAGS
OPTFLAGS ?= -O3 -flto
WARNFLAGS ?= -Wall
-CFLAGS += $(OPTFLAGS) $(WARNFLAGS) -ffast-math -fvisibility=hidden -I$(SRCDIR)
+CFLAGS += $(OPTFLAGS) $(WARNFLAGS) -fvisibility=hidden -I$(SRCDIR)
LDFLAGS += $(SHARED)
# Since we are building a shared library, we must compile with -fPIC on some architectures
--- a/mupen64plus-ui-console/projects/unix/Makefile
+++ b/mupen64plus-ui-console/projects/unix/Makefile
@@ -74,7 +74,7 @@ OBJDIR = _obj$(POSTFIX)
OPTFLAGS ?= -O3 -flto
WARNFLAGS ?= -Wall
-CFLAGS += $(OPTFLAGS) $(WARNFLAGS) -ffast-math -I$(SRCDIR)
+CFLAGS += $(OPTFLAGS) $(WARNFLAGS) -I$(SRCDIR)
ifeq ($(OS), MINGW)
CFLAGS += -lpthread
LDLIBS += -lpthread
--- a/mupen64plus-video-gles2n64/projects/unix/Makefile
+++ b/mupen64plus-video-gles2n64/projects/unix/Makefile
@@ -132,7 +132,7 @@ endif
# base CFLAGS, LDLIBS, and LDFLAGS
OPTFLAGS ?= -O3 -flto
WARNFLAGS ?= -Wall
-CFLAGS += $(OPTFLAGS) $(WARNFLAGS) -ffast-math -fno-strict-aliasing -fvisibility=hidden -I../../src -DSDL_VIDEO_OPENGL_ES2=1 -DSDL_VIDEO_OPENGL=0
+CFLAGS += $(OPTFLAGS) $(WARNFLAGS) -fno-strict-aliasing -fvisibility=hidden -I../../src -DSDL_VIDEO_OPENGL_ES2=1 -DSDL_VIDEO_OPENGL=0
CXXFLAGS += $(OPTFLAGS) -std=c++11 -fvisibility-inlines-hidden -DSDL_VIDEO_OPENGL_ES2=1 -DSDL_VIDEO_OPENGL=0
LDFLAGS += $(SHARED)
--- a/mupen64plus-video-gles2rice/projects/unix/Makefile
+++ b/mupen64plus-video-gles2rice/projects/unix/Makefile
@@ -133,7 +133,7 @@ endif
# base CFLAGS, LDLIBS, and LDFLAGS
OPTFLAGS ?= -flto
WARNFLAGS ?= -Wall
-CFLAGS += $(OPTFLAGS) $(WARNFLAGS) -ffast-math -fsingle-precision-constant -fno-strict-aliasing -fvisibility=hidden -I../../src -DSDL_VIDEO_OPENGL_ES2=1 -DSDL_VIDEO_OPENGL=0
+CFLAGS += $(OPTFLAGS) $(WARNFLAGS) -fsingle-precision-constant -fno-strict-aliasing -fvisibility=hidden -I../../src -DSDL_VIDEO_OPENGL_ES2=1 -DSDL_VIDEO_OPENGL=0
CXXFLAGS += -fvisibility-inlines-hidden -DSDL_VIDEO_OPENGL_ES2=1 -DSDL_VIDEO_OPENGL=0
LDFLAGS += $(SHARED)