<html><head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body>
<STYLE>
<!--
KBD {font-weight: bold;}
VAR {font-style: italic;}
-->
</STYLE>

<b>
<font face="Courier New, Monospaced" color="#CC6600">
<H1>Building OpenOffice.org under 

Solaris

</H1></font>
</b>

<p>
<b>
This document refers to older versions of OpenOffice.org only. If you 
intend to build the snapshot No. 638 or later, 
<a href="build_solaris.html">go here!</a>
</b>

<p>
This document describes the requirements and actions that you need to build 
OpenOffice.org on 

Solaris.

Commands you have to type on the keyboard follow this syntax throughout this 
document:


<p>
<pre>
<KBD>config_office> ./configure</KBD>
</pre>

<p>
In this example,
the script <CODE>configure</CODE>
is executed in the directory <CODE>config_office</CODE>.




<CODE>$SRC_ROOT</CODE> will denote the directory in which 
the source code of OpenOffice.org is stored. 

<br><p><Br><p><Br><p>



<H1>Table of contens:</H1>

<ul>

<li>
<a href="#Overview">Overview</a>
</li>

<ul>

<li>
<a href="#OverviewofPerformingaFullBuild">of Performing
a Full Build</a>
</li>

<li>
<a href="#OverviewofBuildinganIndividualProject">of 
Building an Individual Project</a>
</li>

</ul>

<li>
<a href="#BuildRequirements">Build Requirements</a>
</li>

<ul>

<li>
<a href="#ExternalComponents">External Components</a>
</li>

<li>
<a href="#GetTheSourceCode">Get the Source Code</a>
</li>

<li>
<a href="#GeneratingtheBuildEnvironmentandBuildTools">Generating
the Build Environment and Build Tools</a>
</li>

</ul>

<li>
<a href="#BuildInstructions">Build Instructions</a>
</li>

<ul>

<li>
<a href="#BuildingaFullBuildofOpenOffice">Building
a Full Build</a>
</li>

<li>
<a href="#BuildingIndividualProjects">Building
Individual Projects with a Prebuild</a>
</li>

<li>
<a href="#BuildingaProjectwithDebugInformation">Building
a Project with Debug Information</a>
</li>

</ul>

<li>
<a href="#InstallInstructions">Instructions to Build an Installation
Set</a>
</li>

</ul>

<br><p><br><p><br><p>



<H1>
<a NAME="Overview">Overview</a> 
</H1>

<p>All those who have done a build of OpenOffice.org before may use 
this section as a reminder. You are well advised to check the release notes at 
<a href="//dev_docs/source/download.html">www.openoffice.org/dev_docs/source/download.html</a>
and the section 
<a href="#BuildRequirements">Build Requirements</a> in this 
document to inform yourself about changes since the previous releases. 

<p>
Detailed step-by-step build descriptions are given from the 
next section on. 

<p>You can perform a full build, or you can build an 
individual project using a prebuild
version. 

<H2>
<a NAME="OverviewofPerformingaFullBuild"></a>Overview
of Performing a Full Build
</H2>

<p>To perform a full build, you need to follow these steps:

<ol>

<li>
Get the source code, either from the download webpage at 
<a href="//dev_docs/source/get_tarballs.html">www.openoffice.org/dev_docs/source/get_tarballs.html</a>,
or alternatively via a check-out from the cvs tree against a 
release tag, e.g. <em>OpenOffice614</em>. 
</li>


<li>
Run the <CODE>configure</CODE> script to check all requirements and
to create the script 

<CODE>SolarisSparcEnv.Set</CODE>.

</li>




<li>
Run the 

<CODE>SolarisSparcEnv.Set</CODE>

script to set all environment variables.
</li>


<li>
Create the build tools using <CODE>bootstrap</CODE> (unless you
want to build the 613 or an earlier version for which the build
tools are already provided in the source).
</li>


<li>
Build using the <CODE>dmake</CODE> tool.
</li>

</ol>

For detailed build instructions, see the section 
<a href="#BuildingaFullBuildofOpenOffice">Building
a Full Build of the Office Suite</a> in this document.
The installation procedure is described 
<a href="#InstallInstructions">at the end</a> of 
this document.

<H2>
<a NAME="OverviewofBuildinganIndividualProject"></a>Overview
of Building an Individual Project
</H2>

<p>You can use a prebuild version to build an individual project. Having a
prebuild version is neccessary because the individual project you want 
to build could depend on other projects. A project
builds a particular component of OpenOffice.org. 
For example, the Word Processing 
project builds the Word Processing application. To build an individual project,
you must follow these steps:
<ol>
<li>
Download the appropriate solver tarballs from the download webpage at 
<a href="//dev_docs/source/get_tarballs.html">www.openoffice.org/dev_docs/source/get_tarballs.html</a>,
i.e. for 614 the solver tarball 

