Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Jun 2022 07:04:58 GMT
From:      Li-Wen Hsu <lwhsu@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 68b199480328 - main - Add emulators/libretro-kronos
Message-ID:  <202206270704.25R74w64097384@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by lwhsu:

URL: https://cgit.FreeBSD.org/ports/commit/?id=68b199480328b8073a1ff97f2b62597010cf8137

commit 68b199480328b8073a1ff97f2b62597010cf8137
Author:     Timothy Beyer <beyert@cs.ucr.edu>
AuthorDate: 2022-06-27 07:01:29 +0000
Commit:     Li-Wen Hsu <lwhsu@FreeBSD.org>
CommitDate: 2022-06-27 07:04:02 +0000

    Add emulators/libretro-kronos
    
    Sega Saturn and ST-V emulator forked from uoYabause for libretro
    
    PR:             257171
---
 emulators/Makefile                                 |  1 +
 emulators/libretro-kronos/Makefile                 | 60 ++++++++++++++++++++++
 emulators/libretro-kronos/distinfo                 |  3 ++
 .../files/patch-yabause_src_libretro_Makefile      | 11 ++++
 .../patch-yabause_src_libretro_Makefile.common     | 36 +++++++++++++
 ...rc_libretro_libretro-common_rthreads_rthreads.c | 11 ++++
 emulators/libretro-kronos/pkg-descr                |  6 +++
 emulators/libretro-kronos/pkg-message              | 34 ++++++++++++
 8 files changed, 162 insertions(+)

diff --git a/emulators/Makefile b/emulators/Makefile
index 20c3c7fbd15c..ae76495c5847 100644
--- a/emulators/Makefile
+++ b/emulators/Makefile
@@ -58,6 +58,7 @@
     SUBDIR += libc6-shim
     SUBDIR += libdsk
     SUBDIR += libretro-flycast
+    SUBDIR += libretro-kronos
     SUBDIR += libretro-mame
     SUBDIR += libretro-pcsx2
     SUBDIR += libretro-ppsspp
