mirror of
https://github.com/yann64/haikuports.git
synced 2026-05-05 22:48:55 +02:00
Add recipe for QEmu 2.0.0
* Does not include mmlr work on adding a native UI, uses SDL * Just get things to compile and run for now * Supports Cubieboard, unlike version 1.7.0.
This commit is contained in:
175
app-emulation/qemu/patches/qemu-2.0.0.patchset
Normal file
175
app-emulation/qemu/patches/qemu-2.0.0.patchset
Normal file
@@ -0,0 +1,175 @@
|
|||||||
|
From 28f3a4ce22d729f7de4bd7f50447dc908e49cc23 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Adrien Destugues <pulkomandy@pulkomandy.tk>
|
||||||
|
Date: Sun, 20 Apr 2014 19:50:07 +0200
|
||||||
|
Subject: Get it to compile on Haiku.
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/main-loop.c b/main-loop.c
|
||||||
|
index 8a85493..48a4a74 100644
|
||||||
|
--- a/main-loop.c
|
||||||
|
+++ b/main-loop.c
|
||||||
|
@@ -81,7 +81,9 @@ static int qemu_signal_init(void)
|
||||||
|
*/
|
||||||
|
sigemptyset(&set);
|
||||||
|
sigaddset(&set, SIG_IPI);
|
||||||
|
+#ifndef __HAIKU__
|
||||||
|
sigaddset(&set, SIGIO);
|
||||||
|
+#endif
|
||||||
|
sigaddset(&set, SIGALRM);
|
||||||
|
sigaddset(&set, SIGBUS);
|
||||||
|
pthread_sigmask(SIG_BLOCK, &set, NULL);
|
||||||
|
diff --git a/os-posix.c b/os-posix.c
|
||||||
|
index cb2a7f7..ae5b02c 100644
|
||||||
|
--- a/os-posix.c
|
||||||
|
+++ b/os-posix.c
|
||||||
|
@@ -334,6 +334,9 @@ bool is_daemonized(void)
|
||||||
|
|
||||||
|
int os_mlock(void)
|
||||||
|
{
|
||||||
|
+#ifdef __HAIKU__
|
||||||
|
+ return ENOSYS;
|
||||||
|
+#else
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
ret = mlockall(MCL_CURRENT | MCL_FUTURE);
|
||||||
|
@@ -342,4 +345,5 @@ int os_mlock(void)
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
diff --git a/target-xtensa/xtensa-semi.c b/target-xtensa/xtensa-semi.c
|
||||||
|
index 424253d..20a6a86 100644
|
||||||
|
--- a/target-xtensa/xtensa-semi.c
|
||||||
|
+++ b/target-xtensa/xtensa-semi.c
|
||||||
|
@@ -95,59 +95,53 @@ enum {
|
||||||
|
|
||||||
|
static uint32_t errno_h2g(int host_errno)
|
||||||
|
{
|
||||||
|
- static const uint32_t guest_errno[] = {
|
||||||
|
- [EPERM] = TARGET_EPERM,
|
||||||
|
- [ENOENT] = TARGET_ENOENT,
|
||||||
|
- [ESRCH] = TARGET_ESRCH,
|
||||||
|
- [EINTR] = TARGET_EINTR,
|
||||||
|
- [EIO] = TARGET_EIO,
|
||||||
|
- [ENXIO] = TARGET_ENXIO,
|
||||||
|
- [E2BIG] = TARGET_E2BIG,
|
||||||
|
- [ENOEXEC] = TARGET_ENOEXEC,
|
||||||
|
- [EBADF] = TARGET_EBADF,
|
||||||
|
- [ECHILD] = TARGET_ECHILD,
|
||||||
|
- [EAGAIN] = TARGET_EAGAIN,
|
||||||
|
- [ENOMEM] = TARGET_ENOMEM,
|
||||||
|
- [EACCES] = TARGET_EACCES,
|
||||||
|
- [EFAULT] = TARGET_EFAULT,
|
||||||
|
+ switch (host_errno) {
|
||||||
|
+ case 0: return 0;
|
||||||
|
+ case EPERM: return TARGET_EPERM;
|
||||||
|
+ case ENOENT: return TARGET_ENOENT;
|
||||||
|
+ case ESRCH: return TARGET_ESRCH;
|
||||||
|
+ case EINTR: return TARGET_EINTR;
|
||||||
|
+ case EIO: return TARGET_EIO;
|
||||||
|
+ case ENXIO: return TARGET_ENXIO;
|
||||||
|
+ case E2BIG: return TARGET_E2BIG;
|
||||||
|
+ case ENOEXEC: return TARGET_ENOEXEC;
|
||||||
|
+ case EBADF: return TARGET_EBADF;
|
||||||
|
+ case ECHILD: return TARGET_ECHILD;
|
||||||
|
+ case EAGAIN: return TARGET_EAGAIN;
|
||||||
|
+ case ENOMEM: return TARGET_ENOMEM;
|
||||||
|
+ case EACCES: return TARGET_EACCES;
|
||||||
|
+ case EFAULT: return TARGET_EFAULT;
|
||||||
|
#ifdef ENOTBLK
|
||||||
|
- [ENOTBLK] = TARGET_ENOTBLK,
|
||||||
|
+ case ENOTBLK: return TARGET_ENOTBLK;
|
||||||
|
#endif
|
||||||
|
- [EBUSY] = TARGET_EBUSY,
|
||||||
|
- [EEXIST] = TARGET_EEXIST,
|
||||||
|
- [EXDEV] = TARGET_EXDEV,
|
||||||
|
- [ENODEV] = TARGET_ENODEV,
|
||||||
|
- [ENOTDIR] = TARGET_ENOTDIR,
|
||||||
|
- [EISDIR] = TARGET_EISDIR,
|
||||||
|
- [EINVAL] = TARGET_EINVAL,
|
||||||
|
- [ENFILE] = TARGET_ENFILE,
|
||||||
|
- [EMFILE] = TARGET_EMFILE,
|
||||||
|
- [ENOTTY] = TARGET_ENOTTY,
|
||||||
|
+ case EBUSY: return TARGET_EBUSY;
|
||||||
|
+ case EEXIST: return TARGET_EEXIST;
|
||||||
|
+ case EXDEV: return TARGET_EXDEV;
|
||||||
|
+ case ENODEV: return TARGET_ENODEV;
|
||||||
|
+ case ENOTDIR: return TARGET_ENOTDIR;
|
||||||
|
+ case EISDIR: return TARGET_EISDIR;
|
||||||
|
+ case EINVAL: return TARGET_EINVAL;
|
||||||
|
+ case ENFILE: return TARGET_ENFILE;
|
||||||
|
+ case EMFILE: return TARGET_EMFILE;
|
||||||
|
+ case ENOTTY: return TARGET_ENOTTY;
|
||||||
|
#ifdef ETXTBSY
|
||||||
|
- [ETXTBSY] = TARGET_ETXTBSY,
|
||||||
|
+ case ETXTBSY: return TARGET_ETXTBSY;
|
||||||
|
#endif
|
||||||
|
- [EFBIG] = TARGET_EFBIG,
|
||||||
|
- [ENOSPC] = TARGET_ENOSPC,
|
||||||
|
- [ESPIPE] = TARGET_ESPIPE,
|
||||||
|
- [EROFS] = TARGET_EROFS,
|
||||||
|
- [EMLINK] = TARGET_EMLINK,
|
||||||
|
- [EPIPE] = TARGET_EPIPE,
|
||||||
|
- [EDOM] = TARGET_EDOM,
|
||||||
|
- [ERANGE] = TARGET_ERANGE,
|
||||||
|
- [ENOSYS] = TARGET_ENOSYS,
|
||||||
|
+ case EFBIG: return TARGET_EFBIG;
|
||||||
|
+ case ENOSPC: return TARGET_ENOSPC;
|
||||||
|
+ case ESPIPE: return TARGET_ESPIPE;
|
||||||
|
+ case EROFS: return TARGET_EROFS;
|
||||||
|
+ case EMLINK: return TARGET_EMLINK;
|
||||||
|
+ case EPIPE: return TARGET_EPIPE;
|
||||||
|
+ case EDOM: return TARGET_EDOM;
|
||||||
|
+ case ERANGE: return TARGET_ERANGE;
|
||||||
|
+ case ENOSYS: return TARGET_ENOSYS;
|
||||||
|
#ifdef ELOOP
|
||||||
|
- [ELOOP] = TARGET_ELOOP,
|
||||||
|
+ case ELOOP: return TARGET_ELOOP;
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
- if (host_errno == 0) {
|
||||||
|
- return 0;
|
||||||
|
- } else if (host_errno > 0 && host_errno < ARRAY_SIZE(guest_errno) &&
|
||||||
|
- guest_errno[host_errno]) {
|
||||||
|
- return guest_errno[host_errno];
|
||||||
|
- } else {
|
||||||
|
- return TARGET_EINVAL;
|
||||||
|
- }
|
||||||
|
+ return TARGET_EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HELPER(simcall)(CPUXtensaState *env)
|
||||||
|
diff --git a/util/compatfd.c b/util/compatfd.c
|
||||||
|
index 341ada6..e50416d 100644
|
||||||
|
--- a/util/compatfd.c
|
||||||
|
+++ b/util/compatfd.c
|
||||||
|
@@ -17,7 +17,9 @@
|
||||||
|
#include "qemu/compatfd.h"
|
||||||
|
#include "qemu/thread.h"
|
||||||
|
|
||||||
|
+#ifndef __HAIKU__
|
||||||
|
#include <sys/syscall.h>
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
struct sigfd_compat_info
|
||||||
|
{
|
||||||
|
diff --git a/util/qemu-openpty.c b/util/qemu-openpty.c
|
||||||
|
index 4febfe9..5579646 100644
|
||||||
|
--- a/util/qemu-openpty.c
|
||||||
|
+++ b/util/qemu-openpty.c
|
||||||
|
@@ -35,7 +35,9 @@
|
||||||
|
#include "config-host.h"
|
||||||
|
#include "qemu-common.h"
|
||||||
|
|
||||||
|
-#if defined(__GLIBC__)
|
||||||
|
+#if defined(__HAIKU__)
|
||||||
|
+# include <termios.h>
|
||||||
|
+#elif defined(__GLIBC__)
|
||||||
|
# include <pty.h>
|
||||||
|
#elif defined CONFIG_BSD
|
||||||
|
# include <termios.h>
|
||||||
|
--
|
||||||
|
1.8.3.4
|
||||||
|
|
||||||
106
app-emulation/qemu/qemu-2.0.0.recipe
Normal file
106
app-emulation/qemu/qemu-2.0.0.recipe
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
SUMMARY="QEMU is a generic and open source machine emulator and virtualizer."
|
||||||
|
DESCRIPTION="
|
||||||
|
QEMU is a generic and open source machine emulator and virtualizer.
|
||||||
|
|
||||||
|
QEMU can run OSes and programs made for one machine (e.g. an ARM board) on a \
|
||||||
|
different machine (e.g. your own PC). By using dynamic translation, it \
|
||||||
|
achieves very good performance.
|
||||||
|
"
|
||||||
|
HOMEPAGE="http://wiki.qemu.org/"
|
||||||
|
SRC_URI="http://wiki.qemu-project.org/download/qemu-2.0.0.tar.bz2"
|
||||||
|
CHECKSUM_SIZE="12839647"
|
||||||
|
CHECKSUM_RMD160="ecd05e036431c14930ae2455a032495dd7ebaf85"
|
||||||
|
CHECKSUM_SHA512="8fe2e8faa66251aaea7d6017ee71675d5b05f93f92be7e2ad3e1d02af185b3d6c4069bd83a13fb1e35a3e8947aff76f22446b395f97ac18b6f7a99744202e3fa"
|
||||||
|
COPYRIGHT="2003-2014 Fabrice Bellard"
|
||||||
|
LICENSE="GNU GPL v2"
|
||||||
|
REVISION="1"
|
||||||
|
ARCHITECTURES="x86 x86_64"
|
||||||
|
if [ $effectiveTargetArchitecture != x86_gcc2 ]; then
|
||||||
|
# x86_gcc2 is fine as primary target architecture as long as we're building
|
||||||
|
# for a different secondary architecture.
|
||||||
|
ARCHITECTURES="$ARCHITECTURES x86_gcc2"
|
||||||
|
fi
|
||||||
|
SECONDARY_ARCHITECTURES="x86"
|
||||||
|
|
||||||
|
PROVIDES="
|
||||||
|
qemu$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_img$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_io$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_aarch64$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_alpha$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_arm$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_cris$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_i386$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_lm32$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_m68k$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_microblaze$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_microblazeel$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_mips$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_mips64$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_mips64el$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_mipsel$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_moxie$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_or32$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_ppc$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_ppc64$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_ppcemb$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_s390x$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_sh4$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_sh4eb$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_sparc$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_sparc64$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_unicore32$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_x86_64$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_xtensa$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:qemu_system_xtensaeb$secondaryArchSuffix = $portVersion
|
||||||
|
"
|
||||||
|
|
||||||
|
PATCHES="qemu-$portVersion.patchset"
|
||||||
|
|
||||||
|
REQUIRES="
|
||||||
|
haiku$secondaryArchSuffix >= $haikuVersion
|
||||||
|
lib:libz$secondaryArchSuffix
|
||||||
|
lib:libintl$secondaryArchSuffix
|
||||||
|
lib:libstdc++$secondaryArchSuffix
|
||||||
|
lib:libsdl$secondaryArchSuffix
|
||||||
|
glib2$secondaryArchSuffix >= 2.12
|
||||||
|
pixman$secondaryArchSuffix
|
||||||
|
"
|
||||||
|
|
||||||
|
BUILD_REQUIRES="
|
||||||
|
devel:libz$secondaryArchSuffix
|
||||||
|
devel:libfdt$secondaryArchSuffix
|
||||||
|
devel:libsdl$secondaryArchSuffix
|
||||||
|
glib2${secondaryArchSuffix}_devel >= 2.12
|
||||||
|
pixman${secondaryArchSuffix}_devel
|
||||||
|
"
|
||||||
|
|
||||||
|
BUILD_PREREQUIRES="
|
||||||
|
haiku${secondaryArchSuffix}_devel >= $haikuVersion
|
||||||
|
cmd:awk
|
||||||
|
cmd:gcc$secondaryArchSuffix
|
||||||
|
cmd:ld$secondaryArchSuffix
|
||||||
|
cmd:make
|
||||||
|
cmd:find
|
||||||
|
cmd:pkg_config$secondaryArchSuffix
|
||||||
|
cmd:pod2man
|
||||||
|
cmd:python
|
||||||
|
"
|
||||||
|
|
||||||
|
BUILD()
|
||||||
|
{
|
||||||
|
runConfigure --omit-buildspec ./configure
|
||||||
|
make $jobArgs LDFLAGS=-lbsd
|
||||||
|
}
|
||||||
|
|
||||||
|
INSTALL()
|
||||||
|
{
|
||||||
|
make install
|
||||||
|
|
||||||
|
# provide convenience symlink to just "qemu"
|
||||||
|
ln -s qemu-system-i386 $binDir/qemu
|
||||||
|
|
||||||
|
# Remove empty config file.
|
||||||
|
rm $settingsDir/qemu/target-x86_64.conf
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user