-
Notifications
You must be signed in to change notification settings - Fork 0
Getting started with macemu development: Windows
Originally there was just Basilisk II.
Back when Basilisk II didn't have a JIT yet, just an interpretive emulator for non-68k platforms, Lauri Pesonen did a port of it to Windows that was a separate codebase, never integrated back into the main Basilisk II code. This is what's referred to as Basilisk II 142, by the build number of the last version before the branch was abandoned.
That is unrelated to the current development, although certainly some parts of that port's code ended up in the Windows support in the main codebase.
When working on a copy of the macemu source code that you build from, be aware that there are a lot of temporary copies produced as a result of following the instructions to do a build. You don't want to make edits in a temporary copy that will just be overwritten without warning when you build again (considering the proper full build process from scratch with make links
) and/or that you will forget to check in because it's not tracked by git or you have gotten used to ignoring its change state.
On Windows, there are two different ways temporary copies are made, depending on the file:
-
Common code between Basilisk II and SheepShaver lives in the
BasiliskII
directory, and in the git repository is symlinked to fromSheepShaver
. Since Windows git ports generally don't use NTFS symlinks because of administrative permission requirements, but also ports don't provide an alternative solution to give the same behaviour, the project has to deal with it. On Windows, theSheepShaver\Makefile
'smake links
step is used to copy the common files and directories from BasiliskII to SheepShaver.- This overwrites the symlink placeholder files, so git will unavoidably show the status of those files as changed.
- This
make links
step used to be used for all platforms, before the symlinks, from when the B2 and SS codebases were first merged, before git was used. - Because of this the process doesn't use the symlinks to decide what files to copy, it has an explicit list of files in
SheepShaver\Makefile
that needs to be maintained separately
-
Some SheepShaver common code between platforms lives in
SheepShaver\src\CrossPlatform
; temporary copies of these files are made in the platform directory (e.g.SheepShaver\src\Windows
) as part of the mainmake
process.
macemu has many kinds of common code: common code between Basilisk II and SheepShaver, common code between platforms, common code between different backend graphics implementations on the same 'platform', common code between native CPU operation and emulation, common code between JIT and non-JIT emulation, and possibly more kinds I haven't thought of.
Of course, with common code, separate from the mechanical consideration of whether you're modifying the real source file when you edit, there is always the consideration of being aware of all of the sets of specific code that the code also needs to work with that you need to make any corresponding changes to.