GO32環境はサポートしていません。'#ifdef GO32' とかがソース中に 散見されるのは過去の遺跡とでも思ってください :-)

変更の必要のあるファイル

include/rhiz_cnf.h

RK_HEAP_CHUNK_SIZE
RK_BULK_ALLOC_THRESHOLD
RK_EVAL_REGISTER_SIZE
変更の必要はありません。

RK_OLD_SYSV_SIGNAL
signal() の仕様によって定義します。ctrl-C2回でプログラムが終了 してしまう場合はこれを定義すればよいでしょう。逆に入力待ちが ctrl-Cで割り込めない場合はこれを未定義にすればよいでしょう。

RK_NO_IEEE754_SUPPORT
関数 scalbn(), ilogb(), finite() が存在しない場合に定義します。 これが定義されていると上記関数は使用しなくなりますが、そのかわり exact->inexact が遅くなるでしょう。ちなみに
double scalbn(double x, int n) x*(2^n) を返す
int ilogb(double x) 2^n <= x < 2^(n+1) となるnを返す
int finite(double x) x が有限の数なら1,+-Inf か NaN なら0

RK_HAS_FINITE
上記 RK_NO_IEEE754_SUPPORT が必要だが finite() だけは存在する場合 これを定義します。

RK_PERSISTENT_ALLOC_SIZE
(WIN32でのみ参照)変更の必要はありません。

RK_MALLOC_NO_PAGE_ALIGN
ページサイズ以上のmalloc()がページアラインされていないアドレスを 返す可能性がある場合に定義します。いきなりエラーになる(コアダンプ とかワトソン博士とか)場合はこれでしょう。

RK_USE_LOCALE
WIN32以外で mblen() で2バイト文字の判定をする場合に定義します。

RK_LDSO_DLFCN
dlopen() がない場合はこの定義を削除します。この場合共有オブジェクト を動的にロードする機能がサポートされなくなります。詳細は ldso.c を 参照して下さい。WIN32では無視されます。

RK_JB_I386BSD
Intex x86 ファミリー以外のアーキテクチャを使用している、あるいは jmp_buf のレイアウトが(Free|Net|Open)BSDのものと異なる場合はこの 定義を削除します。この場合動的にロードした共有オブジェクト内の 関数を呼び出す機能がサポートされなくなります。詳細は ldso.c を 参照して下さい。WIN32では無視されます。

index
必要なら strchr に #define します。

kappa/Makefile, pi/Makefile

WIN32(cygnus gcc 除く)以外
CDEBUGFLAGS 最適化、デバッグ関係のオプション
EXESUFFIX 実行ファイル名に自動的に付加されるサフィックス(pi/Makefileのみ)
CC 使用するCコンパイラ
CFLAGS コンパイル時のオプション
RANLIB ranlibプログラム(必要なければ : にでも)
SYSLIBS 標準のもの以外に必要なライブラリ
BASEDIR インストール先ディレクトリ
BINDIR 実行ファイルのインストール先
LIBDIR ヘッダファイル、ライブラリのインストール先

pi/compiler/Makefile

WIN32(cygnus gcc 除く)以外
EXESUFFIX 上と同じ
AOUT 実行ファイル名を指定しない時にリンカが出力するファイル名
RANLIB 上と同じ
SYSLIBS 追加ライブラリ、pislのオプションなので -aux が必要
BOOTPISL -cc オプションの引数を適切に設定

kappa\MkWin32, pi\MkWin32

