Difference between revisions of "Documentation/Building Guide/Building on Windows"

From Apache OpenOffice Wiki
Jump to: navigation, search
(adding required files to the build tree)
m
 
(46 intermediate revisions by 16 users not shown)
Line 1: Line 1:
 +
{{Historical}}
 +
 +
== Revised Building Guide: for '''Apache OpenOffice''' ==
 +
 +
'''Please Note:  An updated version of the building guide, for Apache OpenOffice, can be found [[Documentation/Building_Guide_AOO|here]].'''
 +
 +
 
{{Documentation/Building Guide TOC
 
{{Documentation/Building Guide TOC
 
|ShowNextPage=none
 
|ShowNextPage=none
Line 6: Line 13:
 
{{DISPLAYTITLE:Building on Windows}}
 
{{DISPLAYTITLE:Building on Windows}}
 
[[Category:Windows]]
 
[[Category:Windows]]
 +
[[Category:Build System]]
  
 
__TOC__
 
__TOC__
Line 11: Line 19:
 
= Overview =
 
= Overview =
  
{{Template:Documentation/Windows| This document explains how to build the OpenOffice.org source code on Windows systems.}}
+
{{Win| This document explains how to build the OpenOffice.org source code on Windows systems.}}
  
For building OpenOffice.org Cygwin is needed, a Windows program that emulates a complete Unix command line environment. To use this document you need to be familiar with a command line, but you need not to be a UNIX shell wizard.
+
For building OpenOffice.org Cygwin is needed, a Windows program that emulates a complete Unix commandline environment. To use this document you need to be familiar with a command line, but you need not to be a UNIX shell wizard.
  
{{Template:Documentation/Tip|If you have never used a Unix shell, you might want to take a look at the [http://tldp.org/LDP/GNU-Linux-Tools-Summary/html/index.html shell introduction at TLDP].}}
+
{{Tip|If you have never used a Unix shell, you might want to take a look at the [http://tldp.org/LDP/GNU-Linux-Tools-Summary/html/index.html shell introduction at TLDP].}}
  
{{Template:Documentation/Note|<code>$SRC_ROOT</code> will denote the directory in which the source code of OpenOffice.org is stored.}}
+
{{Note|<code>$SRC_ROOT</code> will denote the directory in which the source code of OpenOffice.org is stored.}}
{{Template:Documentation/Tip|You are advised to check the release notes for the release you are building to inform yourself about changes since previous releases.}}
+
{{Tip|You are advised to check the release notes for the release you are building to inform yourself about changes since previous releases.}}
  
= Requirements =
+
= Requirements=
== hardware requirements ==
+
==hardware requirements==
  
 
* 1 or more reasonable fast CPUs (x-way CPU recommended)
 
* 1 or more reasonable fast CPUs (x-way CPU recommended)
Line 27: Line 35:
 
* 10 GB free disk space (20 GB when debugging)
 
* 10 GB free disk space (20 GB when debugging)
  
== software requirements ==
+
== software requirements==
* Windows XP/Vista
+
* Windows XP/Vista/7
  
 
The following table is placed here, so you can come back to it easily, when you want to use a link. The items are explained below. Here's the list of files to download (with links) and the locations in the source tree where you must put them:
 
The following table is placed here, so you can come back to it easily, when you want to use a link. The items are explained below. Here's the list of files to download (with links) and the locations in the source tree where you must put them:
Line 36: Line 44:
 
|-
 
|-
 
! Where to get
 
! Where to get
! Place in
+
! Place in/Use configure switch
 
|-
 
|-
| Cygwin: [http://www.cygwin.com Cygwin Toolkit with (dll version 1.5.10) or later]
+
| Cygwin: [http://www.cygwin.com Cygwin ToolKit with(dll version 1.5.10)or later]
 
| (default)
 
| (default)
 
|-
 
|-
| C/C++ Compiler: [http://www.microsoft.com/express/download/ Visual C++ 2008 Express Compiler (basic install, no optional parts required)]
+
| C/C++ Compiler: free: [http://www.microsoft.com/express/download/ Visual C++ 2008 Express Compiler(basic install, no optional required)] offical: Visual C++ 2008 Professional
| (default)
+
| --with-cl-home=
|-
+
| Java: [http://java.sun.com/javase/6/ JDK 1.6] for DEV300 milestones >= m37 and all OOo310 versions (older milestones will fail in the hsqldb module)
+
| (default)
+
 
|-
 
|-
| [http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&displaylang=en Windows SDK for Windows Server 2008]<ref name="Foot1">{{Template:Documentation/Note|This also supported on Vista. This is either a DVD image or a net installer. You can either mount the DVD with a suitable tool, burn it do a DVD or use tools like winrar that can extract files from ISO files directly. You don't need to install samples or documentation (saves a lot of disk space). It will also install the .NET Framework 3.5 SDK.
+
| [http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&displaylang=en Windows SDK for Windows Server 2008]<ref name="Foot1">{{Note|This also supported on Vista. This is either a DVD image or a net installer. You can either mount the DVD with a suitable tool, burn it do a DVD or use tools like winrar that can extract files from ISO files directly. You don't need to install samples or documentation (saves a lot of disk space). It will also install the .NET Framework 3.5 SDK.
 
It might be best to install the Windows SDK into the default directory, and if not that into one without capital letters in the path. I used D:\Dev\Win_SDK\ and received some linking errors in the Python module (see {{Bug|88568}}).}}</ref>
 
It might be best to install the Windows SDK into the default directory, and if not that into one without capital letters in the path. I used D:\Dev\Win_SDK\ and received some linking errors in the Python module (see {{Bug|88568}}).}}</ref>
 
|  
 
|  
 +
|-
 +
| Java: [http://java.sun.com/javase/6/ JDK 1.6] for DEV300 milestones >= m37 and all OOo310 versions (older milestones will fail in the hsqldb module)
 +
| --with-jdk-home=
 
|-
 
|-
 
| [http://www.microsoft.com/downloads/details.aspx?familyid=6A63AB9C-DF12-4D41-933C-BE590FEAA05A&displaylang=en GDI+ Redistributable] (Genuine Windows Validation required)
 
| [http://www.microsoft.com/downloads/details.aspx?familyid=6A63AB9C-DF12-4D41-933C-BE590FEAA05A&displaylang=en GDI+ Redistributable] (Genuine Windows Validation required)
| external/gdiplus
+
| main/external/gdiplus
 
|-
 
|-
| Only for OOo2.x but due to {{Bug|88652}} in configure still needed for 3.x: [http://download.microsoft.com/download/b/7/5/b75eace3-00e2-4aa0-9a6f-0b6882c71642/unicows.exe unicows.dll from (Microsoft Layer for Unicode)]<ref name="Foot2"> {{Template:Documentation/Note|unicows.dll is available from the Microsoft site and needs to be saved to $SRC_ROOT/external/unicows. Microsoft seems to enjoy changing the exact location of this file. You may have to search Microsoft's website.}}</ref>
+
| [http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=CD1FC4B2-0885-47F4-AF45-7FD5E14DB6C0 dbghelp.dll]<ref name="Foot3">{{Note|dbghelp.dll is available from the Microsoft site and needs to be saved to $SRC_ROOT/external/dbghelp. Microsoft seems to enjoy changing the exact location of this file. You may have to search Microsoft's website.}}</ref>
| external/unicows
+
 
|-
+
Can also be found in the Visual Studio C++ 2008 Express installation.
| [http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=CD1FC4B2-0885-47F4-AF45-7FD5E14DB6C0 dbghelp.dll]<ref name="Foot3">{{Template:Documentation/Note|dbghelp.dll is available from the Microsoft site and needs to be saved to $SRC_ROOT/external/dbghelp. Microsoft seems to enjoy changing the exact location of this file. You may have to search Microsoft's website.}}</ref>
+
| main/external/dbghelp
| external/dbghelp
+
|-
+
| [http://download.microsoft.com/download/WindowsInstaller/Install/2.0/NT45/EN-US/InstMsiW.exe instmsiw.exe] and [http://download.microsoft.com/download/WindowsInstaller/Install/2.0/W9XMe/EN-US/InstMsiA.exe instmsia.exe]
+
| external/msi
+
|-
+
| for 2005 compiler and Seamonkey libraries from OpenOffice.org 3.2 up: msvcp80.dll and msvcr80.dll (found in c:\WINDOWS/WinSxS/x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd/msvc
+
| external/msvcp80
+
|-
+
| for 2008 compiler (until DEV300 m22): msvcp90.dll and msvcr90.dll (found in $(msvcdir)\Vc\redist\x86\Microsoft.VC90.CRT)
+
| external/msvcp90
+
|-
+
| for 2008 compiler starting with DEV300m23: Microsoft_VC90_CRT_x86.msm and policy_9_0_Microsoft_VC90_CRT_x86.msm for non debug builds and Microsoft_VC90_DebugCRT_x86.msm and policy_9_0_Microsoft_VC90_DebugCRT_x86.msm for debug builds<ref name="Foot4"> {{Template:Documentation/Note|You can find these files in your directory c:\program files\common files\merge modules}}</ref>
+
. These merge modules are available in VS08 Express Edition and VS08 Professional Edtion. All *.msm files are located at c:\Program Files\Common Files\Merge Module.
+
| external/msm90
+
 
|-
 
|-
 
| [http://archive.apache.org/dist/ant/binaries Apache Ant (version 1.6.5 or later)]
 
| [http://archive.apache.org/dist/ant/binaries Apache Ant (version 1.6.5 or later)]
| (default)
+
| --with-ant-home=
 
|-
 
|-
| [http://tools.openoffice.org/moz_prebuild/OOo3.2 Mozilla binary distribution]  
+
| [http://tools.openoffice.org/moz_prebuild/OOo3.2 Mozilla binary distribution] (WNTMSCIruntime.zip,WNTMSCIlib.zip,WNTMSCIinc.zip)
  
(WNTMSCIruntime.zip,WNTMSCIlib.zip,WNTMSCIinc.zip)
+
Needed as prebuilts for module moz (SeaMonkey) as the current used SeaMonkey version 1.1.4 does not support a build with Visual Studio C++ 2008 compiler.
| moz/zipped
+
| main/moz/zipped
 
|-
 
|-
 
| msvcr71.dll and msvcp71.dll for Mozilla libraries (Search for them in the Web or on your PC. These files should be named as all lower case. Sometimes when downloaded they are upper case and this will cause 'file not found' errors towards the end of the build))
 
| msvcr71.dll and msvcp71.dll for Mozilla libraries (Search for them in the Web or on your PC. These files should be named as all lower case. Sometimes when downloaded they are upper case and this will cause 'file not found' errors towards the end of the build))
| external/msvcp71  
+
| main/external/msvcp71  
 
|-
 
|-
| optional: [http://nsis.sourceforge.net/ Nullsoft Scriptable Install System (NSIS)]<ref name="Foot5">{{Template:Documentation/Note|If NSIS is available, a self contained Windows installer is created in addition to the MSI installer files.}}
+
| msvcp80.dll and msvcr80.dll for Mozilla libraries (found in c:\WINDOWS/WinSxS/x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd/msvc)
{{Template:Documentation/Caution|It used to be that newer version of NSIS broke the build (see {{Bug|85657}}), but it seems that it now works for NSIS up to 2.3.7.}}</ref>
+
| main/external/msvcp80
 +
|-
 +
| optional: [http://nsis.sourceforge.net/ Nullsoft Scriptable Install System (NSIS)]<ref name="Foot5">{{Note|If NSIS is available, a self contained Windows installer is created in addition to the MSI installer files.}}
 +
{{Warn|It used to be that newer version of NSIS broke the build (see {{Bug|85657}}), but it seems that it now works for NSIS up to 2.3.7.}}</ref>
  
 
|
 
|
 
|-
 
|-
| optional: [http://msdn.microsoft.com/directx/directxdownloads/ Microsoft DirectX SDK]<ref name="Foot6"> {{Template:Documentation/Note|If you don't want to download it you can disable DirectX support in the configuration step (<code>--disable-directx</code>).}}
+
| optional: [http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6812 Microsoft DirectX SDK]<ref name="Foot6"> {{Note|If you don't want to download it you can disable DirectX support in the configuration step (<code>--disable-directx</code>).}}
{{Template:Documentation/Caution|Current (as of 2008/01) versions of the DirectX9 SDK and Windows Platform SDK do not fit to each other. To be able to build with DirextX enabled, you need to patch one file in the Platform SDK. See http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID2743771 for details.}}
+
{{Warn|Current (as of 2008/01) versions of the DirectX9 SDK and Windows Platform SDK do not fit to each other. To be able to build with DirextX enabled, you need to patch one file in the Platform SDK. See http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID2743771 for details.}}
  
{{Template:Documentation/Caution|Do not use a DirectX10 SDK!}}</ref>
+
{{Warn|Do not use a DirectX10 SDK!}}</ref>
|
+
| --with-directx-home=
 
|}
 
|}
 +
 +
 +
Legacy requirements that do not apply for Apache OpenOffice:
 +
{| class="prettytable" border="1" width="100%"
 +
|-
 +
! Where to get
 +
! Place in
 +
|-
 +
| not needed anymore for Apache OpenOffice <s>Only for OOo2.x but due to {{Bug|88652}} in configure still needed for 3.x: [http://download.microsoft.com/download/b/7/5/b75eace3-00e2-4aa0-9a6f-0b6882c71642/unicows.exe unicows.dll from (Microsoft Layer for Unicode)]<ref name="Foot2"> {{Note|unicows.dll is available from the Microsoft site and needs to be saved to $SRC_ROOT/external/unicows. Microsoft seems to enjoy changing the exact location of this file. You may have to search Microsoft's website.}}</ref></s>
 +
| <s>external/unicows</s>
 +
|-
 +
| not needed anymore for Apache OpenOffice <s>[http://download.microsoft.com/download/WindowsInstaller/Install/2.0/NT45/EN-US/InstMsiW.exe instmsiw.exe] and [http://download.microsoft.com/download/WindowsInstaller/Install/2.0/W9XMe/EN-US/InstMsiA.exe instmsia.exe]</s>
 +
| <s>external/msi</s>
 +
|-
 +
| not needed anymore for Apache OpenOffice <s>for 2008 compiler (until DEV300 m22): msvcp90.dll and msvcr90.dll (found in $(msvcdir)\Vc\redist\x86\Microsoft.VC90.CRT)</s>
 +
| <s>external/msvcp90</s>
 +
|-
 +
| not needed anymore for Apache OpenOffice <s>for 2008 compiler starting with DEV300m23: Microsoft_VC90_CRT_x86.msm and policy_9_0_Microsoft_VC90_CRT_x86.msm for non debug builds and Microsoft_VC90_DebugCRT_x86.msm and policy_9_0_Microsoft_VC90_DebugCRT_x86.msm for debug builds<ref name="Foot4"> {{Note|You can find these files in your directory c:\program files\common files\merge modules}}</ref>
 +
. These merge modules are available in VS08 Express Edition and VS08 Professional Edtion. All *.msm files are located at c:\Program Files\Common Files\Merge Module. </s>
 +
| <s>main/external/msm90</s>
 +
|}
 +
 
=== adding required files to the build tree ===
 
=== adding required files to the build tree ===
  
{{Template:Documentation/Tip|Some of the files can be found in a suitable OOo installation set also, so you can save the download by “stealing” it from your OOo installation.}}
+
{{Tip|Some of the files can be found in a suitable OOo installation set also, so you can save the download by “stealing” it from your OOo installation.}}
  
{{Template:Documentation/Note|OOo uses some Mozilla libraries. Building the corresponding sources is only possible with the VC2003 compiler so you have to use precompiled libraries that require the msvx71 libraries mentioned above. On Windows the Mozilla libraries are needed only for Mozilla address book support. Unfortunately a bug in the module dependencies makes it necessary that the Mozilla libaries are used anyway as otherwise building the module <tt>xmlsecurity</tt> fails (see below).}}
+
{{Note|OOo uses some Mozilla libraries. Building the corresponding sources is only possible with the VC2003 compiler so you have to use precompiled libraries that require the msvx71 libraries mentioned above. On Windows the Mozilla libraries are needed only for Mozilla address book support. Unfortunately a bug in the module dependencies makes it necessary that the Mozilla libaries are used anyway as otherwise building the module <tt>xmlsecurity</tt> fails (see below).}}
  
{{Template:Documentation/Note|The default cygwin version offered on http://www.cygwin.com/ now is 1.7.x. For current milestones it is recommended to use this version as it fixes the .dll remapping probelm (see below) and is required for builds on Windows 7. If you need to build old versions of the source code, check out http://www.cygwin.com/win-9x.html}}
+
{{Note|The default cygwin version offered on http://www.cygwin.com/ now is 1.7.x. For current milestones it is recommended to use this version as it fixes the .dll remapping problem (see below) and is required for builds on Windows 7. If you need to build old versions of the source code, check out http://www.cygwin.com/win-9x.html}}
  
 
= Installation and Preparation of Build Tools =
 
= Installation and Preparation of Build Tools =
Line 107: Line 126:
  
 
Go to http://www.cygwin.com/ and download and install the current version.
 
Go to http://www.cygwin.com/ and download and install the current version.
{{Template:Documentation/Caution|Make sure that you keep the filetype set to “Unix/binary”.}}
+
{{Warn|Make sure that you keep the filetype set to “Unix/binary”.}}
 +
{{Warn|Make sure that the PATH variable in your cygwin shell does not contain any blanks and quotes, otherwise configure will not work}}
  
 
=== required additional packages ===
 
=== required additional packages ===
Line 123: Line 143:
 
** make
 
** make
 
** openssl-devel (only needed for perl modules for CWS tooling, see below)
 
** openssl-devel (only needed for perl modules for CWS tooling, see below)
** cvs (for 2.x code line and 3.0 code line)
+
** mercurial (or cvs for 2.x-3.0, or subversion for 3.1 codeline)
** subversion (for 3.x code line, minimum version 1.5.5)
+
** readline (may be libreadline7 under Base category in newer versions)
** readline
+
 
* Category Libs
 
* Category Libs
 
** openssl
 
** openssl
 
* Category Net
 
* Category Net
 
** openssh
 
** openssh
** ncftp
 
 
* Category Perl
 
* Category Perl
 
** perl
 
** perl
 
* Category Shells
 
* Category Shells
** rxvt
+
** mintty
 
* Category Utils
 
* Category Utils
** patch
+
** patch (may be under Devel category in newer versions)
 
** gnupg
 
** gnupg
 
* Category Web
 
* Category Web
** lynx
 
 
** wget
 
** wget
{{Template:Documentation/Note|Unfortunately the list of packages mentioned at http://website.openoffice.org/support/en/howtos/1.html#1 is incomplete, some more are listed at http://tools.openoffice.org/dev_docs/build_windows_tcsh.html#BuildRequirements .}}
 
  
{{Template:Documentation/Note|The installer will automatically check and download some more packages needed by thosed listed here. The whole process takes roughly 20 minutes.}}
+
{{Note|The installer will automatically check and download some more packages needed by thosed listed here. The whole process takes roughly 20 minutes.}}
  
 
=== breaking links to executables ===
 
=== breaking links to executables ===
Line 168: Line 184:
 
If this command is executed the first time CPAN will ask for configuration. Choose autoconfiguration.  
 
If this command is executed the first time CPAN will ask for configuration. Choose autoconfiguration.  
  
{{Template:Documentation/Caution|Please note that CPAN is not able to deal with usernames containing spaces. To work around this fact, when CPAN asks you to specify the ''CPAN build and cache directory'', change the default suggestion to <tt>/cpan</tt>.}}
+
{{Warn|Please note that CPAN is not able to deal with usernames containing spaces. To work around this fact, when CPAN asks you to specify the ''CPAN build and cache directory'', change the default suggestion to <tt>/cpan</tt>.}}
  
 
At the end the CPAN shell appeared and is ready to accept commands for installations. Each module is installed by typing <code>install $MODULENAME</code>. The modules that must be installed are:
 
At the end the CPAN shell appeared and is ready to accept commands for installations. Each module is installed by typing <code>install $MODULENAME</code>. The modules that must be installed are:
  
 
* Archive::Zip
 
* Archive::Zip
 +
* LWP::UserAgent
 +
 +
not needed anymore for Apache OpenOffice
 +
<s>
 
* XML::Parser (though it seems that this is already installed; doesn't hurt to do it)
 
* XML::Parser (though it seems that this is already installed; doesn't hurt to do it)
 +
</s>
 +
:Actually the build process still seems to require XML::Parser? I was just doing my first build on Windows 10 today and I received the error message that this module was needed along with the expat module that it depends upon... I had to install "expat" in the Cygwin setup [[User:Johnrdorazio|Johnrdorazio]] ([[User talk:Johnrdorazio|talk]]) 21:30, 14 September 2016 (UTC)
 +
<s>
 
* URI
 
* URI
* LWP::UserAgent
 
 
* Crypt::SSLeay
 
* Crypt::SSLeay
 
* SOAP::Lite
 
* SOAP::Lite
 +
</s>
  
 
CPAN will detect if a selected module depends on other modules and it will offer to download them also. As explained please just confirm this.
 
CPAN will detect if a selected module depends on other modules and it will offer to download them also. As explained please just confirm this.
  
{{Template:Documentation/Note|The last three modules are only needed if you want to use the cws tooling. These tools are necessary if you want to create and maintain your own [http://wiki.services.openoffice.org/wiki/CWS Child Workspaces] or if you want to build one of them. I recommend to install them anyway as sooner or later you want to work on a child workspace.}}
+
{{Note|The last three modules are only needed if you want to use the cws tooling. These tools are necessary if you want to create and maintain your own [http://wiki.services.openoffice.org/wiki/CWS Child Workspaces] or if you want to build one of them. I recommend to install them anyway as sooner or later you want to work on a child workspace.}}
  
{{Template:Documentation/Caution|I got an error message from CPAN somewhat like the following:
+
{{Warn|I got an error message from CPAN somewhat like the following:
 
<pre>C:\cygwin\bin\perl.exe: *** unable to remap C:\cygwin\bin\cygiconv-2.dll to same
 
<pre>C:\cygwin\bin\perl.exe: *** unable to remap C:\cygwin\bin\cygiconv-2.dll to same
 
address as parent(0x7C0000) != 0x7D0000</pre>
 
address as parent(0x7C0000) != 0x7D0000</pre>
 
To fix this, I had to exit the Cygwin shell, run cmd.exe, then type "c:\cygwin\bin\ash.exe" to start the minimal shell, then type <code>/bin/rebaseall</code>. Then CPAN worked when I ran it again.}}
 
To fix this, I had to exit the Cygwin shell, run cmd.exe, then type "c:\cygwin\bin\ash.exe" to start the minimal shell, then type <code>/bin/rebaseall</code>. Then CPAN worked when I ran it again.}}
  
{{Template:Documentation/Caution| I got another error when cygwin was performing <tt>make install</tt>:
+
{{Warn| I got another error when cygwin was performing <tt>make install</tt>:
 
<pre>ERROR: Can't create '/usr/bin'; Do not have write permissions on '/usr/bin'</pre>
 
<pre>ERROR: Can't create '/usr/bin'; Do not have write permissions on '/usr/bin'</pre>
 
I can actually write to /usr/bin; however when I do <tt>ls -ld /usr/bin</tt>, cygwin reports no write permission; and <tt>chmod u+w /usr/bin</tt> gives <tt>Permission denied</tt>.  This causes the install process to fail when it checks permissions. As a kludge, I installed vim, and edited line 368 of /usr/lib/perl5/5.10/ExtUtils/Install.pm, replacing this:
 
I can actually write to /usr/bin; however when I do <tt>ls -ld /usr/bin</tt>, cygwin reports no write permission; and <tt>chmod u+w /usr/bin</tt> gives <tt>Permission denied</tt>.  This causes the install process to fail when it checks permissions. As a kludge, I installed vim, and edited line 368 of /usr/lib/perl5/5.10/ExtUtils/Install.pm, replacing this:
Line 197: Line 220:
  
 
= Full Builds =
 
= Full Builds =
 +
 +
{{Warn| Use a short absolute directory name to store OpenOffice.org source, such as <tt>C:\ooo</tt>. Otherwise, there are weird issues during the building of the <tt>postprocess</tt> module, because the command line length of some build actions is too long: <pre> 1 [main] perl 1972 C:\cygwin\bin\perl.exe: *** fatal error - fork: can't reserve memory for stack 0x83C840 - 0x840000,
 +
Win32 error 487
 +
</pre>}}
 +
 
== configure ==
 
== configure ==
 
Finally the <code>configure</code> tool is used to create the environment. It checks that all software, hardware, and system requirements for the build are satisfied, and creates configuration files called winenv.set (for tcsh) and winenv.set.sh (for bash) that are used to set all necessary build environment variables. Before running configure, make sure that all needed programs are in the system path or start configure with the appropriate command line switches. If configure detects a problem it will stop and give you a useful hint how to fix it.
 
Finally the <code>configure</code> tool is used to create the environment. It checks that all software, hardware, and system requirements for the build are satisfied, and creates configuration files called winenv.set (for tcsh) and winenv.set.sh (for bash) that are used to set all necessary build environment variables. Before running configure, make sure that all needed programs are in the system path or start configure with the appropriate command line switches. If configure detects a problem it will stop and give you a useful hint how to fix it.
  
 +
For building OOo from the Mercurial repository:
 
You will find the <code>configure</code> script in <code>$SRC_ROOT</code>. The resulting configuration files are created there too.
 
You will find the <code>configure</code> script in <code>$SRC_ROOT</code>. The resulting configuration files are created there too.
 +
 +
For building OOo from the Apache svn repository:
 +
call <code>autoconf</code> in <code>$SRC_ROOT</code>. This will create the configure step. Repeat that and the configure step after each change in configure.in (either by yourself or anyone else).And every time you make changes to the <code>configure.in</code> script, the script will remind you to run <code>autoconf</code> again.
 +
 +
autoconf
  
 
==== sample configure calls ====
 
==== sample configure calls ====
  
  ./configure \
+
You can get short explanations for all parameters by using ./configure --help.
   --disable-directx \
+
 
   --with-cl-home="/cygdrive/d/develop/msvc/VC" \
+
minimum (requires the most prerequisites) - pathes of course are machine dependent:
 +
 
 +
  ./configure  
 +
   --disable-build-mozilla
 +
  --with-mozilla-build="/cygdrive/d/OOo/mozilla-build-1.3" \
 +
   --with-cl-home="/cygdrive/c/Program Files/Microsoft Visual Studio 9.0/VC" \
 +
  --with-mspdb-path="/cygdrive/c/Program Files/Microsoft Visual Studio 9.0/Common7/IDE" \
 +
  --with-frame-home="/cygdrive/c/Program Files/Microsoft SDKs/Windows/v6.1" \
 +
  --with-psdk-home="/cygdrive/c/Program Files/Microsoft SDKs/Windows/v6.1" \
 +
  --with-midl-path="/cygdrive/c/Program Files/Microsoft SDKs/Windows/v6.1/Bin" \
 +
  --with-asm-home="/cygdrive/c/Program Files/Microsoft Visual Studio 9.0/VC/Bin" \
 +
  --with-csc-path="/cygdrive/c/WINDOWS/Microsoft.NET/Framework/v3.5" \
 +
  --with-jdk-home="/cygdrive/c/j2sdk1.5.0.06" \
 +
  --with-directx-home="/cygdrive/d/OOo/DirectXSDK" \
 +
  --with-ant-home=/ant \
 +
 
 +
some further settings that might help to get rid of some prerequisites that not every developer needs (but be aware, this will also remove some parts from the final build result):
 +
 
 +
  --disable-mozilla \
 
   --disable-activex \
 
   --disable-activex \
 +
  --disable-directx \
 
   --disable-atl \
 
   --disable-atl \
   --disable-build-mozilla \
+
   --without-junit \
   --with-frame-home="/cygdrive/d/develop/MSDK/v6.1" \
+
   --disable-binfilter \
   --with-psdk-home="/cygdrive/d/develop/MSDK/v6.1" \
+
   --disable-odk \
  --with-midl-path="/cygdrive/d/develop/MSDK/v6.1/Bin" \
+
 
  --with-asm-home="/cygdrive/d/develop/msvc/VC" \
+
for all builds on code lines older than OOo330 or older than milestone m77 on the DEV300 code line:
  --with-jdk-home="/cygdrive/d/develop/j2sdk1.4.2_11" \
+
 
  --with-csc-path="/cygdrive/c/Windows/Microsoft.NET/Framework/v3.5" \
+
  --with-ant-home=/ant \
+
 
   --with-use-shell=bash
 
   --with-use-shell=bash
  
./configure --disable-build-mozilla --with-use-shell=bash --disable-activex --with-win32
+
some other settings worth considering:
--with-cl-home="/cygdrive/c/Program Files/Microsoft Visual Studio 9.0/VC"
+
 
--with-midl-path="/cygdrive/c/Program Files/Microsoft SDKs/Windows/v6.1/Bin"
+
  --enable-pch \
--with-csc-path="/cygdrive/c/WINDOWS/Microsoft.NET/Framework/v3.5"
+
  --enable-werror \
--with-frame-home="/cygdrive/c/Program Files/Microsoft SDKs/Windows/v6.1"
+
  --enable-dbgutil \
--with-asm-home="/cygdrive/c/Program Files/Microsoft Visual Studio 9.0/VC/Bin"
+
 
--with-jdk-home="/cygdrive/c/j2sdk1.4.2_11" .
+
in case you want to have several workspaces on your hard disk, it might be a good idea to share external source tarballs:
--disable-directx --disable-epm
+
 
--with-ant-home=/cygdrive/c/apache-ant-1.6.5
+
  --with-external-tar=d:/OOo/ext_sources \
--with-psdk-home="/cygdrive/c/Program Files/Microsoft SDKs/Windows/v6.1"
+
  
 
==== configure settings tips ====
 
==== configure settings tips ====
{{Template:Documentation/Caution|Make sure that the <code>PATH</code> variable in your cygwin shell does not contain any blanks and quotes.}}
+
{{Warn|Make sure that the <code>PATH</code> variable in your cygwin shell does not contain any blanks and quotes.}}
{{Template:Documentation/Caution|Paths might have problems with spaces. Install requirements into pathes without them. Alternatively, feel free to install the various packages using the default path containing spaces and then use the mixed short path for the configure stage. The mixed short path can be obtained using Cygwin's cygpath tool, eg:
+
{{Warn|Paths might have problems with spaces. Install requirements into pathes without them. Alternatively, feel free to install the various packages using the default path containing spaces and then use the mixed short path for the configure stage. The mixed short path can be obtained using Cygwin's cygpath tool, eg:
 
<pre>$ cygpath -m -s "c:\Program Files\Microsoft Visual Studio 9.0\VC"
 
<pre>$ cygpath -m -s "c:\Program Files\Microsoft Visual Studio 9.0\VC"
 
  c:/PROGRA~1/MICROS~1.0/VC</pre>
 
  c:/PROGRA~1/MICROS~1.0/VC</pre>
 
The <code>with-psdk-home</code> setting needs a case-sensitive path name. I recommend to use case-sensitive usage in all cases - it's good to get used to case sensitivity if you are going to work with Cygwin.}}
 
The <code>with-psdk-home</code> setting needs a case-sensitive path name. I recommend to use case-sensitive usage in all cases - it's good to get used to case sensitivity if you are going to work with Cygwin.}}
{{Template:Documentation/Caution|Beware of using <code>/c/</code> instead of <code>/cygdrive/c/</code>.}}
+
{{Warn|Beware of using <code>/c/</code> instead of <code>/cygdrive/c/</code>.}}
{{Template:Documentation/Caution|Avoid trailing slashes in configure parameters. They sure cause problems for <code>--with-psdk-home</code>.}}
+
{{Warn|Avoid trailing slashes in configure parameters. They sure cause problems for <code>--with-psdk-home</code>.}}
{{Template:Documentation/Note|Paths to dependencies might be different for your installation. The pathes containing "msvc" and "msdk" should be self-explanatory.}}
+
{{Note|Paths to dependencies might be different for your installation. The pathes containing "msvc" and "msdk" should be self-explanatory.}}
{{Template:Documentation/Tip|There are a number of options that you can use with the configure script. To display these options, type the following command:
+
{{Tip|There are a number of options that you can use with the configure script. To display these options, type the following command:
 
<pre>./configure --help</pre>}}
 
<pre>./configure --help</pre>}}
{{Template:Documentation/Tip|If you run into problems with early DEV300 releases, check your settings in winenv.set.sh for <code>WINDOWS_VISTA_PSDK</code> to be set <code>TRUE</code>. This is important if <code>configure</code> fails to detect the Windows platform SDK version correctly. The detection failure results from the way how configure searches for the Vista PSDK in older releases: it will be found only if it is installed into the default location.}}  
+
{{Tip|If you run into problems with early DEV300 releases, check your settings in winenv.set.sh for <code>WINDOWS_VISTA_PSDK</code> to be set <code>TRUE</code>. This is important if <code>configure</code> fails to detect the Windows platform SDK version correctly. The detection failure results from the way how configure searches for the Vista PSDK in older releases: it will be found only if it is installed into the default location.}}  
{{Template:Documentation/Tip|If you run into problems compiling on an "Express Edition" with early DEV300 releases, check your settings in winenv.set.sh for <code>DISABLE_ATL</code>, <code>DISABLE_ACTIVEX</code>: all have to be set <code>TRUE</code>. Visual Studio Express compilers do not contain everything needed to build the OOo ActiveX control, OLE automation and native Windows OLE support, so disable support for them. A "complete" Visual Studio (no “Express” version) is not limited in that way.}}
+
{{Warn|If you run into problems compiling on an "Express Edition" (such as <tt>Cannot open include files: 'atlbase.h': No such files or directory</tt>), check your settings in winenv.set.sh for <code>DISABLE_ATL</code>, <code>DISABLE_ACTIVEX</code>: all have to be set <code>TRUE</code>. Visual Studio Express compilers do not contain everything needed to build the OOo ActiveX control, OLE automation and native Windows OLE support, so either disable support for them via <code>--disable-atl --disable-activex</code> or add them [http://stackoverflow.com/questions/6979918/compile-atl-project-with-only-windows-sdk-7-1 via the WDK].
{{Template:Documentation/Tip|As DirectX is not needed for most developers, its SDK consumes a lot of disk space and is prone to incompatibilities I recommend to build without DirecX support by using <code>--disable-directx</code> as shown above. Otherwise you have to provide the path to the SDK in <code>--with-directx-home</code>.}}
+
{{Tip|As DirectX is not needed for most developers, its SDK consumes a lot of disk space and is prone to incompatibilities I recommend to build without DirecX support by using <code>--disable-directx</code> as shown above. Otherwise you have to provide the path to the SDK in <code>--with-directx-home</code>.}}
{{Template:Documentation/Tip|OOo uses some Mozilla components. It is not possible to build them from the sources using the Visual Studio 2005 compiler. Disabling the Mozilla components with <code>--disable-mozilla</code> completely currently does might not work due to a bug in the module dependencies.}}
+
{{Tip|OOo uses some Mozilla components. It is not possible to build them from the sources using the Visual Studio 2005 compiler. Disabling the Mozilla components with <code>--disable-mozilla</code> completely currently does might not work due to a bug in the module dependencies.}}
{{Template:Documentation/Tip|If you experiment with the newest sources, mind that it can happen sometimes that <code>configure.in</code> was updated, but it was forgotten to update configure too. The configure script itself is created from <code>configure.in</code> using the <code>autoreconf</code> command. The perl script <code>set_soenv</code> is created when you run configure from <code>set_soenv.in</code>.}}
+
{{Tip|If you experiment with the newest sources, mind that it can happen sometimes that <code>configure.in</code> was updated, but it was forgotten to update configure too. The configure script itself is created from <code>configure.in</code> using the <code>autoreconf</code> command. The perl script <code>set_soenv</code> is created when you run configure from <code>set_soenv.in</code>.}}
{{Template:Documentation/Tip|csc.exe comes from the <code>c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322</code> directory, you might need <code>--with-csc-path</code>.}}
+
{{Tip|csc.exe comes from the <code>c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322</code> directory, you might need <code>--with-csc-path</code>.}}
{{Template:Documentation/Tip|If you fail to getting together a working installation of Cygwin, one possibility is to use a known-to-work combination of Cygwin packages, i.e. a direct copy of some other user's Cygwin tree. [[User:TorLillqvist]] has such a tree (from late 2006) zipped up at http://download.go-oo.org/tstnvl/tml/tml-cygwin.zip . Don't hesitate to ask for advice if necessary.}}
+
{{Tip|If you fail to getting together a working installation of Cygwin, one possibility is to use a known-to-work combination of Cygwin packages, i.e. a direct copy of some other user's Cygwin tree. [[User:TorLillqvist]] has such a tree (from late 2006) zipped up at http://download.go-oo.org/tstnvl/tml/tml-cygwin.zip . Don't hesitate to ask for advice if necessary.}}
  
 
== bootstrap ==
 
== bootstrap ==
Line 254: Line 304:
 
  ./bootstrap
 
  ./bootstrap
  
== setting the enviroment ==
+
{{Note|1=Starting with DEV300m77, the sources for external modules (e.g. libxml2) were moved out of the source repository. The bootstrap step will now create a directory called "ext_sources" beside the repository and populate it with the required file via HTTP.
 +
If need to change that behavior, checkout the configure switches
 +
--with-external-tar=<TARFILE PATH>  : Specify path to tarfiles manually
 +
--disable-fetch-external            : Disables fetching external tarballs from web sources.}}
 +
 
 +
== setting the environment ==
  
When the configure script has been run successfully a file <code>winenv.Set.sh</code> was created<ref name="Foot7">{{Template:Documentation/Note|When you want to use tcsh instead of bash, you will need to use the file <code>winenv.Set</code> instead:
+
When the configure script has been run successfully a file <code>winenv.Set.sh</code> was created<ref name="Foot7">{{Note|When you want to use tcsh instead of bash, you will need to use the file <code>winenv.Set</code> instead:
 
<pre> source winenv.Set
 
<pre> source winenv.Set
 
  rehash</pre>
 
  rehash</pre>
Line 263: Line 318:
 
  source winenv.Set.sh
 
  source winenv.Set.sh
  
to set up the enviroment for the build.
+
to set up the environment for the build.
  
 
== starting the build ==
 
== starting the build ==
Build the software by typing the following in <code>$SRC_ROOT</code><ref name="Foot8">{{Template:Documentation/Note|You can also run:
+
Build the software by typing the following in <code>$SRC_ROOT</code><ref name="Foot8">{{Note|You can also run:
 
<pre>make</pre>
 
<pre>make</pre>
 
but GNU/make will just start dmake. You can also run the following in the <code>instetoo_native</code> module:
 
but GNU/make will just start dmake. You can also run the following in the <code>instetoo_native</code> module:
Line 278: Line 333:
 
There are some special things in the way how OOo builds its modules. Every module has an “output” folder (with some subfolders for the different kinds of generated output) that is created the first time a build is done in the module. The name of this folder is “wntmsci10.pro” for builds with MSVC++2003, “wntmsci11.pro” for builds with MSVC++2005 and "wntmsci12.pro" for builds with MSVC++2008 (for the meaning of the "pro" extension see below). After a successful build of a module some of the generated files are copied to the output folder of the “solver” module by executing a tool called “deliver” (this is automatically called by build --all for each of the modules). Other modules will take these “delivered” files (header files, libraries etc.) to resolve their dependencies. The content of the solver module will also be used to pack the installation sets in the final step.
 
There are some special things in the way how OOo builds its modules. Every module has an “output” folder (with some subfolders for the different kinds of generated output) that is created the first time a build is done in the module. The name of this folder is “wntmsci10.pro” for builds with MSVC++2003, “wntmsci11.pro” for builds with MSVC++2005 and "wntmsci12.pro" for builds with MSVC++2008 (for the meaning of the "pro" extension see below). After a successful build of a module some of the generated files are copied to the output folder of the “solver” module by executing a tool called “deliver” (this is automatically called by build --all for each of the modules). Other modules will take these “delivered” files (header files, libraries etc.) to resolve their dependencies. The content of the solver module will also be used to pack the installation sets in the final step.
  
{{Template:Documentation/Tip|Using some not quite latest cygwin releases (1.5.18/1.5.19) can lead to tcsh freezing in places - the build will appear to hang. You can fix this by running ''ls /proc/$nnn/fd'' where $nnn is the number of the process. Or just run
+
{{Tip|Using some not quite latest cygwin releases (1.5.18/1.5.19) can lead to tcsh freezing in places - the build will appear to hang. You can fix this by running ''ls /proc/$nnn/fd'' where $nnn is the number of the process. Or just run
 
<pre>ls /proc/*/fd</pre>
 
<pre>ls /proc/*/fd</pre>
 
to "unhang" the process. See {{Bug|51560}} for more info...}}
 
to "unhang" the process. See {{Bug|51560}} for more info...}}
Line 288: Line 343:
 
* incompatible
 
* incompatible
 
Only do compatible partial builds if you know exactly what you are doing.
 
Only do compatible partial builds if you know exactly what you are doing.
{{Documentation/Note|For more information, see [[Compatible Builds]].}}
+
{{Note|For more information, see [[Compatible Builds]].}}
 
== rebuilding from a module (incompatible build) ==
 
== rebuilding from a module (incompatible build) ==
  
Line 305: Line 360:
 
  build && deliver
 
  build && deliver
  
A simple <code>build</code> in <code>$SRC_ROOT/instsetoo_native</code> will recreate the installation sets, provided all other modules have already been build.<ref name="Foot9">{{Documentation/Caution|<code>build --all</code> would rebuild changed/missing files. However, it does not check for incompatible modules. If unsure, use <code>build --from --prepare</code>.}}</ref>
+
A simple <code>build</code> in <code>$SRC_ROOT/instsetoo_native</code> will recreate the installation sets, provided all other modules have already been build.<ref name="Foot9">{{Warn|<code>build --all</code> would rebuild changed/missing files. However, it does not check for incompatible modules. If unsure, use <code>build --from --prepare</code>.}}</ref>
  
 
= Building a Module with Debug Information =
 
= Building a Module with Debug Information =
Line 317: Line 372:
 
Drop the newly created binaries into an existing installation. Building an installation set with them will not help, as binaries are stripped on packing by default.
 
Drop the newly created binaries into an existing installation. Building an installation set with them will not help, as binaries are stripped on packing by default.
  
{{Template:Documentation/Tip|For details, see [[Windows Debugging]].}}
+
{{Tip|For details, see [[Windows Debugging]].}}
 
= Finding the Installation Sets =
 
= Finding the Installation Sets =
 
After a successful build you will find the OOo installation set in  
 
After a successful build you will find the OOo installation set in  
  
  instsetoo_native/wntmscixx.pro/OpenOffice/msi/Install/en-US
+
  instsetoo_native/wntmscixx.pro/Apache_OpenOffice/msi/install/en-US
  
 
“instsetoo_native” is the module that packs the installation set.
 
“instsetoo_native” is the module that packs the installation set.
  
{{Documentation/Tip|If you already have a version of OOo installed you can install your freshly built version in parallel by installing it with setup /a that just unpacks all files without any system registration.}}
+
{{Tip|If you already have a version of OOo installed you can install your freshly built version in parallel by installing it with setup /a that just unpacks all files without any system registration. See [[Run_OOo_versions_parallel|Running in parallel]].}}
  
 
= Tips And Tricks =
 
= Tips And Tricks =
Line 342: Line 397:
 
If you set the environment variable <code>nodep</code> to <code>TRUE</code>, then dependendy information files are not created - the build finishes faster.
 
If you set the environment variable <code>nodep</code> to <code>TRUE</code>, then dependendy information files are not created - the build finishes faster.
  
{{Template:Documentation/Caution|But only enable that on a clean build. Once you have built OOo and then made modifications, unset the variable again to be on the safe side.}}
+
{{Warn|But only enable that on a clean build. Once you have built OOo and then made modifications, unset the variable again to be on the safe side.}}
  
 
'''NO_HIDS'''
 
'''NO_HIDS'''
Line 399: Line 454:
  
 
= See Also =
 
= See Also =
{{Template:Documentation/Note|For more information on building OOo on Windows see:
+
{{Note|For more information on building OOo on Windows see:
 
* [[Building on Windows (older releases)]]
 
* [[Building on Windows (older releases)]]
 
* [[CPAN_install| Perl modules installation with CPAN]]
 
* [[CPAN_install| Perl modules installation with CPAN]]

Latest revision as of 12:13, 13 November 2018

This page is archived for historical reasons only. It is no longer maintained and information may not be current.

Revised Building Guide: for Apache OpenOffice

Please Note: An updated version of the building guide, for Apache OpenOffice, can be found here.


[[{{{PrevPage}}}|< Previous Page

]]

[[{{{NextPage}}}|Next Page
>]]

Overview

Documentation windows.png This document explains how to build the OpenOffice.org source code on Windows systems.

For building OpenOffice.org Cygwin is needed, a Windows program that emulates a complete Unix commandline environment. To use this document you need to be familiar with a command line, but you need not to be a UNIX shell wizard.

Tip.png If you have never used a Unix shell, you might want to take a look at the shell introduction at TLDP.


Documentation note.png $SRC_ROOT will denote the directory in which the source code of OpenOffice.org is stored.
Tip.png You are advised to check the release notes for the release you are building to inform yourself about changes since previous releases.


Requirements

hardware requirements

  • 1 or more reasonable fast CPUs (x-way CPU recommended)
  • 1 GB RAM (2 GB recommended)
  • 10 GB free disk space (20 GB when debugging)

software requirements

  • Windows XP/Vista/7

The following table is placed here, so you can come back to it easily, when you want to use a link. The items are explained below. Here's the list of files to download (with links) and the locations in the source tree where you must put them:


Where to get Place in/Use configure switch
Cygwin: Cygwin ToolKit with(dll version 1.5.10)or later (default)
C/C++ Compiler: free: Visual C++ 2008 Express Compiler(basic install, no optional required) offical: Visual C++ 2008 Professional --with-cl-home=
Windows SDK for Windows Server 2008[1]
Java: JDK 1.6 for DEV300 milestones >= m37 and all OOo310 versions (older milestones will fail in the hsqldb module) --with-jdk-home=
GDI+ Redistributable (Genuine Windows Validation required) main/external/gdiplus
dbghelp.dll[2]

Can also be found in the Visual Studio C++ 2008 Express installation.

main/external/dbghelp
Apache Ant (version 1.6.5 or later) --with-ant-home=
Mozilla binary distribution (WNTMSCIruntime.zip,WNTMSCIlib.zip,WNTMSCIinc.zip)

Needed as prebuilts for module moz (SeaMonkey) as the current used SeaMonkey version 1.1.4 does not support a build with Visual Studio C++ 2008 compiler.

main/moz/zipped
msvcr71.dll and msvcp71.dll for Mozilla libraries (Search for them in the Web or on your PC. These files should be named as all lower case. Sometimes when downloaded they are upper case and this will cause 'file not found' errors towards the end of the build)) main/external/msvcp71
msvcp80.dll and msvcr80.dll for Mozilla libraries (found in c:\WINDOWS/WinSxS/x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd/msvc) main/external/msvcp80
optional: Nullsoft Scriptable Install System (NSIS)[3]
optional: Microsoft DirectX SDK[4] --with-directx-home=


Legacy requirements that do not apply for Apache OpenOffice:

Where to get Place in
not needed anymore for Apache OpenOffice Only for OOo2.x but due to Issue 88652 in configure still needed for 3.x: unicows.dll from (Microsoft Layer for Unicode)[5] external/unicows
not needed anymore for Apache OpenOffice instmsiw.exe and instmsia.exe external/msi
not needed anymore for Apache OpenOffice for 2008 compiler (until DEV300 m22): msvcp90.dll and msvcr90.dll (found in $(msvcdir)\Vc\redist\x86\Microsoft.VC90.CRT) external/msvcp90
not needed anymore for Apache OpenOffice for 2008 compiler starting with DEV300m23: Microsoft_VC90_CRT_x86.msm and policy_9_0_Microsoft_VC90_CRT_x86.msm for non debug builds and Microsoft_VC90_DebugCRT_x86.msm and policy_9_0_Microsoft_VC90_DebugCRT_x86.msm for debug builds[6]

. These merge modules are available in VS08 Express Edition and VS08 Professional Edtion. All *.msm files are located at c:\Program Files\Common Files\Merge Module.

main/external/msm90

adding required files to the build tree

Tip.png Some of the files can be found in a suitable OOo installation set also, so you can save the download by “stealing” it from your OOo installation.


Documentation note.png OOo uses some Mozilla libraries. Building the corresponding sources is only possible with the VC2003 compiler so you have to use precompiled libraries that require the msvx71 libraries mentioned above. On Windows the Mozilla libraries are needed only for Mozilla address book support. Unfortunately a bug in the module dependencies makes it necessary that the Mozilla libaries are used anyway as otherwise building the module xmlsecurity fails (see below).
Documentation note.png The default cygwin version offered on http://www.cygwin.com/ now is 1.7.x. For current milestones it is recommended to use this version as it fixes the .dll remapping problem (see below) and is required for builds on Windows 7. If you need to build old versions of the source code, check out http://www.cygwin.com/win-9x.html

Installation and Preparation of Build Tools

setting up cygwin

Go to http://www.cygwin.com/ and download and install the current version.

Documentation caution.png Make sure that you keep the filetype set to “Unix/binary”.
Documentation caution.png Make sure that the PATH variable in your cygwin shell does not contain any blanks and quotes, otherwise configure will not work

required additional packages

Cygwin consists of some basic and a lot of optional packages. As building OOo needs some of these optional packages you have to select them in the installer. Here's a complete list of the needed packages:

  • Category Archive:
    • unzip
    • zip
  • Category Devel :
    • autoconf
    • bison
    • flex
    • gcc-g++
    • gperf
    • make
    • openssl-devel (only needed for perl modules for CWS tooling, see below)
    • mercurial (or cvs for 2.x-3.0, or subversion for 3.1 codeline)
    • readline (may be libreadline7 under Base category in newer versions)
  • Category Libs
    • openssl
  • Category Net
    • openssh
  • Category Perl
    • perl
  • Category Shells
    • mintty
  • Category Utils
    • patch (may be under Devel category in newer versions)
    • gnupg
  • Category Web
    • wget
Documentation note.png The installer will automatically check and download some more packages needed by thosed listed here. The whole process takes roughly 20 minutes.

breaking links to executables

Within the Cygwin Toolkit, some executables might be symlinks: awk.exe and gunzip.exe, tar.exe (in older releases only). This can lead to a break of the build later, and the symlinks should be replaced by copies of the command they link to.

To check this, execute:

ls -l /bin/awk.exe

whether e.g. awk.exe is a symlink. In version 1.5.24-2 awk.exe is a link to gawk.exe. The shell will show this by putting out “awk.exe -> gawk.exe”. In this case gawk.exe must be copied to awk.exe by executing:

cd /bin
rm awk.exe
cp gawk.exe awk.exe


In case you overlook something here or you have a newer Cygwin version with additional symlinks not mentioned here it's not a problem. You will get a helpful error message about an existing link in the configuration step (configure) later. The message will tell you which link you have to remove and you can do it following the advice given above for the awk.exe/gawk.exe pair.

installing additional perl modules in cygwin

As explained some perl modules must be installed with CPAN. The necessary command in the cygwin shell is

perl -MCPAN -e shell

If this command is executed the first time CPAN will ask for configuration. Choose autoconfiguration.

Documentation caution.png Please note that CPAN is not able to deal with usernames containing spaces. To work around this fact, when CPAN asks you to specify the CPAN build and cache directory, change the default suggestion to /cpan.

At the end the CPAN shell appeared and is ready to accept commands for installations. Each module is installed by typing install $MODULENAME. The modules that must be installed are:

  • Archive::Zip
  • LWP::UserAgent

not needed anymore for Apache OpenOffice

  • XML::Parser (though it seems that this is already installed; doesn't hurt to do it)

Actually the build process still seems to require XML::Parser? I was just doing my first build on Windows 10 today and I received the error message that this module was needed along with the expat module that it depends upon... I had to install "expat" in the Cygwin setup Johnrdorazio (talk) 21:30, 14 September 2016 (UTC)

  • URI
  • Crypt::SSLeay
  • SOAP::Lite

CPAN will detect if a selected module depends on other modules and it will offer to download them also. As explained please just confirm this.

Documentation note.png The last three modules are only needed if you want to use the cws tooling. These tools are necessary if you want to create and maintain your own Child Workspaces or if you want to build one of them. I recommend to install them anyway as sooner or later you want to work on a child workspace.
Documentation caution.png I got an error message from CPAN somewhat like the following:
C:\cygwin\bin\perl.exe: *** unable to remap C:\cygwin\bin\cygiconv-2.dll to same
address as parent(0x7C0000) != 0x7D0000

To fix this, I had to exit the Cygwin shell, run cmd.exe, then type "c:\cygwin\bin\ash.exe" to start the minimal shell, then type /bin/rebaseall. Then CPAN worked when I ran it again.

Documentation caution.png I got another error when cygwin was performing make install:
ERROR: Can't create '/usr/bin'; Do not have write permissions on '/usr/bin'

I can actually write to /usr/bin; however when I do ls -ld /usr/bin, cygwin reports no write permission; and chmod u+w /usr/bin gives Permission denied. This causes the install process to fail when it checks permissions. As a kludge, I installed vim, and edited line 368 of /usr/lib/perl5/5.10/ExtUtils/Install.pm, replacing this:

return -w $dir;

with this:

return 1;

which allowed installation to proceed.

Full Builds

Documentation caution.png Use a short absolute directory name to store OpenOffice.org source, such as C:\ooo. Otherwise, there are weird issues during the building of the postprocess module, because the command line length of some build actions is too long:
 1 [main] perl 1972 C:\cygwin\bin\perl.exe: *** fatal error - fork: can't reserve memory for stack 0x83C840 - 0x840000, 
Win32 error 487
 

configure

Finally the configure tool is used to create the environment. It checks that all software, hardware, and system requirements for the build are satisfied, and creates configuration files called winenv.set (for tcsh) and winenv.set.sh (for bash) that are used to set all necessary build environment variables. Before running configure, make sure that all needed programs are in the system path or start configure with the appropriate command line switches. If configure detects a problem it will stop and give you a useful hint how to fix it.

For building OOo from the Mercurial repository: You will find the configure script in $SRC_ROOT. The resulting configuration files are created there too.

For building OOo from the Apache svn repository: call autoconf in $SRC_ROOT. This will create the configure step. Repeat that and the configure step after each change in configure.in (either by yourself or anyone else).And every time you make changes to the configure.in script, the script will remind you to run autoconf again.

autoconf

sample configure calls

You can get short explanations for all parameters by using ./configure --help.

minimum (requires the most prerequisites) - pathes of course are machine dependent:

./configure 
 --disable-build-mozilla 
 --with-mozilla-build="/cygdrive/d/OOo/mozilla-build-1.3" \
 --with-cl-home="/cygdrive/c/Program Files/Microsoft Visual Studio 9.0/VC" \
 --with-mspdb-path="/cygdrive/c/Program Files/Microsoft Visual Studio 9.0/Common7/IDE" \
 --with-frame-home="/cygdrive/c/Program Files/Microsoft SDKs/Windows/v6.1" \
 --with-psdk-home="/cygdrive/c/Program Files/Microsoft SDKs/Windows/v6.1" \
 --with-midl-path="/cygdrive/c/Program Files/Microsoft SDKs/Windows/v6.1/Bin" \
 --with-asm-home="/cygdrive/c/Program Files/Microsoft Visual Studio 9.0/VC/Bin" \
 --with-csc-path="/cygdrive/c/WINDOWS/Microsoft.NET/Framework/v3.5" \
 --with-jdk-home="/cygdrive/c/j2sdk1.5.0.06" \
 --with-directx-home="/cygdrive/d/OOo/DirectXSDK" \
 --with-ant-home=/ant \

some further settings that might help to get rid of some prerequisites that not every developer needs (but be aware, this will also remove some parts from the final build result):

 --disable-mozilla \
 --disable-activex \
 --disable-directx \
 --disable-atl \
 --without-junit \
 --disable-binfilter \
 --disable-odk \

for all builds on code lines older than OOo330 or older than milestone m77 on the DEV300 code line:

 --with-use-shell=bash

some other settings worth considering:

 --enable-pch \
 --enable-werror \
 --enable-dbgutil \

in case you want to have several workspaces on your hard disk, it might be a good idea to share external source tarballs:

 --with-external-tar=d:/OOo/ext_sources \

configure settings tips

Documentation caution.png Make sure that the PATH variable in your cygwin shell does not contain any blanks and quotes.
Documentation caution.png Paths might have problems with spaces. Install requirements into pathes without them. Alternatively, feel free to install the various packages using the default path containing spaces and then use the mixed short path for the configure stage. The mixed short path can be obtained using Cygwin's cygpath tool, eg:
$ cygpath -m -s "c:\Program Files\Microsoft Visual Studio 9.0\VC"
 c:/PROGRA~1/MICROS~1.0/VC

The with-psdk-home setting needs a case-sensitive path name. I recommend to use case-sensitive usage in all cases - it's good to get used to case sensitivity if you are going to work with Cygwin.

Documentation caution.png Beware of using /c/ instead of /cygdrive/c/.
Documentation caution.png Avoid trailing slashes in configure parameters. They sure cause problems for --with-psdk-home.
Documentation note.png Paths to dependencies might be different for your installation. The pathes containing "msvc" and "msdk" should be self-explanatory.
Tip.png There are a number of options that you can use with the configure script. To display these options, type the following command:
./configure --help
Tip.png If you run into problems with early DEV300 releases, check your settings in winenv.set.sh for WINDOWS_VISTA_PSDK to be set TRUE. This is important if configure fails to detect the Windows platform SDK version correctly. The detection failure results from the way how configure searches for the Vista PSDK in older releases: it will be found only if it is installed into the default location.

{{Warn|If you run into problems compiling on an "Express Edition" (such as Cannot open include files: 'atlbase.h': No such files or directory), check your settings in winenv.set.sh for DISABLE_ATL, DISABLE_ACTIVEX: all have to be set TRUE. Visual Studio Express compilers do not contain everything needed to build the OOo ActiveX control, OLE automation and native Windows OLE support, so either disable support for them via --disable-atl --disable-activex or add them via the WDK.

Tip.png As DirectX is not needed for most developers, its SDK consumes a lot of disk space and is prone to incompatibilities I recommend to build without DirecX support by using --disable-directx as shown above. Otherwise you have to provide the path to the SDK in --with-directx-home.
Tip.png OOo uses some Mozilla components. It is not possible to build them from the sources using the Visual Studio 2005 compiler. Disabling the Mozilla components with --disable-mozilla completely currently does might not work due to a bug in the module dependencies.
Tip.png If you experiment with the newest sources, mind that it can happen sometimes that configure.in was updated, but it was forgotten to update configure too. The configure script itself is created from configure.in using the autoreconf command. The perl script set_soenv is created when you run configure from set_soenv.in.
Tip.png csc.exe comes from the c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322 directory, you might need --with-csc-path.
Tip.png If you fail to getting together a working installation of Cygwin, one possibility is to use a known-to-work combination of Cygwin packages, i.e. a direct copy of some other user's Cygwin tree. User:TorLillqvist has such a tree (from late 2006) zipped up at http://download.go-oo.org/tstnvl/tml/tml-cygwin.zip . Don't hesitate to ask for advice if necessary.


bootstrap

After running configure you must create the dmake make utility that is needed for the build of OpenOffice.org. This done from the SRC_ROOT directory by calling

./bootstrap
Documentation note.png Starting with DEV300m77, the sources for external modules (e.g. libxml2) were moved out of the source repository. The bootstrap step will now create a directory called "ext_sources" beside the repository and populate it with the required file via HTTP.

If need to change that behavior, checkout the configure switches

--with-external-tar=<TARFILE PATH>  : Specify path to tarfiles manually
--disable-fetch-external            : Disables fetching external tarballs from web sources.

setting the environment

When the configure script has been run successfully a file winenv.Set.sh was created[7]. Do this:

source winenv.Set.sh

to set up the environment for the build.

starting the build

Build the software by typing the following in $SRC_ROOT[8]:

dmake

The building procedure will take at least an hour (on a 3 GHz Quad-Core with 8GB RAM).

There are some special things in the way how OOo builds its modules. Every module has an “output” folder (with some subfolders for the different kinds of generated output) that is created the first time a build is done in the module. The name of this folder is “wntmsci10.pro” for builds with MSVC++2003, “wntmsci11.pro” for builds with MSVC++2005 and "wntmsci12.pro" for builds with MSVC++2008 (for the meaning of the "pro" extension see below). After a successful build of a module some of the generated files are copied to the output folder of the “solver” module by executing a tool called “deliver” (this is automatically called by build --all for each of the modules). Other modules will take these “delivered” files (header files, libraries etc.) to resolve their dependencies. The content of the solver module will also be used to pack the installation sets in the final step.

Tip.png Using some not quite latest cygwin releases (1.5.18/1.5.19) can lead to tcsh freezing in places - the build will appear to hang. You can fix this by running ls /proc/$nnn/fd where $nnn is the number of the process. Or just run
ls /proc/*/fd

to "unhang" the process. See Issue 51560 for more info...


Partial Builds

There are two ways to do partial builds:

  • compatible
  • incompatible

Only do compatible partial builds if you know exactly what you are doing.

Documentation note.png For more information, see Compatible Builds.

rebuilding from a module (incompatible build)

If you decide to change a module in an incompatible way, you will need to rebuild all modules depending on it (directly or indirectly):

cd $SRC_ROOT/instsetoo_native
build --from $INCOMPATIPLEMODULE --prepare
build --from $INCOMPATIBLEMODULE

rebuilding a module (compatible build)

To rebuild a module you can delete all output directories with, rebuild and redeliver into the solver with:

cd $MODULE
build --from $MODULE --prepare
build && deliver

A simple build in $SRC_ROOT/instsetoo_native will recreate the installation sets, provided all other modules have already been build.[9]

Building a Module with Debug Information

To rebuild a module with debug information and additional assertions and checks, run:

cd $MODULE
build --from $MODULE --prepare # removes old output trees and solver
build debug=true --from $MODULE

Drop the newly created binaries into an existing installation. Building an installation set with them will not help, as binaries are stripped on packing by default.

Tip.png For details, see Windows Debugging.

Finding the Installation Sets

After a successful build you will find the OOo installation set in

instsetoo_native/wntmscixx.pro/Apache_OpenOffice/msi/install/en-US

“instsetoo_native” is the module that packs the installation set.

Tip.png If you already have a version of OOo installed you can install your freshly built version in parallel by installing it with setup /a that just unpacks all files without any system registration. See Running in parallel.


Tips And Tricks

ccache

For Windows: download from here, do the following:

export CCACHE_DIR="some/place/with/space"
ccache -M 2G -F 10000
export CCACHE_CPP2=TRUE
export CXX="guw.pl ccache cl"
# export USE_PCH=  if you experience trouble with precompiled headers

dependencies

nodep

If you set the environment variable nodep to TRUE, then dependendy information files are not created - the build finishes faster.

Documentation caution.png But only enable that on a clean build. Once you have built OOo and then made modifications, unset the variable again to be on the safe side.

NO_HIDS

Similar to the nodep variable, this one prevents the generation of HIDs (Help IDs) that are mainly used for automated testing - if you only want to build OOo, you don't need those.

parallel builds

If you have a multiprocessor machine or similar, you can run a parallel build. There are two levels of parallelism - one operating on makefile (directory) level, the other one on the global level. The two levels of parallelism result from the two-step build procedure in the OOo build environment. The build script runs through all the directories it reads from the build.lst files in all modules and calls dmake for every directory.

parallelism on the global level

For parallelism on the global level, you have to run build from $SRC_ROOT>/instsetoo_native with the -P<number> switch, for example:

build -P2

This takes build how many dmake processes it is allowd to start in parallel.

parallelism on the directory level

export MAXPROCESS=<numer or processes> 

This tells dmake how many targets it is allowed to build in parallel. When you don't use build.pl but build a single directory (single makefile), you can achieve the same with

dmake -P2

combining both levels

If you want to have parallelism on both levels, you can call

build -P2 -- -P2

"--" is a special build.pl parameter that passes every further parameters to the dmake processes it starts.

Recommendation

Experience tells that using the doubled number of cores in your machine is a good choice, using more threads does not make a big difference, except if the combined option is chosen. So even on single core machines using two threads will speed up the build considerably.

create prebuilt mozilla

For the mozilla-components you have the choice to either build from mozilla sources, to use precompiled packages or to use system-mozilla (the one installed on your buildsystem, not everything might work, depending on the version you got installed). You can easily create your own version of the prepacked binaries if you wish to do so (either because you cannot use the official ones because of mismatch of compiler version used to build them/other technical reasons or because you want to use stuff you didn't build yourself). To do so:

  • build the moz module from the mozilla sources
  • use --enable-build-mozilla when running configure and put the mozilla-source tarball to moz/download
  • in moz run dmake zip to create the zip files
  • you'll find the zips in {platform}.pro/zipped

Copy them to a location of your liking. Now instead of using --enable-build-mozilla, use --disable-build-mozilla and copy the zips you created or downloaded to moz/zipped and these will be used when compiling. This will greatly reduce build-time (you save the time that would otherwise be spent on compiling mozilla).

See Also


  1. Documentation note.png This also supported on Vista. This is either a DVD image or a net installer. You can either mount the DVD with a suitable tool, burn it do a DVD or use tools like winrar that can extract files from ISO files directly. You don't need to install samples or documentation (saves a lot of disk space). It will also install the .NET Framework 3.5 SDK.

    It might be best to install the Windows SDK into the default directory, and if not that into one without capital letters in the path. I used D:\Dev\Win_SDK\ and received some linking errors in the Python module (see Issue 88568 ).

  2. Documentation note.png dbghelp.dll is available from the Microsoft site and needs to be saved to $SRC_ROOT/external/dbghelp. Microsoft seems to enjoy changing the exact location of this file. You may have to search Microsoft's website.
  3. Documentation note.png If NSIS is available, a self contained Windows installer is created in addition to the MSI installer files.
    Documentation caution.png It used to be that newer version of NSIS broke the build (see Issue 85657 ), but it seems that it now works for NSIS up to 2.3.7.
  4. Documentation note.png If you don't want to download it you can disable DirectX support in the configuration step (--disable-directx).
    Documentation caution.png Current (as of 2008/01) versions of the DirectX9 SDK and Windows Platform SDK do not fit to each other. To be able to build with DirextX enabled, you need to patch one file in the Platform SDK. See http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID2743771 for details.
    Documentation caution.png Do not use a DirectX10 SDK!
  5. Documentation note.png unicows.dll is available from the Microsoft site and needs to be saved to $SRC_ROOT/external/unicows. Microsoft seems to enjoy changing the exact location of this file. You may have to search Microsoft's website.
  6. Documentation note.png You can find these files in your directory c:\program files\common files\merge modules
  7. Documentation note.png When you want to use tcsh instead of bash, you will need to use the file winenv.Set instead:
     source winenv.Set
     rehash

    If you do not use tcsh, it is better to delete that file, as it will get in the way for tab-completion sooner or later.

  8. Documentation note.png You can also run:
    make

    but GNU/make will just start dmake. You can also run the following in the instetoo_native module:

    build --all

    For details run:

    build --help
  9. Documentation caution.png build --all would rebuild changed/missing files. However, it does not check for incompatible modules. If unsure, use build --from --prepare.
Content on this page is licensed under the Public Documentation License (PDL).
Personal tools