ビルドの概要
ビルドは以下の手順で進めます。- ビルドに必要なものを入手し適切な場所に用意します。
- 日本語環境でのビルドのための修正を行います。
- ビルドの環境設定を行います。
- ビルドの実行を行います。
ビルドに必要なもの
ハードウェア
ハードウェアの条件は英語版ドキュメントによれば以下の通りです。- Processor : Intel Pentium II
- RAM : 128Mバイト以上推奨
- Hard Disk : 2G Byte以上の空き容量 (最近のビルドでは6G Byte程度は必要です)
ソフトウェア
Windows版をビルドするには以下のソフトウェアが必要になります。すべてオープンソースでビルドできるのが理想的なのですが、残念ながらそうはいきません。最初の二つはオープンソースでなく、しかも有償のソフトです。
- Windows NT 4.0 SP3 もしくはそれ以降
筆者の環境は、Windows XP Professionalです。
- Microsoft Visual C++ 6.0 ServicePack 3以降
英語版ドキュメントではこうなっていますが、ServicePack 3以降であれば大丈夫みたいです。以降の無償で入手できるツールも必要です。
筆者の環境は、Visual C++ 6.0 ServicePack 5です。
Visual C++.NETでもビルド可能かもしれませんが、筆者は試していません。
筆者の環境は J2SDK 1.4.1_03です。
- Cygwinツールキット
Windowsで*unix*互換のツールを動かす環境とコマンドツール群のキットです。
英語版の解説には使用するCygwinツールキットのバージョンごとの注意事項や準備事項がいろいろ書いてありますが、最新のものを入手すればほぼ大丈夫でしょう。
Cygwinの中で必要となる主なものは、bash、tcsh、bison、gawk、gcc、gzip、patch、tar、perl、zipなどです。
デフォルトのままではインストールされないものもあるのでよく確認してインストールして下さい。
また、インストールの際に改行コードの扱い方の選択をするところがありますがデフォルトのままでインストールして下さい。
シンボリックリンクされたコマンドに関して
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に関して
バージョン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 section2. 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です。
- Microsoft Layer for Unicode - unicows.dll
Windows 95/98/MeではWindowsのUNICODE APIについてはごく限定されたものしかサポートされません。
これを補完するのがこのDLLで、再配布可能なファイルとしてマイクロソフトが提供しています。
あらかじめ開発環境でWindowsディレクトリに入れておきます。
- gpc 一般多角形クリップライブラリ リリース 2.31
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
そしてこのバッチファイルへのショートカットをデスクトップなどに作成し、/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を使ってビルドするならコメントアウト
$ cd ${SRC_ROOT}
$ ./jaconfigure.sh
configureの途中でメッセージが出てとまった場合
Please enter the path where the ml.exe assembler is located: /cygdrive/c/progra~1/masm
ただし、名前に空白を含むフォルダの場合は短いMS-DOSファイル名を使って下さい。
(Cygwin 中では、各ドライブのルートドライブを "/cygdrive/[ドライブ文字]" と表記します。またパス名中の各ディレクトリ名の区切りは"/"を使います)
これを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.
setenv CYGWIN "/usr/bin"
先ほど作成したショートカットを起動して、
$ tcsh
$ source winenv.set
$ dmake clean
(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
$ deliver