git: 316d2de4b5ea - main - emulators/libretro-flycast: New port: Standalone port of flycast to libretro
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 19 May 2022 17:49:25 UTC
The branch main has been updated by nc: URL: https://cgit.FreeBSD.org/ports/commit/?id=316d2de4b5ea9565b4b81bc3e6e00165454d792c commit 316d2de4b5ea9565b4b81bc3e6e00165454d792c Author: Timothy Beyer <beyert_freebsd@fastmail.net> AuthorDate: 2022-05-17 03:53:46 +0000 Commit: Neel Chauhan <nc@FreeBSD.org> CommitDate: 2022-05-19 17:49:21 +0000 emulators/libretro-flycast: New port: Standalone port of flycast to libretro PR: 257170 --- emulators/Makefile | 1 + emulators/libretro-flycast/Makefile | 63 ++++++++++++++++++++++ emulators/libretro-flycast/distinfo | 3 ++ emulators/libretro-flycast/files/patch-Makefile | 33 ++++++++++++ .../files/patch-core_hw_aica_dsp__x64.cpp | 11 ++++ .../files/patch-core_hw_bba_rtl8139c.h | 18 +++++++ .../patch-core_libretro-common_rthreads_rthreads.c | 14 +++++ emulators/libretro-flycast/pkg-descr | 6 +++ emulators/libretro-flycast/pkg-message | 14 +++++ 9 files changed, 163 insertions(+) diff --git a/emulators/Makefile b/emulators/Makefile index b44c4738624a..574973a982a1 100644 --- a/emulators/Makefile +++ b/emulators/Makefile @@ -57,6 +57,7 @@ SUBDIR += lib765 SUBDIR += libc6-shim SUBDIR += libdsk + SUBDIR += libretro-flycast SUBDIR += libretro-mame SUBDIR += libretro-ppsspp SUBDIR += libretro-reicast 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 +} +]