by Michael Steil (23 May 2003)
last update: Axel Auweter (2 April 2004)
The SoftPear Project aims to create IBM PC/Apple Macintosh compatibility software. Its goals include software to be able to
A) run Darwin/PPC executables, including Mac OS X, its libraries and its applications, on Darwin/x86 (using emulation/dynamic recompilation, like "DR Emulator" or "FX!32")
B) run Darwin/PPC applications on Linux/PPC (by adding a compatibility layer, like FreeBSD's "Linux Binary Compatibility"
C) run Mac OS X/x86 applications on Linux/x86 or Darwin/x86 running Mac OS X
D) have a reimplementation of the Mac OS X operating environment under the GPL license (like "WINE")
- an IBM PC can be used as if it was an Apple Macintosh (using an original Mac OS X license)
- Mac applications will run on Linux (using an original Mac OS X license)
- Mac applications can be recompiled for the PC (using an original Mac OS X license)
- a free version of Mac OS X will run on a variety of computers
Sure, this all is quite a challenge. Therefore the main goal will be the PPC/x86 emulator/dynamic recompiler for the beginning.
B) Darwin to Linux compatibility layer
C) Mac/x86 to Mac/PPC compatibility layer
D) Mac OS X Reimplementation (excluding UNIX)
The goal of Project A is to have a software system that permits the user to run the Mac OS X operating system on IBM PC hardware. This idea is to use Darwin/x86 as the operating system and emulate/recompile all code above the operating system for the x86 CPU.
The following components are needed:
1) A PowerPC emulator for x86 systems
This emulator, which only needs to support all user-mode instructions of the 32-bit PowerPC architecture, is the basis of the whole system.
2) A PowerPC to x86 recompiler
The recompiler serves as a plug-in that can speed up emulation. Although in theory, the system can work with only an emulator, it will be too slow to be usable without a recompiler.
3) Darwin/x86 kernel and library interface
All Macintosh PPC code is run in big-endian mode, while the x86 is always in little-endian mode. There are many interfaces between the big-endian mode, while the x86 is always in little-endian mode. There are many interfaces between the big- and the little-endian world in this system, like the kernel and the system library interface.
These components should make it possible to run text-based utilities first, and run the whole Mac OS X environment at the end, provided that some additional drivers for the x86 architecture are written.
While Project A focuses on PPC/x86 recompilation and related endianess issues, Project B aims to make Darwin/PPC and Mac OS X applications run on Linux - a very similar operating system, which has a lot better hardware support. This includes to develop a Linux loader for Mach-O binaries as well as an implementation of Darwin's dynamic linker for the Linux platform.
Although this can be compared to other binary compatibility projects like FreeBSD's "Linux Binary Compatibility" or NetBSD's "COMPAT_DARWIN" Package, we try to do most of the work in user-mode to keep a maximum of platform independence. It still has to be discussed, whether there is the need to trap kernel calls to the Linux Kernel from Darwin applications or if rebuilding certain Darwin system libraries to eliminate their kernel calls will do the job.
Depending on how many of Darwin's applications we want to be able to run on Linux, a reimplementation of Darwin's libraries from libSystem up to libIOKit will be necessary.
As soon as Project A & B succeed, this roadmap will be continued...