From e4ef394902532240899a3c3f5c6968c4eade9be8 Mon Sep 17 00:00:00 2001 From: Timothy Beyer Date: Mon, 16 May 2022 20:53:46 -0700 Subject: emulators/reicast: New port: Multi-platform Sega Dreamcast emulator PR: 252193 --- emulators/Makefile | 1 + emulators/reicast/Makefile | 44 ++++++++++++++++++++++ emulators/reicast/distinfo | 3 ++ emulators/reicast/files/patch-CMakeLists.txt | 11 ++++++ .../patch-libswirl_gui_gui__settings__about.cpp | 25 ++++++++++++ .../files/patch-libswirl_linux-dist_main.cpp | 10 +++++ .../reicast/files/patch-libswirl_linux_common.cpp | 42 +++++++++++++++++++++ .../reicast/files/patch-reicast_cmake_config.cmake | 16 ++++++++ emulators/reicast/pkg-descr | 3 ++ 9 files changed, 155 insertions(+) create mode 100644 emulators/reicast/Makefile create mode 100644 emulators/reicast/distinfo create mode 100644 emulators/reicast/files/patch-CMakeLists.txt create mode 100644 emulators/reicast/files/patch-libswirl_gui_gui__settings__about.cpp create mode 100644 emulators/reicast/files/patch-libswirl_linux-dist_main.cpp create mode 100644 emulators/reicast/files/patch-libswirl_linux_common.cpp create mode 100644 emulators/reicast/files/patch-reicast_cmake_config.cmake create mode 100644 emulators/reicast/pkg-descr 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 + +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 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 +-#include + + #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 + #if HOST_OS == OS_DARWIN + #import ++ #elif defined(__FreeBSD__) ++ #include ++ #include ++ #include ++ #include ++ #include + #else + #include + #endif +@@ -33,7 +39,7 @@ + #include + #include + #include +-#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 + #include + #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 -- cgit v1.2.3