distribution/packages/games/libretro/dosbox-pure/patches/RG552/001-add-platform.patch
2022-07-11 17:56:53 -04:00

297 lines
11 KiB
Diff

diff -rupN dosbox-pure.orig/Makefile dosbox-pure/Makefile
--- dosbox-pure.orig/Makefile 2022-06-06 07:58:30.237591952 -0400
+++ dosbox-pure/Makefile 2022-06-06 08:10:41.019201344 -0400
@@ -222,6 +222,23 @@ LDLIBS := -lpthread
LDFLAGS += $(CPUFLAGS) -shared
#LDFLAGS += -static-libstdc++ -static-libgcc #adds 1MB to output and still dynamically links against libc and libm
+ifneq (,$(findstring RG552,$(platform)))
+OUTNAME := dosbox_pure_libretro.so
+BUILD := RELEASE
+BUILDDIR := release
+CFLAGS := -DNDEBUG -O3 -fno-ident
+LDFLAGS += -O3 -fno-ident
+
+CPUFLAGS := -mtune=cortex-a72.cortex-a53 -mcpu=cortex-a72.cortex-a53 -march=armv8-a+crc+fp+simd
+
+CFLAGS += $(CPUFLAGS) -fpic -fomit-frame-pointer -fno-non-call-exceptions -Wno-psabi -Wno-format
+LDFLAGS += $(CPUFLAGS) -lpthread -Wl,--gc-sections -shared
+CXX = $(CC)
+endif
+
+CFLAGS += -pthread -D__LIBRETRO__ -Iinclude
+$(info Building $(platform) with $(CPUFLAGS))
+
.PHONY: all clean
all: $(OUTNAME)
@@ -245,9 +262,6 @@ ifeq ($(STATIC_LINKING), 1)
else
$(info Linking $@ ...)
$(CXX) $(LDFLAGS) -o $@ $^ $(LDLIBS)
-ifneq ($(BUILD),DEBUG)
- $(STRIPCMD) $@
-endif
endif
define COMPILE
diff -rupN dosbox-pure.orig/Makefile.orig dosbox-pure/Makefile.orig
--- dosbox-pure.orig/Makefile.orig 1969-12-31 19:00:00.000000000 -0500
+++ dosbox-pure/Makefile.orig 2022-06-06 07:58:28.449608914 -0400
@@ -0,0 +1,256 @@
+#
+# Copyright (C) 2020-2022 Bernhard Schelling
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+
+ifeq ($(ISWIN),)
+ISWIN := $(findstring :,$(firstword $(subst \, ,$(subst /, ,$(abspath .)))))
+endif
+
+ifeq ($(ISMAC),)
+ISMAC := $(wildcard /Applications)
+endif
+
+PIPETONULL := $(if $(ISWIN),>nul 2>nul,>/dev/null 2>/dev/null)
+
+SOURCES := \
+ *.cpp \
+ src/*.cpp \
+ src/*/*.cpp \
+ src/*/*/*.cpp
+
+CPUFLAGS := $(MAKE_CPUFLAGS)
+STRIPCMD := strip --strip-all
+ifneq ($(ISWIN),)
+ OUTNAME := dosbox_pure_libretro.dll
+ CXX ?= g++
+ LDFLAGS := -Wl,--gc-sections -fno-ident
+ COMMONFLAGS += -pthread
+else ifneq (,$(findstring ios,$(platform)))
+ ifeq ($(IOSSDK),)
+ IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path)
+ endif
+ OUTNAME := dosbox_pure_libretro_ios.dylib
+ MINVERSION :=
+ COMMONFLAGS += -DDISABLE_DYNAREC=1
+ ifeq ($(platform),ios-arm64)
+ CXX = c++ -arch arm64 -isysroot $(IOSSDK)
+ else
+ CXX = c++ -arch armv7 -isysroot $(IOSSDK)
+ endif
+ LDFLAGS := -Wl,-dead_strip
+ ifeq ($(platform),$(filter $(platform),ios9 ios-arm64))
+ MINVERSION = -miphoneos-version-min=8.0
+ else
+ MINVERSION = -miphoneos-version-min=5.0
+ endif
+ COMMONFLAGS += $(MINVERSION) -Wno-ignored-optimization-argument -Wno-unknown-warning-option
+ STRIPCMD := strip -xS
+else ifeq ($(platform),tvos-arm64)
+ ifeq ($(IOSSDK),)
+ IOSSDK := $(shell xcodebuild -version -sdk appletvos Path)
+ endif
+ OUTNAME := dosbox_pure_libretro_tvos.dylib
+ CXX = c++ -arch arm64 -isysroot $(IOSSDK)
+ LDFLAGS := -Wl,-dead_strip
+ COMMONFLAGS += -DDISABLE_DYNAREC=1 -Wno-unknown-warning-option
+ STRIPCMD := strip -xS
+else ifneq ($(ISMAC),)
+ OUTNAME := dosbox_pure_libretro.dylib
+ CXX ?= c++
+ LDFLAGS := -Wl,-dead_strip
+ COMMONFLAGS += -pthread -Wno-unknown-warning-option
+ ifeq ($(CROSS_COMPILE),1)
+ COMMONFLAGS += -DDISABLE_DYNAREC=1
+ TARGET_RULE = -target $(LIBRETRO_APPLE_PLATFORM) -isysroot $(LIBRETRO_APPLE_ISYSROOT)
+ COMMONFLAGS += $(TARGET_RULE)
+ LDFLAGS += $(TARGET_RULE)
+ endif
+ COMMONFLAGS += $(ARCHFLAGS)
+ LDFLAGS += $(ARCHFLAGS)
+ STRIPCMD := strip -xS
+else ifeq ($(platform),windows) # For MSYS2 only
+ OUTNAME := dosbox_pure_libretro.dll
+ CXX ?= g++
+ LDFLAGS := -Wl,--gc-sections -fno-ident
+else ifeq ($(platform),vita)
+ OUTNAME := dosbox_pure_libretro_vita.a
+ CXX := arm-vita-eabi-g++
+ AR := arm-vita-eabi-ar
+ COMMONFLAGS += -DVITA
+ COMMONFLAGS += -mthumb -mcpu=cortex-a9 -mfloat-abi=hard -ftree-vectorize -ffast-math -fsingle-precision-constant -funroll-loops
+ COMMONFLAGS += -mword-relocations
+ COMMONFLAGS += -fno-optimize-sibling-calls
+ STATIC_LINKING = 1
+else ifeq ($(platform),ctr)
+ OUTNAME := dosbox_pure_libretro_ctr.a
+ CXX := $(DEVKITARM)/bin/arm-none-eabi-g++
+ AR := $(DEVKITARM)/bin/arm-none-eabi-ar
+ COMMONFLAGS += -DARM11 -D_3DS -Os -s -I$(CTRULIB)/include/ -DHAVE_MKDIR
+ COMMONFLAGS += -march=armv6k -mtune=mpcore -mfloat-abi=hard -mword-relocations
+ COMMONFLAGS += -fomit-frame-pointer -fstrict-aliasing -ffast-math -fpermissive
+ COMMONFLAGS += -I$(DEVKITPRO)/libctru/include
+ STATIC_LINKING = 1
+else ifeq ($(platform),ngc)
+ OUTNAME := dosbox_pure_libretro_ngc.a
+ CXX := $(DEVKITPPC)/bin/powerpc-eabi-g++
+ AR := $(DEVKITPPC)/bin/powerpc-eabi-ar
+ COMMONFLAGS += -DGEKKO -DHW_DOL -mrvl -mcpu=750 -meabi -mhard-float -D__POWERPC__ -D__ppc__ -DMSB_FIRST -DWORDS_BIGENDIAN=1
+ STATIC_LINKING = 1
+else ifeq ($(platform),wii)
+ OUTNAME := dosbox_pure_libretro_wii.a
+ CXX := $(DEVKITPPC)/bin/powerpc-eabi-g++
+ AR := $(DEVKITPPC)/bin/powerpc-eabi-ar
+ COMMONFLAGS += -DGEKKO -mrvl -mcpu=750 -meabi -mhard-float -fpermissive
+ COMMONFLAGS += -U__INT32_TYPE__ -U__UINT32_TYPE__ -D__INT32_TYPE__=int -D__POWERPC__ -D__ppc__ -DMSB_FIRST -DWORDS_BIGENDIAN=1
+ STATIC_LINKING = 1
+else ifeq ($(platform),wiiu)
+ OUTNAME := dosbox_pure_libretro_wiiu.a
+ CXX := $(DEVKITPPC)/bin/powerpc-eabi-g++
+ AR := $(DEVKITPPC)/bin/powerpc-eabi-ar
+ COMMONFLAGS += -DGEKKO -DWIIU -DHW_RVL -mcpu=750 -meabi -mhard-float
+ COMMONFLAGS += -U__INT32_TYPE__ -U__UINT32_TYPE__ -D__INT32_TYPE__=int -D__POWERPC__ -D__ppc__ -DMSB_FIRST -DWORDS_BIGENDIAN=1 -DGX_PTHREAD_LEGACY
+ STATIC_LINKING = 1
+else ifeq ($(platform),libnx)
+ OUTNAME := dosbox_pure_libretro_libnx.a
+ export DEPSDIR = $(CURDIR)
+ include $(DEVKITPRO)/libnx/switch_rules
+ COMMONFLAGS += -I$(LIBNX)/include/ -ftls-model=local-exec -specs=$(LIBNX)/switch.specs
+ COMMONFLAGS += $(INCLUDE) -D__SWITCH__ -DHAVE_LIBNX
+ STATIC_LINKING = 1
+else ifeq ($(platform),gcw0)
+ # You must used the toolchain built on or around 2014-08-20
+ OUTNAME := dosbox_pure_libretro.so
+ CXX := /opt/gcw0-toolchain/usr/bin/mipsel-linux-g++
+ LDFLAGS := -Wl,--gc-sections -fno-ident
+ CPUFLAGS := -ffast-math -march=mips32r2 -mtune=mips32r2 -mhard-float -fexpensive-optimizations -frename-registers
+ COMMONFLAGS += -pthread
+ STRIPCMD := /opt/gcw0-toolchain/usr/mipsel-gcw0-linux-uclibc/bin/strip --strip-all
+else ifneq ($(findstring Haiku,$(shell uname -s)),)
+ OUTNAME := dosbox_pure_libretro.so
+ LDFLAGS := -Wl,--gc-sections -fno-ident -lroot -lnetwork
+ ifneq ($(findstring BePC,$(shell uname -m)),)
+ CXX ?= g++-x86
+ else
+ CXX ?= g++
+ endif
+else
+ OUTNAME := dosbox_pure_libretro.so
+ CXX ?= g++
+ LDFLAGS := -Wl,--gc-sections -fno-ident
+ COMMONFLAGS += -pthread
+ ifeq ($(CPUFLAGS),)
+ # ARM optimizations
+ PROCCPU := $(shell cat /proc/cpuinfo))
+ ifneq ($(and $(filter ARMv7,$(PROCCPU)),$(filter neon,$(PROCCPU))),)
+ CPUFLAGS := -marm -mcpu=cortex-a72 -mfpu=neon-fp-armv8 -mfloat-abi=hard -ffast-math
+ else ifeq ($(ARM_RPI4), 1)
+ CPUFLAGS := -marm -mcpu=cortex-a72 -mfpu=neon-fp-armv8 -mfloat-abi=hard -ffast-math
+ else
+ ifeq ($(CORTEX_A7), 1)
+ CPUFLAGS += -marm -mcpu=cortex-a7
+ ifeq ($(ARM_NEON), 1)
+ CPUFLAGS += -mfpu=neon-vfpv4
+ endif
+ endif
+ ifeq ($(ARM_HARDFLOAT), 1)
+ CPUFLAGS += -mfloat-abi=hard
+ endif
+ endif
+ endif
+ CXX_VER := $(shell $(CXX) -v 2>&1)
+ ifneq ($(and $(findstring arm,$(CXX_VER)),$(findstring version 10,$(CXX_VER))),)
+ # Switch to gcc 9 to avoid buggy assembly genetation of gcc 10
+ # On armv7l, gcc 10.2 with -O2 on the file core_dynrec.cpp generates assembly that wrongfully passes NULL to the runcode function
+ # resulting in a segfault crash. It can be observed by writing block->cache.start to stdout twice where it is NULL at first
+ # and then the actual value thereafter. This affects upstream SVN DOSBox as well as this core.
+ CXX := g++-9
+ endif
+endif
+
+ifeq ($(BUILD),DEBUG)
+ BUILDDIR := debug
+ CFLAGS := -DDEBUG -D_DEBUG -g -O0
+else ifeq ($(BUILD),PROFILE)
+ BUILDDIR := profile
+ CFLAGS := -DNDEBUG -O2
+else ifeq ($(BUILD),RELEASEDBG)
+ BUILDDIR := releasedbg
+ CFLAGS := -DNDEBUG -ggdb -O2
+ LDFLAGS += -ggdb -O2
+else ifeq ($(BUILD),ASAN)
+ BUILDDIR := asan
+ CFLAGS := -DDEBUG -D_DEBUG -g -O0 -fsanitize=address -fno-omit-frame-pointer
+ LDFLAGS += -fsanitize=address -g -O0
+else
+ BUILD := RELEASE
+ BUILDDIR := release
+ ifeq ($(platform),vita)
+ CFLAGS := -DNDEBUG -O3 -fno-ident -fno-partial-inlining
+ else
+ CFLAGS := -DNDEBUG -O2 -fno-ident
+ endif
+ LDFLAGS += -O2
+endif
+
+CFLAGS += $(CPUFLAGS) -std=gnu++11 -fomit-frame-pointer -fno-non-call-exceptions -Wno-address-of-packed-member -Wno-format -Wno-switch -Wno-psabi
+ifneq ($(STATIC_LINKING), 1)
+ CFLAGS += -fpic
+else
+ CFLAGS += -DSTATIC_LINKING
+endif
+
+CFLAGS += -fvisibility=hidden -ffunction-sections
+CFLAGS += -D__LIBRETRO__ -Iinclude -D_FILE_OFFSET_BITS=64
+CFLAGS += $(COMMONFLAGS)
+#CFLAGS += -fdata-sections #saves around 32 bytes on most platforms but wrongfully adds up to 60MB on msys2
+
+LDLIBS := -lpthread
+LDFLAGS += $(CPUFLAGS) -shared
+#LDFLAGS += -static-libstdc++ -static-libgcc #adds 1MB to output and still dynamically links against libc and libm
+
+.PHONY: all clean
+all: $(OUTNAME)
+
+$(info Building $(OUTNAME) with $(BUILD) configuration (obj files stored in build/$(BUILDDIR)) ...)
+SOURCES := $(wildcard $(SOURCES))
+$(if $(findstring ~,$(SOURCES)),$(error SOURCES contains a filename with a ~ character in it - Unable to continue))
+$(if $(wildcard build),,$(shell mkdir "build"))
+$(if $(wildcard build/$(BUILDDIR)),,$(shell mkdir "build/$(BUILDDIR)"))
+OBJS := $(addprefix build/$(BUILDDIR)/,$(subst /,~,$(patsubst %,%.o,$(SOURCES))))
+-include $(OBJS:%.o=%.d)
+$(foreach F,$(OBJS),$(eval $(F): $(subst ~,/,$(patsubst build/$(BUILDDIR)/%.o,%,$(F))) ; $$(call COMPILE,$$@,$$<)))
+
+clean:
+ $(info Removing all build files ...)
+ @$(if $(wildcard build/$(BUILDDIR)),$(if $(ISWIN),rmdir /S /Q,rm -rf) "build/$(BUILDDIR)" $(PIPETONULL))
+
+$(OUTNAME) : $(OBJS)
+ifeq ($(STATIC_LINKING), 1)
+ $(info Static linking $@ ...)
+ $(AR) rcs $@ $^
+else
+ $(info Linking $@ ...)
+ $(CXX) $(LDFLAGS) -o $@ $^ $(LDLIBS)
+ifneq ($(BUILD),DEBUG)
+ $(STRIPCMD) $@
+endif
+endif
+
+define COMPILE
+ $(info Compiling $2 ...)
+ @$(CXX) $(CFLAGS) -MMD -MP -o $1 -c $2
+endef