aboutsummaryrefslogtreecommitdiff
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:43:57 +0000
commite4ef394902532240899a3c3f5c6968c4eade9be8 (patch)
tree2f633bae29e01743caaa4933940eef284316e6d3
parent903d341a2f2ac349671f00fcba1440c1aa71b624 (diff)
downloadports-e4ef394902532240899a3c3f5c6968c4eade9be8.tar.gz
ports-e4ef394902532240899a3c3f5c6968c4eade9be8.zip
emulators/reicast: New port: Multi-platform Sega Dreamcast emulator
PR: 252193
-rw-r--r--emulators/Makefile1
-rw-r--r--emulators/reicast/Makefile44
-rw-r--r--emulators/reicast/distinfo3
-rw-r--r--emulators/reicast/files/patch-CMakeLists.txt11
-rw-r--r--emulators/reicast/files/patch-libswirl_gui_gui__settings__about.cpp25
-rw-r--r--emulators/reicast/files/patch-libswirl_linux-dist_main.cpp10
-rw-r--r--emulators/reicast/files/patch-libswirl_linux_common.cpp42
-rw-r--r--emulators/reicast/files/patch-reicast_cmake_config.cmake16
-rw-r--r--emulators/reicast/pkg-descr3
9 files changed, 155 insertions, 0 deletions
diff --git a/emulators/Makefile b/emulators/Makefile
index 7ef793c3977f..2f85a9ca18de 100644
--- a/emulators/Makefile
+++ b/emulators/Makefile
@@ -114,6 +114,7 @@
SUBDIR += qemu6
SUBDIR += qmc2
SUBDIR += quasi88
+ SUBDIR += reicast
SUBDIR += ripes
SUBDIR += riscv-isa-sim
SUBDIR += rpcs3
diff --git a/emulators/reicast/Makefile b/emulators/reicast/Makefile
new file mode 100644
index 000000000000..d6a317efb18f
--- /dev/null
+++ b/emulators/reicast/Makefile
@@ -0,0 +1,44 @@
+# Created by: Timothy Beyer <beyert@cs.ucr.edu>
+
+PORTNAME= reicast
+PORTVERSION= 0.20201231
+CATEGORIES= emulators games
+
+MAINTAINER= beyert@cs.ucr.edu
+COMMENT= Multi-platform Sega Dreamcast emulator
+
+LICENSE= BSD3CLAUSE GPLv2 LGPL21
+LICENSE_COMB= multi
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+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
+
+USES= cmake compiler gl xorg
+USE_GCC= yes
+USE_LDCONFIG= yes
+CMAKE_ARGS= -DOPENGL_EGL_INCLUDE_DIR:PATH=${LOCALBASE}/include/EGL \
+ -DOPENGL_GLX_INCLUDE_DIR:PATH=${LOCALBASE}/include/GL \
+ -DOPENGL_INCLUDE_DIR:PATH=${LOCALBASE}/include/GL \
+ -DOPENGL_opengl_LIBRARY:PATH=${LOCALBASE}/lib/libGL.so
+
+USE_GITHUB= yes
+GH_ACCOUNT= reicast
+GH_PROJECT= reicast-emulator
+GH_TAGNAME= 0bd6ea3
+
+USE_XORG= ice sm x11 xext
+USE_GL= egl gbm gl
+
+PLIST_FILES= bin/reicast
+
+do-install:
+ ${INSTALL} ${WRKDIR}/.build/${PORTNAME} \
+ ${STAGEDIR}/${PREFIX}/bin/${PORTNAME};
+ @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+
+.include <bsd.port.mk>
diff --git a/emulators/reicast/distinfo b/emulators/reicast/distinfo
new file mode 100644
index 000000000000..9ade18ae5b8a
--- /dev/null
+++ b/emulators/reicast/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1623465538
+SHA256 (reicast-reicast-emulator-0.20201231-0bd6ea3_GH0.tar.gz) = a30e67754c28029e16cf2eb3d3878906888178e308800139e64e8e29533bc679
+SIZE (reicast-reicast-emulator-0.20201231-0bd6ea3_GH0.tar.gz) = 6467649
diff --git a/emulators/reicast/files/patch-CMakeLists.txt b/emulators/reicast/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..5532f40fde80
--- /dev/null
+++ b/emulators/reicast/files/patch-CMakeLists.txt
@@ -0,0 +1,11 @@
+--- CMakeLists.txt.orig 2020-08-21 20:26:50 UTC
++++ CMakeLists.txt
+@@ -431,6 +431,8 @@ if(${HOST_OS} EQUAL ${OS_DARWIN})
+
+ endif()
+
++set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.1")
++set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
+
+ if(DEBUG_CMAKE)
+ message(" ------------------------------------------------")
diff --git a/emulators/reicast/files/patch-libswirl_gui_gui__settings__about.cpp b/emulators/reicast/files/patch-libswirl_gui_gui__settings__about.cpp
new file mode 100644
index 000000000000..22d8576fbe7f
--- /dev/null
+++ b/emulators/reicast/files/patch-libswirl_gui_gui__settings__about.cpp
@@ -0,0 +1,25 @@
+--- libswirl/gui/gui_settings_about.cpp.orig 2020-08-21 20:26:50 UTC
++++ libswirl/gui/gui_settings_about.cpp
+@@ -40,13 +40,13 @@ void gui_settings_about()
+ {
+ ImGui::Text("CPU: %s",
+ #if HOST_CPU == CPU_X86
+- "x86"
++ "i386"
+ #elif HOST_CPU == CPU_ARM
+ "ARM"
+ #elif HOST_CPU == CPU_MIPS
+ "MIPS"
+ #elif HOST_CPU == CPU_X64
+- "x86/64"
++ "amd64"
+ #elif HOST_CPU == CPU_GENERIC
+ "Generic"
+ #elif HOST_CPU == CPU_ARM64
+@@ -88,4 +88,4 @@ void gui_settings_about()
+ ImGui::PopStyleVar();
+ ImGui::EndTabItem();
+ }
+-}
+\ No newline at end of file
++}
diff --git a/emulators/reicast/files/patch-libswirl_linux-dist_main.cpp b/emulators/reicast/files/patch-libswirl_linux-dist_main.cpp
new file mode 100644
index 000000000000..a0e4638bf5b9
--- /dev/null
+++ b/emulators/reicast/files/patch-libswirl_linux-dist_main.cpp
@@ -0,0 +1,10 @@
+--- libswirl/linux-dist/main.cpp.orig 2020-08-21 20:26:50 UTC
++++ libswirl/linux-dist/main.cpp
+@@ -22,7 +22,6 @@
+ #include "hw/sh4/dyna/blockmanager.h"
+ #include "hw/maple/maple_cfg.h"
+ #include <unistd.h>
+-#include <pty.h>
+
+ #include "libswirl.h"
+ #include "hw/pvr/Renderer_if.h"
diff --git a/emulators/reicast/files/patch-libswirl_linux_common.cpp b/emulators/reicast/files/patch-libswirl_linux_common.cpp
new file mode 100644
index 000000000000..147dd36e4224
--- /dev/null
+++ b/emulators/reicast/files/patch-libswirl_linux_common.cpp
@@ -0,0 +1,42 @@
+--- libswirl/linux/common.cpp.orig 2020-08-21 20:26:50 UTC
++++ libswirl/linux/common.cpp
+@@ -22,6 +22,12 @@
+ #include <sys/stat.h>
+ #if HOST_OS == OS_DARWIN
+ #import <util.h>
++ #elif defined(__FreeBSD__)
++ #include <dlfcn.h>
++ #include <sys/types.h>
++ #include <sys/ioctl.h>
++ #include <termios.h>
++ #include <libutil.h>
+ #else
+ #include <pty.h>
+ #endif
+@@ -33,7 +39,7 @@
+ #include <sys/param.h>
+ #include <sys/mman.h>
+ #include <sys/time.h>
+-#if !defined(TARGET_BSD) && !defined(TARGET_IPHONE) && !defined(TARGET_NACL32) && !defined(TARGET_EMSCRIPTEN) && !defined(TARGET_OSX) && !defined(TARGET_OSX_X64)
++#if !defined(__FreeBSD__) && !defined(TARGET_BSD) && !defined(TARGET_IPHONE) && !defined(TARGET_NACL32) && !defined(TARGET_EMSCRIPTEN) && !defined(TARGET_OSX) && !defined(TARGET_OSX_X64)
+ #include <sys/personality.h>
+ #include <dlfcn.h>
+ #endif
+@@ -294,7 +300,7 @@ void enable_runfast()
+ }
+
+ void linux_fix_personality() {
+- #if !defined(TARGET_BSD) && !defined(_ANDROID) && !defined(TARGET_OS_MAC) && !defined(TARGET_NACL32) && !defined(TARGET_EMSCRIPTEN)
++ #if !defined(__FreeBSD__) && !defined(TARGET_BSD) && !defined(_ANDROID) && !defined(TARGET_OS_MAC) && !defined(TARGET_NACL32) && !defined(TARGET_EMSCRIPTEN)
+ printf("Personality: %08X\n", personality(0xFFFFFFFF));
+ personality(~READ_IMPLIES_EXEC & personality(0xFFFFFFFF));
+ printf("Updated personality: %08X\n", personality(0xFFFFFFFF));
+@@ -302,7 +308,7 @@ void linux_fix_personality() {
+ }
+
+ void linux_rpi2_init() {
+-#if !defined(TARGET_BSD) && !defined(_ANDROID) && !defined(TARGET_NACL32) && !defined(TARGET_EMSCRIPTEN) && defined(TARGET_VIDEOCORE)
++#if !defined(__FreeBSD__) && !defined(TARGET_BSD) && !defined(_ANDROID) && !defined(TARGET_NACL32) && !defined(TARGET_EMSCRIPTEN) && defined(TARGET_VIDEOCORE)
+ void* handle;
+ void (*rpi_bcm_init)(void);
+
diff --git a/emulators/reicast/files/patch-reicast_cmake_config.cmake b/emulators/reicast/files/patch-reicast_cmake_config.cmake
new file mode 100644
index 000000000000..4fa4fed8b020
--- /dev/null
+++ b/emulators/reicast/files/patch-reicast_cmake_config.cmake
@@ -0,0 +1,16 @@
+--- reicast/cmake/config.cmake.orig 2020-08-21 20:26:50 UTC
++++ reicast/cmake/config.cmake
+@@ -106,11 +106,13 @@ endif()
+ # AMD64/x86_64:x64, i*86:x86, ppc/powerpc[64][b|l]e:ppc[64] etc
+ #
+ if(("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i686") OR
++ ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i386") OR
+ ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "X86")) # todo: check MATCHES "i.86" ?
+ set(host_arch "x86")
+ set(HOST_CPU ${CPU_X86})
+ #
+ elseif(("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64") OR
++ ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "amd64") OR
+ ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") OR
+ ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x64"))
+ set(host_arch "x64")
diff --git a/emulators/reicast/pkg-descr b/emulators/reicast/pkg-descr
new file mode 100644
index 000000000000..4d95aa12b593
--- /dev/null
+++ b/emulators/reicast/pkg-descr
@@ -0,0 +1,3 @@
+Reicast is a multi-platform Sega Dreamcast emulator.
+
+WWW: https://github.com/reicast/reicast-emulator