ビルドの概要

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

ビルドに必要なもの

ハードウェア

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

ソフトウェア

Windows版をビルドするには以下のソフトウェアが必要になります。
すべてオープンソースでビルドできるのが理想的なのですが、残念ながらそうはいきません。最初の二つはオープンソースでなく、しかも有償のソフトです。
筆者の環境は、Windows XP Professionalです。
英語版ドキュメントではこうなっていますが、ServicePack 3以降であれば大丈夫みたいです。
筆者の環境は、Visual C++ 6.0 ServicePack 5です。
Visual C++.NETでもビルド可能かもしれませんが、筆者は試していません。
以降の無償で入手できるツールも必要です。
筆者の環境は J2SDK 1.4.1_03です。
Windowsで*unix*互換のツールを動かす環境とコマンドツール群のキットです。
英語版の解説には使用するCygwinツールキットのバージョンごとの注意事項や準備事項がいろいろ書いてありますが、最新のものを入手すればほぼ大丈夫でしょう。
Cygwinの中で必要となる主なものは、bash、tcsh、bison、gawk、gcc、gzip、patch、tar、perl、zipなどです。
デフォルトのままではインストールされないものもあるのでよく確認してインストールして下さい。
また、インストールの際に改行コードの扱い方の選択をするところがありますがデフォルトのままでインストールして下さい。

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

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(May 2002 もしくはそれ以降)、CORE SDK(MDAC SDKが依存します)、INTERNET SDKです。
Windows 95/98/MeではWindowsのUNICODE APIについてはごく限定されたものしかサポートされません。
これを補完するのがこのDLLで、再配布可能なファイルとしてマイクロソフトが提供しています。
あらかじめ開発環境でWindowsディレクトリに入れておきます。
zipアーカイブをダウンロードして解凍し、ライブラリに含まれるソースコードからgpc.cとgpc.hをソース展開後のディレクトリのexternal/gpcにコピーします。
(これは後述のスクリプトで実行されます)

ソースコードの入手

最後に、もちろんソースが必要です。
ソースコードは、Downloadのページからtarballを入手し解凍します。
ディレクトリ名に空白を含むパスの下にソースファイルを展開すると、ビルドの際にトラブルの原因となるかもしれませんので避けるようにしましょう。

英語版以外のヘルプはソースファイルからビルドされませんので、別途入手しておく必要があります。
(これは後述のスクリプトで実行されます)
ヘルプはFTPサイトから入手しておくこともできます。
(Windows日本語版はhelpcontent_81_wnt.zipで、'81'は国際電話での国コードです)

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

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

ビルドの環境設定

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

include=C:\Program Files\Microsoft Visual Studio\VC98\atl\include;C:\Program Files\Microsoft Visual Studio\VC98\mfc\include;C:\Program Files\Microsoft Visual Studio\VC98\include

lib=C:\Program Files\Microsoft Visual Studio\VC98\mfc\lib;C:\Program Files\Microsoft Visual Studio\VC98\lib

MSDevDir=C:\Program Files\Microsoft Visual Studio\Common\MSDev98

path=C:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Program Files\Microsoft Visual Studio\Common\Tools;C:\Program Files\Microsoft Visual Studio\VC98\bin;C:\cygwin\bin <----VCやCygwinのインストール先のパスです

次に、Microsoft Platform SDKのpathなども、ビルドの前に設定しておかなければなりませんが、一番手っ取り早い方法は"C:\Program Files\Microsoft SDK\SetEnv.Bat"をコピーして、(例えば、"C:\Program Files\Microsoft SDK\SetEnv2.Bat"などに)
コピーしたバッチファイルの最後に、

bash --login -i

の1行を追加します。
そしてこのバッチファイルへのショートカットをデスクトップなどに作成し、/XP32 /RETAIL 若しくは、/2000 /RETAILのオプションを付けて実行されるようにします。
これで、Microsoft Platfome SDKのパスが追加された状態でCygwinのbashが起動します。

Configureスクリプトの設定

次にconfigureを実施しますが、ひとつひとつコマンドを入力していくのは大変なので一連のことをやってくれるスクリプト(jaconfigure.sh)があります。
まずjaconfigure.shをソースファイルを展開したフォルダ(以降このフォルダを${SRC_ROOT}と呼びます)にダウンロードしてスクリプトの設定を編集します。
(このスクリプトは4NTでビルドする時にも使用できます)

