aboutsummaryrefslogtreecommitdiff
path: root/emulators/libretro-flycast
diff options
context:
space:
mode:
authorTimothy Beyer <beyert_freebsd@fastmail.net>2022-05-17 03:53:46 +0000
committerNeel Chauhan <nc@FreeBSD.org>2022-05-19 17:49:21 +0000
commit316d2de4b5ea9565b4b81bc3e6e00165454d792c (patch)
tree4dd6df8d80622176896e259c1934c53227f20d0a /emulators/libretro-flycast
parent5f4caf1945f77bcffb540d69cd309d539a760c41 (diff)
downloadports-316d2de4b5ea9565b4b81bc3e6e00165454d792c.tar.gz
ports-316d2de4b5ea9565b4b81bc3e6e00165454d792c.zip
emulators/libretro-flycast: New port: Standalone port of flycast to libretro
PR: 257170
Diffstat (limited to 'emulators/libretro-flycast')
-rw-r--r--emulators/libretro-flycast/Makefile63
-rw-r--r--emulators/libretro-flycast/distinfo3
-rw-r--r--emulators/libretro-flycast/files/patch-Makefile33
-rw-r--r--emulators/libretro-flycast/files/patch-core_hw_aica_dsp__x64.cpp11
-rw-r--r--emulators/libretro-flycast/files/patch-core_hw_bba_rtl8139c.h18
-rw-r--r--emulators/libretro-flycast/files/patch-core_libretro-common_rthreads_rthreads.c14
-rw-r--r--emulators/libretro-flycast/pkg-descr6
-rw-r--r--emulators/libretro-flycast/pkg-message14
8 files changed, 162 insertions, 0 deletions
diff --git a/emulators/libretro-flycast/Makefile b/emulators/libretro-flycast/Makefile
new file mode 100644
index 000000000000..fe5e75d0f23f
--- /dev/null
+++ b/emulators/libretro-flycast/Makefile
@@ -0,0 +1,63 @@
+# $FreeBSD$
+
+PORTNAME= libretro-flycast
+PORTVERSION= 0.20210608
+CATEGORIES= emulators games
+
+MAINTAINER= beyert@cs.ucr.edu
+COMMENT= Standalone port of flycast to libretro
+
+LICENSE= GPLv2
+#LICENSE_COMB= multi
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+ONLY_FOR_ARCHS= amd64 i386
+
+LIB_DEPENDS+= libao.so:audio/libao \
+ libasound.so:audio/alsa-lib \
+ libcurl.so:ftp/curl \
+ libevdev.so:devel/libevdev \
+ libpulse.so:audio/pulseaudio \
+ libudev.so:devel/libudev-devd \
+ libvulkan.so:graphics/vulkan-loader
+
+USES= compiler:c++11-lib dos2unix gl gmake xorg
+USE_LDCONFIG= yes
+
+USE_GITHUB= yes
+GH_ACCOUNT= libretro
+GH_PROJECT= flycast
+GH_TAGNAME= 8e4fa54e
+
+USE_GL+= gl glew glu
+
+CFLAGS+= -I${LOCALBASE}/include
+CXXFLAGS+= -I${LOCALBASE}/include
+
+.include <bsd.port.pre.mk>
+
+DOS2UNIX_FILES= core/hw/bba/rtl8139c.h
+
+.if ${ARCH} == amd64
+CFLAGS+= -DLOW_END
+CXXFLAGS+= -DLOW_END
+.endif
+
+LDFLAGS+= -L${LOCALBASE}/lib
+MAKE_ARGS= HAVE_GENERIC_JIT=0 \
+ HAVE_VULKAN=0
+
+.if ${ARCH} == amd64
+MAKE_ARGS+= WITH_DYNAREC=x86_64
+.elif ${ARCH} == i386
+MAKE_ARGS+= WITH_DYNAREC=x86
+.endif
+
+PLIST_FILES= lib/libretro/flycast_libretro.so
+
+do-install:
+ ${MKDIR} ${STAGEDIR}/${PREFIX}/lib/libretro;
+ ${INSTALL_LIB} ${WRKSRC}/flycast_libretro.so \
+ ${STAGEDIR}/${PREFIX}/lib/libretro/flycast_libretro.so;
+
+.include <bsd.port.post.mk>
diff --git a/emulators/libretro-flycast/distinfo b/emulators/libretro-flycast/distinfo
new file mode 100644
index 000000000000..eab0e7f1dc9c
--- /dev/null
+++ b/emulators/libretro-flycast/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1623193824
+SHA256 (libretro-flycast-0.20210608-8e4fa54e_GH0.tar.gz) = c11f19e25cf605ca3a2df74d1595c1b21ef8fff52b7fa42fc9bfc7fde611059e
+SIZE (libretro-flycast-0.20210608-8e4fa54e_GH0.tar.gz) = 6576666
diff --git a/emulators/libretro-flycast/files/patch-Makefile b/emulators/libretro-flycast/files/patch-Makefile
new file mode 100644
index 000000000000..a0ba13f9b085
--- /dev/null
+++ b/emulators/libretro-flycast/files/patch-Makefile
@@ -0,0 +1,33 @@
+--- Makefile.orig 2021-05-17 21:23:19 UTC
++++ Makefile
+@@ -45,12 +45,8 @@ CC_AS ?= ${CC_PREFIX}as
+
+ MFLAGS :=
+ ASFLAGS :=
+-LDFLAGS :=
+ LDFLAGS_END :=
+ INCFLAGS :=
+-LIBS :=
+-CFLAGS :=
+-CXXFLAGS :=
+
+ GIT_VERSION := " $(shell git rev-parse --short HEAD || echo unknown)"
+ ifneq ($(GIT_VERSION)," unknown")
+@@ -70,7 +66,7 @@ endif
+ # Target Dynarec
+ WITH_DYNAREC = $(ARCH)
+
+-ifeq ($(ARCH), $(filter $(ARCH), i386 i686))
++ifeq ($(ARCH), $(filter $(ARCH), i386 i486 i686))
+ WITH_DYNAREC = x86
+ endif
+
+@@ -145,7 +141,7 @@ ifneq (,$(findstring unix,$(platform)))
+ HAVE_CDROM = 1
+ fpic = -fPIC
+
+- ifeq ($(WITH_DYNAREC), $(filter $(WITH_DYNAREC), x86_64 x64))
++ ifeq ($(WITH_DYNAREC), $(filter $(WITH_DYNAREC), x86_64 x64 amd64))
+ CFLAGS += -DTARGET_LINUX_x64
+ SINGLE_PREC_FLAGS=1
+ HAVE_GENERIC_JIT = 0
diff --git a/emulators/libretro-flycast/files/patch-core_hw_aica_dsp__x64.cpp b/emulators/libretro-flycast/files/patch-core_hw_aica_dsp__x64.cpp
new file mode 100644
index 000000000000..e49c4888bf1d
--- /dev/null
+++ b/emulators/libretro-flycast/files/patch-core_hw_aica_dsp__x64.cpp
@@ -0,0 +1,11 @@
+--- core/hw/aica/dsp_x64.cpp.orig 2021-05-17 21:23:19 UTC
++++ core/hw/aica/dsp_x64.cpp
+@@ -37,6 +37,8 @@ DECL_ALIGN(4096) static u8 CodeBuffer[32 * 1024]
+ __attribute__((section(".text")));
+ #elif defined(__MACH__)
+ __attribute__((section("__TEXT,.text")));
++#elif defined(__FreeBSD__)
++ __attribute__((section(".text")));
+ #else
+ #error CodeBuffer code section unknown
+ #endif
diff --git a/emulators/libretro-flycast/files/patch-core_hw_bba_rtl8139c.h b/emulators/libretro-flycast/files/patch-core_hw_bba_rtl8139c.h
new file mode 100644
index 000000000000..9f929eddba9b
--- /dev/null
+++ b/emulators/libretro-flycast/files/patch-core_hw_bba_rtl8139c.h
@@ -0,0 +1,18 @@
+--- core/hw/bba/rtl8139c.h.orig 2021-06-18 06:17:55 UTC
++++ core/hw/bba/rtl8139c.h
+@@ -58,6 +58,7 @@ struct MemoryRegion {
+ /*
+ * Byte swapping utilities
+ */
++/*
+ static inline uint16_t bswap16(uint16_t x)
+ {
+ return (((x & 0x00ff) << 8) |
+@@ -71,6 +72,7 @@ static inline uint32_t bswap32(uint32_t x)
+ ((x & 0x00ff0000U) >> 8) |
+ ((x & 0xff000000U) >> 24));
+ }
++*/
+ #define glue(a, b) _glue(a, b)
+ #define _glue(a, b) a ## b
+
diff --git a/emulators/libretro-flycast/files/patch-core_libretro-common_rthreads_rthreads.c b/emulators/libretro-flycast/files/patch-core_libretro-common_rthreads_rthreads.c
new file mode 100644
index 000000000000..82c1108625e7
--- /dev/null
+++ b/emulators/libretro-flycast/files/patch-core_libretro-common_rthreads_rthreads.c
@@ -0,0 +1,14 @@
+--- core/libretro-common/rthreads/rthreads.c.orig 2021-05-17 21:23:19 UTC
++++ core/libretro-common/rthreads/rthreads.c
+@@ -55,10 +55,9 @@
+ #include <sys/sys_time.h>
+ #else
+ #include <pthread.h>
+-#include <time.h>
+ #endif
+
+-#if defined(VITA) || defined(BSD) || defined(ORBIS)
++#if defined(VITA) || defined(__FreeBSD__) || defined(ORBIS)
+ #include <sys/time.h>
+ #endif
+
diff --git a/emulators/libretro-flycast/pkg-descr b/emulators/libretro-flycast/pkg-descr
new file mode 100644
index 000000000000..af0f3cff8768
--- /dev/null
+++ b/emulators/libretro-flycast/pkg-descr
@@ -0,0 +1,6 @@
+Standalone port of Flycast to libretro.
+
+Flycast is a multi-platform Sega Dreamcast, Naomi and Atomiswave emulator
+derived from Reicast.
+
+WWW: https://git.libretro.com/libretro/flycast
diff --git a/emulators/libretro-flycast/pkg-message b/emulators/libretro-flycast/pkg-message
new file mode 100644
index 000000000000..4faa5801ca78
--- /dev/null
+++ b/emulators/libretro-flycast/pkg-message
@@ -0,0 +1,14 @@
+[
+{ type: install
+ message: <<EOM
+The libretro core of flycast will not run if run ahead support is enabled.
+Please set all lines in ~/.config/retroarch/retroarch.cfg that correspond to
+the setting "run_ahead_enabled" to "false", as shown in the example below:
+
+run_ahead_enabled = "false"
+
+To troubleshoot issues, running retroarch with the -v argument may help to
+acquire more diagnostic information.
+EOM
+}
+]