Difference between revisions of "Documentation/Building Guide/Building on MacOSX"
m (underlines to spaces in internal link) |
|||
(959 intermediate revisions by 45 users not shown) | |||
Line 1: | Line 1: | ||
− | + | {{Documentation/Building Guide TOC | |
+ | |ShowNextPage=none | ||
+ | |ShowPrevPage=none | ||
+ | }} | ||
− | + | {{DISPLAYTITLE:Building OpenOffice 3.x or Apache OpenOffice 4.0 on Mac OSX}} | |
+ | [[Category:MacOSX]] | ||
+ | {{Note|These instructions have been '''DEPRECATED'''}} | ||
+ | {{SeeAlso|EN| | ||
+ | * [[Documentation/Building_Guide_AOO/Building_on_MacOsX]] }} | ||
+ | __TOC__ | ||
+ | <!-- insert comment --> | ||
+ | = Overview = | ||
+ | This document explains how to build older OpenOffice source code on Mac OS X systems. | ||
+ | {{Note|<code>$SRC_ROOT</code> will denote the directory in which the source code of Apache OpenOffice is stored.}} | ||
+ | {{Tip|You are advised to check the release notes for the release you are building to inform yourself about changes since previous releases.}} | ||
− | + | = Requirements = | |
− | + | To build the office on Mac OS X several requirements/prerequisites have to be fulfilled. | |
− | + | == Mandatory Requirements == | |
+ | * '''Mac OS X''' version 10.4 (aka Tiger) or later (if using 10.5 aka Leopard, have a look at [[User:Dyrcona/LeopardBuild#flex]] | ||
+ | * '''Mac 10.4 SDK''' | ||
+ | * '''XCode''' version 2.4.1 or any XCode 3. If you want to use a newer version than the one that is shipped with your Mac OS X installation media, you need to register at the [https://connect.apple.com/ Apple Developer Connection] site (free of charge) to be able to [http://developer.apple.com/technology/xcode.html download it]. On Mac OS X 10.6 (Snow Leopard), make sure to install the optional 10.4 SDK with XCode. | ||
+ | * '''dmake''', the build environment depends currently on a special patched version of dmake that you can download and build on demand during configure and bootstrap. Or you can provide a prebuilt version and can specify it during configure. | ||
+ | * '''epm''', the build environment depends currently on a special patched version of epm (easy package manager) that you can download and build on demand during configure and bootstrap. Or you can provide a prebuilt version and can specify it during configure. | ||
+ | |||
+ | {{Note|XCode 3 and SDK 10.4 is currently required for building trunk or the releases. Work on supporting XCode>=4 is ongoing.}} | ||
− | === | + | == Optional Requirements == |
− | |||
− | === | + | === Prebuilt unowinreg.dll === |
− | + | This library is Windows only but will be packed in the Apache OpenOffice SDK to ensure that it is available on all platforms. The library provides some glue code to setup a working UNO environment for UNO client applications connecting to an office and doing some remote automation via API. The library should be stored in ''main/external/unowinreg''. Only necessary for building the SDK. | |
− | |||
− | |||
− | |||
− | |||
− | + | The library can be downloaded under | |
− | + | * http://tools.openoffice.org/unowinreg_prebuild/680/unowinreg.dll | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | === | + | == Recommended tools == |
− | |||
− | If you | + | * '''ccache''' |
+ | If you intend to build Apache OpenOffice several times, you probably can benefit of ccache since it will speed up your future builds. The first time you make a build with ccache you won't notice it, but the next time the build will go up to five times faster. | ||
− | + | You can install it using '''[http://www.finkproject.org/ Fink]'''. It is simply named "ccache". For '''[http://www.macports.org/ MacPorts]''' users the package is called "ccache". | |
− | + | If you don't use fink, you can download and build it yourself using the source provided at http://ccache.samba.org/ | |
− | If you | ||
− | + | There are two ways to enable ccache - one is to set environment variables, the other way is to use symlinks. | |
− | + | Using environment variables: | |
+ | export CC="ccache gcc" | ||
+ | export CXX="ccache g++" | ||
− | + | Using the symlink approach: | |
− | + | # create a directory for the links | |
− | + | mkdir ~/bin | |
+ | # create the symlinks pointing to ccache with the name of the compiler | ||
+ | ln -s /path/to/ccache ~/bin/gcc | ||
+ | ln -s /path/to/ccache ~/bin/g++ | ||
+ | ln -s /path/to/ccache ~/bin/cc | ||
+ | ln -s /path/to/ccache ~/bin/c++ | ||
+ | # no all you need to enable ccache is to prepend ~/bin to your PATH | ||
+ | $ export PATH=~/bin:$PATH | ||
− | + | for both methody, you can add the "export ..." lines to your ~/.profile - that way you don't need to manually set it when building. You can still temporarily disable ccache (export CCACHE_DISABLE=1) in case you don't want to use it. | |
− | |||
− | + | Since OOo is rather huge, you should increase the cache-size to 1 GB or more | |
+ | ccache -M 1G | ||
− | + | * '''subversion''' version '''1.5.4 or later''' | |
+ | Since OOo's source code is managed using Subversion currently, you also need the svn client to checkout sources (otherwise you would be bount to source-tarballs that aren't generated that frequently). You can either compile yourself or use the subversion universal binaries from the [http://subversion.tigris.org subversion project] Version 1.5.4 or later is required because of important fixes related to the merge-feature. | ||
− | + | == Get the source and prepare to build it == | |
− | |||
− | |||
− | |||
− | |||
− | + | === Get the source from SVN === | |
− | + | You need about 4.7 GB for a checkout from the svn repository. Building the source requires another 5GB.<br> | |
− | + | * '''check out the latest source from svn''' | |
− | |||
− | + | svn co https://svn.apache.org/repos/asf/openoffice/trunk aoo | |
− | === | + | === One-Time preparation and scripts === |
− | + | Apache OpenOffice build environment is configured using the open-source configuration-management package 'autoconf'. So you can do your beloved './configure' command, is now done in the '''main''' source directory. | |
− | + | To save the configure parameters and use them with different milestones it is useful to create your own build script to configure the environment and to trigger the build. | |
− | The | + | The directory structure when you have checked out the sources from svn looks like: |
− | + | aoo/ | |
− | + | aoo/main | |
− | + | aoo/extras | |
− | + | aoo/test | |
+ | aoo/ext_libraries | ||
+ | aoo/ext_sources | ||
− | + | Move into '''main''' and configure a minimal environment to build your first version of Apache OpenOffice: | |
+ | |||
+ | cd main | ||
− | + | Run the autoconf command to prepare a new configure based on the latest changes in configure.in | |
− | + | autoconf | |
− | + | Run configure | |
− | = | + | ./configure --without-stlport --with-dmake-url=http://dmake.apache-extras.org.codespot.com/files/dmake-4.12.tar.bz2 --with-epm-url=http://www.msweet.org/files/project2/epm-3.7-source.tar.gz |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | This commands prepares a minimal environment to build the office without any category-b enabled external libraries. A pure Apache license compatible version. See also the configure switches ''--with-dmake-path'' and ''--with-epm'' to specify prebuilt versions of dmake or epm. | |
− | |||
− | |||
− | |||
− | |||
− | + | Finally you should run bootstrap to trigger further preparations and to create platform specific shell script to setup a working build environment. On Mac OS x for example '''MacOSXX86Env.Set.sh''' on a Intel based system. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | === Build environment with enabled category-b dependencies === | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | To prepare a build environment that provides more features and make use of further external libraries which are under copyleft but viral licenses you have to explicitly enable this '''category-b''' components. | |
− | + | ./configure --with-dmake-url=http://dmake.apache-extras.org.codespot.com/files/dmake-4.12.tar.bz2 \ | |
+ | --with-epm-url=http://www.msweet.org/files/project2/epm-3.7-source.tar.gz \ | ||
+ | --disable-build-mozilla \ | ||
+ | --without-stlport \ | ||
+ | --enable-verbose \ | ||
+ | '''--enable-category-b'''\ | ||
+ | --enable-wiki-publisher | ||
− | |||
− | + | ===Example build script to simplify user specific configurations=== | |
− | + | As mentioned before to save the configure parameters and use them with different versions it is useful to create your own build script to configure the environment. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Create 'build.sh' (to be written) : | |
− | + | <pre> | |
+ | #! /bin/bash | ||
− | ./ | + | echo "### checking for unowinreg.dll ... " |
+ | if [ ! -e ./external/unowinreg/unowinreg.dll ]; then | ||
+ | wget -O external/unowinreg/unowinreg.dll http://tools.openoffice.org/unowinreg_prebuild/680/unowinreg.dll | ||
+ | else | ||
+ | echo " unowinreg.dll found" | ||
+ | fi | ||
− | + | echo "### checking for moz prebuild libs ... " | |
+ | if [ ! -e ./moz/zipped/MACOSXGCCIinc.zip ]; then | ||
+ | wget -O ./moz/zipped/MACOSXGCCIinc.zip http://www.openoffice.org/tools/moz_prebuild/OOo3.2/MACOSXGCCIinc.zip | ||
+ | wget -O ./moz/zipped/MACOSXGCCIlib.zip http://www.openoffice.org/tools/moz_prebuild/OOo3.2/MACOSXGCCIlib.zip | ||
+ | wget -O ./moz/zipped/MACOSXGCCIruntime.zip http://www.openoffice.org/tools/moz_prebuild/OOo3.2/MACOSXGCCIruntime.zip | ||
+ | else | ||
+ | echo " moz prebuild libs found" | ||
+ | fi | ||
− | + | if [ ! -e ./configure ]; then | |
+ | echo "### autoconf ..." | ||
+ | autoconf | ||
+ | else | ||
+ | echo "### autoconf ..." | ||
+ | rm ./configure | ||
+ | autoconf | ||
+ | fi | ||
− | + | echo "### Configure" | |
+ | ./configure --with-dmake-url=http://dmake.apache-extras.org.codespot.com/files/dmake-4.12.tar.bz2 --with-epm-url=http://ftp.easysw.com/pub/epm/3.7/epm-3.7-source.tar.gz | ||
− | + | #./configure --with-build-version="$(date +"%Y-%m-%d %H:%M:%S (%a, %d %b %Y)") - Rev. $(echo $(svn info) | sed -e 's/^.*Last Changed Rev: //g' -e 's/ .*//g')" \ | |
+ | --disable-build-mozilla \ | ||
+ | --enable-verbose --enable- category-b --enable-minimizer --enable-presenter-console --enable-wiki-publisher \ | ||
+ | --with-dmake-url=http://dmake.apache-extras.org.codespot.com/files/dmake-4.12.tar.bz2 \ | ||
+ | --with-epm-url=http://ftp.easysw.com/pub/epm/3.7/epm-3.7-source.tar.gz | ||
− | + | ./bootstrap | |
− | + | </pre> | |
− | |||
− | |||
− | + | Put this script into ~/bin and make sure it is executable : | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | chmod ug+x ~/bin/build.sh | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | <b>We used the bash shell in all example, since to our belief users of the C-shell are smart enough to figure out the differences anyway. If you want to dig deeper into the build process, please have a look at the description [http://tools.openoffice.org/build_env.html OpenOffice.org's Build Environment].</b> | |
− | |||
− | |||
− | + | == Doing the build == | |
− | + | After running configure and bootstrap we should have a working build environment and all necessary scripts should have been created. From now on you can use '''MacOSXX86Env.Set.sh''' to prepare a new shell with a working build environment. | |
− | + | === On Mac Intel === | |
− | cd | + | source MacOSXX86Env.Set.sh |
− | + | cd instsetoo_native | |
+ | build --all | ||
− | + | or | |
− | + | build --all -P4 | |
− | On PowerPC | + | === On PowerPC === |
− | |||
− | |||
source MacOSXPPCEnv.Set.sh | source MacOSXPPCEnv.Set.sh | ||
− | + | cd instsetoo_native | |
− | + | build --all | |
− | |||
− | |||
− | |||
− | cd | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | or | |
− | |||
− | |||
− | |||
− | |||
− | + | build --all -P2 | |
− | + | === Comments on above === | |
− | ''' | + | '''TODO TODO TODO ....''' |
− | + | if you run into trouble with --dlv_switch (see: {{Bug|77360}}) | |
− | ''' | + | The main purpose of the '''bootstrap''' script is to build (if necessary) the dmake utility used. Dmake once was a unix make-clone made by wticorp but got incorporated into OpenOffice since it was orphaned. For more information about dmake, it's history and manpage have a look here: http://tools.openoffice.org/dmake/index.html |
− | + | Sourcing MacOSXPPCEnv.Set.sh is very important not only for building but also for '''running''' svdem later on. Here all the Environment-Variables for the Build will be set up. For a detailed description see [[Environment_Variables]]. Please note that on Intel machines, 'MacOSXPPCEnv.Set.sh' should be substituted with 'MacOSXX86Env.Set.sh'. | |
− | |||
− | + | This Build process takes on my box (Dual 1.8 GHz G5, 1.5GB RAM) roughly 10 hours, and 3 to 6 hours on Mac Intel (3:30h on a 2GHz DualCore INTEL iMac). Be patient. | |
− | + | If you want to see how the progress on that build is you can use two '''build''' options to get a comfortable view: | |
− | + | build ... <see above> ... --html --html_path /Users/$USER/Sites | |
− | + | where $USER is your user name. Then you can load in Firefox (not Safari!) the HTML file '''unxmacxi.pro.build.html''' via the in Mac OS X included Apache web server or diretctly form the directory ''/Users/$USER/Sites/''. This file is automatically being updated and is showing the status of the build and also the time needed since the build started. | |
− | |||
− | |||
− | + | If you build on Snow Leopard (aka Mac OS X 10.6): Set DYLD_INSERT_LIBRARIES to point to the correct libsqlite3.dylib: | |
+ | <pre> | ||
+ | DYLD_INSERT_LIBRARIES=/usr/lib/libsqlite3.dylib | ||
+ | </pre> | ||
− | + | == '''Installing, preparing and running OpenOffice.org''' == | |
− | + | ===''' Find the Bundle''' === | |
− | + | Once the build completed, the final product ( en-US version ) is named : OOo_3.0.0_*_MacOSXIntel_install.dmg ( for version 3.0beta e.g.) | |
− | + | And is located in instsetoo_native/unxmacxi.pro/OpenOffice/dmg/install/en-US directory ( replace en-US with your locale ) | |
− | + | [[Image:Bundle_Location3.0beta.jpg]] | |
− | === | + | === '''Install the new Build''' === |
− | + | * double-click on the *.dmg icon | |
+ | * drag the OpenOffice icon into a folder of your choice | ||
− | === | + | === '''Run the new Build''' === |
− | |||
− | + | * double click the application icon in that folder | |
− | + | === '''Screenshots''' === | |
− | + | Now you can start to work with this [[Aqua_Screenshots | amazing productivity suite]]. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | == '''Contribute by finding, isolating, debugging or solving issues''' == | |
− | + | === '''Isolate a problem''' === | |
− | |||
− | |||
− | + | ==== '''Reduce a problem''' ==== | |
− | + | * make a problem reproducable | |
− | + | * reduce it to a test case that is as small and simple as possible | |
− | + | * if a problem is specific to a document then please attach it to the issue. A mininal excerpt of the document that still shows the problem is even better. | |
− | + | * a screenshot of is a good idea if it clearly shows the problem | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ==== '''Using application switches''' ==== | |
− | + | Application switches are often valuable for isolating a problem. Most of OpenOffice.org's options can be found its Tools->Options menu. | |
− | + | <br><br> | |
− | + | Some switches are so special that there is no user interface to change them. They are only useful for debugging and isolating a problem, but they are very valuable a that. So a developer might suggest to isolate a problem by setting an environment variable before running the application. E.g. for isolating problems with the menubar a developer might suggest to set the environment variable [[AQUA_NATIVE_MENUS]] to false. This is done by typing these commands into a terminal: | |
− | * | + | * cd <INSTALL_DIR>/OpenOffice.org/Contents/MacOS |
− | * | + | * export AQUA_NATIVE_MENUS=false |
− | * | + | * ./soffice.bin |
− | + | ==== '''Provide a call stack for crash problems''' ==== | |
− | + | Please note that bugs involving crashes should provide a description of how to reproduce the problem and a callstack. | |
+ | There are several ways to provide the callstack: | ||
+ | * the preferred method is to use OOo"s builtin [[CrashReporting|crash reporting tool]] | ||
+ | * developers may provide a [[Providing_a_gdb_backtrace | gdb backtrace]] of the problem | ||
+ | * if the above two methods don"t work then please attach a file with the details provided by the AppleCrashReporter | ||
− | + | === '''Check against known issues''' === | |
− | === | + | Check the list of [http://www.openoffice.org/issues/buglist.cgi?issue_status=UNCONFIRMED&issue_status=NEW&issue_status=STARTED&issue_status=REOPENED&email1=&emailtype1=exact&emailassigned_to1=1&email2=&emailtype2=exact&emailreporter2=1&issueidtype=include&issue_id=&changedin=&votes=&chfieldfrom=&chfieldto=&chfieldvalue=&short_desc=&short_desc_type=fulltext&long_desc=&long_desc_type=fulltext&issue_file_loc=&issue_file_loc_type=fulltext&status_whiteboard=&status_whiteboard_type=fulltext&keywords=aqua&keywords_type=anytokens&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time&Submit+query=Submit+query open issues] |
− | + | === '''Report a new issue''' === | |
− | + | Report [http://qa.openoffice.org/issue_handling/pre_submission.html new issues] after you have [[AquaBuild#Isolate_a_problem | isolated the problem]] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | === '''Debug a problem''' === | |
− | + | Debugging problems is often easier in an development environment: | |
+ | <ul> | ||
+ | <li>With XCode: [[MacOSX_Debug_OpenOffice.org_using_XCode]]</li> | ||
+ | <li>With Xemacs: [http://www.mikesicotte.com/2007/02/21/debugging-ooo-with-xemacs-and-gdb Michael Sicotte's blog entry]</li> | ||
+ | </ul> | ||
− | + | Please note that XCode still has some problems with the executable named soffice.bin (because of the dot in the name). The issue has been reported to xcode-users list. | |
− | + | == '''Current Work in progress (Aqua specific work only)''' == | |
− | + | With OOO300 the Aqua port became a mainstream port, so most Aqua issues are handled in regular GSL-Layer childworkspaces instead of dedicated Aqua CWSses. Other CWSses that are purely Aqua specific are being tracked below: | |
− | |||
− | + | * '''{{CWS|ogltrans4mac|DEV300}}''' : Implement the 3D (OpenGL) transitions in Impress ( see : [[Mac_OS_X_Porting_-_OpenGL_transitions| OpenGL transitions on Mac OS X ]] ) | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ==='''Child WorkSpaces in development''' === | |
− | + | * '''{{CWS|appleremote03|DEV300}}''' : use the contextual menu in presentation mode with Impress. preliminary step | |
− | {| | + | * '''{{CWS|hotmac|OOO300}}''' : fix memory deallocation problems in exit() |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |} | ||
− | + | * '''{{CWS|macosxscanner01|DEV300}}''' (planned) | |
+ | All patches that developers have that need testing or peer review should be added here. | ||
− | + | ==='''Child WorkSpaces in testing (closed for development)''' === | |
− | + | *'''{{CWS|macmiscfixes}}''' : misc fixes for mac | |
− | + | *'''{{CWS|maccrashrep}}''' : support crash reporting for OSX builds | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | in | + | *'''{{CWS|quicklookplugin01}}''' : a plugin for the QuickLook system available in MacOSX from versions 10.5 onwards |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | == | + | ==='''Child WorkSpaces waiting for integration''' === |
− | + | * '''{{CWS|appleremote02|DEV300}}''' : improve the Apple Remote use with Impress (use MEDIA_COMMAND stuff, improve code robustness, and portability ) | |
− | + | ==='''Child Workspaces integrated into OpenOffice's trunk''' === | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | A historical overview of [[Aqua_Integrated_CWS | old Aqua specific ChildWorkspaces]]. | |
− | + | == '''Known build issues '''== | |
− | + | *'''Tiger''': no known issues | |
− | + | *'''Leopard''': no known issues | |
− | + | *'''Snow Leopard''': no known issues | |
− | + | *'''Lion''': no known issues | |
− | + | *'''Mountain Lion''': no known issues | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | == | + | <div align="left" style="color:grey; font-size:12px">[[AquaBuild/Some Background | '''Some Background (what is a CWS, EIS) (click me to know more) ''']]</div> |
− | + | == '''External links''' == | |
− | + | * [https://issues.apache.org/ooo Apache OpenOffice Issuezilla] : a database of bugs, changes and enhancements | |
− | + | * There are [[MacOSXPortMeetings | regular meetings]] on IRC (archives are [[Previous_Mac_Meeting_logs | available]]). | |
− | + | * Apache OpenOffice has a complicated code base. [[Source_code_directories | Here]] is an overview. | |
− | + | * the official Apache OpenOffice blog is at [https://blogs.apache.org/OOo/] | |
+ | * [http://www.cocoadev.com Cocoadev] provides great resources to get up to speed in Cocoa development | ||
+ | * Pierre Chatelier's excellent [http://ktd.club.fr/programmation/objective-c.php Objective C for C++ developers] is available in both english and french versions | ||
+ | * Details about OSX's [http://developer.apple.com/cocoa Cocoa API] are available in the XCode documentation | ||
− | |||
− | |||
− | |||
[[Category:Aqua]] | [[Category:Aqua]] | ||
+ | [[Category:Build_System]] |
Latest revision as of 07:38, 18 July 2018
Previous Section = Previous Section | Next Section = Next Section | Previous Page = Previous Page | Next Page = Next Page |
}} ]] |
Previous Section = Previous Section | Next Section = Next Section | Previous Page = Previous Page | Next Page = Next Page |
}} >]] |
{{#switch:EN
| RU = Смотрите также:
| UA = Дивіться також:
| EN = See Also
| PT = Ver também
| #default = See Also
}}
Overview
This document explains how to build older OpenOffice source code on Mac OS X systems.
You are advised to check the release notes for the release you are building to inform yourself about changes since previous releases. |
Requirements
To build the office on Mac OS X several requirements/prerequisites have to be fulfilled.
Mandatory Requirements
- Mac OS X version 10.4 (aka Tiger) or later (if using 10.5 aka Leopard, have a look at User:Dyrcona/LeopardBuild#flex
- Mac 10.4 SDK
- XCode version 2.4.1 or any XCode 3. If you want to use a newer version than the one that is shipped with your Mac OS X installation media, you need to register at the Apple Developer Connection site (free of charge) to be able to download it. On Mac OS X 10.6 (Snow Leopard), make sure to install the optional 10.4 SDK with XCode.
- dmake, the build environment depends currently on a special patched version of dmake that you can download and build on demand during configure and bootstrap. Or you can provide a prebuilt version and can specify it during configure.
- epm, the build environment depends currently on a special patched version of epm (easy package manager) that you can download and build on demand during configure and bootstrap. Or you can provide a prebuilt version and can specify it during configure.
Optional Requirements
Prebuilt unowinreg.dll
This library is Windows only but will be packed in the Apache OpenOffice SDK to ensure that it is available on all platforms. The library provides some glue code to setup a working UNO environment for UNO client applications connecting to an office and doing some remote automation via API. The library should be stored in main/external/unowinreg. Only necessary for building the SDK.
The library can be downloaded under
Recommended tools
- ccache
If you intend to build Apache OpenOffice several times, you probably can benefit of ccache since it will speed up your future builds. The first time you make a build with ccache you won't notice it, but the next time the build will go up to five times faster.
You can install it using Fink. It is simply named "ccache". For MacPorts users the package is called "ccache".
If you don't use fink, you can download and build it yourself using the source provided at http://ccache.samba.org/
There are two ways to enable ccache - one is to set environment variables, the other way is to use symlinks.
Using environment variables:
export CC="ccache gcc" export CXX="ccache g++"
Using the symlink approach:
# create a directory for the links mkdir ~/bin # create the symlinks pointing to ccache with the name of the compiler ln -s /path/to/ccache ~/bin/gcc ln -s /path/to/ccache ~/bin/g++ ln -s /path/to/ccache ~/bin/cc ln -s /path/to/ccache ~/bin/c++ # no all you need to enable ccache is to prepend ~/bin to your PATH $ export PATH=~/bin:$PATH
for both methody, you can add the "export ..." lines to your ~/.profile - that way you don't need to manually set it when building. You can still temporarily disable ccache (export CCACHE_DISABLE=1) in case you don't want to use it.
Since OOo is rather huge, you should increase the cache-size to 1 GB or more
ccache -M 1G
- subversion version 1.5.4 or later
Since OOo's source code is managed using Subversion currently, you also need the svn client to checkout sources (otherwise you would be bount to source-tarballs that aren't generated that frequently). You can either compile yourself or use the subversion universal binaries from the subversion project Version 1.5.4 or later is required because of important fixes related to the merge-feature.
Get the source and prepare to build it
Get the source from SVN
You need about 4.7 GB for a checkout from the svn repository. Building the source requires another 5GB.
- check out the latest source from svn
svn co https://svn.apache.org/repos/asf/openoffice/trunk aoo
One-Time preparation and scripts
Apache OpenOffice build environment is configured using the open-source configuration-management package 'autoconf'. So you can do your beloved './configure' command, is now done in the main source directory.
To save the configure parameters and use them with different milestones it is useful to create your own build script to configure the environment and to trigger the build.
The directory structure when you have checked out the sources from svn looks like:
aoo/ aoo/main aoo/extras aoo/test aoo/ext_libraries aoo/ext_sources
Move into main and configure a minimal environment to build your first version of Apache OpenOffice:
cd main
Run the autoconf command to prepare a new configure based on the latest changes in configure.in
autoconf
Run configure
./configure --without-stlport --with-dmake-url=http://dmake.apache-extras.org.codespot.com/files/dmake-4.12.tar.bz2 --with-epm-url=http://www.msweet.org/files/project2/epm-3.7-source.tar.gz
This commands prepares a minimal environment to build the office without any category-b enabled external libraries. A pure Apache license compatible version. See also the configure switches --with-dmake-path and --with-epm to specify prebuilt versions of dmake or epm.
Finally you should run bootstrap to trigger further preparations and to create platform specific shell script to setup a working build environment. On Mac OS x for example MacOSXX86Env.Set.sh on a Intel based system.
Build environment with enabled category-b dependencies
To prepare a build environment that provides more features and make use of further external libraries which are under copyleft but viral licenses you have to explicitly enable this category-b components.
./configure --with-dmake-url=http://dmake.apache-extras.org.codespot.com/files/dmake-4.12.tar.bz2 \ --with-epm-url=http://www.msweet.org/files/project2/epm-3.7-source.tar.gz \ --disable-build-mozilla \ --without-stlport \ --enable-verbose \ --enable-category-b\ --enable-wiki-publisher
Example build script to simplify user specific configurations
As mentioned before to save the configure parameters and use them with different versions it is useful to create your own build script to configure the environment.
Create 'build.sh' (to be written) :
#! /bin/bash echo "### checking for unowinreg.dll ... " if [ ! -e ./external/unowinreg/unowinreg.dll ]; then wget -O external/unowinreg/unowinreg.dll http://tools.openoffice.org/unowinreg_prebuild/680/unowinreg.dll else echo " unowinreg.dll found" fi echo "### checking for moz prebuild libs ... " if [ ! -e ./moz/zipped/MACOSXGCCIinc.zip ]; then wget -O ./moz/zipped/MACOSXGCCIinc.zip http://www.openoffice.org/tools/moz_prebuild/OOo3.2/MACOSXGCCIinc.zip wget -O ./moz/zipped/MACOSXGCCIlib.zip http://www.openoffice.org/tools/moz_prebuild/OOo3.2/MACOSXGCCIlib.zip wget -O ./moz/zipped/MACOSXGCCIruntime.zip http://www.openoffice.org/tools/moz_prebuild/OOo3.2/MACOSXGCCIruntime.zip else echo " moz prebuild libs found" fi if [ ! -e ./configure ]; then echo "### autoconf ..." autoconf else echo "### autoconf ..." rm ./configure autoconf fi echo "### Configure" ./configure --with-dmake-url=http://dmake.apache-extras.org.codespot.com/files/dmake-4.12.tar.bz2 --with-epm-url=http://ftp.easysw.com/pub/epm/3.7/epm-3.7-source.tar.gz #./configure --with-build-version="$(date +"%Y-%m-%d %H:%M:%S (%a, %d %b %Y)") - Rev. $(echo $(svn info) | sed -e 's/^.*Last Changed Rev: //g' -e 's/ .*//g')" \ --disable-build-mozilla \ --enable-verbose --enable- category-b --enable-minimizer --enable-presenter-console --enable-wiki-publisher \ --with-dmake-url=http://dmake.apache-extras.org.codespot.com/files/dmake-4.12.tar.bz2 \ --with-epm-url=http://ftp.easysw.com/pub/epm/3.7/epm-3.7-source.tar.gz ./bootstrap
Put this script into ~/bin and make sure it is executable :
chmod ug+x ~/bin/build.sh
We used the bash shell in all example, since to our belief users of the C-shell are smart enough to figure out the differences anyway. If you want to dig deeper into the build process, please have a look at the description OpenOffice.org's Build Environment.
Doing the build
After running configure and bootstrap we should have a working build environment and all necessary scripts should have been created. From now on you can use MacOSXX86Env.Set.sh to prepare a new shell with a working build environment.
On Mac Intel
source MacOSXX86Env.Set.sh cd instsetoo_native build --all
or
build --all -P4
On PowerPC
source MacOSXPPCEnv.Set.sh cd instsetoo_native build --all
or
build --all -P2
Comments on above
TODO TODO TODO ....
if you run into trouble with --dlv_switch (see: Issue 77360 )
The main purpose of the bootstrap script is to build (if necessary) the dmake utility used. Dmake once was a unix make-clone made by wticorp but got incorporated into OpenOffice since it was orphaned. For more information about dmake, it's history and manpage have a look here: http://tools.openoffice.org/dmake/index.html
Sourcing MacOSXPPCEnv.Set.sh is very important not only for building but also for running svdem later on. Here all the Environment-Variables for the Build will be set up. For a detailed description see Environment_Variables. Please note that on Intel machines, 'MacOSXPPCEnv.Set.sh' should be substituted with 'MacOSXX86Env.Set.sh'.
This Build process takes on my box (Dual 1.8 GHz G5, 1.5GB RAM) roughly 10 hours, and 3 to 6 hours on Mac Intel (3:30h on a 2GHz DualCore INTEL iMac). Be patient.
If you want to see how the progress on that build is you can use two build options to get a comfortable view:
build ... <see above> ... --html --html_path /Users/$USER/Sites
where $USER is your user name. Then you can load in Firefox (not Safari!) the HTML file unxmacxi.pro.build.html via the in Mac OS X included Apache web server or diretctly form the directory /Users/$USER/Sites/. This file is automatically being updated and is showing the status of the build and also the time needed since the build started.
If you build on Snow Leopard (aka Mac OS X 10.6): Set DYLD_INSERT_LIBRARIES to point to the correct libsqlite3.dylib:
DYLD_INSERT_LIBRARIES=/usr/lib/libsqlite3.dylib
Installing, preparing and running OpenOffice.org
Find the Bundle
Once the build completed, the final product ( en-US version ) is named : OOo_3.0.0_*_MacOSXIntel_install.dmg ( for version 3.0beta e.g.)
And is located in instsetoo_native/unxmacxi.pro/OpenOffice/dmg/install/en-US directory ( replace en-US with your locale )
Install the new Build
- double-click on the *.dmg icon
- drag the OpenOffice icon into a folder of your choice
Run the new Build
- double click the application icon in that folder
Screenshots
Now you can start to work with this amazing productivity suite.
Contribute by finding, isolating, debugging or solving issues
Isolate a problem
Reduce a problem
- make a problem reproducable
- reduce it to a test case that is as small and simple as possible
- if a problem is specific to a document then please attach it to the issue. A mininal excerpt of the document that still shows the problem is even better.
- a screenshot of is a good idea if it clearly shows the problem
Using application switches
Application switches are often valuable for isolating a problem. Most of OpenOffice.org's options can be found its Tools->Options menu.
Some switches are so special that there is no user interface to change them. They are only useful for debugging and isolating a problem, but they are very valuable a that. So a developer might suggest to isolate a problem by setting an environment variable before running the application. E.g. for isolating problems with the menubar a developer might suggest to set the environment variable AQUA_NATIVE_MENUS to false. This is done by typing these commands into a terminal:
- cd <INSTALL_DIR>/OpenOffice.org/Contents/MacOS
- export AQUA_NATIVE_MENUS=false
- ./soffice.bin
Provide a call stack for crash problems
Please note that bugs involving crashes should provide a description of how to reproduce the problem and a callstack. There are several ways to provide the callstack:
- the preferred method is to use OOo"s builtin crash reporting tool
- developers may provide a gdb backtrace of the problem
- if the above two methods don"t work then please attach a file with the details provided by the AppleCrashReporter
Check against known issues
Check the list of open issues
Report a new issue
Report new issues after you have isolated the problem
Debug a problem
Debugging problems is often easier in an development environment:
- With XCode: MacOSX_Debug_OpenOffice.org_using_XCode
- With Xemacs: Michael Sicotte's blog entry
Please note that XCode still has some problems with the executable named soffice.bin (because of the dot in the name). The issue has been reported to xcode-users list.
Current Work in progress (Aqua specific work only)
With OOO300 the Aqua port became a mainstream port, so most Aqua issues are handled in regular GSL-Layer childworkspaces instead of dedicated Aqua CWSses. Other CWSses that are purely Aqua specific are being tracked below:
- CWS DEV300 ogltrans4mac : Implement the 3D (OpenGL) transitions in Impress ( see : OpenGL transitions on Mac OS X )
Child WorkSpaces in development
- CWS DEV300 appleremote03 : use the contextual menu in presentation mode with Impress. preliminary step
- CWS OOO300 hotmac : fix memory deallocation problems in exit()
- CWS DEV300 macosxscanner01 (planned)
All patches that developers have that need testing or peer review should be added here.
Child WorkSpaces in testing (closed for development)
- CWS macmiscfixes : misc fixes for mac
- CWS maccrashrep : support crash reporting for OSX builds
- CWS quicklookplugin01 : a plugin for the QuickLook system available in MacOSX from versions 10.5 onwards
Child WorkSpaces waiting for integration
- CWS DEV300 appleremote02 : improve the Apple Remote use with Impress (use MEDIA_COMMAND stuff, improve code robustness, and portability )
Child Workspaces integrated into OpenOffice's trunk
A historical overview of old Aqua specific ChildWorkspaces.
Known build issues
- Tiger: no known issues
- Leopard: no known issues
- Snow Leopard: no known issues
- Lion: no known issues
- Mountain Lion: no known issues
External links
- Apache OpenOffice Issuezilla : a database of bugs, changes and enhancements
- There are regular meetings on IRC (archives are available).
- Apache OpenOffice has a complicated code base. Here is an overview.
- the official Apache OpenOffice blog is at [1]
- Cocoadev provides great resources to get up to speed in Cocoa development
- Pierre Chatelier's excellent Objective C for C++ developers is available in both english and french versions
- Details about OSX's Cocoa API are available in the XCode documentation