Go to file
Michael Lotz 305aff3f78 * Changed the way how devices are enumerated and protocol handlers are added to
handle the different device classes. Handlers are now added based on the
  application collections that the HID descriptor describes instead of by
  enumerating the different report items inside the reports. This means that a
  device is now logically treated as a mouse when it comes with an application
  collection that designates it as a mouse, instead of when there is a report
  that contains an X and a Y axis. This resolves the conflicts that gamepads
  and joysticks were added as mice due to them containing such elements. This
  therefore fixes #4499 and opens up the way to properly handle other device
  types like joysticks (#7429), gamepads, tablets (#7354, #5989 and #7481) and
  so on. I'll work on gamepads/joysticks next and see where we stand for tablets
  later.
* Added a few enumeration functions to HIDCollection to support the above.
* Fix the root collection handling. A device doesn't describe a single root
  collection and then adds everything as a child. Instead it just has multiple
  collections on level 0. We account for that now by always creating an empty
  logical collection as the root collection where all the collections of the
  descriptor get added.
* Rename the {Mouse|Keyboard}Device.{cpp|h} to
  {Mouse|Keyboard}ProtocolHandler.{cpp|h} as that more clearly describes their
  purpose. These classes are protocol handlers, i.e. they handle the ioctl based
  mouse and keyboard protocol between the driver and the input_server add-ons.
* Change a lot of stuff to use references instead of pointers where it makes
  sense (not necessarily complete yet).

I've tested this successfully on a keyboard with extended keys, a combo device
with a keyboard with extended keys and a mouse, a mouse and a gamepad (that now
doesn't do anything anymore) and found no regressions. However, since there are
a lot of very varied ways how to describe such functions with HID, it's not too
unlikely that some more curiously described devices will now stop working. These
have to be handled case by case and their usages have to be added to the added
to the appropriate handlers (or new handlers have to be written). Please test
and create bug reports (preferrably including the report descriptor that is
written out to /tmp).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41794 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-28 19:59:02 +00:00
3rdparty Add a global setting for audio support. Add some support for logging though not used. Some other fixes. 2011-05-04 08:28:04 +00:00
build Roll back previous change since the new icu packages have 229 files and the old ones only had 8. 2011-05-27 22:45:43 +00:00
data Updated catkeys from HTA. Replaced false Chinese catkeys with the correct ones. Looks like ReadOnlyBootPrompt should now be available in be, de, fi, fr, ja, ru, sv. All other translations should finish and validate that catalog really soon or it wont make it onto the alpha3. +alpha3 2011-05-27 19:00:03 +00:00
docs Added Chinese and Russian flags. Fixes #7566. Thanks taos for noticing. 2011-05-24 18:02:15 +00:00
headers * Followed Ingo's suggestion, and added a BWindow::Layout() method. 2011-05-27 22:21:59 +00:00
src * Changed the way how devices are enumerated and protocol handlers are added to 2011-05-28 19:59:02 +00:00
configure * Merged weak-symbols branch. 2010-11-22 13:06:36 +00:00
Jamfile Some cleanup. Removed 'alltests' as there are no other references to its 2010-10-31 13:26:59 +00:00
Jamrules Introduced a new variable HAIKU_CATALOGS_OBJECT_DIR. The catkeys and catalogs 2010-09-26 16:55:06 +00:00
makehaikufloppy
ReadMe * restoring original state 2009-10-22 08:30:06 +00:00
ReadMe.cross-compile Added yasm and cdrtools to list of dependencies. 2009-07-11 10:17:06 +00:00

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.