<html><head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<!-- PLEASE DO NOT COMMIT EDITED VERSION OF THE FILES BUILD_LINUX.HTML, 
BUILD_SOLARIS.HTML AND BUILD_WINDOWS.HTML. EDIT THE FILE BUILD_TEMPLATE 
INSTEAD AND USE ./mkbuilddoc TO GENERATE THE PLATFORM SPECIFIC BUILD DOCUMENT-->

<body>

<h2>
Building OpenOffice.org 1.1.x under Solaris
</h2>
<p><b>Beware! The build instructions for OpenOffice.org 2.x are different!</b>
</p>

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

<p>
Commands you have to type on the keyboard 
follow this syntax throughout this document:
</p>


<pre>
<KBD>config_office&gt; ./configure</KBD>
</pre>

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




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

<p>
Basically, there is the choice to build OpenOffice.org from two different 
branches: a stable branch, which results in the release version, or 
a less stable developer branch (latest release see
<a href="http://tools.openoffice.org/builds/index.html">here</a>).
Links to the different sources are given in the document. 
</p>

<br><br><br>



<H2>Table of Contents</H2>

<ul>

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

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

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

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

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

<ul>

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

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

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

</ul></li>

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

<li>
<a href="#BuildingLocalised">Building Localised Versions of OpenOffice.org</a>
</li>

</ul>

<br><br><br>


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

<p>
This section is meant as a reminder or checklist for those who have some 
experience in building OpenOffice.org. Everybody else should jump to the 
<a href="#BuildRequirements">Build Requirements</a> section. 

