From b87e672a059b6af94943b91dab0a5b1bc13c935d Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Fri, 19 Jun 2015 15:17:14 -0400 Subject: [PATCH] ReadMe.Compiling: rework to Markdown, cleanup links. There are still probably issues with the walkthroughs in here, but I don't cross-compile Haiku very often so someone else should fix those. --- ReadMe.Compiling | 257 -------------------------------------------- ReadMe.Compiling.md | 236 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 236 insertions(+), 257 deletions(-) delete mode 100644 ReadMe.Compiling create mode 100644 ReadMe.Compiling.md diff --git a/ReadMe.Compiling b/ReadMe.Compiling deleted file mode 100644 index b84b1d2d25..0000000000 --- a/ReadMe.Compiling +++ /dev/null @@ -1,257 +0,0 @@ -Building Haiku from source -========================== - -This is a overview into the process of building HAIKU from source. -An online version is available at http://www.haiku-os.org/guides/building/ - -Official releases of Haiku are at http://www.haiku-os.org/get-haiku -The (unstable) nightly builds are available at http://www.haiku-files.org - -To build Haiku, you will need to - * ensure pre-requisite software is installed - * download sources - * configure your build - * run jam to initiate the build process - -We currently support these platforms: - * Haiku - * Linux - * FreeBSD - * Mac OS X Intel - -Pre-requisite software -====================== - -Tools provided within Haiku's repositories - - * Jam (Jam 2.5-haiku-20111222) - * Haiku's cross-compiler (needed only for non-Haiku platforms) - -The tools to compile Haiku will vary, depending on the platform that you are -using to build Haiku. When building from Haiku, all of the necessary -development tools are included in official releases (e.g. R1 alpha 1) and in the -(unstable) nightly builds. - - * Git client - * SSH client (for developers with commit access) - * gcc and the binutils (as, ld, etc., required by gcc) - * make (GNU make) - * bison - * flex and lex (usually a mini shell script invoking flex) - * makeinfo (part of texinfo, needed for building gcc 4 only) - * autoheader (part of autoconf, needed for building gcc) - * automake - * gawk - * nasm - * wget - * (un)zip - * cdrtools (not genisoimage!) - * case-sensitive file system - -Whether they are installed can be tested for instance by running them in the -shell with the "--version" parameter. - -The following libraries (and their respective headers) are required: - * curl - * zlib - -Specific: Haiku for the ARM platform ------------------------------------- - -The following tools are needed to compile Haiku for the ARM platform - - * mkimage (http://www.denx.de/wiki/UBoot) - * Mtools (http://www.gnu.org/software/mtools/intro.html) - -Specific: Mac OS X ------------------- - -Disk Utility can create a case-sensitive disk image of at least 3 GiB in size. -The following darwin ports need to be installed: - * expat - * gawk - * gettext - * libiconv - * gnuregex - * gsed - * cdrtools - * nasm - * wget - * less - * mpfr - * gmp - * libmpc - -More information about individual distributions of Linux and BSD can be found -at http://haiku-os.org/guides/building/pre-reqs - - -Download Haiku's sources -======================== - -There are two parts to Haiku's sources -- the code for Haiku itself and a set -of build tools for compiling Haiku on an operating system other than Haiku. -The buildtools are needed only for non-Haiku platform. - -Anonymous checkout: - git clone git://git.haiku-os.org/haiku - git clone git://git.haiku-os.org/buildtools - -Developer with commit access: - git clone ssh://git.haiku-os.org/haiku - git clone ssh://git.haiku-os.org/buildtools - - -Building the Jam executable -=========================== - -This step applies only to non-Haiku platforms. - -Change to the buildtools folder and we will start to build 'jam' which is a -requirement for building Haiku. Run the following commands to generate and -install the tool: - - cd buildtools/jam - make - sudo ./jam0 install - -- or -- - ./jam0 -sBINDIR=$HOME/bin install - - -Configuring your build -====================== - -The configure script generates a file named "BuildConfig" in the -"generated/build" directory. As long as configure is not modified (!) or the -cross-compilation tools have been updated, there is no need to call it again. -That is for re-building you only need to invoke jam (see below). If you don't -update the source tree very frequently, you may want to execute 'configure' -after each update just to be on the safe side. - -Depending on your goal, there are several different ways to configure Haiku. -You can either call configure from within your Haiku trunk folder. That will -prepare a folder named 'generated', which will contain the compiled objects. -Another option is to manually created one or more 'generated.*' folders and run -configure from within them. For example imagine the following directory setup - - buildtools-trunk/ - haiku-trunk/ - haiku-trunk/generated.x86gcc2 - -Configure a GCC 2.95 Hybrid, from non-Haiku platform ----------------------------------------------------- - - cd haiku-trunk/generated.x86gcc2 - ../configure --use-xattr-ref \ - --build-cross-tools x86_gcc2 ../../buildtools/ \ - --build-cross-tools x86 - -Configure a GCC 2.95 Hybrid, from within Haiku ----------------------------------------------- - - cd haiku-trunk/generated.x86gcc2 - ../configure --target-arch x86_gcc2 --target-arch x86 - -Additional information about GCC Hybrids can be found on the website, -http://www.haiku-os.org/guides/building/gcc-hybrid - -Configure options ------------------ - -The various runtime options for configure are documented in its onscreen help - - ./configure --help - - -Building via Jam -================ - -Haiku can be built in either of two ways, as disk image file (e.g. for use -with emulators, to be written directly to a usb stick, burned as a compact -disc) or as installation in a directory. - -Running Jam ------------ - -There are various ways in which you can run jam. - - * If you have a single generated folder, - you can run 'jam' from the top level of Haiku's trunk. - * If you have one or more generated folders, - (e.g. generated.x86gcc2), you can cd into that directory and run 'jam' - * In either case, you can cd into a certain folder in the source tree (e.g. - src/apps/debugger) and run jam -sHAIKU_OUTPUT_DIR= - -Be sure to read build/jam/UserBuildConfig.ReadMe and UserBuildConfig.sample, -as they contain information on customizing your build of Haiku. - -Building a Haiku anyboot file ---------------------------- - - jam -q @anyboot-image - -This generates an image file named 'haiku-anyboot.image' in your output -directory under 'generated/'. - -Building a VMware image file ----------------------------- - - jam -q @vmware-image - -This generates an image file named 'haiku.vmdk' in your output -directory under 'generated/'. - -Directory Installation ----------------------- - - HAIKU_INSTALL_DIR=/Haiku jam -q @install - -Installs all Haiku components into the volume mounted at "/Haiku" and -automatically marks it as bootable. To create a partition in the first place -use DriveSetup and initialize it to BFS. - -Note that installing Haiku in a directory only works as expected under Haiku, -but it is not yet supported under Linux and other non-Haiku platforms. - -Building individual components ------------------------------- - -If you don't want to build the complete Haiku, but only a certain -app/driver/etc. you can specify it as argument to jam, e.g.: - - jam -q Debugger - -Alternatively, you can 'cd' to the directory of the component you want to -build and run 'jam' from there. Note: if your generated directory named -something other than "generated/", you will need to tell jam where it is. - - jam -q -sHAIKU_OUTPUT_DIR= - -You can also force rebuilding of a component by using the "-a" parameter: - - jam -qa Debugger - - -Running -======= - -Generally there are two ways of running Haiku. On real hardware using a -partition and on emulated hardware using an emulator like Bochs or QEMU. - -On Real Hardware ----------------- - -If you have installed Haiku to its own partition you can include this -partition in your bootmanager and try to boot Haiku like any other OS you -have installed. To include a new partition in the Haiku bootmanager run this -in a Terminal: - - BootManager - -On Emulated Hardware --------------------- - -For emulated hardware you should build disk image (see above). How to setup -this image depends on your emulater. If you use QEMU, you can usually just -provide the path to the image as command line argument to the "qemu" -executable. diff --git a/ReadMe.Compiling.md b/ReadMe.Compiling.md new file mode 100644 index 0000000000..7eb70cbcdd --- /dev/null +++ b/ReadMe.Compiling.md @@ -0,0 +1,236 @@ +Building Haiku +========================== +This is a overview into the process of building HAIKU from source. +An online version is available at . + +Official releases of Haiku are at . +The (unstable) nightly builds are available at . + +We currently support the following platforms: + * Haiku + * Linux + * FreeBSD + * Mac OS X + +Required Software +---------------------------- +Tools provided within Haiku's repositories: + * `jam` (Jam 2.5-haiku-20111222) + * Haiku's cross-compiler (needed only for non-Haiku platforms) + +The tools to compile Haiku will vary, depending on the platform that you are +using to build Haiku. When building from Haiku, all of the necessary +development tools are included in official releases (e.g. R1 alpha4) and in the +nightly builds. + + * `git` + * `ssh` (for developers with commit access) + * `gcc`/`g++` and binutils (`as`, `ld`, etc., required by GCC) + * (GNU) `make` + * `bison` + * `flex` and `lex` (usually a mini shell script invoking `flex`) + * `makeinfo` (part of `texinfo`, only needed for building GCC 4) + * `autoheader` (part of `autoconf`, needed for building GCC) + * `automake` + * `gawk` + * `nasm` + * `wget` + * `[un]zip` + * `cdrtools` (**not** `genisoimage`!) + * case-sensitive file system + +Whether they are installed can be tested by running them in a shell with +the `--version` parameter. + +The following libraries (and their respective headers) are required: + * `curl` + * `zlib` + +### Haiku for ARM +If you want to compile Haiku for ARM, you will also need: + + * `mkimage` () + * Mtools () + +### On Mac OS X + +Disk Utility can create a case-sensitive disk image of at least 3 GiB in size. +The following ports need to be installed: + * `expat` + * `gawk` + * `gettext` + * `libiconv` + * `gnuregex` + * `gsed` + * `cdrtools` + * `nasm` + * `wget` + * `less` + * `mpfr` + * `gmp` + * `libmpc` + +More information about individual distributions of Linux and BSD can be found +at . + +Downloading Haiku's sources +-------------------------------------------------- +There are two parts to Haiku's sources — the code for Haiku itself and a set +of build tools for compiling Haiku on an operating system other than Haiku. +The buildtools are needed only for non-Haiku platforms. + +Anonymous checkout: +``` +git clone https://git.haiku-os.org/haiku +git clone https://git.haiku-os.org/buildtools +``` +(You can also use the `git://` protocol, but it is not secure). + +If you have commit access: +``` +git clone ssh://git.haiku-os.org/haiku +git clone ssh://git.haiku-os.org/buildtools +``` + +Building Jam +------------------------------------------- +(*This step applies only to non-Haiku platforms.*) + +Change to the `buildtools` folder and run the following commands to +generate and install `jam`: +``` +cd buildtools/jam +make +sudo ./jam0 install +``` +Or, if you don't want to install `jam` systemwide: +``` +./jam0 -sBINDIR=$HOME/bin install +``` + +Configuring the build +------------------------------------- +The `configure` script generates a file named `BuildConfig` in the +`generated/build` directory. As long as `configure` is not modified (!) and the +cross-compilation tools have not been updated, there is no need to call it again. +For rebuilding, you only need to invoke `jam` (see below). If you don't +update the source tree very frequently, you may want to execute `configure` +after each update just to be on the safe side. + +Depending on your goal, there are several different ways to configure Haiku. +You can either call configure from within your Haiku trunk folder. That will +prepare a folder named 'generated', which will contain the compiled objects. +Another option is to manually created one or more `generated.*` folders and run +configure from within them. For example, imagine the following directory setup: +``` +buildtools-trunk/ +haiku-trunk/ +haiku-trunk/generated.x86gcc2 +``` + +### Configure a GCC 2.95 Hybrid, from a non-Haiku platform +```bash +cd haiku-trunk/generated.x86gcc2 +../configure --use-xattr-ref \ + --build-cross-tools x86_gcc2 ../../buildtools/ \ + --build-cross-tools x86 +``` + +### Configure a GCC 2.95 Hybrid, from Haiku +``` +cd haiku-trunk/generated.x86gcc2 +../configure --target-arch x86_gcc2 --target-arch x86 +``` + +Additional information about GCC Hybrids can be found on the website, +. + +### Configure options +The various runtime options for configure are documented in its onscreen help +```bash +./configure --help +``` + +Building via Jam +---------------------------- + +Haiku can be built in either of two ways, as disk image file (e.g. for use +with emulators, to be written directly to a usb stick, burned as a compact +disc) or as installation in a directory. + +### Running Jam + +There are various ways in which you can run `jam`: + + * If you have a single generated folder, you can run 'jam' from the top level of Haiku's trunk. + * If you have one or more generated folders, (e.g. generated.x86gcc2), + you can `cd` into that directory and run `jam`. + * In either case, you can `cd` into a certain folder in the source tree (e.g. + src/apps/debugger) and run jam -sHAIKU_OUTPUT_DIR= + +Be sure to read `build/jam/UserBuildConfig.ReadMe` and `UserBuildConfig.sample`, +as they contain information on customizing your build of Haiku. + +### Building a Haiku anyboot file +``` +jam -q @anyboot-image +``` + +This generates an image file named `haiku-anyboot.image` in your output +directory under `generated/`. + +### Building a VMware image file +``` +jam -q @vmware-image +``` +This generates an image file named `haiku.vmdk` in your output +directory under `generated/`. + +### Directory Installation +``` +HAIKU_INSTALL_DIR=/Haiku jam -q @install +``` + +Installs all Haiku components into the volume mounted at "/Haiku" and +automatically marks it as bootable. To create a partition in the first place +use DriveSetup and initialize it to BFS. + +Note that installing Haiku in a directory only works as expected under Haiku, +but it is not yet supported under Linux and other non-Haiku platforms. + +### Building individual components +If you don't want to build the complete Haiku, but only a certain +app/driver/etc. you can specify it as argument to jam, e.g.: +``` +jam -q Debugger +``` +Alternatively, you can `cd` to the directory of the component you want to +build and run `jam` from there. **NOTE:** if your generated directory is named +something other than `generated/`, you will need to tell `jam` where it is: +``` +jam -q -sHAIKU_OUTPUT_DIR= +``` +You can also force the rebuild of a component by using the `-a` parameter: +``` +jam -qa Debugger +``` + +Running +---------------- +Generally there are two ways of running Haiku: on real hardware using a +partition, and on emulated hardware using an emulator (like VirtualBox, or QEMU). + +### On Real Hardware +If you have installed Haiku to its own partition you can include this +partition in your bootmanager and try to boot Haiku like any other OS you +have installed. To include a new partition in the Haiku bootmanager, start +the BootManager configurator by running: +``` +BootManager +``` + +### On Emulated Hardware +For emulated hardware you should build disk image (see above). How to set up +this image depends on your emulator. If you use QEMU, you can usually just +provide the path to the image as command line argument to the `qemu` +executable.