diff --git a/emulators/libretro-kronos/Makefile b/emulators/libretro-kronos/Makefile
new file mode 100644
index 000000000000..c6358da06895
--- /dev/null
+++ b/emulators/libretro-kronos/Makefile
@@ -0,0 +1,60 @@
+# Created by Timothy Beyer <beyert@cs.ucr.edu>
+
+PORTNAME=	libretro-kronos
+PORTVERSION=	0.20210617
+CATEGORIES=	emulators games
+
+MAINTAINER=	beyert@cs.ucr.edu
+COMMENT=	Sega Saturn and ST-V emulator forked from uoYabause for libretro
+
+LICENSE=	GPLv2
+LICENSE_FILE=	${WRKSRC}/yabause/COPYING
+
+LIB_DEPENDS=	libGL.so:graphics/mesa-libs
+
+# standalone version uses solely cmake, whereas the retroarch core uses both
+# cmake and gmake
+USES=		cmake:noninja compiler:c++11-lib gl gmake pkgconfig qt:5 sdl
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	FCare
+GH_PROJECT=	Kronos
+GH_TAGNAME=	a39f95a
+
+USE_GL=	gl glew glu
+
+USE_LDCONFIG=	yes
+
+USE_QT=	core opengl buildtools_build qmake_build
+
+USE_SDL=	sdl2
+
+CMAKE_SOURCE_PATH=	${WRKSRC}/yabause
+
+MAKE_ARGS=	USE_RTHREADS=1
+
+CFLAGS+=	-I${LOCALBASE}/include
+CXXFLAGS+=	-I${LOCALBASE}/include
+LDFLAGS+=	-L${LOCALBASE}/lib
+
+PLIST_FILES=	lib/libretro/kronos_libretro.so
+
+pre-build:
+	cd ${CMAKE_SOURCE_PATH} && ${CMAKE_BIN} .
+	cd ${WRKSRC}/yabause/src && ${MAKE} m68kmake
+
+.include <bsd.port.pre.mk>
+
+do-build:
+	cd ${WRKSRC}/yabause/src/libretro && ${DO_MAKE_BUILD}
+
+post-patch:
+.if ${ARCH} != "amd64"
+	@${REINPLACE_CMD} -e "s/HAVE_SSE = 1/HAVE_SSE = 0/" ${WRKSRC}/yabause/src/libretro/Makefile
+.endif
+
+do-install:
+	${MKDIR} ${STAGEDIR}/${PREFIX}/lib/libretro;
+	${INSTALL_LIB} ${WRKSRC}/yabause/src/libretro/kronos_libretro.so ${STAGEDIR}/${PREFIX}/lib/libretro;
+
+.include <bsd.port.post.mk>
diff --git a/emulators/libretro-kronos/distinfo b/emulators/libretro-kronos/distinfo
new file mode 100644
index 000000000000..0fd66c7ae29f
--- /dev/null
+++ b/emulators/libretro-kronos/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1623926653
+SHA256 (FCare-Kronos-0.20210617-a39f95a_GH0.tar.gz) = a9edd4b88b874f4b1d1fb0b9e66cf2bc8bc3b643ee02b127db84a79fce31a6e8
+SIZE (FCare-Kronos-0.20210617-a39f95a_GH0.tar.gz) = 36104449
diff --git a/emulators/libretro-kronos/files/patch-yabause_src_libretro_Makefile b/emulators/libretro-kronos/files/patch-yabause_src_libretro_Makefile
new file mode 100644
index 000000000000..b1ae06d0fa34
--- /dev/null
+++ b/emulators/libretro-kronos/files/patch-yabause_src_libretro_Makefile
@@ -0,0 +1,11 @@
+--- yabause/src/libretro/Makefile.orig	2021-06-01 21:12:00 UTC
++++ yabause/src/libretro/Makefile
+@@ -291,7 +291,7 @@ endif
+ 
+ OBJECTS += $(OBJECTS_C) $(OBJECTS_CXX) $(OBJECTS_S)
+ 
+-LDFLAGS += $(fpic) $(SHARED) -latomic
++LDFLAGS += $(fpic) $(SHARED)
+ FLAGS += $(fpic)
+ 
+ INCFLAGS := $(foreach dir,$(INCLUDE_DIRS),-I$(dir))
diff --git a/emulators/libretro-kronos/files/patch-yabause_src_libretro_Makefile.common b/emulators/libretro-kronos/files/patch-yabause_src_libretro_Makefile.common
new file mode 100644
index 000000000000..b7490c991cd8
--- /dev/null
+++ b/emulators/libretro-kronos/files/patch-yabause_src_libretro_Makefile.common
@@ -0,0 +1,36 @@
+--- yabause/src/libretro/Makefile.common.orig	2021-06-01 21:12:00 UTC
++++ yabause/src/libretro/Makefile.common
+@@ -182,6 +182,8 @@ ifeq ($(HAVE_CDROM), 1)
+ 	endif
+ endif
+ 
++SOURCES_C += $(LIBRETRO_COMM_DIR)/string/stdstring.c
++
+ ifeq ($(ARCH_IS_WINDOWS), 1)
+ 	SOURCES_C += $(FLAC_DIR)/src/libFLAC/windows_unicode_filenames.c
+ endif
+@@ -209,14 +211,16 @@ ifeq ($(USE_RTHREADS), 1)
+ 	SOURCES_C += $(SOURCE_DIR)/ctrl/threads/thr-rthreads.c \
+ 		$(LIBRETRO_COMM_DIR)/rthreads/rthreads.c
+ else
+-	ifeq ($(ARCH_IS_LINUX), 1)
+-		SOURCES_C += $(SOURCE_DIR)/ctrl/threads/thr-linux.c
+-	else ifeq ($(ARCH_IS_MACOSX), 1)
+-		SOURCES_C += $(SOURCE_DIR)/ctrl/threads/thr-linux.c \
+-			$(SOURCE_DIR)/ctrl/threads/linux/pthread_barrier.c
+-	else
+-		SOURCES_C += $(SOURCE_DIR)/ctrl/threads/thr-windows.c
+-	endif
++
++SOURCES_C += $(SOURCE_DIR)/ctrl/threads/thr-dummy.c
++#	ifeq ($(ARCH_IS_LINUX), 1)
++#		SOURCES_C += $(SOURCE_DIR)/ctrl/threads/thr-linux.c
++#	else ifeq ($(ARCH_IS_MACOSX), 1)
++#		SOURCES_C += $(SOURCE_DIR)/ctrl/threads/thr-linux.c \
++#			$(SOURCE_DIR)/ctrl/threads/linux/pthread_barrier.c
++#	else
++#		SOURCES_C += $(SOURCE_DIR)/ctrl/threads/thr-windows.c
++#	endif
+ endif
+ 
+ M68KMAKE_EXE = m68kmake$(EXE_EXT)
diff --git a/emulators/libretro-kronos/files/patch-yabause_src_libretro_libretro-common_rthreads_rthreads.c b/emulators/libretro-kronos/files/patch-yabause_src_libretro_libretro-common_rthreads_rthreads.c
new file mode 100644
index 000000000000..a257dba8db83
--- /dev/null
+++ b/emulators/libretro-kronos/files/patch-yabause_src_libretro_libretro-common_rthreads_rthreads.c
@@ -0,0 +1,11 @@
+--- yabause/src/libretro/libretro-common/rthreads/rthreads.c.orig	2020-05-02 13:49:27 UTC
++++ yabause/src/libretro/libretro-common/rthreads/rthreads.c
+@@ -67,6 +67,8 @@
+ #include <mach/mach.h>
+ #endif
+ 
++#include <sys/time.h>
++
+ struct thread_data
+ {
+    void (*func)(void*);
diff --git a/emulators/libretro-kronos/pkg-descr b/emulators/libretro-kronos/pkg-descr
new file mode 100644
index 000000000000..faeee508c4e9
--- /dev/null
+++ b/emulators/libretro-kronos/pkg-descr
@@ -0,0 +1,6 @@
+Kronos is a Sega Saturn and ST-V emulator forked from uoYabause. Kronos is
+targetting Linux and Windows OS.
+
+This is the libretro port of Kronos.
+
+WWW: https://fcare.github.io
diff --git a/emulators/libretro-kronos/pkg-message b/emulators/libretro-kronos/pkg-message
new file mode 100644
index 000000000000..6e2b54053bae
--- /dev/null
+++ b/emulators/libretro-kronos/pkg-message
@@ -0,0 +1,34 @@
+[
+{ type: install
+  message: <<EOM
+For Sega Saturn, it is mandatory to install a supported Sega Saturn bios files
+(such as saturn_bios.bin) in ~/.config/retroarch/system or
+~/.config/retroarch/system/kronos.
+
+Kronos is broadly compatible with all major Saturn BIOSes regardless of region,
+although unlike Yabause, a BIOS dump is required.  Due to the aforementioned
+BIOS compatibility, the BIOS guide for the beetle-saturn libretro core may be
+helpful:
+
+https://docs.libretro.com/library/beetle_saturn/
+
+For ST-V, it is necessary to add a compatible stvbios.zip either in
+~/.config/retroarch/system/kronos or in ~/.config/retroarch/system/.  In
+contrast to MAME, Kronos will never search for this bios file in the local path
+of the game.
+
+If the emulator gets stuck on the BIOS screen, the screen remains blank, or
+shows audio track navigation controls, then the BIOS is likely incompatible.
+
+At present, Kronos is only compatible with a subset of the stvbios.zip files
+used by modern MAME versions.  If the stvbios.zip is not present in the proper
+place, but one of the proper Sega Saturn BIOSes is instead available, it will
+try to default to one of those, and in the most optimistic case, merely reach
+the audio CD track navigation controls, but it will not work, since it is not
+the same hardware.
+
+If in doubt, running retroarch with the -v argument may help to acquire more
+diagnostic information.
+EOM
+}
+]



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202206270704.25R74w64097384>