ビルドの概要

ビルドは以下の手順で進めます。
  1. ビルドに必要なものを入手し適切な場所に用意します。
  2. 日本語環境でのビルドのための修正を行います。
  3. ビルドの環境設定を行います。
  4. ビルドの実行を行います。

ビルドに必要なもの

ハードウェア

ハードウェアの条件は英語版ドキュメントによれば以下の通りです。

ソフトウェア

Windows版をビルドするには以下のソフトウェアが必要になります。
すべてオープンソースでビルドできるのが理想的なのですが、残念ながらそうはいきません。最初の二つはオープンソースでなく、しかも有償のソフトです。
筆者の環境は、Windows XP Professional(SP2)です。
以降の無償で入手できるツールも必要です。
筆者の環境は J2SDK 1.4.2_06です。
Windowsで*unix*互換のツールを動かす環境とコマンドツール群のキットです。
Cygwin DLLのversionが1.5.10以上のものが必要となっていますが、最新のものを入手すればほぼ大丈夫でしょう。
Cygwinの中で必要となる主なものは、bash、tcsh、bison、flex、make、gawk、gcc、gzip、patch、tar、perl、unzip、zipなどです。
cvsリポリトジからソースファイルを入手する場合にはcvsも必要となります。 デフォルトのままではインストールされないものもあるのでよく確認してインストールして下さい。
また、インストールの際に改行コードの扱い方の選択をするところがありますがデフォルト(Unix)のままでインストールして下さい。

シンボリックリンクされたコマンドに関して

Cygwin ツールキットのコマンドの中には*uinx*互換のシンボリックリンクになっているものがあります。
4NTシェルではそれらのシンボリックリンクが扱えない為、configureではビルドの際に使用するコマンドがシンボリックリンクの場合、エラーではじくようにしています。
その為、該当のファイルをリンク先のファイルからコピーして、シンボリックリンクではない状態にしておく必要があります。
Cygwinのシェルで、以下の様に実行し、それらを修正して下さい。

cd /usr/bin && for files in awk.exe tar.exe gunzip.exe; do cp -p $files $files.new && rm $files && cp -p $files.new $files && rm $files.new; done

Cygwinのzipに関して

Cygwinのzipに関しては確認が必要です。
バージョン2.3-1以前のものでは、正常にセットアップできるインストールセットが作成できません。

1. cygcheck -c zipとしてバージョン2.3-2以上である事を確認して下さい。
$ cygcheck -c zip
Cygwin Package Information
Package              Version
zip                  2.3-2

Use -h to see help about each section
2. zip -vとした時に以下のように表示される事を確認して下さい。
Copyright (C) 1990-1999 Info-ZIP
Type 'zip "-L"' for software license.
This is Zip 2.3 (November 29th 1999), by Info-ZIP.
Currently maintained by Onno van der Linden. Please send bug reports to
the authors at Zip-Bugs@lists.wku.edu; see README for details.

Latest sources and executables are at ftp://ftp.cdrom.com/pub/infozip, as of
above date; see http://www.cdrom.com/pub/infozip/Zip.html for other sites.

Compiled with gcc 2.95.3-5 (cygwin special) for Unix (Intel 386) on May 12 2002.

Zip special compilation options:
        USE_EF_UT_TIME

Zip environment options:
             ZIP:  [none]
          ZIPOPT:  [none]
特に、「(cygwin special) for Unix (Intel 386)」あたりが確認する為の重要なポイントです。
アセンブラは、Visual C++ もしくは、Visual Studioと一緒にすでにインストールされている可能性があります。
必要なファイル(ML.EXEと、ML.ERR)の所在を確認してみて下さい。
存在しない場合は上記のリンク先にフリーなバージョンを入手する方法があります。
入手したら、パスの通ったフォルダにML.EXEと、ML.ERRをコピーして下さい。
Microsoft Platform SDKのなかで必要なものはMDAC SDK、CORE SDK、INTERNET SDK、WINDOWS INSTALLER SDKです。
通常はVisual C++のインストール時に一緒にインストールされているはずです。
2.0 Code Lineからは、DirectX 9.0 SDKも必要となりました。
Windows 95/98/MeではWindowsのUNICODE APIについてはごく限定されたものしかサポートされません。
これを補完するのがこのDLLで、再配布可能なファイルとしてマイクロソフトが提供しています。
あらかじめ開発環境でWindowsディレクトリに入れておきます。
zipアーカイブをダウンロードして解凍し、ライブラリに含まれるソースコードからgpc.cとgpc.hをソース展開後のディレクトリのexternal/gpcにコピーします。
(これは後述のスクリプトで実行されます)
アーカイブファイルをダウンロードして、configureを実行する時に指定する --with-ant-home の指定先に展開しておきます。
perlのzipモジュールも必要です。
Archive-ZipとCompress-Zlibのアーカイブファイルを入手し、それぞれを展開した後に次のようにしてビルド & インストールしておきます。