<CODE>solver614_solaris_sparc.tar.gz.</CODE>

</li>

<li>
Check out the modules for the project that you want to build from the 
OpenOffice.org CVS tree. 
If your project uses the resources module, <CODE>res</CODE>, check
out this module also.
You can, of course, also download the entire source from the download webpage 
(<a href="//dev_docs/source/get_tarballs.html">www.openoffice.org/dev_docs/source/get_tarballs.html</a>).
However, it is not possible to 
download individual modules there. 
</li>

<li>
Check out the module <CODE>config_office</CODE>. This is always 
necessary to create the build environment.
</li>


<li>
Also check out the modules <CODE>dmake, external, xml2cmp, 
mkdepend</CODE> (from 625 on), <CODE>sal, 
vos, tools and rscpp</CODE>. These are required by <CODE>bootstrap</CODE> 
(see below). They are not needed for builds 613 or earlier for which 
the build tools are provided in <CODE>solenv</CODE>. 
</li>



<li>
Unpack the solver tarball.
</li>


<li>
Run the <CODE>configure</CODE> script to check all requirements and
to create the script <CODE>SolarisSparcEnv.Set</CODE>.
</li>




<li>
Run the script 

<CODE>SolarisSparcEnv.Set</CODE>

to set all environment variables.
</li>


<li>
Create the build tools using <CODE>bootstrap</CODE> (unless you
want to build the 613 or an earlier version for which the build
tools are provided in the <CODE>solenv</CODE> module).
</li>


<li>Build each module against the prebuild <CODE>solver</CODE> 
using the <CODE>dmake</CODE> tool.
</li>

</ol>

For detailed build instructions, see 
<a href="#BuildingIndividualProjects">Building
Individual Projects with a Prebuild</a>. 


<br><p><br><p><br><p>



<H1>
<a NAME="BuildRequirements"></a>Build Requirements
</H1>

<P>Before you start building, you must ensure that your system satisfies the
recommended software and hardware requirements for the type of system you
are working on. For 

Solaris, 

these are as follows:

<p>



<b>Software Requirements</b>
<ul>

<li>
Solaris 2.8
</li>

<li>
until 613: Solaris Workshop 5 Compiler and the patch 106327-06<br>
from 614 on: Solaris compiler Forte C++ 6 update 1
</li>

<li>
<a href="http://java.sun.com/products/jdk/1.2">JDK 1.2.2</a>
</li>

<li>
Perl 5
</li>

<li>
<CODE>csh</CODE>
</li>

<li>
<CODE>zip</CODE>
</li>

<li>
from 613 on: STLPort Version 4.0, freely available from 
<a href="http://www.stlport.org/">http://www.stlport.org</a>. 
You have to download and install STLPort 4.0. The installation is 
described in the files within STLPort 4.0. Put them anywhere you like, 
but remember the absolute path to it.<br>
Problems building STLPort? Check issue
<a href="//issues/show_bug.cgi?id=693">693</a>.
</li>

<li>
from 627 on: The gpc general polygon clipper library release 2.31, located at, for instance,  
<a href="http://penguinppc.org/files/pub/openoffice/633b/src/">
http://penguinppc.org/files/pub/openoffice/633b/src/</a> (file gpc231.tar.Z,
the original site - www.cs.man.ac.uk/~amurta/software - is no longer
online).
Download and unpack the tarball. You should have the files 
gpc.c and gpc.h in <CODE>$SRC_ROOT/external/gpc</CODE>.
</li>

</ul>

The following external requirement is only necessary for older snapshots:

<ul>

<li>
from 614 to 627: Berkeley DB 3.1.17 from <a href="http://www.sleepycat.com">
www.sleepycat.com</a>.
Download the tarball from their <em>download</em> website
and build the data base following
their instructions given on the <em>documentation</em> website.
Remember that the java API has to be build as well which is not the
default option. This entails the enable java and enable dynamic option
to the configure command. Make also sure that <CODE>javac</CODE> is in
your PATH variable.
The data base will consist in a directory
structure (<CODE>db3.1.17</CODE>) including a subdirectory
<CODE>java/classes</CODE>. Go there and
create a java archive
(<CODE>jar</CODE> command) called <CODE>db.jar</CODE> (db31.jar for older releases) and place this
into the <CODE>external/common</CODE> directory:
<pre>
db3.1.17><KBD> cd build_unix</KBD>
db3.1.17/build_unix><KBD> ../dist/configure --enable-java --enable-dynamic</KBD>
db3.1.17/build_unix><KBD> make</KBD>
db3.1.17/build_unix><KBD> cd ../java/classes</KBD>
db3.1.17/java/classes><KBD> jar cvf db.jar *</KBD>
db3.1.17/java/classes><KBD> mv db.jar $SRC_ROOT/external/common/.</KBD>
</pre>
From 632 on, all necessary components of the Berkeley DB are included
in the OpenOffice.org source.
</li>

