From fe2c34f22943cb1b517446bb307e5bc318b47f8e Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sat, 25 Apr 2015 10:45:14 +0200 Subject: [PATCH] Basilisk II: add recipe for a slightly more recent version ... from 2002. This is the last commit before the video drivers were refactored and the BeOS one was never updated since. In this version we get: * AppleTalk over UDP bridge for BeOS, * Faster optimized FPU emulation works again, * Some other minor fixes. --- .../basiliskii/basiliskii-0.9.1.recipe | 1 + .../basiliskii/basiliskii-1.0.0.recipe | 43 ++++ .../patches/basiliskii-1.0.0.patchset | 199 ++++++++++++++++++ 3 files changed, 243 insertions(+) create mode 100644 app-emulation/basiliskii/basiliskii-1.0.0.recipe create mode 100644 app-emulation/basiliskii/patches/basiliskii-1.0.0.patchset diff --git a/app-emulation/basiliskii/basiliskii-0.9.1.recipe b/app-emulation/basiliskii/basiliskii-0.9.1.recipe index 7053bde6a..955f4fa8d 100644 --- a/app-emulation/basiliskii/basiliskii-0.9.1.recipe +++ b/app-emulation/basiliskii/basiliskii-0.9.1.recipe @@ -13,6 +13,7 @@ ARCHITECTURES="x86_gcc2" SRC_URI="http://basilisk.cebix.net/downloads/BasiliskII_src_31052001.tar.gz" SOURCE_DIR="BasiliskII-0.9" CHECKSUM_SHA256="627b94b3aaf23c374d72c3084c6c648521a50ba459e53eb1c0532ed4e02925d5" +PATCHES="basiliskii-0.9.1.patchset" PROVIDES=" basiliskii = $portVersion diff --git a/app-emulation/basiliskii/basiliskii-1.0.0.recipe b/app-emulation/basiliskii/basiliskii-1.0.0.recipe new file mode 100644 index 000000000..42bc9e0ef --- /dev/null +++ b/app-emulation/basiliskii/basiliskii-1.0.0.recipe @@ -0,0 +1,43 @@ +SUMMARY="68k Macintosh emulator" +DESCRIPTION="Basilisk II is an Open Source 68k Macintosh emulator. That is, it \ +allows you to run 68k MacOS software on your computer, even if you are using a \ +different operating system. However, you still need a copy of MacOS and a \ +Macintosh ROM image to use Basilisk II." +LICENSE="GNU GPL v2" +HOMEPAGE="http://basilisk.cebix.net/" +REVISION="1" +COPYRIGHT="1997-2015 Christian Bauer, Gwenolé Beauschene" + +ARCHITECTURES="x86_gcc2" + +SRC_URI="git+https://github.com/cebix/macemu.git#665c64b4aa673e8e78acf8451cc685a77e87e14b" +PATCHES="basiliskii-1.0.0.patchset" + +PROVIDES=" + basiliskii$secondaryArchSuffix = $portVersion + app:BasiliskII +" + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + makefile_engine +" + +BUILD_PREREQUIRES=" + cmd:gcc$secondaryArchSuffix + cmd:make +" + +BUILD() +{ + cd BasiliskII/src/BeOS + make $jobArgs +} + +INSTALL() +{ + cd BasiliskII/src/BeOS + make install INSTALL_DIR=$appsDir + + addAppDeskbarSymlink $appsDir/BasiliskII "Basilisk II" +} diff --git a/app-emulation/basiliskii/patches/basiliskii-1.0.0.patchset b/app-emulation/basiliskii/patches/basiliskii-1.0.0.patchset new file mode 100644 index 000000000..d7280f1b2 --- /dev/null +++ b/app-emulation/basiliskii/patches/basiliskii-1.0.0.patchset @@ -0,0 +1,199 @@ +From 4907fd049dfa184b8c54a8a2fa293458792da7f9 Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Sat, 25 Apr 2015 09:40:59 +0200 +Subject: Add Haiku support. + +* Haiku is mostly compatible with BeOS, but there are a few minor +changes. + +diff --git a/BasiliskII/src/BeOS/Makefile b/BasiliskII/src/BeOS/Makefile +index 14ae78a..9079334 100644 +--- a/BasiliskII/src/BeOS/Makefile ++++ b/BasiliskII/src/BeOS/Makefile +@@ -33,7 +33,7 @@ TYPE= APP + MACHINE=$(shell uname -m) + ifeq ($(MACHINE), BePC) + CPUSRCS = ../uae_cpu/basilisk_glue.cpp ../uae_cpu/memory.cpp ../uae_cpu/newcpu.cpp \ +- ../uae_cpu/readcpu.cpp ../uae_cpu/fpu/fpu_x86.cpp cpustbl.cpp cpudefs.cpp cpufast.s ++ ../uae_cpu/readcpu.cpp ../uae_cpu/fpu/fpu_uae.cpp cpustbl.cpp cpudefs.cpp cpufast.s + else + # CPUSRCS = ../powerrom_cpu/powerrom_cpu.cpp + CPUSRCS = ../uae_cpu/basilisk_glue.cpp ../uae_cpu/newcpu.cpp \ +@@ -123,7 +123,7 @@ LINKER_FLAGS = + + + ## include the makefile-engine +-include /boot/develop/etc/makefile-engine ++include /boot/system/develop/etc/makefile-engine + + + # special handling of UAE CPU engine +diff --git a/BasiliskII/src/BeOS/ether_beos.cpp b/BasiliskII/src/BeOS/ether_beos.cpp +index 812e09f..3dedbb8 100644 +--- a/BasiliskII/src/BeOS/ether_beos.cpp ++++ b/BasiliskII/src/BeOS/ether_beos.cpp +@@ -31,6 +31,11 @@ + #include + #include + ++#ifdef __HAIKU__ ++#include ++#include ++#endif ++ + #include "cpu_emulation.h" + #include "main.h" + #include "prefs.h" +diff --git a/BasiliskII/src/BeOS/prefs_editor_beos.cpp b/BasiliskII/src/BeOS/prefs_editor_beos.cpp +index 0002d3f..118cdf4 100644 +--- a/BasiliskII/src/BeOS/prefs_editor_beos.cpp ++++ b/BasiliskII/src/BeOS/prefs_editor_beos.cpp +@@ -625,17 +625,15 @@ void PrefsWindow::add_serial_names(BPopUpMenu *menu, uint32 msg) + port->GetDeviceName(i, name); + menu->AddItem(new BMenuItem(name, new BMessage(msg))); + } +- if (sys_info.platform_type == B_BEBOX_PLATFORM) { +- BDirectory dir; +- BEntry entry; +- dir.SetTo("/dev/parallel"); +- if (dir.InitCheck() == B_NO_ERROR) { +- dir.Rewind(); +- while (dir.GetNextEntry(&entry) >= 0) { +- if (!entry.IsDirectory()) { +- entry.GetName(name); +- menu->AddItem(new BMenuItem(name, new BMessage(msg))); +- } ++ BDirectory dir; ++ BEntry entry; ++ dir.SetTo("/dev/parallel"); ++ if (dir.InitCheck() == B_NO_ERROR) { ++ dir.Rewind(); ++ while (dir.GetNextEntry(&entry) >= 0) { ++ if (!entry.IsDirectory()) { ++ entry.GetName(name); ++ menu->AddItem(new BMenuItem(name, new BMessage(msg))); + } + } + } +diff --git a/BasiliskII/src/BeOS/scsi_beos.cpp b/BasiliskII/src/BeOS/scsi_beos.cpp +index badfbd2..cda452f 100644 +--- a/BasiliskII/src/BeOS/scsi_beos.cpp ++++ b/BasiliskII/src/BeOS/scsi_beos.cpp +@@ -23,7 +23,11 @@ + #include + #include + #include ++#ifdef __HAIKU__ ++#include ++#else + #include ++#endif + + #include "sysdeps.h" + #include "main.h" +diff --git a/BasiliskII/src/BeOS/sys_beos.cpp b/BasiliskII/src/BeOS/sys_beos.cpp +index e6b3bf2..fa4441d 100644 +--- a/BasiliskII/src/BeOS/sys_beos.cpp ++++ b/BasiliskII/src/BeOS/sys_beos.cpp +@@ -40,6 +40,11 @@ + #define DEBUG 0 + #include "debug.h" + ++#ifdef __HAIKU__ ++#include ++#define unmount(x) fs_unmount_volume(x, 0) ++#endif ++ + + // File handles are pointers to these structures + struct file_handle { +@@ -284,6 +289,10 @@ void SysAddCDROMPrefs(void) + + void SysAddSerialPrefs(void) + { ++#ifdef __HAIKU__ ++ PrefsAddString("seriala", "serial1"); ++ PrefsAddString("serialb", "serial2"); ++#else + system_info info; + get_system_info(&info); + switch (info.platform_type) { +@@ -301,6 +310,7 @@ void SysAddSerialPrefs(void) + PrefsAddString("serialb", "none"); + break; + } ++#endif + } + + +diff --git a/BasiliskII/src/BeOS/sysdeps.h b/BasiliskII/src/BeOS/sysdeps.h +index 481e166..47d83a1 100644 +--- a/BasiliskII/src/BeOS/sysdeps.h ++++ b/BasiliskII/src/BeOS/sysdeps.h +@@ -63,7 +63,9 @@ typedef off_t loff_t; + + // Networking types + #define PF_INET AF_INET ++#ifndef __HAIKU__ + typedef int socklen_t; ++#endif + + // UAE CPU data types + #define uae_s8 int8 +-- +2.2.2 + + +From 7eac3c5f74a686bbfcb5192305be35b3b156bbac Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Sat, 25 Apr 2015 09:59:55 +0200 +Subject: Stray backslash in source file. + + +diff --git a/BasiliskII/src/BeOS/about_window.cpp b/BasiliskII/src/BeOS/about_window.cpp +index 094acc9..422549c 100644 +--- a/BasiliskII/src/BeOS/about_window.cpp ++++ b/BasiliskII/src/BeOS/about_window.cpp +@@ -1,4 +1,4 @@ +-\/* ++/* + * about_window.cpp - "About" window + * + * Basilisk II (C) 1997-2002 Christian Bauer +-- +2.2.2 + + +From 109e01fdbd8cdd07349ef0f47197e8f289d0d730 Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Sat, 25 Apr 2015 10:13:36 +0200 +Subject: Haiku: Set -fomit-frame-pointer and -fno-PIC + +* This frees some registers and make the x86 assembler code work. +* Restore use of fpu_x86 because of this. + +diff --git a/BasiliskII/src/BeOS/Makefile b/BasiliskII/src/BeOS/Makefile +index 9079334..16cae87 100644 +--- a/BasiliskII/src/BeOS/Makefile ++++ b/BasiliskII/src/BeOS/Makefile +@@ -33,7 +33,7 @@ TYPE= APP + MACHINE=$(shell uname -m) + ifeq ($(MACHINE), BePC) + CPUSRCS = ../uae_cpu/basilisk_glue.cpp ../uae_cpu/memory.cpp ../uae_cpu/newcpu.cpp \ +- ../uae_cpu/readcpu.cpp ../uae_cpu/fpu/fpu_uae.cpp cpustbl.cpp cpudefs.cpp cpufast.s ++ ../uae_cpu/readcpu.cpp ../uae_cpu/fpu/fpu_x86.cpp cpustbl.cpp cpudefs.cpp cpufast.s + else + # CPUSRCS = ../powerrom_cpu/powerrom_cpu.cpp + CPUSRCS = ../uae_cpu/basilisk_glue.cpp ../uae_cpu/newcpu.cpp \ +@@ -116,7 +116,7 @@ SYMBOLS = + DEBUGGER = + + # specify additional compiler flags for all files +-COMPILER_FLAGS = ++COMPILER_FLAGS = -fomit-frame-pointer -fno-PIC + + # specify additional linker flags + LINKER_FLAGS = +-- +2.2.2 +