kanjitalk755 / macemu Goto Github PK
View Code? Open in Web Editor NEWThis project forked from cebix/macemu
Basilisk II and SheepShaver Macintosh emulators
This project forked from cebix/macemu
Basilisk II and SheepShaver Macintosh emulators
Yesterday I built both SheepShaver and BasiliskII with Xcode 12.4 in macOS 10.15.7. In BasiliskII the colors appear completely messed up when the Monitors control panel is set to thousands of colors. The issue is not in other color settings, it is only in BasiliskII, not in SheepShaver, and it is not in my 22 September 2020 BasiliskII build.
It would be useful to have a prefs parameter to select which SDL renderer to use, for when it is necessary to override it because the default option has problems.
Curiously, SDL/prefs_sdl.cpp
already has such a parameter, it just isn't hooked up to anything.
That part of DavidLudwig@1eb824a was perhaps removed but not replaced with anything.
My system config is this:
SOFTWARE:
HARDWARE:
PROBLEM:
I recently noticed that the state of my caps lock key is being ignored when running SheepShaver on Linux. On further investigation, I discovered that the caps lock key had to be physically held down to get all caps, and as soon as I released it typing returned to lower case, effectively turning Caps Lock into an extra Shift key.
INVESTIGATION:
With this in mind, I took another look at the keyboard event handling in handle_events()
in video_sdl2.cpp
and noticed that the version for windows handles key up and key down caps lock events differently. To see what would happen, I changed the code that handles key up and key down events so that it always handles caps lock the way it does for windows.
This fixed the problem and I now have the caps lock key working as expected.
SOLUTIONS:
So it looks like SheepShaver needs to either have the Linux build handle caps lock press/release events the way they are on windows. Or... Possibly refine the keyboard options to let the user choose how caps lock should be handled?
I've been looking for documentation on changing the keyboard type code in the SheepShaver prefs file in case there's an existing workaround that I'm just not aware of. But I'm not having any luck with that so far.
Without SDL2 supporting metal back end, BII doesn't work in latest Mac OS X. Thanks to Apple's opinionated decision to discontinue OpenGL.
Do you have plan to merge back SDL2 features back to upstream repo? I'm interested in minimal code change which only merges SDL2 and its autoconf build process to upstream.
While testing some other changes in SheepShaver on Linux, I ran into this situation:
SheepShaver is hung not responding to input or redrawing.
The main thread is in
(gdb) bt
#0 __lll_lock_wait (futex=futex@entry=0xaaaab1b477e0 <wakeup_time_lock>, private=0) at lowlevellock.c:52
#1 0x0000ffff823a4b98 in __GI___pthread_mutex_lock (mutex=mutex@entry=0xaaaab1b477e0 <wakeup_time_lock>) at pthread_mutex_lock.c:80
#2 0x0000aaaab1a93390 in RmvTime(unsigned int) (tm=271287612) at ../timer.cpp:379
#3 0x0000aaaab1a90674 in EmulOp(M68kRegisters*, uint32, int) (r=r@entry=0xffffc2531490, pc=<optimized out>, selector=<optimized out>) at ../emul_op.cpp:220
#4 0x0000aaaab1ad9e38 in sheepshaver_cpu::execute_emul_op(unsigned int) (this=0xaaaae9fef360, emul_op=<optimized out>) at ../kpx_cpu/src/cpu/ppc/ppc-cpu.hpp:110
#5 0x0000000020a12068 in ()
#6 0x0000aaaab1accc30 in basic_dyngen::execute(unsigned char*) (this=0xaaaaea0efbb0, this=0xaaaaea0efbb0, entry_point=<optimized out>)
at ../kpx_cpu/src/cpu/jit/basic-dyngen.hpp:293
#7 powerpc_cpu::execute(unsigned int) (this=0xaaaae9fef360, entry=540092988) at ../kpx_cpu/src/cpu/ppc/ppc-cpu.cpp:594
#8 0x0000aaaab1accc30 in basic_dyngen::execute(unsigned char*) (this=0xaaaab1be8c30, this=0xaaaab1be8c30, entry_point=<optimized out>)
at ../kpx_cpu/src/cpu/jit/basic-dyngen.hpp:293
#9 powerpc_cpu::execute(unsigned int) (this=0xaaaab1ae83e0, entry=3929737344) at ../kpx_cpu/src/cpu/ppc/ppc-cpu.cpp:594
#10 0x0000aaaaea0efbb0 in ()
#3 0x0000aaaab1a90674 in EmulOp (r=r@entry=0xffffc2531490, pc=<optimized out>, selector=<optimized out>) at ../emul_op.cpp:220
220 r->d[0] = RmvTime(r->a[0]);
(gdb) list
215
216 case OP_INSTIME: // InsTime() replacement
217 r->d[0] = InsTime(r->a[0], r->d[1]);
218 break;
219 case OP_RMVTIME: // RmvTime() replacement
220 r->d[0] = RmvTime(r->a[0]);
221 break;
222 case OP_PRIMETIME: // PrimeTime() replacement
223 r->d[0] = PrimeTime(r->a[0], r->d[0]);
224 break;
#2 0x0000aaaab1a93390 in RmvTime (tm=271287612) at ../timer.cpp:379
379 pthread_mutex_lock(&wakeup_time_lock);
(gdb) list
374 semaphore_wait(wakeup_time_sem);
375 thread_suspend(timer_thread);
376 #endif
377 #if PRECISE_TIMING_POSIX
378 timer_thread_suspend();
379 pthread_mutex_lock(&wakeup_time_lock);
380 #endif
381 if (ReadMacInt16(tm + qType) & 0x8000) {
382
383 // Yes, make task inactive and remove it from the Time Manager queue
i.e. the main thread has run RmvTime
which has just suspended the timer thread and is now waiting on wakeup_time_lock
.
Meanwhile in the timer thread
(gdb) thread 16
[Switching to thread 16 (Thread 0xffff227fbe60 (LWP 15700))]
#0 0x0000ffff810f944c in __GI___sigsuspend (set=0xaaaab1b47848 <suspend_handler_mask>) at ../sysdeps/unix/sysv/linux/sigsuspend.c:26
26 ../sysdeps/unix/sysv/linux/sigsuspend.c: No such file or directory.
(gdb) bt
#0 0x0000ffff810f944c in __GI___sigsuspend (set=0xaaaab1b47848 <suspend_handler_mask>) at ../sysdeps/unix/sysv/linux/sigsuspend.c:26
#1 0x0000ffff824105b8 in <signal handler called> ()
#2 0x0000aaaab1a92f78 in timer_func(void*) (arg=<optimized out>) at ../timer.cpp:593
#3 0x0000ffff823a24fc in start_thread (arg=0xffffc2531a9f) at pthread_create.c:477
#4 0x0000ffff811960cc in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:78
(gdb) up
#1 <signal handler called>
(gdb) up
#2 0x0000aaaab1a92f78 in timer_func (arg=<optimized out>) at ../timer.cpp:593
593 wakeup_time = wakeup_time_max;
(gdb) list
588 timer_current_time(system_time);
589 if (timer_cmp_time(wakeup_time, system_time) < 0) {
590
591 // Timer expired, trigger interrupt
592 pthread_mutex_lock(&wakeup_time_lock);
593 wakeup_time = wakeup_time_max;
594 pthread_mutex_unlock(&wakeup_time_lock);
595 SetInterruptFlag(INTFLAG_TIMER);
596 TriggerInterrupt();
597 }
The timer thread is in the middle of the critical section on wakeup_time_lock
but it has received the suspend from the main thread's timer_thread_suspend()
and is now suspended so it is never going to release the lock.
A deadlock.
Building fails on Mac OS X with GTK present.
main_unix.cpp:136:10: fatal error: 'X11/Xlib.h' file not found
#include <X11/Xlib.h>
^~~~~~~~~~~~
2 warnings and 1 error generated.
make: *** [obj/main_unix.o] Error 1
GTK was detected by autotools and the GTK GUI was enabled automatically, but the GTK it found is Quartz-based, not X11 based; the system does not have X11 by default.
SheepShaver on Windows crashes on inbound packet when the Ethernet driver is not loaded on the Mac OS side, such as during boot or after it is unloaded due to a configuration change.
(new world ROM)
Illegal instruction at 40810000, opcode = 4cdf1808
(old world ROM)
Illegal instruction at 40810000, opcode = 02020002
When a frame inbound to the emulated Mac is being handled, the functions provided in ether.h
call vectors that are set up when the stream module is loaded on the Mac side. If the module is not loaded, those vectors are uninitialized and it leads to this crash.
For all platforms except Windows, the ether_*.cpp
implementations check ether_driver_opened
provided by ether.h
before processing inbound packets to avoid this.
In the latest code, if I launch SheepShaver for Windows with a prefs file that has "keycodes true" but no keycodefile listed, a warning appears:
Cannot open keycode translation file BasiliskII_keycodes (No such file or directory).
Should this appear at all? And shouldn't it say SheepShaver_keycodes, now that the file has changed its name?
The old game like Lemming requires 256 color in emulated monitor. I changed ~/.basilisk_ii_prefs
configuration file:
...
displaycolordepth 8
...
The app hangs. 256 color supports in SDL1.2
Hi,
Sheepshaver and Basilisk for Windows support networking through a bridged/shared tap device when the (openvpn) tap device is installed.
The tap device can be selected in the GUI network tab. This sets ether to tap and finds the etherguid automatically. However, I have two tap devices bridged with my default ethernet connection. I can only select one and the same tap device in the GUI.
It would be nice if Basilisk/SheepShaver would list all tap devices available and add the appropriate etherguid to the prefs. That way two Basilisk/SheepShaver instances could be networked over the bridge. Assuming they both use a different tap device ;-)
EDIT: I retract this request, it seems this functionality is already available ;-) It was just my 2nd tap device installation that was faulty.
Best,
Howard
I noticed you are quite a few commits ahead of the main fork of this project, and that the main project is in a poor state of maintenance. I'm trying to set this up as a more conventional open-source project at https://github.com/emaculation/BasiliskII
Can I help integrate your work into that repo?
I consistently get a system error "Stack collision with heap" during System 7.5.5 startup in SheepShaver.
Mac OS 8.1, 8.5.1, 8.6, and 9.0.4 work fine.
System 7.5.5 works fine with SheepShaver from cebix/macemu code.
In the course of working through what is necessary to build BasiliskII and SheepShaver with GTK prefs app in mingw32, when dealing with the Windows git working copy's placeholder files for symlinks to properly do make links
, I found that some of the files present were not placeholder files at all but were already existing source files.
The files:
src/CrossPlatform/sigsegv.cpp
src/Unix/Darwin/lowmem.cpp
are on SheepShaver/Makefile
's list of files to symlink from BasiliskII
to SheepShaver
in make links
, as well as already present as a checked in file in SheepShaver
.
These should presumably be removed from the list in make links
, or else if the checked in changes in SheepShaver
are unwanted they should be removed from SheepShaver
and symlinks to BasiliskII
checked in in place for the platforms that do not ordinarily need make links
.
Hi,
Great work, what you're doing!
I have an issue with both Ronald's and your version 2.4 of Sheepshaver: when you open the Scrapbook from the Apple-menu, and click the right-arrow to move to the second item, Sheepshaver crashes.
(I'm running Sheepshaver on an iMac, HFS+ 2TB SSD, 32GB RAM and macOS High Sierra 10.13.4)
On my mbp, the tapping on the trackpad is not very well detected on the emu side...
here is a changed adb.cpp using a circular buffer to memorize the mouse button actions
as attachment.
It works quite good on sheepshaver with os9.0.4.
On basilisk and os8.1 selecting an entry in a menu is not very nicely detected. The culprit could be the os8.1 as on os9.0.4 it is ok and every other 'tapping as clicking' is detected
P.S. I need to use an old Xcode 10.1 to have a good binary. With Xcode 11.3 I got some troubles : ie acrobat 4.05 can not open correctly its read-me.pdf on sheepshaver.
Olivier
adb.cpp.txt
As of ffee1eb, support for passing through guest gamma settings was added via SDL_SetWindowGammaRamp. I very much like the additional feature and support for guest OS controls; however, it can cause noticeable display flickering when alternating between SheepShaver and other applications, especially in windowed mode. I found screen recordings don't capture the change but recorded a brief demonstration with an external camera:
Strangely, SDL's wiki states this is intended behavior:
Despite the name and signature, this method sets the gamma ramp of the entire display, not an individual window.
If anybody else is experiencing this, I'm wondering about a couple options:
Ideally, an SDL function to apply gamma settings to the window. I'd guess displays can't do this in hardware, so it'd have to be a software remedy, but it may prove too difficult or computationally intensive to be practical. I haven't found such an API in SDL yet.
Adjusting the guest OS gamma level. I don't see any gamma controls in the native Monitor settings and will search for a utility on Macintosh Garden, but it may be functionality to implement in Sheepshaver since it provides the virtual display.
Perhaps an option to disable the gamma passthrough, at least in window mode. I don't think it'll be noticeable in fullscreen to anyone but do worry about it being potentially distracting when using windowed mode on some displays.
When running Basilisk from 7ad9ab0 on a stock Debian 10 i686 system, I get a segfault right at launch, within the gtk_main()
call for the settings GUI.
Thread 1 "BasiliskII" received signal SIGSEGV, Segmentation fault.
0xb7f9e756 in __GI___pthread_mutex_lock (mutex=0x0)
at ../nptl/pthread_mutex_lock.c:67
67 ../nptl/pthread_mutex_lock.c: No such file or directory.
(gdb) bt
#0 0xb7f9e756 in __GI___pthread_mutex_lock (mutex=0x0)
at ../nptl/pthread_mutex_lock.c:67
#1 0xb6a7613a in () at /lib/i386-linux-gnu/libX11.so.6
#2 0xb6a90d39 in XrmQGetResource () at /lib/i386-linux-gnu/libX11.so.6
#3 0xb6a6cc2d in XGetDefault () at /lib/i386-linux-gnu/libX11.so.6
#4 0xb77a58de in () at /lib/i386-linux-gnu/libcairo.so.2
... snip ....
#61 0xb78a18c5 in () at /lib/i386-linux-gnu/libgdk-x11-2.0.so.0
#62 0xb7310e65 in g_main_context_dispatch ()
at /lib/i386-linux-gnu/libglib-2.0.so.0
#63 0xb7311269 in () at /lib/i386-linux-gnu/libglib-2.0.so.0
#64 0xb7311609 in g_main_loop_run () at /lib/i386-linux-gnu/libglib-2.0.so.0
#65 0xb7a6f675 in gtk_main () at /lib/i386-linux-gnu/libgtk-x11-2.0.so.0
#66 0x780b861d in PrefsEditor() () at prefs_editor_gtk.cpp:544
#67 0xb7efccb0 in () at /lib/i386-linux-gnu/libSDL2-2.0.so.0
(gdb)
Rearranging main_unix.cpp
's main()
a bit, moving the #ifdef USE_SDL
section containing the SDL_Init()
call to after PrefsEditor()
is done, makes this problem go away.
While testing a new SheepShaver for macOS build, I noticed a new(?) line "swap_opt_cmd false" in the prefs file.
What is it?
configure
is mangled in the case where SDL is not presentchecking for sdl2-config... no
./configure: line 5933: you: command not found
./configure: line 5947: --cflags: command not found
./configure: line 5949: --static-libs: command not found
autogen.sh
is run, autoconf warns about finding AC_SUBST
within a parameter that should not have side effects. Sure enough, the -fno-strict-aliasing
cache check has a side-effecting macro AC_SUBST
for setting -fno-strict-aliasing
in SLIRP_CFLAGS
, but it is inside of the cache miss case where there need to not be side-effecting macros because those effects won't be cached. In the case where configure
remembers from a previous run that -fno-strict-aliasing
is supported, it will not be set in SLIRP_CFLAGS
again.BasiliskII now does build fine and runs fine on my M1 Mac.
But after notarizing the way I did so far, I cannot launch the notarized BasiliskII:
Crashed Thread: 0
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Reason: DYLD, [0x5] Code Signature
Application Specific Information:
dyld: launch, loading dependent libraries
Dyld Error Message:
Library not loaded: /opt/homebrew/*/libgmp.10.dylib
Referenced from: /Users/USER/*/BasiliskII.app/Contents/MacOS/BasiliskII
Reason: no suitable image found. Did find:
/opt/homebrew/*/libgmp.10.dylib: code signature in (/opt/homebrew/*/libgmp.10.dylib) not valid for use in process using Library Validation: mapped file has no Team ID and is not a platform binary (signed with custom identity or adhoc?)
/opt/homebrew/*/libgmp.10.dylib: stat() failed with errno=1
Binary Images:
0x1042c8000 - 0x104363fff +com.emaculation.basiliskii (Basilisk II 1.0, SDL2 port - 0) <CC3DCDCC-5B29-303E-8914-F9D2C81E43C9> /Users/USER/*/BasiliskII.app/Contents/MacOS/BasiliskII
0x104534000 - 0x1045b3fff dyld (852) <CF624584-51D6-329D-91C5-6BEDFADFB2D2> /usr/lib/dyld
If I notarize while disabling library validation in order for the app to be able to use third-party frameworks outside the bundle, the resulting BasiliskII app runs fine again.
Would this mean that BasiliskII will not run on a machine that does not have homebrew installed?
If that is so, this build is not suitable for distribution.
A weird issue with my latest (31 January 2021) BasiliskII build.
In the macOS menu bar the application menu is named as the application Bundle identifier instead of the application name.
Using the Basilisk configuration GUI in Linux, the keycodefile
line(s) are doubled and accumulate, causing size of the prefs file (and launch time) to increase over time.
This appears to be the combined effect of two problems:
common_prefs_items
and platform_prefs_items
for Unix, so they get output to the prefs file twice:keycodes
keycodefile
mousewheelmode
mousewheellines
common_prefs_items
entries for all of these items but keycodes
are missing a value for the multiple
field so the description falls into multiple
, making multiple
true. This setting only has an effect for string prefs, so just keycodefile
; its effect is to preserve all the lines previously in the prefs file.The current build is affected by freezing (with black screen and pinwheel) when launched in fullscreen mode. The problem has been detected in macOS Mojave 10.14.5 through to Catalina 10.15 on various models of iMac, MacBook Pro and Mac Mini (and across AMD, Nvidia and Intel graphics).
More information is available here:
https://www.emaculation.com/forum/viewtopic.php?f=20&t=10392&start=25
The freezing occurs when the graphics setting is 'dga', regardless of the specific resolution.
I don't think there's anything there that should break in this version, and it does two things: it re-enables System 6 support in SDL2 BII, and it incorporates Paul's Mini vMac display handling, which unbinds the display from the emulator memory, fixing a few BII performance issues related to non-standard display resolutions.
I'm having a problem related to #28, but I'm not sure if it should be under that issue or a new one. So I'm doing both. Feel free to delete whichever one you feel is best.
My system config is this:
SOFTWARE:
HARDWARE:
As you can see above, I'm using a keyboard made for Macs on my Linux system. I'm trying to get my SheepShaver Mac to use the correct command and option keys on my Mac keyboard.
Other builds I've been running previously (from vasi, as posted on the e-maculation forums) have swapped the command and option keys and also would only respond to the left command and option keys, ignoring the right-hand command and option keys.
I ran across issue #28 while searching for a solution, and downloaded a snapshot to see if your SheepShaver was any better. I looked at the code in video_sdl2.cpp and found the places where the keycodes were being swapped unless the __APPLE__
macro is defined.
Since swapping those keys isn't appropriate for the Mac keyboard I'm using, I commented out the #ifdef __APPLE__
lines and their related #else
blocks, so that just the lines of code that set the keycodes correctly and correctly sets the opt_down
and cmd_down
variables remained. I also unswapped the command and option keycodes in the "sdl x11" section of the "keycodes" file.
This mostly worked!
But there is an odd bug that I cant' figure out so far: when I press a command-key combination it seems to be sending the regular keypress first and then immediately follows it with the correct command-key combo that I pressed. For Example:
The order that these key events happens in can be verified like this:
Like i said earlier, I don't know if this should be under issue #28 or in its own issue.
Also, I'm not sure whether it should be a bug or a feature request to not swap the command and option keys when a Mac keyboard is being used regardless of whether the system itself is a Mac.
Hi @kanjitalk755 I just want to give you a huge thanks -- I have built both Basilisk II and SheepShaver on MacOS as 64-bit builds and they run significantly better than some older builds I have. 😄
I'm not sure what your process for debugging is, but I am more than happy to send you information if you give me some pointers to the best method (lldb
core dump?)
I reported an issue on the Emaculation forums where the SDL2 builds of SheepShaver are causing some odd behavior with jumping title bars when launching in full screen mode. I was told that this is an inherent issue for SDL2 and there is currently no known work around.
I was wondering if there is an option, perhaps a prefix for the make command, that will allow an SDL1 build of SheepShaver from current source? Or is that just not possible given the overall advances in the codebase?
Hi,
I just compiled SheepShaver for Windows using msys2 32 bit.
Initial testing shows some issues with the build. I use a new world rom.
-I cannot boot from CD image or real CD.
-I have no sound in Mac OS 9.0 or 8.6.
8.6 has a long pause during boot (checking sound hardware?) and hangs when selecting alert sounds.
In Mac OS 9.0 the sound extension doesn't show a version number and opening the sound control panel shows an error of type -199. SheepShaver then crashes.
Best,
Howard
/slirp/version:1:1: Unknown type name 'qemu'
Hello!
I posted over on a forum thread at emaculation about building BasiliskII on a linux aarch64 machine.
I had to update the automake config.guess
and config.sub
files in order to properly run the ./configure
script, you can find my changes here. Once I ran the ./configure
script (with these flags: --enable-sdl-video --enable-sdl-audio --disable-vosf --enable-jit-compiler=no
), I am able to build successfully. However, upon lauching the BasiliskII binary, I get the error ERROR: Not enough free memory.
no matter how much memory I have available.
I did some digging and the error seems to come from line 645 in src/Unix/main_unix.cpp. There is a failed call to vm_acquire_mac. I put the function definition below:
// NOTE: VM_MAP_32BIT is only used when compiling a 64-bit JIT on specific platforms
void *vm_acquire_mac(size_t size)
{
return vm_acquire(size, VM_MAP_DEFAULT | VM_MAP_32BIT);
}
Below is the output of running uname -a on my machine:
Linux [HOSTNAME REDACTED] 5.8.14-1-MANJARO-ARM #1 SMP Wed Oct 7 09:18:37 CEST 2020 aarch64 GNU/Linux
Does anybody have any leads on how to fix this?
When SheepShaver is launched fullscreen, the window title bar will appear for a split second. Confusingly the title is "Basilisk II".
In window mode and when using Control-Return to switch from window mode to full screen mode, the title in the title bar is correctly "SheepShaver".
I am on 64-bit Ubuntu 18.10, trying to build SheepShaver against SDL 2. Building a 64-bit version is successful, but the emulator segfaults on startup. Building a 32-bit version fails because of an error related to pthreads
.
If I try to built a 32-bit version, I get the following output from autogen.sh
:
./autogen.sh --host=i686-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
+ Running aclocal: done.
+ Running autoheader: done.
+ Running autoconf: done.
+ Running 'configure --host=i686-linux-gnu CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32':
checking build system type... x86_64-unknown-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for i686-linux-gnu-gcc... no
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for i686-linux-gnu-g++... no
checking for i686-linux-gnu-c++... no
checking for i686-linux-gnu-gpp... no
checking for i686-linux-gnu-aCC... no
checking for i686-linux-gnu-CC... no
checking for i686-linux-gnu-cxx... no
checking for i686-linux-gnu-cc++... no
checking for i686-linux-gnu-cl.exe... no
checking for i686-linux-gnu-FCC... no
checking for i686-linux-gnu-KCC... no
checking for i686-linux-gnu-RCC... no
checking for i686-linux-gnu-xlC_r... no
checking for i686-linux-gnu-xlC... no
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking whether make sets $(MAKE)... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for file... /usr/bin/file
checking for perl... /usr/bin/perl
checking for PowerPC target CPU... no
checking for mon... no
configure: WARNING: Could not find mon, ignoring --with-mon.
checking for sem_init in -lposix4... no
checking for cos in -lm... yes
checking for sdl2-config... /usr/bin/sdl2-config
checking for pthread_create in -lpthread... no
checking for pthread_create in -lc_r... no
checking for pthread_create in -lPTL... no
configure: error: You need pthreads to run SheepShaver.
However, I have a 32-bit version of libc6-dev
installed that should include libpthread
:
$ ls -l /usr/lib/i386-linux-gnu | grep pthread
-rw-r--r-- 1 root root 5110126 Aug 23 21:52 libpthread.a
lrwxrwxrwx 1 root root 35 Aug 23 21:52 libpthread.so -> /lib/i386-linux-gnu/libpthread.so.0
If, on the other hand, I build a regular (64-bit) version, I can build SheepShaver just fine, with the following output from autogen.sh
:
$ ./autogen.sh
+ Running aclocal: done.
+ Running autoheader: done.
+ Running autoconf: done.
+ Running 'configure ':
** If you wish to pass arguments to ./configure, please
** specify them on the command line.
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking whether make sets $(MAKE)... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for file... /usr/bin/file
checking for perl... /usr/bin/perl
checking for PowerPC target CPU... no
checking for mon... no
configure: WARNING: Could not find mon, ignoring --with-mon.
checking for sem_init in -lposix4... no
checking for cos in -lm... yes
checking for sdl2-config... /usr/bin/sdl2-config
checking for pthread_create in -lpthread... yes
checking for pthread_cancel... yes
checking for pthread_cond_init... yes
checking for pthread_testcancel... yes
checking for pthread_mutexattr_setprotocol... yes
checking for pthread_mutexattr_settype... yes
checking for pthread_mutexattr_setpshared... yes
checking for sem_init... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for pkg-config... (cached) /usr/bin/pkg-config
checking pkg-config is at least version 0.7... yes
checking for GTK+ - version >= 1.3.15... yes (version 2.24.32)
checking for esd-config... no
checking for ESD - version >= 0.2.8... no
*** The esd-config script installed by ESD could not be found
*** If ESD was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the ESD_CONFIG environment variable to the
*** full path to esd-config.
configure: WARNING: Could not find ESD, disabling ESD support.
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking for ANSI C header files... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking stdint.h usability... yes
checking stdint.h presence... yes
checking for stdint.h... yes
checking mach/vm_map.h usability... no
checking mach/vm_map.h presence... no
checking for mach/vm_map.h... no
checking mach/mach_init.h usability... no
checking mach/mach_init.h presence... no
checking for mach/mach_init.h... no
checking sys/mman.h usability... yes
checking sys/mman.h presence... yes
checking for sys/mman.h... yes
checking unistd.h usability... yes
checking unistd.h presence... yes
checking for unistd.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking byteswap.h usability... yes
checking byteswap.h presence... yes
checking for byteswap.h... yes
checking dirent.h usability... yes
checking dirent.h presence... yes
checking for dirent.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/ioctl.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking sys/filio.h usability... no
checking sys/filio.h presence... no
checking for sys/filio.h... no
checking sys/bitypes.h usability... yes
checking sys/bitypes.h presence... yes
checking for sys/bitypes.h... yes
checking for sys/wait.h... (cached) yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/poll.h usability... yes
checking sys/poll.h presence... yes
checking for sys/poll.h... yes
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking for netinet/in.h... yes
checking for linux/if.h... yes
checking for linux/if_tun.h... yes
checking for net/if.h... yes
checking for net/if_tun.h... no
checking AvailabilityMacros.h usability... no
checking AvailabilityMacros.h presence... no
checking for AvailabilityMacros.h... no
checking IOKit/storage/IOBlockStorageDevice.h usability... no
checking IOKit/storage/IOBlockStorageDevice.h presence... no
checking for IOKit/storage/IOBlockStorageDevice.h... no
checking fenv.h usability... yes
checking fenv.h presence... yes
checking for fenv.h... yes
checking sys/stropts.h usability... yes
checking sys/stropts.h presence... yes
checking for sys/stropts.h... yes
checking stropts.h usability... yes
checking stropts.h presence... yes
checking for stropts.h... yes
checking whether byte ordering is bigendian... no
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking size of short... 2
checking size of int... 4
checking size of long... 8
checking size of long long... 8
checking size of float... 4
checking size of double... 8
checking size of void *... 8
checking for off_t... yes
checking for loff_t... yes
checking for size_t... yes
checking return type of signal handlers... void
checking whether time.h and sys/time.h may both be included... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking for socklen_t... yes
checking whether struct sigaction has sa_restorer... yes
checking for strdup... yes
checking for strerror... yes
checking for strlcpy... no
checking for cfmakeraw... yes
checking for nanosleep... yes
checking for sigaction... yes
checking for signal... yes
checking for mmap... yes
checking for mprotect... yes
checking for munmap... yes
checking for vm_allocate... no
checking for vm_deallocate... no
checking for vm_protect... no
checking for exp2f... yes
checking for log2f... yes
checking for exp2... yes
checking for log2... yes
checking for floorf... yes
checking for roundf... yes
checking for ceilf... yes
checking for truncf... yes
checking for floor... yes
checking for round... yes
checking for ceil... yes
checking for trunc... yes
checking for poll... yes
checking for inet_aton... yes
checking for mach_task_self... no
checking for task_self... no
checking for library containing clock_gettime... none required
checking for clock_gettime... yes
checking for clock_nanosleep... yes
checking strings.h usability... yes
checking strings.h presence... yes
checking for strings.h... yes
checking login.h usability... no
checking login.h presence... no
checking for login.h... no
checking sys/bsdtty.h usability... no
checking sys/bsdtty.h presence... no
checking for sys/bsdtty.h... no
checking sys/stat.h usability... yes
checking sys/stat.h presence... yes
checking for sys/stat.h... yes
checking util.h usability... no
checking util.h presence... no
checking for util.h... no
checking pty.h usability... yes
checking pty.h presence... yes
checking for pty.h... yes
checking for _getpty... no
checking for vhangup... yes
checking for strlcpy... (cached) no
checking for /dev/ptc... no
checking FIONBIO vs. O_NONBLOCK for non-blocking I/O... O_NONBLOCK
checking whether compiler supports byte bit-fields... yes
checking whether compiler supports framework Carbon... no
checking whether compiler supports framework IOKit... no
checking whether compiler supports framework CoreFoundation... no
checking whether compiler supports framework CoreAudio... no
checking whether compiler supports framework AudioUnit... no
checking whether compiler supports framework AudioToolbox... no
checking whether compiler supports framework AppKit... no
checking whether TUN/TAP is supported... yes
checking whether mmap supports MAP_ANON... yes
checking whether mmap supports MAP_ANONYMOUS... yes
checking whether mprotect works... yes
checking how to disable position-independent code... cannot
checking whether __PAGEZERO can be Low Memory area 0x0000-0x3000... no
checking whether we can map Low Memory area 0x0000-0x3000... no
checking whether signal handlers need to be reinstalled... no
checking whether sigaction handlers need to be reinstalled... no
checking whether your system supports Mach exceptions... no
checking whether your system supports Windows exceptions... no
checking whether your system supports extended signal handlers... yes
checking whether we can skip instruction in SIGSEGV handler... yes
checking for addressing mode to use... real
checking floating point format... IEEE (little-endian)
checking for true... /bin/true
checking for GCC 2.7 or higher... yes
checking for GCC 3.0 or higher... yes
checking for GCC 4.0 or higher... yes
checking for ICC... no
checking the format of compiler generated objects... elf
checking whether the compiler supports -fno-strict-aliasing... yes
checking whether the compiler supports -mdynamic-no-pic... no
checking whether dyngen can be used... yes
checking whether linker script is usable... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: WARNING: 'Makefile.in' seems to ignore the --datarootdir setting
config.status: creating ../MacOSX/Info.plist
config.status: creating config.h
SheepShaver configuration summary:
SDL support ...................... : video audio
SDL major-version ................ : 2
BINCUE support ................... : no
LIBVHD support ................... : no
FBDev DGA support ................ : no
XFree86 DGA support .............. : no
XFree86 VidMode support .......... : no
Using PowerPC emulator ........... : yes
Enable JIT compiler .............. : yes
Enable video on SEGV signals ..... : yes
ESD sound support ................ : no
GTK user interface ............... : gtk2
mon debugger support ............. : no
Addressing mode .................. : real
Bad memory access recovery type .. : siginfo
Configuration done. Now type "make".
However, when I run the 64-bit version of SheepShaver, I get a segfault:
$ sudo ./SheepShaver
SheepShaver V2.5 by Christian Bauer and Mar"c" Hellwig
(SheepShaver:8024): Gtk-WARNING **: 22:17:21.464: Unable to locate theme engine in module_path: "adwaita",
(SheepShaver:8024): Gtk-WARNING **: 22:17:21.474: Unable to locate theme engine in module_path: "adwaita",
Reading ROM file...
WARNING: Cannot open /dev/cdrom (Datei oder Verzeichnis nicht gefunden)
Using SDL/pulseaudio audio output
Using SDL_Renderer driver: opengl
Detected CPU features: MMX SSE SSE2 SSE3 SSSE3
PowerPC CPU emulator by Gwenole Beauchesne
SIGSEGV
pc 0x780c756d
ea 0x40de9200
r0 00000000 r1 05ff7dba r2 00000000 r3 06000400
r4 00002278 r5 fffffffa r6 00004e75 r7 ffffffe8
r8 00000000 r9 00000026 r10 0000006a r11 0040855c
r12 00000000 r13 00000000 r14 000061fc r15 003ffffe
r16 000c3958 r17 000013ff r18 000c2d28 r19 4081787e
r20 05ff7dcc r21 06000190 r22 06000400 r23 00000000
r24 00001401 r25 00000020 r26 00000000 r27 ffff87b4
r28 00000000 r29 40de9200 r30 40c60000 r31 68fff000
f0 0,00000 f1 0,00000 f2 0,00000 f3 0,00000
f4 0,00000 f5 0,00000 f6 0,00000 f7 0,00000
f8 0,00000 f9 0,00000 f10 0,00000 f11 0,00000
f12 0,00000 f13 0,00000 f14 0,00000 f15 0,00000
f16 0,00000 f17 0,00000 f18 0,00000 f19 0,00000
f20 0,00000 f21 0,00000 f22 0,00000 f23 0,00000
f24 0,00000 f25 0,00000 f26 0,00000 f27 0,00000
f28 0,00000 f29 0,00000 f30 0,00000 f31 0,00000
lr 40de9200 ctr 00000000 cr 40101c22 xer 00000000
pc 40de9200 fpscr 00000000
0x40de91e0: Speicherzugriffsfehler
Hi,
I've managed to build SDL2 and SheepShaver for Apple Silicon in Xcode. I just had to re-add 'arm64' to VALID_ARCH. Unfortunately I've not been able to get it running successfully.
The -pagezero_size linker option seems to produce binaries that segfault immediately. I used Unix/Darwin/testlmem.sh to experiment and I think this option just won't work for aarch64 - but I am willing for my opinion to be corrected!
Trying to get SheepShaver running without -pagezero_size always results in "ERROR: Cannot map first Kernel Data area: Cannot allocate memory.". I tried adding some extra #ifdef (aarch64) where there was code to use gZeroPage and gKernelData but I then ended up with segfaults in the Mach message / segfault handler (accessing ppc_cpu before it was initialised).
So, really, I'm shooting in the dark as my knowledge of SS and PPC emulation is rather limited. Happy to help in any way to progress this, though.
I've been working with master/4cf65a3faf22babd5aa403b02d33ce1c7e5f324c. Thanks
Macbook Air, M1,
Big Sur 11.2
Xcode 12.4
I tried to build BasiliskII on my new M1 iMac.
I installed mpfr as instructed. Still, building BasiliskII fails with this error:
'mpfr.h' file not found
types.h
In file included from /Users/ronald/Desktop/macemu-master/BasiliskII/src/uae_cpu_2021/newcpu.cpp:47:
In file included from ../uae_cpu_2021/fpu/fpu.h:51:
When I try to install mpfr again, I get:
mpfr 4.1.0 is already installed and up-to-date
Searching my disk I find:
mpfr.h and mpf2mpfr.h (files) in: usr/local/Cellar/mpfr/4.1.0/include
mpfr.h and mpf2mpfr.h (aliases) in: usr/local/include
ppc-dyngen-ops.cpp
has a DEFINE_OP
entry that refers to do_frsqrte
, but there is no do_frsqrte
macro present
My latest (31 January 2021) builds of both SheepShaver and BasiliskII freeze when launched in full screen mode.
I get a black screen with beach ball and need to force quit the applications. Another user mentioned a message "Application not responding".
See: https://www.emaculation.com/forum/viewtopic.php?f=20&p=69319#p69319
This seems very similar to the freeze on full screen launch that was discussed here: https://www.emaculation.com/forum/viewtopic.php?f=20&t=10392 and that was solved by you on 25 July 2020.
In SDL2 keyboard handling, for the case where keycodes
is enabled, host modifier keys are specifically excluded from the cases that provided mapping:
macemu/BasiliskII/src/SDL/video_sdl2.cpp
Line 2213 in c23967b
macemu/BasiliskII/src/SDL/video_sdl2.cpp
Line 2244 in c23967b
This prevents re-mapping of modifier keys. This is inconvenient.
This was put in for SDL in b6e1e6e , at the same time as some SDL Mac OS X keyboard fixes, so perhaps the modifier change is for SDL on Mac OS X also? Is it necessary to avoid a problem of some kind?
Is this also true for SDL2?
If the exception for modifiers is not needed for SDL2 it could simply be removed.
Alternatively, if it is necessary to handle modifiers as keysyms for whatever reason, another approach would be to add logic that infers the keysym remappings for modifiers from the keycodes table and applies them on the keysyms side.
Every time I merge your branch, travis-ci.org connected to my account dutifully picks up your .travis.yml
file and tries to do a build using the settings in it. Currently that is:
--enable-sdl-video --enable-sdl-audio --disable-vosf --disable-jit-compiler --with-x --with-gtk --with-mon
video_sdl.cpp
is broken, so the build fails../../SDL/video_sdl.cpp: In function ‘bool VideoInit(bool)’:
./../SDL/video_sdl.cpp:1168:99: error: cannot allocate an object of abstract type ‘SDL_monitor_desc’
SDL_monitor_desc *monitor = new SDL_monitor_desc(VideoModes, (video_depth)color_depth, default_id);
^
./../SDL/video_sdl.cpp:361:7: note: because the following virtual functions are pure within ‘SDL_monitor_desc’:
class SDL_monitor_desc : public monitor_desc {
^
In file included from ./../SDL/video_sdl.cpp:63:0:
./../include/video.h:256:15: note: virtual void monitor_desc::set_gamma(uint8*, int)
virtual void set_gamma(uint8 *gamma, int num) = 0;
^
./../SDL/video_sdl.cpp: In function ‘void update_display_static(driver_base*)’:
./../SDL/video_sdl.cpp:1944:26: warning: comparison between ‘const enum video_depth’ and ‘enum<anonymous>’ [-Wenum-compare]
if (VIDEO_MODE_DEPTH < VIDEO_DEPTH_8BIT) {
^
make: *** [obj/video_sdl.o] Error 1
make: *** Waiting for unfinished jobs....
If you don't want to maintain .travis.yml
with settings that building is supported with, would it be okay to remove the file to prevent the noise it keeps making? 😄
When running make (after running autogen.sh), g++ will immediately return this error:
g++ -I../kpx_cpu/include -I../kpx_cpu/src -DUSE_JIT -I../include -I. -I../CrossPlatform -I../slirp -DHAVE_CONFIG_H -D_REENTRANT -DDATADIR=\"/usr/local/share/SheepShaver\" -g -O2 -I/usr/include/SDL2 -D_REENTRANT -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/atk-1.0 -pthread -c ../video.cpp -o obj/video.o
../video.cpp: In function ‘bool VideoSnapshot(int, int, uint8*)’:
../video.cpp:127:19: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
127 | uint8 *screen = (uint8 *)private_data->saveBaseAddr;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../video.cpp: In function ‘int16 VideoStatus(uint32, VidLocals*)’:
../video.cpp:744:10: error: narrowing conversion of ‘kDisplayModeIDFindFirstResolution’ from ‘unsigned int’ to ‘int’ [-Wnarrowing]
744 | case kDisplayModeIDFindFirstResolution:
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make: *** [Makefile:200: obj/video.o] Error 1
I have sdl2 installed, so I honestly don't know what could be causing the problem. Any help is much appreciated.
When I try notarizing SheepShaver, built from the latest source, I get this error message back from Apple:
/var/folders/k_/2g9vj9yr8xj0jj0059b__5600000gn/T/5D8FDA33-EB0E-4AE8-8236-B874589306DB/PRODUCT_BUNDLE_IDENTIFIER.itmsp - Error Messages:
ERROR ITMS-4302: "The software asset has an invalid primary bundle identifier: '$(PRODUCT_BUNDLE_IDENTIFIER)'" at SoftwareAssets/EnigmaSoftwareAsset
I tried three times after building again. Get the same message each time. I did everything as I always do.
As always, I set the Bundle identifier to "com.emaculation.sheepshaver" to match my certificate, in Xcode both in General tab and in Info.
How does EnigmaSoftware get in here?
BasiliskII from the latest source has no problems with notarizing.
I am trying to build SheepShaver on my computer running Linux Mint 19.3 from a clone of the source made on 15-Feb-2021. I followed the Linux build instructions here. No errors were reported until the final make (I never got to the strip command). It also seemed to go well until it hit the file ../SDL/audio_sdl.cpp, at which point I received the following error:
g++ -DBINCUE -I../kpx_cpu/include -I../kpx_cpu/src -DUSE_JIT -I../include -I. -I../CrossPlatform -I../slirp -DHAVE_CONFIG_H -D_REENTRANT -DDATADIR=\"/usr/local/share/SheepShaver\" -g -O2 -I/usr/include/SDL2 -D_REENTRANT -c ../SDL/audio_sdl.cpp -o obj/audio_sdl.o
../SDL/audio_sdl.cpp: In function ‘int play_startup(void*)’:
../SDL/audio_sdl.cpp:372:95: sorry, unimplemented: non-trivial designated initializers not supported
desired = { .freq = 44100, .format = AUDIO_S16, .channels = 1, .samples= 4096 }, obtained;
^
Makefile:197: recipe for target 'obj/audio_sdl.o' failed
make: *** [obj/audio_sdl.o] Error 1
I'm no expert, but this looks like it might be some sort of unsatisfied dependency. I was unable to find a list of dependencies for pre-install. Additional information will be provided on request as soon as someone tells me what is needed and how to get it!
I built both from source, with SDL2 frameworks in place.
Basilisk II has (good) audio now...
but SheepShaver is still silent with no audio output device at all :-(
Is it possible to patch SheepShaver with SDL audio as Basilisk II ??
Since 5b31736 there is an invalid read of 0x50f14000 on launch with newworld ROMs (I've tried 1.4 and 1.6).
This is on Windows and Linux, JIT and no-JIT, with and without the bincue feature enabled, etc.
Reverting the change to rsrc_patches.cpp
in 5b31736 makes the problem go away.
$ ./SheepShaver.5b31736785586493e3a98c2eca91f1e548765dbe.exe
SIGSEGV
pc 0109ae00
ea 61f14000
r0 00000000 r1 17ff5890 r2 00000000 r3 50f14000
r4 00000040 r5 fffffffa r6 00003540 r7 ffffffe8
r8 00110477 r9 61776163 r10 0000bf8c r11 00000384
r12 0000001e r13 61776163 r14 00000000 r15 00000001
r16 001e0f4e r17 000a7ef0 r18 0011fdc0 r19 0010d05a
r20 17ff5a9e r21 001a68b6 r22 17ff59da r23 00000000
r24 001e0f7e r25 00000000 r26 00000000 r27 000050f1
r28 001be0c4 r29 40c89e00 r30 40c60000 r31 68fff000
f0 0.00000 f1 0.00000 f2 0.00000 f3 0.00000
f4 0.00000 f5 0.00000 f6 0.00000 f7 0.00000
f8 0.00000 f9 0.00000 f10 0.00000 f11 0.00000
f12 0.00000 f13 0.00000 f14 0.00000 f15 0.00000
f16 0.00000 f17 0.00000 f18 0.00000 f19 0.00000
f20 0.00000 f21 0.00000 f22 0.00000 f23 0.00000
f24 0.00000 f25 0.00000 f26 0.00000 f27 0.00000
f28 0.00000 f29 0.00000 f30 0.00000 f31 0.00000
lr 40c89e00 ctr 00000000 cr 40001c22 xer 00000000
pc 40c6628c fpscr 00000000
SheepShaver V2.5 by Christian Bauer and Mar"c" Hellwig
Reading ROM file...
Using SDL_Renderer driver: software
Detected CPU features: MMX SSE SSE2 SSE3 SSSE3
PowerPC CPU emulator by Gwenole Beauchesne
WARNING: Unknown DiskStatus(6)
0x40c6626c: sth r4,0(r3)
0x40c66270: addco. r4,r4,r0
0x40c66274: bgelr+ cr2
0x40c66278: b 0x40c6d0d4
0x40c6627c: nop
0x40c66280: rlwimi r29,r27,3,13,28
0x40c66284: mtlr r29
0x40c66288: lhau r27,2(r24)
>0x40c6628c: stb r4,0(r3)
0x40c66290: addco. r4,r4,r0
0x40c66294: bgelr+ cr2
0x40c66298: b 0x40c6d0d4
0x40c6629c: lhau r27,2(r24)
0x40c662a0: addco. r4,r4,r0
0x40c662a4: lhau r6,2(r24)
0x40c662a8: stw r4,0(r27)
The discussion about this issue in emaculation forum is very confusing, but I think my summery here is clear: https://www.emaculation.com/forum/viewtopic.php?p=70332#p70332
Hello, with current code, builds of BII fail under Xcode with this message:
clang: error: no such file or directory: '/Users/edward/Library/Developer/Xcode/DerivedData/BasiliskII-cpozzywkzeiuxuazxfpwpsojbaeg/Build/Products/Release/gencpu_output/defs68k.c'
clang: error: no input files
SheepShaver builds successfully, but not BasiliskII.
Questions rather that an issue:
What is the header needed for SDL2 Linux/X11 builds to use SDL2 scancodes to Mac keycodes translations in keycodes files? (Like "sdl cocoa" for macOS and "sdl windows" for Windows).
Will that header work only for your SDL2 port or will it also work for SDL2 ports from other branches?
Probably you know this already, but when I try to access the Internet from this version (using the Clasilla browser), SheepShaver shuts down.
emaculation/macemu#150 mentions Basilisk II fixes related to JIT made on top of this kanjitalk755 repo that incorporate a few additional fixes from cebix.
Repo is https://github.com/SegHaxx/macemu-flatpak. Hope you'll consider wrapping the useful bits into this repo as this is one of the most active / "official"
I think it could be beneficial to have "ignore illegal memory access" enabled and to have the JIT compiler disabled by default in the GUI when the emulator. These settings would likely increase stability. They are steps that new users are generally advised to take when setting up the emulator anyways.
A bit of discussion on this has happened over here - https://emaculation.com/forum/viewtopic.php?f=6&t=10847&p=68117
I noticed that my Windows CI build job was failing on the main BII and SS executables with a linker errors:
...
g++ -o BasiliskII.exe -Wl,-Bstatic obj/main.o obj/main_windows.o obj/prefs.o obj/prefs_items.o obj/prefs_windows.o obj/sys_windows.o obj/rom_patches.o obj/slot_rom.o obj/rsrc_patches.o obj/emul_op.o obj/macos_util.o obj/xpram.o obj/xpram_windows.o obj/timer.o obj/timer_windows.o obj/adb.o obj/serial.o obj/serial_windows.o obj/ether.o obj/ether_windows.o obj/sony.o obj/disk.o obj/cdrom.o obj/scsi.o obj/scsi_dummy.o obj/video.o obj/video_sdl.o obj/video_sdl2.o obj/video_blit.o obj/audio.o obj/audio_sdl.o obj/clip_windows.o obj/extfs.o obj/extfs_windows.o obj/user_strings.o obj/user_strings_windows.o obj/vm_alloc.o obj/sigsegv.o obj/posix_emu.o obj/util_windows.o obj/prefs_editor_dummy.o obj/BasiliskII.o obj/cache.o obj/eject_nt.o obj/ntcd.o obj/arp.o obj/dump.o obj/dynsockets.o obj/ftp.o obj/icmp.o obj/interfaces.o obj/iphelp.o obj/ipsocket.o obj/mibaccess.o obj/router.o obj/tcp.o obj/udp.o obj/packet32.o obj/basilisk_glue.o obj/memory.o obj/newcpu.o obj/readcpu.o obj/fpu_ieee.o obj/cpustbl.o obj/cpudefs.o obj/cpuemu1.o obj/cpuemu2.o obj/cpuemu3.o obj/cpuemu4.o obj/cpuemu5.o obj/cpuemu6.o obj/cpuemu7.o obj/cpuemu8.o obj/cpuemu1_nf.o obj/cpuemu2_nf.o obj/cpuemu3_nf.o obj/cpuemu4_nf.o obj/cpuemu5_nf.o obj/cpuemu6_nf.o obj/cpuemu7_nf.o obj/cpuemu8_nf.o obj/compemu1.o obj/compemu2.o obj/compemu3.o obj/compemu4.o obj/compemu5.o obj/compemu6.o obj/compemu7.o obj/compemu8.o obj/compemu_support.o obj/compemu_fpp.o obj/compstbl.o obj/cpustbl_nf.o obj/slirp-bootp.o obj/slirp-ip_output.o obj/slirp-tcp_input.o obj/slirp-cksum.o obj/slirp-mbuf.o obj/slirp-tcp_output.o obj/slirp-debug.o obj/slirp-misc.o obj/slirp-tcp_subr.o obj/slirp-if.o obj/slirp-sbuf.o obj/slirp-tcp_timer.o obj/slirp-ip_icmp.o obj/slirp-slirp.o obj/slirp-tftp.o obj/slirp-ip_input.o obj/slirp-socket.o obj/slirp-udp.o -lws2_32 -lwsock32 -liphlpapi -L/mingw32/lib -lmingw32 -ldxerr8 -ldinput8 -lshell32 -lsetupapi -ladvapi32 -luuid -lversion -loleaut32 -lole32 -limm32 -lwinmm -lgdi32 -luser32 -lm -Wl,--no-undefined -pipe -lmingw32 -lSDL2main -lSDL2 -mwindows
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windows.c.obj):(.text+0x1d6): undefined reference to `_imp__CoInitializeEx@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windows.c.obj):(.text+0x232): undefined reference to `_imp__CoUninitialize@0'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x54): undefined reference to `ImmGetIMEFileNameA@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0xa4): undefined reference to `ImmGetContext@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0xd0): undefined reference to `ImmReleaseContext@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x2be): undefined reference to `ImmGetIMEFileNameA@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x46c): undefined reference to `GetFileVersionInfoSizeA@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x4a9): undefined reference to `GetFileVersionInfoA@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x4e5): undefined reference to `VerQueryValueA@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x6ae): undefined reference to `ImmGetContext@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x6db): undefined reference to `ImmNotifyIME@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x708): undefined reference to `ImmNotifyIME@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x71a): undefined reference to `ImmReleaseContext@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x774): undefined reference to `ImmSetCompositionStringW@24'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x81c): undefined reference to `ImmAssociateContext@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0xa07): undefined reference to `_imp__SysFreeString@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0xbde): undefined reference to `_imp__SysFreeString@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0xca5): undefined reference to `_imp__CoCreateInstance@20'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0xd83): undefined reference to `ImmGetContext@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0xd95): undefined reference to `ImmReleaseContext@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0xe38): undefined reference to `_imp__CoCreateInstance@20'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x1189): undefined reference to `_imp__SysFreeString@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x192b): undefined reference to `ImmAssociateContext@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x1bdb): undefined reference to `ImmAssociateContext@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x1cb5): undefined reference to `ImmGetContext@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x1cea): undefined reference to `ImmSetCompositionWindow@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x1cfc): undefined reference to `ImmReleaseContext@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x1f11): undefined reference to `ImmGetContext@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x1fc8): undefined reference to `ImmReleaseContext@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x205e): undefined reference to `ImmGetContext@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x2094): undefined reference to `ImmGetCandidateListW@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x20bb): undefined reference to `ImmReleaseContext@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x2183): undefined reference to `ImmGetContext@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x21d9): undefined reference to `ImmGetCompositionStringW@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x2205): undefined reference to `ImmGetCompositionStringW@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x2268): undefined reference to `ImmGetCompositionStringW@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x2296): undefined reference to `ImmGetCompositionStringW@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x2484): undefined reference to `ImmGetCandidateListW@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_systimer.c.obj):(.text+0x33): undefined reference to `_imp__timeBeginPeriod@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_systimer.c.obj):(.text+0x65): undefined reference to `_imp__timeEndPeriod@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_systimer.c.obj):(.text+0xca): undefined reference to `_imp__timeGetTime@0'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_systimer.c.obj):(.text+0x12d): undefined reference to `_imp__timeEndPeriod@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_systimer.c.obj):(.text+0x17f): undefined reference to `_imp__timeGetTime@0'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_systimer.c.obj):(.text+0x237): undefined reference to `_imp__timeGetTime@0'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_systimer.c.obj):(.text+0x2b5): undefined reference to `_imp__timeGetTime@0'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_systimer.c.obj):(.text+0x36f): undefined reference to `_imp__timeGetTime@0'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_systimer.c.obj):(.text+0x447): undefined reference to `_imp__timeGetTime@0'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(hid.c.obj):(.text+0x32b): undefined reference to `_imp__SetupDiGetClassDevsA@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(hid.c.obj):(.text+0x36d): undefined reference to `_imp__SetupDiEnumDeviceInterfaces@20'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(hid.c.obj):(.text+0x3a5): undefined reference to `_imp__SetupDiGetDeviceInterfaceDetailA@24'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(hid.c.obj):(.text+0x3e5): undefined reference to `_imp__SetupDiGetDeviceInterfaceDetailA@24'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(hid.c.obj):(.text+0x405): undefined reference to `_imp__SetupDiEnumDeviceInfo@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(hid.c.obj):(.text+0x42c): undefined reference to `_imp__SetupDiGetDeviceRegistryPropertyA@28'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(hid.c.obj):(.text+0x495): undefined reference to `_imp__SetupDiDestroyDeviceInfoList@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_dinputhaptic.c.obj):(.text+0x1170): undefined reference to `_imp__CoCreateInstance@20'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0xb6): undefined reference to `_imp__waveOutReset@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0xe1): undefined reference to `_imp__waveOutClose@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0xf7): undefined reference to `_imp__waveInReset@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x11b): undefined reference to `_imp__waveInClose@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x174): undefined reference to `_imp__waveInUnprepareHeader@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x19f): undefined reference to `_imp__waveInUnprepareHeader@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x1d4): undefined reference to `_imp__waveOutUnprepareHeader@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x1fe): undefined reference to `_imp__waveOutUnprepareHeader@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x2b6): undefined reference to `_imp__waveInAddBuffer@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x318): undefined reference to `_imp__waveOutWrite@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x433): undefined reference to `_imp__waveOutGetErrorTextW@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x5e3): undefined reference to `_imp__waveInOpen@24'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x637): undefined reference to `_imp__waveOutOpen@24'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x71c): undefined reference to `_imp__waveInPrepareHeader@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x745): undefined reference to `_imp__waveInAddBuffer@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x7aa): undefined reference to `_imp__waveOutOpen@24'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x7f7): undefined reference to `_imp__waveInOpen@24'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x839): undefined reference to `_imp__waveOutPrepareHeader@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x893): undefined reference to `_imp__waveInStart@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x90c): undefined reference to `_imp__waveInGetNumDevs@0'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x940): undefined reference to `_imp__waveInGetDevCapsW@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x992): undefined reference to `_imp__waveOutGetNumDevs@0'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x9c8): undefined reference to `_imp__waveOutGetDevCapsW@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0xa76): undefined reference to `_imp__waveInAddBuffer@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_wasapi.c.obj):(.text+0x223): undefined reference to `_imp__CoTaskMemFree@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_wasapi_win32.c.obj):(.text+0x140): undefined reference to `_imp__PropVariantClear@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_wasapi_win32.c.obj):(.text+0x478): undefined reference to `_imp__CoTaskMemFree@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_wasapi_win32.c.obj):(.text+0x5b8): undefined reference to `_imp__CoCreateInstance@20'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_dinputjoystick.c.obj):(.text+0xf93): undefined reference to `_imp__CoCreateInstance@20'
collect2.exe: error: ld returned 1 exit status
make: *** [Makefile:121: BasiliskII.exe] Error 1
Command exited with code 2
The CI build job currently installs version mingw-w64-i686-SDL2-2.0.12-4
of the SDL2 package, and when I update my local MSYS2 environment to this version, it has the same problem.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.