</ul>





<p>



<b>Hardware Requirements</b>
<ul>

<li>
For Solaris/x86: Intel Pentium II PC<br>
For Solaris/Sparc: Sparc Ultra 1
</li>

<li>
128 MB RAM
</li>

<li>
3 GB free disk space
</li>

</ul>




<br><p><br><p><br><p>

<H2>
<a NAME="ExternalComponents"></a>External Components
</H2>

<p>
The code contains some further external components which are 
already provided. If you are interested in details about these, 
look at the External Components webpage at 
<a href="http://tools.openoffice.org/ext_comp.html">http://tools.openoffice.org/ext_comp.html</a>. 

<br><p><br><p><br><p>


<H2>
<a NAME="GetTheSourceCode"></a>Get the source code
</H2>

<p>
You have two options to get the source code:

<ul>

<li>
Download the source code tarball from 
<a href="//dev_docs/source/get_tarballs.html">
www.openoffice.org/dev_docs/source/get_tarballs.html</a>, 
e.g. <CODE>oo_609_src.tar.gz</CODE> in case 
of the 609 release. 


There is a second source tarball called
<CODE>solenv</CODE> containing the build tools 
for some early versions.
This tarball has become obsolete with the introduction of the
<CODE>bootstrap</CODE> utility (explained later) which creates those
build tools. However, if you want to build an early version, you have
to download this tarball as well.



<p>
Unpack the tarballs as follows (for the example 609):
<pre>
<KBD>> gunzip oo_609_src.tar.gz</KBD>
<KBD>> tar -xvf oo_609_src.tar</KBD>
<KBD>> cd oo_609_src</KBD> 
</pre>
This will be $SRC_ROOT from now on.<br>
For releases 613 
or earlier you will also need the <CODE>solenv</CODE> tarball:


<pre>
<KBD>$SRC_ROOT> gunzip solenv609_solaris_sparc.tar.gz</KBD>
<KBD>$SRC_ROOT> tar -xvf solenv609_solaris_sparc.tar</KBD>
</pre>


</li>

<li>
Another possibility is to check out the code from the cvs tree. If you 
don't have a username and password, you can still do a checkout as 
<CODE>anoncvs</CODE>:
<pre>
<KBD>> runsocks cvs -d:pserver:anoncvs@anoncvs.openoffice.org:/cvs login</KBD>
<KBD>> cd $SRC_ROOT</KBD>
<KBD>$SRC_ROOT> runsocks cvs </KBD> /
<KBD>    -d:pserver:anoncvs@anoncvs.openoffice.org:/cvs </KBD> /
<KBD>    co -r OpenOffice609 openoffice</KBD>
</pre>
The non-bold slash means that the command should be in one line. It is 
possible to update an already existing older copy to a newer release: 
<pre>
<KBD>$SRC_ROOT> runsocks cvs </KBD> /
<KBD>    -d:pserver:anoncvs@anoncvs.openoffice.org:/cvs </KBD> /
<KBD>    update -r OpenOffice609 openoffice</KBD>
</pre>
</li>

<li>
If you're only interested in building individual modules, you won't 
need the entire source code. You can check out individual modules from 
the cvs tree:
<pre>
<KBD>$SRC_ROOT> runsocks cvs </KBD> /
<KBD>    -d:pserver:anoncvs@anoncvs.openoffice.org:/cvs </KBD> /
<KBD>    co -r OpenOffice609 (module-name)</KBD>
</pre>
</li>

</ul>

<br><p><br><p><br><p>


<H2>     
<a NAME="GeneratingtheBuildEnvironmentandBuildTools"></a>Generating
the Build Environment and Build Tools
</H2>

<p>You use the <CODE>configure</CODE> script to generate the build environment.
The <CODE>configure</CODE> script
checks that all software, hardware, and system requirements for the build
are satisfied, and  it
creates a configuration file called

<CODE>SolarisSparcEnv.Set</CODE>
that you then run the <CODE>source</CODE> command
on to set all necessary build environment variables.