$ perl Makefile.PL
$ make
$ make test
$ make install

ソースコードの入手

現在、OpenOffice.org 2.0のソースコードはtarボールにより提供されていません。CVSレポジトリよりダウンロードする必要があります。以下のようなコマンドによりダウンロードができます。ちなみに、OpenOffice.org 2.0の開発はHEADブランチで進んでおり、マイルストーンごとにSRC680_m62といったようなタグがうたれています。${BRANCH_TAG}にはこのタグを指定してください。62という数字はマイルストーン番号であり、2週間おきにマイルストーンが設定されています。また、これよりソースコードのディレクトリを${SRC_ROOT}とします。

$ mkdir ${SRC_ROOT}
$ cd ${SRC_ROOT}
$ export CVSROOT=":pserver:anoncvs@anoncvs.services.openoffice.org:/cvs
$ cvs co -r ${BRANCH_TAG} OpenOffice

ディレクトリ名に空白を含むパスの下にソースファイルを展開すると、ビルドの際にトラブルの原因となるかもしれませんので避けるようにしましょう。

日本語環境でのビルドのための修正

OpenOffice.orgの原型はドイツで開発され、ソースコード内の文字(列)定数およびコメントにドイツ語で使用される0x80以上のラテン文字が含まれます。
また現在、OpenOffice.org内部では文字コードとしてUNICODE(UTF-8)が使用されています。
これらの文字の一部には日本語版のマイクロソフトVisual C++のプリプロセッサ及びコンパイラで日本語シフトJIS文字の一バイト目と解釈されてしまい、次に続く改行文字やコンパイラで解釈される特殊文字が正しく解釈されない場合があります。
ほとんどのソースファイルでインクルードされる${SRC_ROOT}/sal/inc/sal/config.hに$pragma setlocale("C")という一行を追加する事によって日本語シフトJIS文字と解釈しないようにする事が出来ます。

