mirror of
https://github.com/darlinghq/darling.git
synced 2024-11-24 12:49:44 +00:00
Updated/extended readme
This commit is contained in:
parent
1b31ce366a
commit
20236d3073
96
README.md
96
README.md
@ -1,14 +1,35 @@
|
||||
This is a rework of Darling, which will greatly improve compatibility with OS X applications.
|
||||
= Darling =
|
||||
|
||||
The i386 build is still lagging behind due to some missing important assembly around threading. You only need it to run 32-bit binaries though.
|
||||
Darling is a runtime environment for OS X applications.
|
||||
|
||||
Courageous users may proceed with the build instructions below.
|
||||
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 https://github.com/darlinghq/darling.git
|
||||
cd darling
|
||||
git submodule init
|
||||
git submodule update
|
||||
````
|
||||
|
||||
Updating sources:
|
||||
|
||||
````
|
||||
git pull
|
||||
git submodule init
|
||||
git submodule update
|
||||
````
|
||||
|
||||
== Build instructions ==
|
||||
|
||||
For x86-64 OS X binaries:
|
||||
````
|
||||
cd darling
|
||||
mkdir -p build/x86-64
|
||||
CC=clang CXX=clang++ cmake ../.. -DCMAKE_INSTALL_LIBDIR=lib64
|
||||
cmake ../.. -DCMAKE_TOOLCHAIN_FILE=../../Toolchain-x86_64.cmake
|
||||
make
|
||||
make install
|
||||
|
||||
@ -18,15 +39,19 @@ make
|
||||
make install
|
||||
````
|
||||
|
||||
Required dependencies on Debian (stable): cmake clang bison flex linux-headers-amd64 xz-utils libfuse-dev libxml2-dev libicu-dev libssl-dev libbz2-dev zlib1g-dev libudev-dev
|
||||
|
||||
For i386 OS X binaries:
|
||||
````
|
||||
cd darling
|
||||
mkdir -p build/i386
|
||||
CC=clang CXX=clang++ cmake ../.. -DCMAKE_INSTALL_LIBDIR=lib32
|
||||
cmake ../.. -DCMAKE_TOOLCHAIN_FILE=../../Toolchain-x86.cmake
|
||||
make
|
||||
make install
|
||||
````
|
||||
|
||||
Required additional dependencies on Debian (stable): libc6-dev-i386 libudev-dev:i386 lib32stdc++-4.9-dev
|
||||
|
||||
Loading the kernel module:
|
||||
````
|
||||
modprobe darling-mach
|
||||
@ -40,3 +65,64 @@ modprobe darling-mach
|
||||
chmod a+rw /dev/mach
|
||||
````
|
||||
|
||||
=== Optional features ===
|
||||
|
||||
Optionally, you can enable audio support with the ````-DFRAMEWORK_COREAUDIO=On````. This is still under development, so it probably only makes sense if you want to contribute.
|
||||
This switch enables both ALSA and PulseAudio support by default, you can disable either of them with ````-DENABLE_ALSA=OFF```` or ````-DENABLE_PULSEAUDIO=OFF```` respectively.
|
||||
|
||||
Required dependencies on Debian (stable):
|
||||
|
||||
* x86-64: libpulse-dev libasound2-dev libavresample-dev libavformat-dev libavcodec-dev
|
||||
* i386: libpulse-dev:i386 libasound2-dev:i386 libavresample-dev:i386 libavformat-dev:i386 libavcodec-dev:i386
|
||||
|
||||
Note that most of the above -dev packages conflict between x86-64 and i386, so if you build for both platforms, you have to reinstall the right -dev variants before every build. There should be no issues at runtime.
|
||||
|
||||
== Using Darling ==
|
||||
|
||||
Darling uses DPREFIXes, which are in essence similar to WINEPREFIXes. The are virtual chroot environment with an OS X-like filesystem hierarchy, where you can safely install and run software. Unless you set DPREFIX to your location, the default ````~/.darling```` is used.
|
||||
|
||||
The real root filesystem is available through ````/system-root```` and the ````/home```` directory is automatically symlinked, so you should feel at home right away.
|
||||
|
||||
At first use, initial prefix contents are downloaded from the Internet.
|
||||
|
||||
=== 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](http://rudix.org), you can now run ````mc```` to start MC for OS X. Note that not all Rudix packages may work under Darling, namely the Rudix Package Manager doesn't work, as Darling doesn't yet build its own Python runtime.
|
||||
|
||||
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.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user