This configuration file will be moved into the <CODE>SRC_ROOT</CODE> 
directory. A top-level makefile script <CODE>makefile.rc</CODE> 
and the script <CODE>bootstrap</CODE> in the 
<CODE>config-office</CODE> directory will be moved into <CODE>SRC_ROOT</CODE> 
as well. This is due to technical reasons: The <CODE>SRC_ROOT</CODE> directory 
in the cvs tree can only hold directories. On the other hand, the 
top-level <CODE>makefile.rc</CODE> should logically be placed in the 
top-level directory <CODE>SRC_ROOT</CODE>. The cvs tree holds these files in 
<CODE>config_office</CODE> and <CODE>configure</CODE> copies them up. 

<p>
In case you adjust the sample file <CODE>winenvsample.bat</CODE> to your 
needs rather then running the configure script, you have to copy it by 
hand to <CODE>SRC_ROOT</CODE> and name it <CODE>winenv.bat</CODE>. 
Copying the file <CODE>makefile.rc</CODE> from <CODE>$SRC_ROOT/config_office</CODE> to 
<CODE>$SRC_ROOT</CODE> had to be done by hand as well in this case. 

<p>
If you experiment with newest sources from the cvs-tree, 
mind that updates to the 
configure process do not happen via updates of <CODE>configure</CODE> 
(the script file) but via the file <CODE>configure.in</CODE>. The 
configure script itself is created from <CODE>configure.in</CODE> 
using the <CODE>autoconf</CODE> command. In this case, you would 
run commands like the following: 

<pre>
<KBD>$SRC_ROOT> cd config_office</KBD>
<KBD>config_office> cvs update configure.in</KBD>
<KBD>config_office> ./autoconf</KBD>
</pre>


to update the <CODE>configure</CODE> script. If you only use code 
from the snapshot releases on the web, you don't need to be concerned 
about this. 



<p>
To run the <CODE>configure</CODE> script, type the following commands:

<p>
<pre>
<KBD>$SRC_ROOT> cd config_office</KBD>
<KBD>config_office> ./configure --with-stlport4-home=(path)</KBD>
</pre>
where <CODE>path</CODE> is the absolute path pointing to your STLPort
installation. <CODE>configure</CODE> will probably also ask you for
the location of the Java Development Kit 1.2.2.

<p>
There are a number of further options that you can use with the
<CODE>configure</CODE>
script. To display these options, type the following command:

<p>
<pre>
<KBD>config_office> ./configure --help</KBD>
</pre>



<p>
The option <CODE>--with-stlport4-home</CODE> is a requirement. 
For more information on the options that you can use with the
<CODE>configure</CODE> script, see the Build Environment document at 
<a href="http://tools.openoffice.org/build_env.html">tools.openoffice.org/build_env.html</a>.


<p>
After running <CODE>configure</CODE>, you have to source the configuration
file with sets all environment variables:
<p>
<pre>
<KBD>$SRC_ROOT> tcsh</KBD>


<KBD>$SRC_ROOT> source SolarisSparcEnv.Set</KBD>

</pre>




<p>To create the build tools, type the following command:

<p>
<pre>
<KBD>$SRC_ROOT> ./bootstrap</KBD>
</pre>

<p>
The <CODE>bootstrap</CODE> utility creates the tools required for building.
This involves already building some modules and will take a few minutes.



<br><p><br><p><br><p>


<H1>
<a NAME="BuildInstructions"></a>Build Instructions</a>
</H1>


<H2>
<a NAME="BuildingaFullBuildofOpenOffice"></a>Building
a Full Build of the Office Suite
</H2>

Now you are ready to build OpenOffice.org.
To build the entire suite, all you have to do 
(after having created the environment as described above) is to run dmake 
from the top-level directory. This will take several hours. 

<pre>
<KBD>$SRC_ROOT> dmake</KBD>
</pre>

If you are interested in the order in which the individual modules 
are build, type

<pre>
<KBD>$SRC_ROOT> dmake -n</KBD>
</pre>

<p>
The following table shows the time required to build on a system with
a particular specification. You can use these details to estimate the time
required to build on your system.

<p>


<table BORDER="1" CELLSPACING=0 CELLPADDING=5>
<tr VALIGN=TOP>
<td>Architecture</td>
<td>SPARC</td>
</tr>
<tr VALIGN=TOP>
<td>Model</td>
<td>Ultra 1</td>
</tr>
<tr VALIGN=TOP>
<td>Processor speed</td>
<td> MHz</td>
</tr>
<tr VALIGN=TOP>
<td>RAM</td>
<td>128 MB</td>
</tr>
<tr VALIGN=TOP>
<td>Hard disk size</td>
<td>4 GB IDE</td>
</tr>
<tr VALIGN=TOP>
<td>Time</td>
<td></td>
</tr>
</table>



