Pre-requisite Software

The tools you need to compile software for Haiku, or to compile Haiku itself, depend on the platform that is used for building. Currently, Haiku is arguably the most convenient development environment. A nightly image (or stable release) of Haiku should contain all of the software needed to build its sources for x86. So while Haiku is not the fastest, being able to immediately test the freshly compiled binaries and having the tool chain pre-installed certainly reduces the chances of headaches. On occasion, building Haiku on Haiku can be problematic if the host version is significantly out of date compared to the version being built. In this case, cross-compiling from another OS, or updating to a newer Haiku may be required to get things working again. Haiku currently supports building itself, or having itself cross compiled on another platform.

Build platform support matrix

Below are common build platforms and their statuses. This is not meant as a complete list, and the build specifics might change with new versions of those platforms. Further below you'll find more specific help on how to set up the build.

PlatformPackage ManagerSupportedSkill LevelNotes
HaikupkgmanYesBeginnerEasiest (with caveats)
Arch LinuxpacmanYesAdvanced-
BeOSpkgNo-Once upon a time..
CentOSrpm/yumYesIntermediate-
Debian LinuxaptYesIntermediateMissing mkisofs
Elementary OSaptYesBeginnerMissing mkisofs
Fedorarpm/yumYesBeginnerMissing mkisofs
FreeBSDpackagesYesAdvancedWorks very well
GentooPortageYesAdvanced-
Linux MintaptYesBeginnerMissing mkisofs
Mac OS XMacPortsYesIntermediate-
NetBSDpackagesYesAdvancedUntested
OpenSUSErpm/zypperYesIntermediateMissing mkisofs
Red Hat Linuxrpm/yumYesIntermediateMissing mkisofs
Solarissolaris pkgNo--
UbuntuaptYesBeginnerMissing mkisofs
WindowsCygwinNo--
ZetapkgNo-Once upon a time..

Generalized List

Requirements for compiling the build tools

Requirements for compiling Haiku

Requirements to compile Haiku for the ARM platform

Linux remarks - xattr

Building Haiku correctly currently requires proper xattr support on the file system you compile it with. Currently, your options are unfortunately rather limited, as for example, ext4 does not sufficiently support this feature. Recommended file systems to use under Linux are XFS, and ReiserFS at this time.

There is a fallback mechanism that is used otherwise, but this is known to be problematic sometimes.

In order to use xattr support, some distributions may need "attr" and "attr-dev" installed. See Configure Option : --use-xattr

APT-based GNU/Linux Distribution (Debian, Ubuntu, Mint...)

Here are the packages to install on Debian/Ubuntu/Mint, which uses APT and sudo.

sudo apt-get install git nasm autoconf automake texinfo flex bison gawk build-essential unzip wget zip less zlib1g-dev libcurl4-openssl-dev genisoimage libtool

For the ARM port you will also need these packages:

sudo apt-get install u-boot-tools util-linux mtools device-tree-compiler

pacman (Arch Linux)

Here are the packages to install on Arch Linux which uses pacman

sudo pacman -S base-devel bison git texinfo nasm openssh unzip curl wget flex cdrtools bc

For the ARM port you will also need these packages:

sudo pacman -S yaourt uboot-tools mtools

RPM-based GNU/Linux Distributions using yum(Fedora, CentOS...)

Here are the packages to install on Fedora/CentOS, which uses Yum.

sudo yum install git nasm autoconf automake texinfo flex bison gcc gcc-c++ make glibc-devel zlib-devel genisoimage curl-devel libfdt byacc mtools

With Fedora, you will also need to install the libstc++-static package if the build fails because of a missing libsupc++:

sudo yum install libstdc++-static

RPM-based GNU/Linux Distribution using zypper (OpenSUSE, SLES)

Here are the packages to install on OpenSUSE/SUSE Enterprise which uses zypper.

sudo zypper install git nasm autoconf automake texinfo flex bison gcc-c++ make glibc-devel zlib-devel curl-devel

Portage (Gentoo)

Here are the packages to install on Gentoo which uses Portage.

sudo emerge -av dev-vcs/git autoconf automake texinfo flex bison gawk tar sys-libs/zlib cdrkit wget nasm net-misc/curl bc

For the ARM port you will also need these packages:

sudo emerge -av u-boot-tools mtools util-linux dtc

BSD Based Distribution

Package based (FreeBSD < 10):

sudo pkg_add -r bison git nasm gawk texinfo cdrtools-devel wget u-boot mtools linuxfdisk curl
Package based (FreeBSD >= 10):
sudo pkg install bison git nasm gawk texinfo cdrtools-devel wget u-boot mtools linuxfdisk curl
Ports based:
sudo portinstall devel/bison devel/git devel/nasm lang/gawk print/texinfo sysutils/cdrtools-devel ftp/curl ftp/wget devel/u-boot emulators/mtools sysutils/linuxfdisk

OS X

A case-sensitive file system is required to build Haiku. You can use Disk Utility to create a case-sensitive disk image and store the Haiku source tree on that. Case-sensitive HFS+ works fine.

First install Xcode or if you don't want all of Xcode you can install just the command line tools by running:

xcode-select --install

If you didn't install all of Xcode you will need to agree to the Xcode license by running:

xcodebuild -license

Once you have installed XCode and the command line tools as well as agreed to the end user license you can install the prerequisite software either by using MacPorts or by using Homebrew.

To install the prerequisite software using Macports do the following:

Install MacPorts (A standard Installer package is provided). Close your Terminal, and enter in a new one:

sudo port install autoconf cdrtools gawk wget nasm less mpfr gmp libmpc
(You will be prompted for the administrator password of the current account)

If you get an error “port: command not found”, the MacPorts shell configuration, stored in ~/.profile, is probably not taken into account. If you’re using Bash, you probably have a ~/.bash_profile or