<p> 
Even experienced builders are well advised to check the release notes at 
<a href="http://download.openoffice.org/index.html">
http://download.openoffice.org/index.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 prebuilt 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
    (<a href="http://download.openoffice.org/index.html">http://download.openoffice.org/index.html</a>)
    or alternatively via a check-out from the cvs tree against a release tag, 
    e.g. <em>OpenOffice_1_1_4</em>. </li>
    
   <li> Run the <CODE>configure</CODE> script to check all requirements and to 
     create the script 
   <CODE>SolarisSparcEnv.Set</CODE>. 
    
  <li> Run the 
    <CODE>SolarisSparcEnv.Set</CODE> script to set all environment variables.
	<p>Please see the last screen from the configure script for more specific
	information on setting up for your platform.</p>
  </li>
   
  <li> Create the build tools using <CODE>bootstrap</CODE>. </li>
   
  <li> Build typing <CODE>dmake</CODE> in <CODE>$SRC_ROOT</CODE>, or 
    <CODE>build --all</CODE> in the <CODE>instsetoo</CODE> module, or 
    <CODE>build</CODE> followed by <CODE>deliver</CODE> in the individual 
    modules. </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.
<br>


<H2> 
<a NAME="OverviewofBuildinganIndividualProject"></a>Overview of Building 
an Individual Project
</H2>
<p>
You can use a prebuilt version to build an individual project. Having a 
prebuilt version is necessary 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
    (<a href="http://download.open office.org/index.html">http://download.openoffice.org/index.html</a>)
    e.g., for 643B the solver tarball 
     
    <CODE>solver643B_solaris_sparc.tar.gz.</CODE> 
     
    
	<p>643 is a very old release.  Please use the <a href="../builds/">latest</a>
	   version.</p>
  </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="http://download.openoffice.org/index.html">http://download.openoffice.org/index.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, sal, solenv, soltools,
     vos, tools, rsc and xml2cmp</CODE>.
  
     These are required by <CODE>bootstrap</CODE> (see below).
  
  </li>
  <li> Unpack the solver tarball in the <CODE>$SRC_ROOT</CODE> directory. </li>
   
  <li> Run the <CODE>configure</CODE> script to check all requirements and to 
    create the settings file
  
  
  <CODE>SolarisSparcEnv.Set</CODE>. 
   
   
  <li> Run
    
    in tcsh <CODE>source SolarisSparcEnv.Set</CODE> or in bash
             <CODE>source SolarisSparcEnv.Set.sh</CODE> 
     
     
    to set all environment variables and build dmake.exe. 
  </li>
   
  <li> Create the build tools using <CODE>./bootstrap</CODE>. </li>
   
  <li> Build each module against the prebuilt <CODE>solver</CODE> using the <CODE>build</CODE> 
    tool, followed by <CODE>deliver</CODE>. </li>
</ol>

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

<br><br><br>


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

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




<p><b>Software Requirements</b></p>

<ul>
  <li>
    Solaris 2.8 or 2.9
  </li>

  <li>
    Solaris compiler Forte C++ 6 update 1, Forte C++ 6 update 2 or Forte C++ 7
  </li>
  <li>
    <a href="http://java.sun.com/products/jdk/1.3">JDK 1.3.1</a> or
    <a href="http://java.sun.com/j2se/1.4.1/download.html">JDK 1.4.1</a>
        (note you need the SDK)
	<br>JDK 1.4.2 is not supported for versions prior to OpenOffice.org 1.1.1,
    see <a  href="http://www.openoffice.org/issues/show_bug.cgi?id=16626">
    issue 16626</a>.</br>
  </li>

  <li>
    If you are building with JDK 1.3.1, you need to download crimson.jar
    from <a href="http://xml.apache.org/crimson/">http://xml.apache.org/crimson/</a>
    and xalan.jar and xml-apis.jar from <a href="http://xml.apache.org/xalan-j/index.html">http://xml.apache.org/xalan-j/index.html</a> and add these to the compilation classpath.
  </li>

  <li>
    Perl 5
  </li>

  <li>
	<CODE>tcsh</CODE>&nbsp;&nbsp; Note that you can start a build in bash however all the
	scripts in the build system are actually csh scripts.
  </li>

  <li>
    <CODE>zip</CODE> and <CODE>unzip</CODE>
  </li>

  <li>GNU patch and cp, GNU tar recommended</li>
  <li>
    The gpc general polygon clipper library release 2.31, located at
    <a href="http://www.cs.man.ac.uk/aig/staff/alan/software/">http://www.cs.man.ac.uk/aig/staff/alan/software/</a>.
    Download and unpack the tarball. You should have
    the files gpc.c and gpc.h in <CODE>$SRC_ROOT/external/gpc</CODE>.
  </li>
  <li><a href="http://ant.apache.org/">Ant</a> Is required to build some
  features.  This is a Java Make utility.</li>


</ul>
















<h3>Perl - Optional requirements</h3>
<p>For committers who want to use the CWS tooling. Install them like
<a href="http://ooo.ximian.com/cpan.html">this</a>.</p>

<table>
  <tr>
    <td><b>Module:</b></td>
    <td><b>Used for:</b></td>
  </tr>
  <tr>
    <td>Crypt::SSLeay </td>
	<td>for SSL encrypted SOAP connections</td>
  </tr>
  <tr>
     <td>SOAP::Lite</td>
	 <td>access the SOAP based CWS webservice</td>
  </tr>
</table>
<br>



<b>Hardware Requirements</b>

<ul>

  <li>
    For Solaris/x86: Intel Pentium II PC (P4 recommended)
    <br>
    For Solaris/Sparc: Ultrasparc 3 / 3i
  </li>
  <li>512 MB RAM</li>

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

</ul>


 
<br><br>


<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>.</p>

<br><br><br>



<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 
(<a href="http://download.openoffice.org/index.html">http://download.openoffice.org/index.html</a>),
e.g. <CODE>oo_643B_src.tar.gz</CODE> in case of the 643B release.
<p>
Unpack the tarballs as follows (for the 643B example):</p>
<pre>
<KBD>&gt; tar -xvzf oo_643B_src.tar.gz</KBD>
<KBD>&gt; cd oo_643B_src</KBD> 
</pre>
<p>This will be $SRC_ROOT from now on.</p>
</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>&gt; cvs -d:pserver:anoncvs@anoncvs.services.openoffice.org:/cvs login</KBD>
<p>Just press enter when prompted for the password.</p>
<KBD>&gt; cd $SRC_ROOT</KBD>
<KBD>$SRC_ROOT&gt; cvs</KBD> /
<KBD>    -d:pserver:anoncvs@anoncvs.services.openoffice.org:/cvs</KBD> /
<KBD>    co -r OpenOffice_1_1_4 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&gt; cvs</KBD> /
<KBD>    -d:pserver:anoncvs@anoncvs.services.openoffice.org:/cvs</KBD> /
<KBD>    update -r OpenOffice_1_1_4 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&gt; cvs</KBD> /
<KBD>    -d:pserver:anoncvs@anoncvs.services.openoffice.org:/cvs</KBD> /
<KBD>    co -r OpenOffice_1_1_4 (module-name)</KBD>
</pre>
</li>

<li>
<p>
A note on the tags (i.e. the argument to the -r option in the cvs commands listed above): 
If <em>HEAD</em> is used as a tag, you will get the newest latest source code. This, 
however, will most likely not build since development is going on there. 
See <a href="http://tools.openoffice.org#CWS">http://tools.openoffice.org#CWS</a>
for a description of the development process with child workspaces and
<a href="http://eis.services.openoffice.org/EIS2/servlet/GuestLogon">
<strong>E</strong>nvironment <strong>I</strong>nformation <strong>S</strong>ystem</a>
for the current child workspaces and milestones.
</p>
</li>

</ul>

<br><br><br>



<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. Don't forget to run rehash afterwards.



<p> 
This configuration file will be moved into the <CODE>SRC_ROOT</CODE> directory. 
A top-level makefile script <CODE>makefile.mk</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.mk</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>
If you are running a compiler with a non-standard name or location.

Before running configure, make sure that the environment variables 
CC and CXX point to your c and c++ compiler:
</p>




<pre>
<KBD>CC=/your/path/to/cc</KBD>
<KBD>CXX=/your/path/to/CC</KBD>
<KBD>export CC CXX</KBD>
</pre>



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

<pre>
<KBD>$SRC_ROOT&gt; cd config_office</KBD>
<KBD>config_office&gt; ./configure</KBD>
</pre>



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

<pre>
<KBD>config_office&gt; ./configure --help</KBD>
</pre>






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


<KBD>$SRC_ROOT&gt; source SolarisSparcEnv.Set</KBD>

</pre>
<p>Don't forget to run
</p>
<pre>
<KBD>$SRC_ROOT&gt; rehash</KBD>
</pre>
<p>afterwards. See the last screen from configure for exact details for your platform.</p>



<p> 
If you experiment with newest sources from the cvs-tree, mind that updates 
to the configure process may not happen via updates of <CODE>configure</CODE>
(the script file) but via the files <CODE>configure.in</CODE> and 
<CODE>set_soenv.in</CODE>. The configure script itself is created from 
<CODE>configure.in</CODE> using the 
<CODE>autoreconf</CODE> command. The perl script set_soenv is created when you
run configure from set_soenv.in.

<p>If you need to modify or create a correct configure you would run commands 
like the following:  
<pre>
<KBD>$SRC_ROOT&gt; cd config_office</KBD>
<KBD>config_office&gt; cvs update configure.in</KBD>
<KBD>config_office&gt; autoreconf</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 create the build tools, type the following command:

<pre>
<KBD>$SRC_ROOT&gt; ./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><br><br>


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


<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 may take several hours. 

<pre>
<KBD>$SRC_ROOT&gt; dmake</KBD>
</pre>




<p>
If you decide to rebuild a module or build each module individually (mind 
dependencies!), you will have to use the <CODE>build</CODE> tool. A subsequent 
<CODE>deliver</CODE> will copy all created binaries, libraries etc. into the 
solver tree:

<pre>
<KBD>$SRC_ROOT/(module)&gt; build</KBD>
<KBD>$SRC_ROOT/(module)&gt; deliver</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 30</td>
  </tr>
  <tr VALIGN=TOP>
    <td>Processor speed</td>
    <td>300 MHz</td>
  </tr>
  <tr VALIGN=TOP>
    <td>RAM</td>
    <td>512 MB</td>
  </tr>
  <tr VALIGN=TOP>
    <td>Hard disk</td>
    <td>10000 RPM model</td>
  </tr>
  <tr VALIGN=TOP>
    <td>Time (for SRC680_m74)</td>
    <td>~39 h</td>
  </tr>
</table>

 


<H2>
<a NAME="BuildingIndividualProjects"></a>Building 
Individual Projects with a Prebuilt
</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 of 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 prebuilt <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. For example 
 
<CODE>solver643B_solaris_sparc.tar.gz</CODE> 
 
 
from the Download page at 
<a href="http://download.openoffice.org/index.html">http://download.openoffice.org/index.html</a>,
use a current release 643 is very old and only used as an example,
and unpack it in the <CODE>$SRC_ROOT</CODE> directory, e.g.: 
<pre>


<KBD>$SRC_ROOT&gt; gunzip solver643B_solaris_sparc.tar.gz</KBD>
<KBD>$SRC_ROOT&gt; tar -xvf solver643B_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, sal, solenv, vos, tools and rscpp</CODE>.



<p>
To build a project, you build each of its modules individually in their 
directory with the <CODE>build</CODE> tool, followed by <CODE>deliver</CODE> 
to copy the created libraries, binaries etc. into the solver tree: 
<pre>
<KBD>$SRC_ROOT/(module-name)&gt; build</KBD>
<KBD>$SRC_ROOT/(module-name)&gt; deliver</KBD>
</pre>

Files called <CODE>build.lst</CODE> in the directories 
<CODE>(module-name)/prj</CODE> contain all information about the 
subdirectories to be build (each of them containing makefiles 
<CODE>makefile.mk</CODE>), about internal dependencies, and also about 
modules the current module depends on. The files 
<CODE>(module-name)/prj/d.lst</CODE> control the actions done by 
<CODE>deliver</CODE>. The last or second to last directory to be build is 
usually <VAR>module-name</VAR><CODE>/util</CODE> which is responsible for 
linking one or more shared libraries.

<br><br><br>


<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>build</CODE> with the debug option set to true:

<pre>
<KBD>$SRC_ROOT/(module)&gt; rm -rf unxsols3.pro</KBD>
<KBD>$SRC_ROOT/(module)&gt; build debug=true</KBD>
</pre>

<br><br><br>

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

<p>
The build process (started with a top-level <CODE>dmake</CODE> or 
<CODE>build --all</CODE> in <CODE>$SRC_ROOT/instsetoo</CODE>) will create 
installation sets in English and German. 
A simple <CODE>build</CODE> in 
<CODE>$SRC_ROOT/instsetoo</CODE> will also create the installation sets, 
provided all other modules are already built. 

<p>
If you have built an installation set earlier and want to re-build it, 
please delete the local outpath first: 
<pre>
<KBD>$SRC_ROOT/instsetoo&gt; rm -rf unxsols3.pro</KBD>
</pre>

<p>
The English installation set will be located at 
<CODE>$SRC_ROOT/instsetoo/unxsols3.pro/01/normal</CODE>. 
Execute the <CODE>setup</CODE> binary to install:
<pre>
<KBD>$SRC_ROOT&gt; cd instsetoo/unxsols3.pro/01/normal</KBD>
<KBD>normal&gt; ./setup</KBD>
</pre>

The 01 in the path names indicates that the localisation is American English. This number 
corresponds to the international phone code for the USA. The German installation set 
will be located in a subdirectory 49. This scheme holds true for all localisations you may 
have chosen explicitly (see next section 
<a href="#BuildingLocalised">Building Localised Versions of OpenOffice.org</a>). 

<p>
For a network installation, use the <CODE>-net</CODE> option to 
<CODE>setup</CODE>. Details on the network installation process 
can be found at 
<a href="http://installation.openoffice.org/proposals/netinstall.html">
http://installation.openoffice.org/proposals/netinstall.html</a> 
in the installation project webpage.
</p>
<p>For information on creating an automated
<a href="http://installation.openoffice.org/01RESPONSE_SO52_final_rev2.pdf">
installation script</a> and create a response file.</p>

<br><br><br>


<H2>
<a NAME="BuildingLocalised"></a>Building Localised Versions of OpenOffice.org
</H2>

<p>
Running the configure script with the --with-lang option will introduce the build
of additional language resources. This option will introduce a command in the 
environment settings file which in turn after execution sets a variable like, for instance, 
<CODE>RES_FREN</CODE> to <CODE>TRUE</CODE> in the case of french (You can also set 
this variable by hand in order to introduce another language). It is also possible to 
build more than one language at once.
One language resource, however, will not be
introduced that way: the help content! Clicking on 'help' would still open English
help documents.
</p>

<p>
There is no automatic procedure yet to implement non-English help, but the additional
manual effort is rather minimal: After building the source as described above, but before 
building the installation set, a zip-file with all help-content for the language of choice has 
to be unzipped into the directory 

<pre>
<CODE>$SRC_ROOT/solver/641/unxsols3.pro/pck</CODE>.
</pre>

<p>
The filenames of these files contain a number code for the language, corresponding to 
the international phone code of a country in which that language is mainly spoken. 
For instance, the file <CODE>
helpcontent_34_unix.tgz
</CODE> contains all help content for the Spanish localisation. 
The zipfiles themselves are available at 
<a href="http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/helpcontent/">ftp.services.openoffice.org/pub/OpenOffice.org/contrib/helpcontent/</a>.
</p>

<p>
Having unzipped the helpcontent files in there, building of installation sets can be 
resumed or repeated (in case you already have build some), as described in the previous 
chapter. English installation sets will be located in</p> 

<pre>
<CODE>$SRC_ROOT/instsetoo/unxsols3.pro/01/normal</CODE>, 
</pre>

where 01 corresponds to the international phone code of the USA. 
If you have chosen, for instance, French (by configuring with the <CODE>--with-lang=FREN</CODE> option) 
you will find an additional directory called 33:  

<pre>
<CODE>$SRC_ROOT/instsetoo/unxsols3.pro/33/normal</CODE>.
</pre>

<p>Similarly, you will find 49 for German, 34 for Spanish, etc.</p>

<p>
Localised help content is not yet available for all languages. In such cases, the English 
helpcontent will appear in the installations. For instance, when Danish is set with 
configure, you will find installation sets under the directory 45, but the help files will 
appear in English. 
</p>

<br><br><br>


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

