A Brief Introduction to our Source Repository Layout
- src all files that have to be built
- add-ons everything you'll find in /boot/system/add-ons/ including all kernel drivers, media codecs, and Translators etc.
- apps the GUI applications that are not preferences apps
- bin command line applications such as the GNU tools
- build files to allow using the Haiku build-tools on non-BeOS compatible platforms
- data data files of any kind like the MIME type database or keymap files
- kits the public API of Haiku that is organized in kits - except the "kernel kit" which is part of libroot.so
- libs static and shared libraries that are used by Haiku applications
- preferences the preferences applications
- servers
- system most of the files you'll find in the /boot/system directory - they make up the core of Haiku without the public userlevel API besides everything what is in libroot.so
- boot The boot loader with all supported platforms
- glue The glue code that makes shared libraries execute their global constructors/destructors, and executables call main().
- kernel The kernel and all of its core services and supported architectures
- ldscripts linker scripts for building various parts of Haiku
- libroot Everything that is exported by libroot.so which is the POSIX API and the kernel kit
- runtime_loader the userland ELF loader that loads and starts executables
- tests this more or less mirrors the tree itself, and contains test applications for the various subsystems (like an app_server that runs as a window under BeOS), some of them are to be used in a C++ unit test suite.
- tools Tools that are either needed to build Haiku or are in other ways useful even when not running under Haiku
- headers all shared private and public headers
- build
- compatibility header files that increase the compatibility of Haiku to other systems; currently, you'll find some headers that allow compilation of some BSD tools (for libbsd.so).
- cpp
- glibc
- gnu
- legacy non-POSIX headers that are still needed by some ancient or not so well maintained tools
- libs
- os the public headers that define the Haiku API
- posix the POSIX API as supported by Haiku
- private private headers that are shared throughout Haiku components
- tools
Now that the basic idea should be clear, let me point out some inconsistencies in the current layout that haven't been resolved yet:
- Top-level "docs" contains doxygen source files that will have to be built; the whole directory layout there is a bit untidy, anyway.
- Some of the tools in "src/tools" will also be part of a Haiku installation, and also, some of the binaries in "src/bin" are needed to build Haiku (such as mimeset)
- "src/system/ldscripts" don't really belong where they are; they should be in "build".