ただし、一部のプロジェクトは例外となります。
具体的には、hwpfilterの以下のファイルです。
  • ${SRC_ROOT}/hwpfilter/source/fontmap.cpp
  • ${SRC_ROOT}/hwpfilter/source/hcode.cpp
  • ${SRC_ROOT}/hwpfilter/source/hinfo.h
  • ${SRC_ROOT}/hwpfilter/source/hpara.h
  • ${SRC_ROOT}/hwpfilter/source/hwpeq.cpp
  • これらに関して、Unicode対応のエディタを持っているのであれば、一度UTF-8エンコードで開いて保存しなおすとビルドが通るようになりました。
    (筆者は、EmEditorにて確認しました。)

    ビルドの環境設定

    環境設定は Cygwinツールキットの中で bash(bourne again シェル)でコマンドを走らせて実行します。
    ですが、その前に開発環境の設定をしておかなければなりません。
    環境変数includeおよびlib、pathがきちんとに設定されているのを確認して下さい。
    もし設定されていなければ、この段階で設定しておきます。

    以下は、筆者の場合の設定例です。

    INCLUDE=C:\Program Files\Microsoft SDK\Include;C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\ATLMFC\INCLUDE;C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\INCLUDE;C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\PlatformSDK\include;C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\include

    LIB=C:\Program Files\Microsoft SDK\Lib;C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\ATLMFC\LIB;C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\LIB;C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\PlatformSDK\lib;C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\lib

    Path=C:\WINDOWS\System32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Microsoft SDK\Bin;C:\Program Files\Microsoft SDK\Bin\WinNT;C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE;C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\BIN;C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools;C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\bin;C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin;C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322;C:\Program Files\ConvertDSWSetup;C:\cygwin

    configureの実行

    次にconfig_officeディレクトリに移り、./configureを行ないます。このときに適宜./configureにオプションをつけてください。./configureで設定できるオプションは

    $ ${SRC_ROOT}/config_office
    $ ./configure --help

    で見ることができます。必要なものにリストしたプログラムについては上記の設定例のようにPATHに通しておき、(cygwin内で)JAVA_HOMEやANT_HOMEも設定しておけば特にオプションをつける必要はないでしょう。ただし、日本語版をビルドする際には、--with-lang=jaオプションが必要です。この場合、日本語版と英語版の両方がビルドされます(英語版はデフォルトでビルドされます)。

    cd ${SRC_ROOT}/config_office
    ./configure --with-lang=ja

    makeする前に

    環境変数の設定とビルド環境の構築をします。bashを使っているならば${SRC_ROOT}にあるwinenv.set.shを、tcshを使っているならばwinenv.setを取りこみます。そして、bootstrapをしてdmakeなどのツールを生成させます。

    $ cd ${SRC_ROOT}
    $ source ./winenv.set.sh (bashの場合)
    $ source ./winenv.set (tcshの場合)
    $ ./bootstrap

    ビルド開始

    これでビルドの準備は整いました。dmakeコマンドでビルドを開始します。

    dmake

    dmakeを始めたら、あとはただ待つのみです。Pentium 4 2.4GHz, メモリ512Mでだいたい25時間ぐらいかかりました。

    ビルドのログ

    ビルドのログをとる場合、やり方はいろいろありますが例えば、

    $ dmake 2>&1 | tee ログファイル名

    等とします。

    ビルドが終了したら

    エラー出力がなく、最後までビルドが終ったら${SRC_ROOT}/instsetoo_native/wntmsci10.pro/OpenOffice/install/ja
    (ただし、一部のパッケージがビルド出来なかった場合などは、${SRC_ROOT}/instsetoo_native/wntmsci10.pro/OpenOffice/install/ja_witherror)
    以下にOpenOffice.orgのインストールパッケージが出来ています。

    $ cd ${SRC_ROOT}/instsetoo_native/wntmsci10.pro/OpenOffice/install/ja
    $ setup.exe

    とすると、OpenOffice.orgがインストールされるはずです。

    このインストールパッケージを他の人に配布するには

    $ cd ${SRC_ROOT}/instsetoo_native/wntmsci10.pro/OpenOffice/install/ja
    $ zip ${SRC_ROOT}/OOo_1.9.m70_Win32Intel_install_ja.zip *

    とします。こうすると、${SRC_ROOT}にOOo_1.9.m70_Win32Intel_install_ja.zipというアーカイブができます。ビルドしたバイナリを配布するにはこのアーカイブを配ればよいです。また、アーカイブ名は適宜変更してください。

    モジュール毎のビルド

    ソースファイルの修正をしたり、特定のモジュールだけを再度ビルドする場合以下のように実施します。
    該当モジュール内の全てのものを再度ビルドする時は、初めに該当モジュールフォルダ内のwntmsci10.proフォルダを削除します。

    ソースファイルを修正後、該当モジュールのフォルダに移動します。

    $ cd ${SRC_ROOT}\(module)
    $ build

    該当モジュールのビルドがエラーなく完了したら、生成されたファイルを次のコマンドでsolver以下の所定のフォルダにコピーします。

    $ deliver

    一連の作業を楽にするために

    自分でOpenOffice.orgをビルドするのはとても大変な作業で、特にソースコードをダウンロードしてからビルドを開始するまでには単純な作業を強いられます。
    この単純な作業を自動で行うためのシェルスクリプトを作成しました。是非、使ってみてください。


    Windows版 制作者: 増冨善幸
    デザイン:小浦寛裕
    $Id: build_windows_2_0.html,v 1.2 2005/01/16 08:38:03 curvirgo Exp $