Apache OpenOffice (AOO)
=======================

    The Apache OpenOffice project provides a full featured office productivity suite
    based on open standards. It is the continuation of the OpenOffice.org project.
    
    For detailed information about Apache OpenOffice please visit 
    http://openoffice.apache.org/

    Apache OpenOffice is a very large project with many components and mainly 
    implemented in C++ but also in Java, Perl, Python and other languages.

    Currently supported platforms include:

        Linux variants
        Windows
        Mac OS X
        OS/2

    OpenOffice is used by millions of users worldwide and with more than 100 million
    downloads it is one of the most successful open source projects.

Getting the latest sources via Subversion
=========================================

    You can always checkout the latest source via subversion using the following
    command:

    svn co https://svn.apache.org/repos/asf/incubator/ooo/trunk aoo

    For further information visit http://openoffice.apache.org/source.html

Building Apache OpenOffice
===========================

    Apache OpenOffice is a big project and depends on several other external libraries.
    The list of prerequisites varies for the different platforms. 

    A comprehensive and complete building guide can be found in the project wiki under

    http://wiki.openoffice.org/wiki/Documentation/Building_Guide_AOO

    With having all prerequisites in place you can simply run

    cd aoo/main
    autoconf
    ./configure <configure_switches>
    ./bootstrap
    source *.set.sh
    cd instsetoo_native
    build --all

    Note that building OpenOffice can take several hours.

    The default build will produce a setup version (e.g. setup program on windows, dmg on Mac OS, 
    rpm and deb packages on Linux, pkg packages on Solaris) and an archived version. The output
    can be found in the <output> directory in instsetoo_native/<output_dir>/OpenOffice/...