<H2>
<a NAME="BuildingIndividualProjects"></a>Building
Individual Projects with a Prebuild
</H2>

<p>
OpenOffice.org is organised in several projects. For example, 
the Word Processing Project. These in turn consist of several 
modules, organised in separate directories. The source contains 
approximately 90 modules. 

<p>
You can build any project or module individually. Building modules 
individually should not be misunderstood as reducing OpenOffice.org to a 
special application, say, for instance, the spreadsheet application. The 
program will always consist in the entire office suite: text processor, 
spreadsheet, drawing application etc.. Building individual
modules comes in handy if you want to develop on a certain module.
Most modules will 
depend on other modules to be already built. In other words, all modules 
must build in a particular order. 
To avoid building all modules which are prerequisites of the
module of your interest,
you can make use of a pre-build <CODE>solver</CODE> tree
against which you can build any module.

<p>
For more information on modules and on the sequence that they build
in, and on the dependencies, see <a href="http://tools.openoffice.org/modules.html">tools.openoffice.org/modules.html</a>.

<p>
You have to download the 
<CODE>solver</CODE> tree as a tarball 

<CODE>solver609_solaris_sparc.tar.gz</CODE>

from the Download page at 
<a href="//dev_docs/source/get_tarballs.html">www.openoffice.org/dev_docs/source/get_tarballs.html</a>
and unpack it in the <CODE>$SRC_ROOT</CODE> directory: 
<pre>


<KBD>$SRC_ROOT> gunzip solver609_solaris_sparc.tar.gz</KBD>
<KBD>$SRC_ROOT> tar -xvf solver609_solaris_sparc.tar</KBD>


</pre>


In order to create the build environment and build tools (bootstrap), you 
also have to check out the modules 
<CODE>config_office, dmake, external, xml2cmp, 
mkdepend</CODE> (from 625 on), <CODE> sal, vos, tools and rscpp</CODE>.
Except for <CODE>config_office</CODE>, 
they are not needed for builds 613 or earlier for which
the build tools are provided in <CODE>solenv</CODE>. 



<p>To build a project, you build each of its modules individually 
in their directory with the <CODE>dmake</CODE> tool. 
<pre>
<KBD>$SRC_ROOT/(module-name)> dmake</KBD>
</pre>

Files called <CODE>makefile.rc</CODE> in each directory with further 
subdirectories iterate through all directories of the module and exectues 
<CODE>dmake</CODE> in each of them (just like the top-level 
<CODE>makefile.rc</CODE> does when building the entire office suite). 
The last or second to last directory is usually 
<VAR>module-name</VAR><CODE>/util</CODE>
which is responsible for linking one or more shared libraries.

<br><p><br><p><br><p>





<H2>
<a NAME="BuildingaProjectwithDebugInformation"></a>Building
a Project with Debug Information
</H2>

<p>
To rebuild a complete project with debug information, remove all object
files by removing the 

<CODE>unxsols3.pro</CODE>

directory. Then run 
<CODE>dmake</CODE> with the debug option set to true:

<pre>
<KBD>$SRC_ROOT/(module)> rm -rf unxsols3.pro</KBD>
<KBD>$SRC_ROOT/(module)> dmake debug=true</KBD>
</pre>


<br><p><br><p><br><p>




<H1>
<a NAME="InstallInstructions"></a>Instructions to Build
an Installation Set
</H1>

<p>
When you have completed the build, you need to do the following to install
and set up the office suite:

<ol>

<li>
From the top-level directory, run the <CODE>dmake install</CODE> command, 
or run <CODE>dmake</CODE> in the directory <CODE>instsetoo</CODE>:
<pre>
<KBD>$SRC_ROOT> dmake install</KBD>
</pre>
or
<pre>
<KBD>$SRC_ROOT> cd instsetoo</KBD>
<KBD>instsetoo> dmake</KBD>
</pre>
Languages other than english (provided the language option was set in 
configuring) can be build with the option <CODE>LANGEXT</CODE>. 
For instance for french: 
<pre>
<KBD>$SRC_ROOT/instsetoo> dmake LANGEXT=33</KBD>
</pre>
The parameter 33 stems from the international phone code for France. 
</li>

<p>
<li>
Change directory to <CODE>$SRC_ROOT/instsetoo/unxsols3.pro/normal</CODE> 
and execute the <CODE>setup</CODE> binary:
<pre>
<KBD>$SRC_ROOT> cd instsetoo/unxsols3.pro/normal</KBD>
<KBD>normal> ./setup</KBD>
</pre>
</li>

</body>
</html>
</html>

