<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 Windows with tcsh
</h2>
<p><b>Beware! The build instructions for OpenOffice.org 2.x are different!</b>
</p>

<p>
The Cygwin tcsh environment is new (from December 2003), and can be used starting with
cws_srx644_ooo20030412.</p>

<p>
This document describes the requirements and actions that you need to build 
OpenOffice.org on Windows using Cygwin shell.
</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>winenv.set</CODE>. 
    
  <li> Run the 
    <CODE>winenv.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_win32intel.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>winenv.set</CODE>. 
   
  <li> Run
    
     
    in tcsh <CODE>source winenv.set</CODE> and <CODE>rehash</CODE>
    afterwards or in bash
              <CODE>source winenv.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   
Windows,   these are as follows:</p>






<p><b>Build Requirements</b></p>

<ul>
  <p><li>
    <b>General</b>
    <ul>
      <li>Don't build on FAT or network drives, see
        <a href="http://tools.openoffice.org/issues/show_bug.cgi?id=26761">iz26761</a>
        and <a href="http://tools.openoffice.org/issues/show_bug.cgi?id=18561">iz18561</a>
        for details.
      </li>
      <li>Don't build with an user account name that contains spaces, see
        <a href="http://tools.openoffice.org/issues/show_bug.cgi?id=24075">iz24075</a>
        for details.
      </li>
    </ul>
  </li></p>
  <p><li>
    <b>Windows NT Version 4</b> Service Pack 3 or higher, <b>Windows 2000</b> SP 2 or higher
    or <b>Windows XP</b>.
  </li></p>
  <p><li>
    A Microsoft Visual C++ Compiler. <b>MS Visual C++ .net 2002</b> is recommended,
    but <b>MS Visual C++ Version 6 Service Pack 5 or 6</b> can also be used. Please note that
    it is deprecated and no longer usable for the forthcoming 2.0 (680er codeline)
    version of Openoffice.org and see also
    <a href="http://tools.openoffice.org/issues/show_bug.cgi?id=21646">iz21646</a> for
    a known problem with this compiler.<br>
    Below you find a list with additional requirements that have to be fulfilled for
    the different compilers.

    <p>Extra requirements for <b>MS Visual C++ .net 2002</b>:
    <ul>
      <li>Install the ConvertDSW (wdevenv) utility.
        Get it from
        <a href="http://tools.openoffice.org/source/browse/tools/contrib/addin/bin/">
        http://tools.openoffice.org/source/browse/tools/contrib/addin/bin/</a>
        and follow the instructions of the Readme.sxw in that directory.
      </li>
      <li>A Microsoft Assembly compiler.
         It is included in .NET 2002, it can be found in the same directory as the
         compiler (<CODE>cl.exe</CODE>). Look for <CODE>ML.EXE</CODE>.
         If you use the <CODE>--with-cl-home=</CODE> configure option you also
         have to use the <CODE>--with-asm-home=</CODE> option pointing to the
         directory with the <CODE>ML.EXE</CODE>.
      </li>
      <li>
        Copy msvcp70.dll and msvcr70.dll to <CODE>$SRC_ROOT\external\msvcp70\</CODE>.
        These dlls are part of the .NET installation and can be found in a directory similar to:
        <CODE>c:\Program Files\Microsoft Visual Studio .NET\Visual C++ .NET Professional - English\</CODE>.
      </li>
    </ul>
    </p>
    <p>Extra requirements for <b>MS Visual C++ 6 SP5 or SP6</b>:
    <ul>
      <li>
        A Microsoft Assembly compiler. It can be found in the
        <a href="http://download.microsoft.com/download/win98SE/Install/Gold/W98/EN-US/98DDK.EXE">Windows 98 Driver Developer Kit</a>.
        Additional instructions can be found at:  
        <a href="http://www2.dgsys.com/~raymoon/faq/masm.html#9">http://www2.dgsys.com/~raymoon/faq/masm.html#9</a>. 
        <br />Place <CODE>ML.EXE</CODE> and <CODE>ML.ERR</CODE> somewhere in a directory in the system path or
        use the configure option <CODE>--with-asm-home=</CODE> pointing to this location.
        <br /><b>Warning! Do not</b> use the <em>Processor Pack for Visual Studio 6.0</em>, it is proven
        to <a href="http://tools.openoffice.org/servlets/ReadMsg?msgId=864369&listName=dev">break</a> the build.
      </li>
      <li>
        Use <CODE>midl.exe</CODE> and <CODE>midlc.exe</CODE> from the platform SDK. It has been
        reported in <a href="http://tools.openoffice.org/issues/show_bug.cgi?id=21023">iz21023</a>
        that the versions that come with MS Visual C++ 6 do not work properly.
      </li>
    </ul>
    </p>
  </li></p>
  <p><li>
    Parts of the February 2003 version of the Microsoft Platform SDK. The MDAC SDK,
    the Core SDK and the Internet Development SDK have to be installed on your build system.
    You can download them from <a href="http://www.microsoft.com/msdownload/platformsdk/sdkupdate/">
      http://www.microsoft.com/msdownload/platformsdk/sdkupdate</a>.
    <p>
    <b>Important Note 1:</b> Please ensure that you also select <em>Build environment (Intel 64-bit)</em>
    where available, when downloading the Platform SDK.
    </p>
  </li></p>





  <li>
    A Java 2 SDK. <a href="http://java.sun.com/j2se/1.4">JDK 1.4</a>
    or newer is required.
    <p><b>Important Note 5:</b> JDK 1.4.1 is proven to work, but 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>.</p>
  </li>



  <li> 
    Cygwin Toolkit from 
    <a href="http://www.cygwin.com">http://www.cygwin.com</a>. Use at least Cygwin DLL version 1.5.10.
    The official informations on using the setup.exe and installing Cygwin are available at:
    <a href="http://cygwin.com/cygwin-ug-net/setup-net.html">http://cygwin.com/cygwin-ug-net/setup-net.html</a>. 
    More help and information on the Cygwin tools can be found at 
    <a href="http://website.openoffice.org/support/en/howtos/1.html">http://website.openoffice.org/support/en/howtos/1.html</a>.
   <p>
    When installing Cygwin make sure you set the "Default Text File Type" to
    "Unix". This is the default setting.
   <p>
    Not all Cygwin packages are needed to build OpenOffice.org, but make sure
    that at least all the packages from the <b>base category</b> and the following
    packages are installed.
    <div style="margin-left: 2em">
     bison<br>
     flex<br>
     make<br>
     patch<br>
     perl
    </div>


    <br>And also:
    <div style="margin-left: 2em">
     gcc<br>
     rxvt<br>
     tcsh<br>
     unzip<br>
     zip
    </div>


  </li>
  <p>
  <b>Important Note 6:</b>
    Within the Cygwin Toolkit, three executables might be realised as 
    symlinks, namely awk.exe, gunzip.exe and tar.exe. This might lead to 
    a break of the build later, and the symlinks should be replaced with 
    copies of the command 
    they link to. Check, in a cygwin shell, with <em>ls -l /bin/awk.exe</em> 
    whether awk.exe is a symlink. For instance, awk.exe could be a link to 
    gawk.exe, in which case you should copy gawk.exe to awk.exe: 
   <em>cd /bin; cp gawk.exe awk.exe</em>. Take similar action for unzip.exe 
   and tar.exe.</p>
  <p><b>Important Note 7:</b>
    If your cygwin installation includes the XFree86 packages make sure to
    remove/change the <CODE>/etc/profile.d/00XFree86-bin.csh</CODE> file. See
    <a href="http://tools.openoffice.org/issues/show_bug.cgi?id=26833">iz26833</a>.</p>
  <p><b>Important Note 8:</b>
    Don't use Cygwin 1.5.7, there were some problems with this
    version. Upgrade to a newer release.</p>





  <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>
    The Microsoft Layer for Unicode (unicows.dll). Get it from the Microsoft
    site and put it into <CODE>$SRC_ROOT/external/unicows</CODE>.
    (Note: Microsoft seems to enjoy changing the exact location of this file.
    You may have to search Microsoft's website.) Last time it was seen
    <a href="http://download.microsoft.com/download/b/7/5/b75eace3-00e2-4aa0-9a6f-0b6882c71642/unicows.exe">here</a>.
  </li>
  <li>
    The dbghelp.dll from Microsoft. Get it from the Microsoft
    site and put it into <CODE>$SRC_ROOT/external/dbghelp</CODE>.
    (Note: You may have to search Microsoft's website.) Last time it was seen
    <a href="http://www.microsoft.com/downloads/release.asp?releaseid=30682">here</a>.
  </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>
    Intel Pentium II PC
  </li>

  <li>
    128 MB RAM (More recommended)
  </li>

  <li>
    4 GB free disk space (8 GB for crashdump)
  </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>winenv.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>
Before running configure, make sure that all needed Programs are in the system path
or start configure with the appropriate command line switches.
<p>
The following should demonstrate in detail what steps have to be done to 
set up the environment. For this examples we assume that
  <ul>
    <li>
      the source code is in <CODE>C:\oo643B</CODE>
    </li>
    <li>
      JDK 1.4.1_02 is installed in <CODE>C:\j2sdk1.4.1_02</CODE>
    </li>
    <li>
      the Microsoft Compiler is located in 
      <CODE>C:\PROGRA~1\MICROS~3\VC98</CODE>
      (or <CODE>C:\program files\microsoft visual studio\vc98</CODE>)
    </li>
    <li>
      the Microsoft SDK is located in <CODE>C:\PROGRA~1\MICROS~5</CODE> 
    </li>
    <li>
      and the assembly compiler resides in <CODE>C:\ml</CODE>
    </li>
  </ul>

<H3>tcsh - Example</H3>
<b>You have to enable the use of tcsh
with <CODE>--with-use-shell=tcsh</CODE></b>.

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

<pre>
<KBD>$SRC_ROOT&gt; cd config_office</KBD>
<KBD>config_office&gt; ./configure --with-cl-home="/cygdrive/c/Programme/Microsoft Visual Studio .NET 2003/Vc7"</KBD>
<KBD>--with-asm-home=/cygdrive/c/ml --with-jdk-home=/cygdrive/c/j2sdk1.4.1_02</KBD>
<KBD>--with-use-shell=tcsh</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 winenv.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>Intel</td>
  </tr>
  <tr VALIGN=TOP>
    <td>Processor</td>
    <td>Pentium III</td>
  </tr>
  <tr VALIGN=TOP>
    <td>Processor speed</td>
    <td>600 MHz</td>
  </tr>
  <tr VALIGN=TOP>
    <td>RAM</td>
    <td>256 MB</td>
  </tr>
  <tr VALIGN=TOP>
    <td>Hard Disk</td>
    <td>6 GB SCSI</td>
  </tr>
  <tr VALIGN=TOP>
    <td>Time</td>
    <td>~10 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_win32int.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; tar -xvzf solver643B_win32int.tar.gz</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>wntmsci9.pro</CODE> 
directory. Then run <CODE>build</CODE> with the debug option set to true:

<pre>
<KBD>$SRC_ROOT/(module)&gt; rm -rf </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 wntmsci9.pro</KBD>
</pre>

<p>
The English installation set will be located at 
<CODE>$SRC_ROOT/instsetoo/wntmsci9.pro/01/normal</CODE>. 
Execute the <CODE>setup</CODE> binary to install:
<pre>
<KBD>$SRC_ROOT&gt; cd instsetoo/wntmsci9.pro/01/normal</KBD>
<KBD>normal&gt; setup.exe</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/wntmsci9.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_wnt.zip
</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/wntmsci9.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/wntmsci9.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>

