parent
b06b44d265
commit
203033659e
42
srcpkgs/higan/patches/higan-paths.patch
Normal file
42
srcpkgs/higan/patches/higan-paths.patch
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
From c0495ce121ab0c3eeffdf08614e18bd4f0c455f2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Maxime Gauduin <alucryd@archlinux.org>
|
||||||
|
Date: Wed, 18 Mar 2020 12:19:31 +0100
|
||||||
|
Subject: [PATCH] use more sensible paths
|
||||||
|
|
||||||
|
---
|
||||||
|
higan/target-higan/higan.cpp | 5 ++---
|
||||||
|
icarus/icarus.cpp | 3 +--
|
||||||
|
2 files changed, 3 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git higan/target-higan/higan.cpp higan/target-higan/higan.cpp
|
||||||
|
index 1ce9b991..7d1ae122 100644
|
||||||
|
--- higan/target-higan/higan.cpp
|
||||||
|
+++ higan/target-higan/higan.cpp
|
||||||
|
@@ -43,11 +43,10 @@ auto nall::main(Arguments arguments) -> void {
|
||||||
|
Path::data = document["data"].text();
|
||||||
|
}
|
||||||
|
if(!directory::exists(Path::templates)) {
|
||||||
|
- Path::templates = {Path::userData(), "higan/"};
|
||||||
|
- directory::create(Path::templates);
|
||||||
|
+ Path::templates = {Path::sharedData(), "higan/Templates/"};
|
||||||
|
}
|
||||||
|
if(!directory::exists(Path::data)) {
|
||||||
|
- Path::data = {Path::user(), "higan/"};
|
||||||
|
+ Path::data = {Path::userData(), "higan/Systems/"};
|
||||||
|
directory::create(Path::data);
|
||||||
|
}
|
||||||
|
file::write({Path::settings, "paths.bml"}, string{
|
||||||
|
diff --git a/icarus/icarus.cpp b/icarus/icarus.cpp
|
||||||
|
index 95435f38..a46744e5 100644
|
||||||
|
--- icarus/icarus.cpp
|
||||||
|
+++ icarus/icarus.cpp
|
||||||
|
@@ -8,8 +8,7 @@ auto locate(string name) -> string {
|
||||||
|
string location = {Path::program(), name};
|
||||||
|
if(inode::exists(location)) return location;
|
||||||
|
|
||||||
|
- directory::create({Path::userData(), "icarus/"});
|
||||||
|
- return {Path::userData(), "icarus/", name};
|
||||||
|
+ return {Path::sharedData(), "icarus/", name};
|
||||||
|
}
|
||||||
|
|
||||||
|
auto operator+=(string& lhs, const string& rhs) -> string& {
|
@ -1,24 +1,11 @@
|
|||||||
Description: Makefile fixes
|
--- higan/GNUmakefile 2019-12-21 21:44:28.000000000 +0100
|
||||||
* Remove -march=native build flag.
|
+++ - 2019-12-27 20:24:30.207313870 +0100
|
||||||
- This will cause gcc to use all instruction subsets
|
@@ -18,7 +18,7 @@
|
||||||
available on the build machine, meaning that the program
|
else ifeq ($(platform),macos)
|
||||||
will not work on computers where they are not available.
|
else ifneq ($(filter $(platform),linux bsd),)
|
||||||
- Also the flag is not supported on many architectures
|
options += -Wl,-export-dynamic
|
||||||
(armhf, s390, s390x, powerpc, ia64, ...).
|
- options += -lX11 -lXext
|
||||||
* Linking with dl is also required on kfreebsd.
|
+ options += -lX11 -lXext -ldl
|
||||||
Author: Tobias Hansen <thansen@debian.org>
|
else
|
||||||
|
$(error "unsupported platform")
|
||||||
|
endif
|
||||||
--- higan/GNUmakefile
|
|
||||||
+++ higan/GNUmakefile
|
|
||||||
@@ -26,9 +26,8 @@
|
|
||||||
flags += -fopenmp
|
|
||||||
link += -fopenmp
|
|
||||||
ifeq ($(binary),application)
|
|
||||||
- flags += -march=native
|
|
||||||
link += -Wl,-export-dynamic
|
|
||||||
- link += -lX11 -lXext
|
|
||||||
+ link += -lX11 -lXext -ldl
|
|
||||||
else ifeq ($(binary),library)
|
|
||||||
flags += -fPIC
|
|
||||||
link += -shared
|
|
||||||
|
@ -1,323 +0,0 @@
|
|||||||
From ddf550c1438d60b893a4fc1da333e021ac0e3658 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Shawn Anastasio <shawn@anastas.io>
|
|
||||||
Date: Tue, 23 Jul 2019 15:59:03 -0500
|
|
||||||
Subject: [PATCH] Implement ppc64 ELFv2 support in libco
|
|
||||||
|
|
||||||
The existing ppc implementation in libco only supports
|
|
||||||
the ELFv1 ABI on PowerPC 64 and therefore can't be used on
|
|
||||||
Little Endian systems and Big Endian systems running ELFv2
|
|
||||||
distros.
|
|
||||||
|
|
||||||
This commit introduces a new implementation of the libco
|
|
||||||
API for ppc64 elfv2. It has been tested with bsnes and higan.
|
|
||||||
The original ppc implementation is maintained for non-ELFv2
|
|
||||||
targets.
|
|
||||||
---
|
|
||||||
libco/libco.c | 4 +-
|
|
||||||
libco/ppc64v2.c | 284 ++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
2 files changed, 287 insertions(+), 1 deletion(-)
|
|
||||||
create mode 100644 libco/ppc64v2.c
|
|
||||||
|
|
||||||
diff --git a/libco/libco.c b/libco/libco.c
|
|
||||||
index de11fbe9..f5ee5d0a 100755
|
|
||||||
--- libco/libco.c
|
|
||||||
+++ libco/libco.c
|
|
||||||
@@ -9,6 +9,8 @@
|
|
||||||
#include "amd64.c"
|
|
||||||
#elif defined(__arm__)
|
|
||||||
#include "arm.c"
|
|
||||||
+ #elif defined(__powerpc64__) && defined(_CALL_ELF) && (_CALL_ELF == 2)
|
|
||||||
+ #include "ppc64v2.c"
|
|
||||||
#elif defined(_ARCH_PPC)
|
|
||||||
#include "ppc.c"
|
|
||||||
#elif defined(_WIN32)
|
|
||||||
diff --git a/libco/ppc64v2.c b/libco/ppc64v2.c
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000..8f733de2
|
|
||||||
--- /dev/null
|
|
||||||
+++ libco/ppc64v2.c
|
|
||||||
@@ -0,0 +1,284 @@
|
|
||||||
+/**
|
|
||||||
+ * libco implementation for ppc64 elfv2.
|
|
||||||
+ *
|
|
||||||
+ * Written by Shawn Anastasio.
|
|
||||||
+ * Licensed under the ISC license.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#define LIBCO_C
|
|
||||||
+#include "libco.h"
|
|
||||||
+#include "settings.h"
|
|
||||||
+
|
|
||||||
+#include <stdint.h>
|
|
||||||
+#include <stdlib.h>
|
|
||||||
+#include <assert.h>
|
|
||||||
+
|
|
||||||
+#ifdef __cplusplus
|
|
||||||
+extern "C" {
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+struct ppc64_context {
|
|
||||||
+ // GPRs
|
|
||||||
+ uint64_t gprs[32];
|
|
||||||
+ uint64_t lr;
|
|
||||||
+ uint64_t ccr;
|
|
||||||
+
|
|
||||||
+ // FPRs
|
|
||||||
+ uint64_t fprs[32];
|
|
||||||
+
|
|
||||||
+#ifdef __ALTIVEC__
|
|
||||||
+ // Altivec (VMX)
|
|
||||||
+ uint64_t vmx[24 /* 12 non-volatile * 2 */];
|
|
||||||
+ uint32_t vrsave;
|
|
||||||
+#endif
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static thread_local struct ppc64_context *context_running = 0;
|
|
||||||
+
|
|
||||||
+#define MAX(x, y) ((x) > (y) ? (x) : (y))
|
|
||||||
+#define ALIGN(ptr, x) ( (void *)( (uintptr_t)(ptr) & ~((x)-1) ) )
|
|
||||||
+
|
|
||||||
+#define MIN_STACK 0x10000lu
|
|
||||||
+#define MIN_STACK_FRAME 0x20lu
|
|
||||||
+#define STACK_ALIGN 0x10lu
|
|
||||||
+
|
|
||||||
+void swap_context(struct ppc64_context *read, struct ppc64_context *write);
|
|
||||||
+__asm__(
|
|
||||||
+ ".text\n"
|
|
||||||
+ ".align 4\n"
|
|
||||||
+ ".type swap_context @function\n"
|
|
||||||
+ "swap_context:\n"
|
|
||||||
+ ".cfi_startproc\n"
|
|
||||||
+
|
|
||||||
+ // Dump non-volatile and special GPRs
|
|
||||||
+ "std 1, 8(4)\n"
|
|
||||||
+ "std 2, 16(4)\n"
|
|
||||||
+ "std 12, 96(4)\n"
|
|
||||||
+ "std 13, 104(4)\n"
|
|
||||||
+ "std 14, 112(4)\n"
|
|
||||||
+ "std 15, 120(4)\n"
|
|
||||||
+ "std 16, 128(4)\n"
|
|
||||||
+ "std 17, 136(4)\n"
|
|
||||||
+ "std 18, 144(4)\n"
|
|
||||||
+ "std 19, 152(4)\n"
|
|
||||||
+ "std 20, 160(4)\n"
|
|
||||||
+ "std 21, 168(4)\n"
|
|
||||||
+ "std 22, 176(4)\n"
|
|
||||||
+ "std 23, 184(4)\n"
|
|
||||||
+ "std 24, 192(4)\n"
|
|
||||||
+ "std 25, 200(4)\n"
|
|
||||||
+ "std 26, 208(4)\n"
|
|
||||||
+ "std 27, 216(4)\n"
|
|
||||||
+ "std 28, 224(4)\n"
|
|
||||||
+ "std 29, 232(4)\n"
|
|
||||||
+ "std 30, 240(4)\n"
|
|
||||||
+ "std 31, 248(4)\n"
|
|
||||||
+
|
|
||||||
+ // LR
|
|
||||||
+ "mflr 5\n"
|
|
||||||
+ "std 5, 256(4)\n"
|
|
||||||
+
|
|
||||||
+ // CCR
|
|
||||||
+ "mfcr 5\n"
|
|
||||||
+ "std 5, 264(4)\n"
|
|
||||||
+
|
|
||||||
+ // Dump non-volatile FPRs
|
|
||||||
+ "stfd 14, 384(4)\n"
|
|
||||||
+ "stfd 15, 392(4)\n"
|
|
||||||
+ "stfd 16, 400(4)\n"
|
|
||||||
+ "stfd 17, 408(4)\n"
|
|
||||||
+ "stfd 18, 416(4)\n"
|
|
||||||
+ "stfd 19, 424(4)\n"
|
|
||||||
+ "stfd 20, 432(4)\n"
|
|
||||||
+ "stfd 21, 440(4)\n"
|
|
||||||
+ "stfd 22, 448(4)\n"
|
|
||||||
+ "stfd 23, 456(4)\n"
|
|
||||||
+ "stfd 24, 464(4)\n"
|
|
||||||
+ "stfd 25, 472(4)\n"
|
|
||||||
+ "stfd 26, 480(4)\n"
|
|
||||||
+ "stfd 27, 488(4)\n"
|
|
||||||
+ "stfd 28, 496(4)\n"
|
|
||||||
+ "stfd 29, 504(4)\n"
|
|
||||||
+ "stfd 30, 512(4)\n"
|
|
||||||
+ "stfd 31, 520(4)\n"
|
|
||||||
+
|
|
||||||
+#ifdef __ALTIVEC__
|
|
||||||
+ // Dump non-volatile VMX registers
|
|
||||||
+ "li 5, 528\n"
|
|
||||||
+ "stvxl 20, 4, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "stvxl 21, 4, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "stvxl 22, 4, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "stvxl 23, 4, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "stvxl 24, 4, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "stvxl 25, 4, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "stvxl 26, 4, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "stvxl 27, 4, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "stvxl 28, 4, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "stvxl 29, 4, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "stvxl 30, 4, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "stvxl 31, 4, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+
|
|
||||||
+ // VRSAVE
|
|
||||||
+ "mfvrsave 5\n"
|
|
||||||
+ "stw 5, 736(4)\n"
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+ // Restore GPRs
|
|
||||||
+ "ld 1, 8(3)\n"
|
|
||||||
+ "ld 2, 16(3)\n"
|
|
||||||
+ "ld 12, 96(3)\n"
|
|
||||||
+ "ld 13, 104(3)\n"
|
|
||||||
+ "ld 14, 112(3)\n"
|
|
||||||
+ "ld 15, 120(3)\n"
|
|
||||||
+ "ld 16, 128(3)\n"
|
|
||||||
+ "ld 17, 136(3)\n"
|
|
||||||
+ "ld 18, 144(3)\n"
|
|
||||||
+ "ld 19, 152(3)\n"
|
|
||||||
+ "ld 20, 160(3)\n"
|
|
||||||
+ "ld 21, 168(3)\n"
|
|
||||||
+ "ld 22, 176(3)\n"
|
|
||||||
+ "ld 23, 184(3)\n"
|
|
||||||
+ "ld 24, 192(3)\n"
|
|
||||||
+ "ld 25, 200(3)\n"
|
|
||||||
+ "ld 26, 208(3)\n"
|
|
||||||
+ "ld 27, 216(3)\n"
|
|
||||||
+ "ld 28, 224(3)\n"
|
|
||||||
+ "ld 29, 232(3)\n"
|
|
||||||
+ "ld 30, 240(3)\n"
|
|
||||||
+ "ld 31, 248(3)\n"
|
|
||||||
+
|
|
||||||
+ // Restore LR
|
|
||||||
+ "ld 5, 256(3)\n"
|
|
||||||
+ "mtlr 5\n"
|
|
||||||
+
|
|
||||||
+ // Restore CCR
|
|
||||||
+ "ld 5, 264(3)\n"
|
|
||||||
+ "mtcr 5\n"
|
|
||||||
+
|
|
||||||
+ // Restore FPRs
|
|
||||||
+ "lfd 14, 384(3)\n"
|
|
||||||
+ "lfd 15, 392(3)\n"
|
|
||||||
+ "lfd 16, 400(3)\n"
|
|
||||||
+ "lfd 17, 408(3)\n"
|
|
||||||
+ "lfd 18, 416(3)\n"
|
|
||||||
+ "lfd 19, 424(3)\n"
|
|
||||||
+ "lfd 20, 432(3)\n"
|
|
||||||
+ "lfd 21, 440(3)\n"
|
|
||||||
+ "lfd 22, 448(3)\n"
|
|
||||||
+ "lfd 23, 456(3)\n"
|
|
||||||
+ "lfd 24, 464(3)\n"
|
|
||||||
+ "lfd 25, 472(3)\n"
|
|
||||||
+ "lfd 26, 480(3)\n"
|
|
||||||
+ "lfd 27, 488(3)\n"
|
|
||||||
+ "lfd 28, 496(3)\n"
|
|
||||||
+ "lfd 29, 504(3)\n"
|
|
||||||
+ "lfd 30, 512(3)\n"
|
|
||||||
+ "lfd 31, 520(3)\n"
|
|
||||||
+
|
|
||||||
+#ifdef __ALTIVEC__
|
|
||||||
+ // Restore VMX
|
|
||||||
+ "li 5, 528\n"
|
|
||||||
+ "lvxl 20, 3, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "lvxl 21, 3, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "lvxl 22, 3, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "lvxl 23, 3, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "lvxl 24, 3, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "lvxl 25, 3, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "lvxl 26, 3, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "lvxl 27, 3, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "lvxl 28, 3, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "lvxl 29, 3, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "lvxl 30, 3, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+ "lvxl 31, 3, 5\n"
|
|
||||||
+ "addi 5, 5, 16\n"
|
|
||||||
+
|
|
||||||
+ // VRSAVE
|
|
||||||
+ "lwz 5, 720(3)\n"
|
|
||||||
+ "mtvrsave 5\n"
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+ // Context restored, branch to LR
|
|
||||||
+ "blr\n"
|
|
||||||
+
|
|
||||||
+ ".cfi_endproc\n"
|
|
||||||
+ ".size swap_context, .-swap_context\n"
|
|
||||||
+);
|
|
||||||
+
|
|
||||||
+cothread_t co_active() {
|
|
||||||
+ if (!context_running)
|
|
||||||
+ context_running = (struct ppc64_context *)
|
|
||||||
+ malloc(MIN_STACK + sizeof(struct ppc64_context));
|
|
||||||
+ return (cothread_t)context_running;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+cothread_t co_derive(void *memory, unsigned int size, void (*coentry)(void)) {
|
|
||||||
+ uint8_t *sp;
|
|
||||||
+ struct ppc64_context *context = (struct ppc64_context *)memory;
|
|
||||||
+
|
|
||||||
+ // Save current context into new context to initialize it
|
|
||||||
+ swap_context(context, context);
|
|
||||||
+
|
|
||||||
+ // Align stack
|
|
||||||
+ sp = (uint8_t *)memory + size - STACK_ALIGN;
|
|
||||||
+ sp = (uint8_t *)ALIGN(sp, STACK_ALIGN);
|
|
||||||
+
|
|
||||||
+ // Write 0 for initial backchain
|
|
||||||
+ *(uint64_t *)sp = 0;
|
|
||||||
+
|
|
||||||
+ // Create new frame with backchain
|
|
||||||
+ sp -= MIN_STACK_FRAME;
|
|
||||||
+ *(uint64_t *)sp = (uint64_t)(sp + MIN_STACK_FRAME);
|
|
||||||
+
|
|
||||||
+ // Update context with new stack (r1) and entrypoint (LR, r12)
|
|
||||||
+ context->lr = (uint64_t)coentry;
|
|
||||||
+ context->gprs[12] = (uint64_t)coentry;
|
|
||||||
+ context->gprs[1] = (uint64_t)sp;
|
|
||||||
+
|
|
||||||
+ return (cothread_t)memory;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+cothread_t co_create(unsigned int size, void (*coentry)(void)) {
|
|
||||||
+ size_t total = MAX(size, MIN_STACK) + sizeof(struct ppc64_context);
|
|
||||||
+ void *memory = malloc(total);
|
|
||||||
+ if (!memory)
|
|
||||||
+ return (cothread_t)0;
|
|
||||||
+
|
|
||||||
+ return co_derive(memory, total, coentry);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void co_delete(cothread_t t) {
|
|
||||||
+ free(t);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void co_switch(cothread_t t) {
|
|
||||||
+ struct ppc64_context *old = context_running;
|
|
||||||
+ context_running = (struct ppc64_context *)t;
|
|
||||||
+ swap_context((struct ppc64_context *)t, old);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+#ifdef __cplusplus
|
|
||||||
+}
|
|
||||||
+#endif
|
|
@ -1,16 +0,0 @@
|
|||||||
Description: Use sharedpath() when locating files
|
|
||||||
To find files that are in /usr/share/higan.
|
|
||||||
Author: Tobias Hansen <thansen@debian.org>
|
|
||||||
|
|
||||||
--- higan/target-tomoko/tomoko.cpp
|
|
||||||
+++ higan/target-tomoko/tomoko.cpp
|
|
||||||
@@ -11,6 +11,9 @@
|
|
||||||
location = {Path::config(), "higan/", name};
|
|
||||||
if(inode::exists(location)) return location;
|
|
||||||
|
|
||||||
+ location = {Path::shared(), "higan/", name};
|
|
||||||
+ if(inode::exists(location)) return location;
|
|
||||||
+
|
|
||||||
directory::create({Path::local(), "higan/"});
|
|
||||||
return {Path::local(), "higan/", name};
|
|
||||||
}
|
|
@ -1,65 +1,34 @@
|
|||||||
# Template file for 'higan'
|
# Template file for 'higan'
|
||||||
pkgname=higan
|
pkgname=higan
|
||||||
version=106
|
version=110
|
||||||
revision=1
|
revision=1
|
||||||
wrksrc="higan_v${version}-source"
|
wrksrc="higan_v${version}-source"
|
||||||
build_wrksrc=higan
|
build_wrksrc=higan
|
||||||
build_style=gnu-makefile
|
build_style=gnu-makefile
|
||||||
make_build_args='compiler=${CXX}'
|
make_build_args='compiler=${CXX} platform=linux'
|
||||||
make_install_args="prefix=${DESTDIR}/usr"
|
make_install_args='compiler=${CXX} platform=linux prefix=${DESTDIR}/usr'
|
||||||
hostmakedepends="p7zip pkg-config SDL-devel"
|
hostmakedepends="unzip pkg-config"
|
||||||
makedepends="gtk+-devel gtksourceview2-devel libgomp-devel
|
makedepends="gtk+-devel gtksourceview2-devel libgomp-devel
|
||||||
$(vopt_if sdl SDL-devel)
|
SDL2-devel MesaLib-devel libXv-devel libao-devel
|
||||||
$(vopt_if opengl MesaLib-devel) $(vopt_if xv libXv-devel)
|
alsa-lib-devel libopenal-devel pulseaudio-devel"
|
||||||
$(vopt_if ao libao-devel) $(vopt_if alsa alsa-lib-devel)
|
|
||||||
$(vopt_if openal libopenal-devel) $(vopt_if pulseaudio pulseaudio-devel)"
|
|
||||||
short_desc="Multi-system emulator (SNES/Game Boy/Mega Drive/PC Engine/WonderSwan)"
|
short_desc="Multi-system emulator (SNES/Game Boy/Mega Drive/PC Engine/WonderSwan)"
|
||||||
maintainer="John <johnz@posteo.net>"
|
maintainer="John <johnz@posteo.net>"
|
||||||
license="GPL-3"
|
license="GPL-3.0-or-later, ISC"
|
||||||
homepage="https://byuu.org/emulation/higan/"
|
homepage="https://byuu.org/emulation/higan/"
|
||||||
distfiles="https://download.byuu.org/higan_v${version}-source.7z"
|
distfiles="https://byuu.org/download/higan/higan_v${version}-source.zip"
|
||||||
checksum=f769f2faf2bf091eefa083a8d1849933bf0c9b98ef49813e50c50b35c49379e6
|
checksum=1b70d85454aaae557fd5ba5aaed9add8cb8c939f2b7a07a6d3734f971bb07ab7
|
||||||
|
|
||||||
build_options="icarus pulseaudio alsa oss openal ao sdl xv opengl udev"
|
build_options="icarus"
|
||||||
build_options_default="icarus pulseaudio alsa oss openal ao sdl xv opengl udev"
|
build_options_default="icarus"
|
||||||
desc_option_ao="Enable support for cross-platform audio"
|
|
||||||
desc_option_icarus="Enable the icarus binary"
|
|
||||||
desc_option_openal="Enable support for 3D audio"
|
|
||||||
desc_option_oss="Enable support for OSS"
|
|
||||||
desc_option_udev="Enable support for udev"
|
|
||||||
desc_option_xv="Enable support for Xv"
|
|
||||||
|
|
||||||
disable_module() {
|
|
||||||
echo Disabling: "$1"
|
|
||||||
sed -i \
|
|
||||||
-e "s|$1\b||" \
|
|
||||||
"${wrksrc}"/higan/target-tomoko/GNUmakefile
|
|
||||||
}
|
|
||||||
|
|
||||||
do_configure() {
|
|
||||||
$(vopt_if pulseaudio '' 'disable_module audio.pulseaudio')
|
|
||||||
$(vopt_if pulseaudio '' 'disable_module audio.pulseaudiosimple')
|
|
||||||
$(vopt_if alsa '' 'disable_module audio.alsa')
|
|
||||||
$(vopt_if oss '' 'disable_module audio.oss')
|
|
||||||
$(vopt_if openal '' 'disable_module audio.openal')
|
|
||||||
$(vopt_if ao '' 'disable_module audio.ao')
|
|
||||||
|
|
||||||
$(vopt_if sdl '' 'disable_module video.sdl')
|
|
||||||
$(vopt_if xv '' 'disable_module video.xvideo')
|
|
||||||
$(vopt_if opengl '' 'disable_module video.glx')
|
|
||||||
|
|
||||||
$(vopt_if sdl '' 'disable_module input.sdl')
|
|
||||||
$(vopt_if udev '' 'disable_module input.udev')
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ "$build_option_icarus" ];then
|
if [ "$build_option_icarus" ];then
|
||||||
post_build() {
|
post_build() {
|
||||||
cd $wrksrc/icarus
|
cd $wrksrc/icarus
|
||||||
make ${makejobs} ${make_build_args}
|
make ${makejobs} compiler=${CXX} platform=linux
|
||||||
}
|
}
|
||||||
|
|
||||||
post_install() {
|
post_install() {
|
||||||
cd $wrksrc/icarus
|
cd $wrksrc/icarus
|
||||||
make STRIP=true ${make_install_args} install
|
make STRIP=true compiler=${CXX} platform=linux prefix=${DESTDIR}/usr install
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
site=https://gitlab.com/higan/higan/tags
|
|
||||||
pattern='href="/\Qhigan/higan\E/tags/[^\d\.]*\K[\d\.]*'
|
|
||||||
ignore=107
|
|
Loading…
x
Reference in New Issue
Block a user