cygnus gcc 以外のWIN32
CDEBUGFLAGS 最適化、デバッグ関係のオプション。 ちなみに Borland C++ では
-k- スタックフレーム省略可
-v- デバッグ情報なし
-R- ブラウザ用情報なし
-O2 時間優先の最適化
-Od 最適化なし
CC 使用するCコンパイラ
CFLAGS コンパイル時のオプション。ちなみに Borland C++ では
-w- 警告を出力しない
-4 80486命令セット
CASMFLAGS ldso.c をコンパイルする時の追加のオプション。インライン アセンブラを使用しているために必要となる。コンパイル過程で Turbo assembler も使用される。
LDFLAGS リンク時のオプション。ちなみに Borland C++ では
-l bcc32 は次の引数をリンカに渡す
/Tpe .EXE を作成
/ap コンソールアプリケーションを作成
AR ライブラリアンの名前
BASEDIR インストール先ディレクトリ
BINDIR 実行ファイルのインストール先
LIBDIR ヘッダファイル、ライブラリのインストール先

Borland C++ 用になっています。VC++ など、他のコンパイラを使用する 場合は全体をよくチェックしてください。pi\MkWin32 で all のところで ややこしいことをしていますが、Borland C++ のmakeが長いコマンドライン を実行できないためです。試したことはないですが Windows 95 では (バッチファイルを処理するのが command.com であるため)これでもうまく いかないかもしれません。その場合は pi\compiler でのmakeは普通には 不可能かもしれません。

pi\compiler\MkWin32

cygnus gcc 以外のWIN32
PISLFLAGS -cc オプションの引数を適切に設定
AR ライブラリアンの名前。rhzscm.lib のサイズがちょっと大きく なったのでオプション /P32 が必要になりました。

EXEファイルを作成するところでコマンドラインが少々長くなります。 そのため Borland C++ 付属のmakeではエラーになります。Windows 95 でシェルが command.com しかない場合、手動でmakeするにしても普通 には不可能かもしれません。

pi/compiler/config.scm

cm-path-separate-char パス名中のディレクトリ区切り文字
cm-list-separate-char サーチパスの要素を区切る文字
cc-command-str Cコンパイラのコマンドライン
cm-cc-command cc-command-str で対応できない場合こちらで記述
cm-cc-line cm-cc-command でも対応できない場合こちらで記述
ld-command-str リンカのコマンドライン
cm-ld-command ld-command-str で対応できない場合こちらで記述
ld-lib-str リンク時のライブラリ指定
cm-ld-lib ld-lib-str で対応できない場合こちらで記述
cm-ldshare-command 共有オブジェクトを作るためのリンカのコマンドライン
output-option-str リンク時の実行ファイル名指定オプション
cm-add-output-option output-option-str で対応できない場合こちらで記述
obj-suffix-str オブジェクトファイルのサフィックス
cm-add-module obj-suffix-str で対応できない場合こちらで記述
cm-exit-status system の返す値からステータスを求める式
cm-lib-environment-var ヘッダファイル、ライブラリの場所を示す環境変数名
cm-macro-path-var マクロパッケージのサーチパスを示す環境変数名
cm-sigint-no signal.h での SIGINT の値

unix like なOSでのインストール手順

各ファイルを変更した後piでmakeします。
piで make install すれば $(BINDIR), $(LIBDIR) に実行ファイルと ヘッダファイル、ライブラリがインストールされます。

cygnus gcc でのインストール手順

unix like なOSの場合と同様です。
make はファイル名の大文字小文字を区別するので注意してください。
Makefile:
$(EXESUFFIX) を ".exe" に定義します
$(AOUT) を "a.exe" に定義します
$(RANLIB) を明示的に定義する必要があります

WIN32(cygnus gcc 以外)でのインストール手順

各ファイルを変更した後piで make -f MkWin32 します。
piで make -f MkWin32 install すれば $(BINDIR), $(LIBDIR) に実行 ファイルとヘッダファイル、ライブラリがインストールされます。
以下は Borland C++ を使用する場合の設定です。
rhiz_cnf.h:
RK_NO_IEEE754_SUPPORT 必要です
index 必要です

config.scm:
各項目それぞれコメントアウトされている設定を使用

使用時の環境設定

環境変数 RHIZOME_LIB にヘッダファイル、ライブラリをインストールした ディレクトリのパスを設定します。
インデックス