KaffePC/VM のビルド
KaffePC/VM のソースをコンパイルしてバイナリを作成するまでの手順を説明します。
1. 開発環境の設定
1.1 マシン環境
-
OS
-
Windows95 もしくは Windows98 (Windows NT は不可)
-
Memory
-
64MB 以上の物理メモリが必要。
-
HDD
- 50MB 以上
1.2 DJGPP のインストール
開発環境は DJGPP を利用します。以下のファイルを DJGPP の FTP サイト からダウン ロードし、ディスクに
展開します。これらアーカイブされたファイルの中には、一部互いに重複し
ているものがありますが、展開時に上書きしても問題ありません。
-
v2/djdev201.zip
-
v2gnu/bnu281b.zip
-
v2gnu/bsh1147b.zip
-
v2gnu/dif271b.zip
-
v2gnu/fil316b.zip
-
v2gnu/find41b.zip
-
v2gnu/gcc281b.zip
-
v2gnu/grep22b.zip
-
v2gnu/gwk303b.zip
-
v2gnu/mak377b.zip
-
v2gnu/sed302b.zip
-
v2gnu/shl112b.zip
-
v2gnu/txt122b.zip
-
v2misc/csdpmi4b.zip
1.3 シェルの設定
現在のドライブのルートに bin ディレクトリを作成し、上で展開された bash.exe
を sh.exe にリネームしてコピーします。
1.4 JDK のインストール
JDK1.1.* もしくは JDK1.2 をインストールして
おきます。JAR ファイルを作成する場合に必要になります。
2. KaffePC/VM のビルド
KaffePC/VM をビルドする例を紹介します。ここではあらかじめ必要なものが以下の
場所にインストールされているものとします。
- djpgpp
- d:/djgpp
- KaffePC/VM バイナリ
- d:/kaffepc
- KaffePC/VM ソース
- d:/kaffepc-1.0.b3
- JDK
- d:/java/jdk1.1.7B
2.1 環境変数の設定
環境変数の設定例を紹介します。
rem --------------------------------------------------------------------------
rem Modify the following environment variables.
rem
set JDKHOME=d:/java/jdk1.1.7B
set DJGPPHOME=d:/djgpp
set KAFFEHOME=d:/kaffepc
set KAFFESRCHOME=d:/kaffepc-1.0.b3
rem --------------------------------------------------------------------------
set PATH=%DJGPPHOME%/bin;%KAFFEHOME%/bin;%JDKHOME%/bin
set DJGPP=%DJGPPHOME%/djgpp.env
set LFN=y
set VPATHSEP=;
set CC=gcc
set AR=ar rc
set RANLIB=ranlib
set LIBS=-ltcp -lserio
set STD_LIBRARIES=-ltcp -lserio
set EXTRA_CFLAGS=-DDEBUG
set SHELL=%DJGPPHOME%/bin/bash.exe
set CFLAGS=-O2
set CLASSPATH=.;%KAFFESRCHOME%/kaffe-1.0.b3/libraries/javalib/pizza.jar
set LANG=ja_JP.SJIS
set TZ=JST-9
rem for wattcp
set LAB=%KAFFESRCHOME%
set WATTCPHOME=%LAB%/tcplib
set C_INCLUDE_PATH=%C_INCLUDE_PATH%;%WATTCPHOME%/include
set C_INCLUDE_PATH=%C_INCLUDE_PATH%;%WATTCPHOME%/include/tcp
set LIBRARY_PATH=%WATTCPHOME%
rem for bcsio20
set BCSIO20HOME=%KAFFESRCHOME%/bcsio20
set C_INCLUDE_PATH=%C_INCLUDE_PATH%;%BCSIO20HOME%
set LIBRARY_PATH=%LIBRARY_PATH%;%BCSIO20HOME%
rem for gmp
set GMPHOME=%KAFFESRCHOME%/gmp-2.0.2
set C_INCLUDE_PATH=%C_INCLUDE_PATH%;%GMPHOME%
set LIBRARY_PATH=%LIBRARY_PATH%;%GMPHOME%
rem for zlib
set ZLIBHOME=%KAFFESRCHOME%/zlib-1.12
set C_INCLUDE_PATH=%C_INCLUDE_PATH%;%ZLIBHOME%
set LIBRARY_PATH=%LIBRARY_PATH%;%ZLIBHOME%
2.2 make の実行
KaffePC/VM ソースディレクトリに移動し、make を行います。
make では以下のターゲットを利用できます。
- all
- KaffePC/VM の C ソースをすべてコンパイルし、kaffe.exe を作成します。
- buildjar
- Java のソースをすべて再コンパイルし、klasses.jar、kaffepc.jar を作成
します。これらの jar ファイルはあらかじめソースに含まれているため、
Java のソースを変更しない限り、このターゲットを実行する必要ありませ
ん。
- buildbin
- 作成したバイナリをまとめます。カレントディレクトリに kpcbin ディレク
トリを作成し、KaffePC/VM に必要なバイナリをすべて一つにまとめます。
- allclean
- 作成したバイナリなどをすべて削除します。
3. cwsdpmi.exe の変更について
KaffePC/VM では、内部的にハードウェアタイマを使用した割り込み処理を行っ
ています。通常、DJGPP ではハードウェア割り込みルーチンを記述する際には、
仮想メモリシステムがメモリ領域を移動しないようにロックする必要があります
が、KaffePC/VM ではそれを行っていません。これは、KaffePC/VM 内部のタイマ
割り込みルーチンが C で記述されており、割り込みルーチンが使用するすべて
の領域をロックするのはほとんど不可能なためです。
DOS ではメモリを管理する DPMI サーバとして cwsdpmi.exe を使います。
KaffePC/VM では、この実行ファイルを、仮想メモリを使わないように修正して
います。修正したバイナリは、すでに KaffePC/VM のソース/バイナリに添付さ
れています。