Skip to content

Releases: ravynsoft/ravynos

ravynOS Xcode Toolchain for Linux x86-64

24 Dec 06:24

Choose a tag to compare

This package provides the core tools and libraries needed to build ravynOS applications from a Linux host system.

Quickstart

  • Unpack the archive
  • Put Default.xctoolchain in /Library/Developer/Toolchains (recommended) or your preferred location
  • Set up your PATH to look in <your location>/Default.xctoolchain/usr/bin

A deeper dive

Default.xctoolchain is the bundle inside ravynOS_Toolchain_Linux_x86.tar.xz. Xcode on macOS provides a very similar bundle called XcodeDefault.xctoolchain which contains all the compilers, linkers, binary object utils, and tools needed to compile stuff on macOS. (You also need the SDK which contains headers, frameworks, etc.) So, our bundle is the equivalent for compiling stuff on ravynOS, and it is intended to eventually work with Xcode when we can run that.

In the meantime, you can use it as a standalone toolkit by installing it somewhere and setting your PATH to search in <your location>/Developer/Toolchains/Default.xctoolchain/usr/bin. (Tip! Put it first in your path so it overrides other system tools!)

You don't actually need this toolkit installed when building the ravynOS repo from git. The build process will produce this bundle before it does anything else, and then use it transparently. This release is provided as a backup (in case that build fails) and as a standalone toolkit for building apps without needing to compile the whole OS. (You will also need the ravynOS SDK, or Apple's MacOSX.sdk bundle, to do that.)

What's in it?

See the MANIFEST file below for a full list.

Basically, it contains clang, LLVM, ld64 (Apple's linker), lipo, dsymutil, plutil, codesign, as, ar, mig, ranlib, otool, GNU make (as make), strip, TAPI (tools for manipulating the .tbd files Apple uses), xar, and xcodebuild. A minimal but functional iig tool exists, as does plktool, our equivalent of kextcache for creating a prelinked kernel cache.

It also contains clang's cmake modules, all of LLVMs headers and all the libraries needed by the tools above. They're all linked to search inside the bundle for their dependencies.

FAQ and Misc

Does this mean Xcode runs on Linux now??!

No. The name means this bundle is meant to be compatible with Xcode later on.

What Linux does it support?

Hopefully many. It was built on Ubuntu 22.04 LTS.

ravynOS SDK and KDK v0.7.0.1 (x86_64)

07 Feb 21:08

Choose a tag to compare

This package provides the headers, libraries, and frameworks needed to build ravynOS applications. It is the ravynOS equivalent to Apple's MacOSX.sdk and can be used from any host system that has a suitable .xctoolchain bundle or clang install capable of cross-compiling to Darwin.

This is not complete! Parts of libSystem are still missing. Most frameworks are not yet built. See the ravynOS_SDK_0.7.0.1.manifest file for full info. However, this version is much more correct and complete than SDK 0.7.0.0.

All code contained in this SDK is fully open. No Apple proprietary tools or source was used to create it.

How to use the SDK

The SDK archive includes the ravynOS.platform bundle as well, with the SDK inside it. There are two ways to use it.

  1. As a standalone SDK. This should be unpacked into /Library/Developer/Platforms and you should create a symlink MacOSX.platform to ravynOS.platform for best compatibility. However, you can put it wherever you prefer if you don't need to emulate a Mac build environment. Set the env var SDKROOT=<unpack_root>/ravynOS.platform/Developer/SDKs/ravynOS.sdk and build for the target <cpu>-apple-darwin.
  2. As a seed for the ravynOS full build. If you try to build ravynOS from source without an SDK (either from Apple or this one), you will quickly run into failures. Unpack the SDK to <build_root>/Developer/Platforms. Unset the SDKROOT env var if set. Now build the system, which will produce an updated SDK in place.

How to use the KDK

The KDK is now included in the SDK. You'll find xnu in $SDKROOT/System/Library/Kernels, Extensions in $SDKROOT/System/Library/Extensions, and most other things in /usr/local/lib.