Darwin/macOS emulation layer for Linux
Go to file
2017-08-12 09:48:23 -07:00
basic-headers Adding sys/qos.h into basic-headers 2017-01-08 13:28:09 +01:00
cmake Use previous linking method for CF 2017-08-10 23:38:09 -07:00
debian Fix Debian postinst script 2017-06-07 16:13:21 +02:00
etc Create a udev rule to set /dev/mach to 0666 2017-02-19 17:58:56 -08:00
kernel-include Updating various header files (needed for SystemConfiguration) 2017-02-28 17:53:30 +01:00
misc Cleanup benchmarks, misc and tools directories 2016-02-26 22:59:34 +01:00
platform-include Improvements to Security build 2017-08-08 22:25:38 +02:00
src Add WebCore and JavaScriptCore submodules 2017-08-12 09:48:23 -07:00
tests/src Remove unused stuff from tests/ 2016-02-26 23:03:00 +01:00
tools Introduce pyc() CMake function, use it to generate .pyc files 2017-07-18 13:50:26 +02:00
.gdbinit Loads of work on dyld and BSD functions 2012-08-15 12:17:58 +02:00
.gitignore Add the suggested build folder and some artifacts of building the kernel module to .gitignores 2016-11-03 19:31:44 -07:00
.gitmodules Add WebCore and JavaScriptCore submodules 2017-08-12 09:48:23 -07:00
CMakeLists.txt Fix missing /tmp 2017-07-24 23:42:39 +02:00
CONTRIBUTORS.md Add contributors file 2017-04-06 09:12:11 +02:00
LICENSE Loads of work, libmacarchive added, copyright headers... 2012-10-22 19:02:06 +02:00
README.md README.md refers to the wiki for build instructions 2017-03-27 20:53:18 +02:00
Toolchain.cmake Disable CMake's rpath handling 2017-05-18 02:20:56 +02:00

Stories in Ready

Darling

Darling logo

Darling is a runtime environment for OS X applications.

Please note that no GUI applications are supported at the moment.

Download

Darling uses many Git submodules, so a plain clone will not do.

git clone --recurse-submodules https://github.com/darlinghq/darling.git

Updating sources:

git pull
git submodule init
git submodule update

Build Instructions

For complete instructions, visit DarlingHQ Wiki.

Prefixes

Darling has support for DPREFIXes, which are very similar to WINEPREFIXes. They are virtual “chroot” environments with an macOS-like filesystem structure, where you can install software safely. The default DPREFIX location is ~/.darling, but this can be changed by exporting an identically named environment variable. A prefix is automatically created and initialized on first use.

Please note that we use overlayfs for creating prefixes, and so we cannot support putting prefix on a filesystem like NFS or eCryptfs. In particular, the default prefix location won't work if you have an encrypted home directory.

Hello world

Let's start with a Hello world:

$ darling shell echo Hello world
Hello world

Congratulations, you have printed Hello world through Darling's OS X system call emulation and runtime libraries.

Installing software

You can install .pkg packages with the installer tool available inside shell. It is a somewhat limited cousin of OS X's installer:

$ darling shell
Darling [~]$ installer -pkg mc-4.8.7-0.pkg -target /

If you have previously downloaded the Midnight Commander package from Rudix, you can now run mc to start MC for OS X. For easier installation, install the Rudix Package Manager. Note that not all Rudix packages may work under Darling.

You can uninstall and list packages with the uninstaller command.

Working with DMG images

DMG images can be attached and deattached from inside darling shell with hdiutil. This is how you can install Xcode along with its toolchain and SDKs (note that Xcode itself doesn't run yet):

Darling [~]$ hdiutil attach Xcode_7.2.dmg
/Volumes/Xcode_7.2
Darling [~]$ cp -r /Volumes/Xcode_7.2/Xcode.app /Applications
Darling [~]$ export SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
Darling [~]$ echo 'void main() { puts("Hello world"); }' > helloworld.c
Darling [~]$ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang helloworld.c -o helloworld
Darling [~]$ ./helloworld
Hello world

Congratulations, you have just compiled and run your own Hello world application with Apple's toolchain.