01: #!/bin/bash
02: SRC_ROOT=`pwd`
03: TEMP_DIR=${SRC_ROOT}/temp
04: BRANCH_TAG=cws_srx644_ooo11beta2 <----使用するcvsブランチタグを設定
05: PREFIX=/opt
06: JV_HOME=/cygdrive/c/progra~1/java/j2sdk1.4.1_03 <----jdkのパスを設定
07: ANT_HOME=/usr/local/apache-ant-1.5.3-1
08: GPC_LOCATE=ftp://ftp.cs.man.ac.uk/pub/toby/gpc
09: GPC_ARCHIVE=gpc231.zip
10: HELPCONTENT_LOCATE=http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/helpcontent/
11: HELPCONTENT_ARCHIVE=helpcontent_81
12: CONFIG_OPT="--with-lang=JAPN --with-jdk-home=${JV_HOME}"
13:
14: OSTYPE=`uname -s`
15: ARCH=`uname -p`
16:
17: CVS_UPDATE=True <----configure時にcvs updateしないならコメントアウト
18: SPLASH_REPLACE=True <----splashを置き換えないならコメントアウト
19: SYMBOL_COPY=True <----ツールバーのアイコンを追加しないならコメントアウト
20: USE_CCACHE=True
21: #USE_4NT=True <----tcshを使ってビルドするならコメントアウト

編集後、${SRC_ROOT}に移動し、jaconfigure.shを実行します。

$ cd ${SRC_ROOT}
$ ./jaconfigure.sh

configureの途中でメッセージが出てとまった場合

configureの途中で次の様なメッセージが出てとまった場合、

Please enter the path where the ml.exe assembler is located: /cygdrive/c/progra~1/masm

ツール類の存在場所にパスが通っていないということなのでCygwin流で答えます。
ただし、名前に空白を含むフォルダの場合は短いMS-DOSファイル名を使って下さい。
(Cygwin 中では、各ドライブのルートドライブを "/cygdrive/[ドライブ文字]" と表記します。またパス名中の各ディレクトリ名の区切りは"/"を使います)
configureが終わると、ソースツリーの一番上のフォルダにwinenv.setというスクリプトファイルが作成されています。
これをtcshシェルの中でsource winenv.setとするとビルド環境が設定されます。

ビルドの実行

ビルドはtcshシェルの中で実行します。
上記の環境設定スクリプト(winenv.set)の読み込みはビルドのつど実行して下さい。
ただし、環境設定スクリプト(winenv.set)を読み込ませたtcshシェルを終了していない場合は、その必要はありません。

configureのオプションを変えてビルドする場合など、環境が変わらなければ再度configureを実行する必要はありません。

フルビルド

${SRC_ROOT}に移動し、次の手順にてビルドを行います。

$ cd ${SRC_ROOT}
$ tcsh
$ source winenv.set
$ dmake

ビルドの途中でメッセージが出てとまった場合

ビルドの途中で次の様なメッセージが出てとまった場合、

/usr/touch.exe: Command not found.

環境設定スクリプト(winenv.set)の次のところを、確認して下さい。

setenv CYGWIN "/usr/bin"

ここが"/"や"/usr"等になっている場合は/usr/binに修正して、再度環境設定スクリプト(winenv.set)を読み込ませましょう。
ソースに変更を加えずに再ビルドする場合(一度ビルドしたあとデバッグ情報を加えて再ビルドするなど)は、先に中間ファイル、出力ファイルを削除します。
先ほど作成したショートカットを起動して、

$ tcsh
$ source winenv.set
$ dmake clean

ビルドが完了すると、インストーラとアプリケーションの配布ファイルはサブツリーinstsetooの下、${SRC_ROOT}\instsetoo\wntmsci7.pro\81\normalというフォルダに作られます。
(wntmsci7.proというフォルダ名は開発環境によって変わるので、ご使用の環境に応じて読み替えて下さい)
ここでも、'81'は国際電話での国コードです。

インストールセットはこのnormalフォルダをinstallに変更して、フォルダごとzipにてまとめたものになります。

ビルドのログ

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

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

等とします。

上記の例を実施した場合、ビルドの途中でtee.exeがcore dumpを吐いて死ぬ事があります。
途中でビルドが終わった場合エラーメッセージをよく確かめ、tee.exeがSegmentation Faultを起こしていないか確認して下さい。

モジュール毎のビルド

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

ソースファイルを修正後、${SRC_ROOT}に移動します。

$ cd ${SRC_ROOT}
$ tcsh
$ source winenv.set

該当モジュールのフォルダに移動します。

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

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

$ deliver