Go to file
Axel Dörfler 9dec231042 Sorry for this large commit in advance; it's not really possible to divide this
into smaller parts:

media_addon_server:
* Removed (broken) use of (broken and inefficient) home-brewn Map, and List
  classes. This also fixes a crash on shutdown when used with the malloc_debug
  implementation. It's using stl::vector, and stl::map now instead.

_shared_buffer_list:
* Renamed _shared_buffer_list to SharedBufferList, and put it into the BPrivate
  namespace. Also, made a class out of it.
* Separated shared buffer list creation from cloning.
* Enlarged maximum number of buffers to something that is not that evil, but
  actually uses the space it has (ie. is a useful multiple of
  shared_buffer_info that fills a multiple of B_PAGE_SIZE as much as possible).
* No longer drops into the debugger if the
* The list that is currently used is very inefficient for the features it
  provides though (no change there).

_buffer_id_cache:
* Renamed to BufferCache, and put it into the private namespace
* It now deletes its buffers on deletion; since the BBufferConsumer will be
  gone, too, at this point, there is little chance that there are still buffers
  in use.
* Also, it's now using std::map instead of the (see above) Map class.

BBuffer:
* Got rid of the fBufferID member.

Misc.:
* Got rid of the global "team" variable; the media kit is now using the
  private app kit's current_team() now.
* Added a lot of missing error checks (mostly memory allocations).
* Renamed fields like "flavorid" to flavor_id, renamed "dfi_*" fields to
  something more detailed.
* Moved ServerInterface.h from src/servers/media/ to headers/private/media.
* Notifications.h was not self contained.
* Added missing licenses.
* Lots of cleanups, and coding style fixes.

What this doesn't fix:
* Bug #4954 which started all this (this comes next, though)
* Deinitialization is broken, as the PortPool is uninitialized too early, and
  still used afterwards.
* The strange add-on monitoring code in the media_addon_server


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34500 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-05 11:11:28 +00:00
3rdparty The vmware vga implementation doesn't work with Haiku yet anyway (different bpp than the driver wants). The std one doesn't work anymore due to a regression... just remove the option and leave it fallback to cirrus for now, works but ends up in 16bpp by default. 2009-11-28 21:44:29 +00:00
build Attempt at allowing to use C++ structures in C only code: We use the 2009-12-02 10:56:10 +00:00
data The en.catkeys file is autogenerated from the sourcecode, there is no need to add it to the data/ folder. 2009-12-04 07:41:35 +00:00
docs * Corrected Alt-` workspace switch description. 2009-11-18 13:49:19 +00:00
headers Sorry for this large commit in advance; it's not really possible to divide this 2009-12-05 11:11:28 +00:00
src Sorry for this large commit in advance; it's not really possible to divide this 2009-12-05 11:11:28 +00:00
configure * configure: Pass gcc's host machine string to the jam build system. 2009-11-24 18:57:49 +00:00
Jamfile
Jamrules * bonefish: Cleanup. 2009-11-26 11:11:17 +00:00
makehaikufloppy
ReadMe * restoring original state 2009-10-22 08:30:06 +00:00
ReadMe.cross-compile

Building on BeOS
================

For building on BeOS you need the development tools from:

  http://haiku-os.org/downloads

Please always use the most recent versions. They are required to build Haiku.


Building on a non-BeOS platform
===============================

Please read the file 'ReadMe.cross-compile' before continuing. It describes
how to build the cross-compilation tools and configure the build system for
building Haiku. After following the instructions you can directly continue
with the section Building.


Configuring on BeOS
===================

Open a Terminal and change to your Haiku trunk folder. To configure the build
you can run configure like this:

  ./configure --target=TARGET

Where "TARGET" is the target platform that the compiled code should run on:
  * haiku (default)
  * r5
  * bone
  * dano (also for Zeta)

The configure script generates a file named "BuildConfig" in the
"generated/build" directory. As long as configure is not modified (!), 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.


Building
========

Haiku can be built in either of two ways, as disk image file (e.g. for use
with emulators) or as installation in a directory.

Image File
----------

  jam -q haiku-image

This generates an image file named 'haiku.image' in your output directory
under 'generated/'.

VMware Image File
-----------------

  jam -q haiku-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-haiku

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 BeOS,
but it is not yet supported under Linux and other non-BeOS platforms.

Bootable CD-ROM Image
---------------------

This _requires_ having the mkisofs tool installed.
On Debian GNU/Linux for example you can install it with:
  apt-get install mkisofs
On BeOS you can get it from http://bebits.com/app/3964 along with cdrecord.

This creates a bootable 'haiku-cd.iso' in your 'generated/' folder:

  jam -q haiku-cd

Under Unix/Linux, and BeOS you can use cdrecord to create a CD with:

  cdrecord dev=x,y,z -v -eject -dao -data generated/haiku-cd.iso

Here x,y,z is the device number as found with cdrecord -scanbus, it can also
be a device path on Linux.

Building 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 Pulse

Alternatively, you can 'cd' to the directory of the component you want to
build and run 'jam' from there.

You can also force rebuilding of a component by using the "-a" parameter:

  jam -a Pulse


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 BeOS bootmanager run this
in a Terminal:

  bootman

On Emulated Hardware
--------------------

For emulated hardware you should build disk image (see above). How to setup
this image depends on your emulater. A tutorial for Bochs on BeOS is below.
If you use QEmu, you can usually just provide the path to the image as
command line argument to the "qemu" executable.

Bochs
-----

Version 2.2 of Bochs for BeOS (BeBochs) can be downloaded from BeBits:

  http://www.bebits.com/app/3324

The package installs to: /boot/apps/BeBochs2.2

You have to set up a configuration for Bochs. You should edit the ".bochsrc" to
include the following:

ata0-master: type=disk, path="/path/to/haiku.image", cylinders=122, heads=16, spt=63
boot: disk

Now you can start Bochs:

  $ cd /boot/apps/BeBochs2.2
  $ ./bochs

Answer with RETURN and with some patience you will see Haiku booting.
If booting into the graphical evironment fails you can try to hit "space" at the
very beginning of the boot process. The Haiku bootloader should then come up and
you can select some safe mode options.


Docbook documentation
=====================

Our documentation can be found in 'src/documentation/'. You can build it by
running 'jam' in that folder. The results will be stored in the 'generated/'
folder.