TOPPERS/JSPカーネルを使用する際にはコンフィギュレータのコンパイルも必要となります。ここではWindows上で, MinGW(Minimalist GNU for Windows)のGCCを使用してコンフィギュレータを作成したときの作業をまとめてみました。これは作業メモであり,正しく動作することを保証するものではありませんのでその点はご了承ください。
ちなみにMinGWって何?という方はこちらを参照してください。
ここではMinGWのGCCを使用します。私の場合,本家サイトの ダウンロードページから、MinGW-3.1.0-1.exeをダウンロードしました。
ダウンロードした実行ファイルを実行するだけです。特に問題がなければデフォルトの設定のままでよいでしょう。
環境変数PATHの設定をします。デフォルトの設定のままインストールした場合ではc:\mingw\binをパスに追加すればOKです.
次はコマンドプロンプトを起動して作業を行います.
jspカーネルのトップディレクトリからcfgディレクトリに移動します.
> cd cfg
Makefileをコピーします。コピー先のファイル名は何でもOKです。
> copy Makefile.template Makefile.mingw
コピーしたメイクファイルMakefile.mingwを編集します.
本来はconfigureスクリプトがMakefileを生成してくれるところなのですが, Windows環境ではデフォルトでperlがインストールされていないためにこのような手作業をしていると考えてください.
43行目 JSPDIR = .. 48,49行目 CPU = m16c # ここでは chk.exe をコンパイルしないので何でもOKです。 SYS = oaks16 # この行も 64行目 PREFIX =
コマンドプロンプトでmake clean, make realcleanしたい人は118行目からを
clean: del *.o
とし、121行目からを
realclean: clean del cfg chk *-chk
として、delコマンドに置き換える(Windows98などのDOSプロンプトではdelコマンドに渡すことのできるパラメータ数が多いとエラーがでるかも知れません)。
変更しなくてもワーニングがでるだけでコンパイルはできますが、いくつかの点についてはソースコードを次のように変更することで解決することができます。
292行目 カーネル構¥成ファイルはCプリプロセッサを通過させる必要があります 293行目 不正なカーネル構¥成ファイル 1045行目 登録されているAPIの一覧を表¥示します 1128行目 次のエラーは直前行の';'忘れによる可能¥性が高いです 1143行目 静的APIの構¥文解析に失敗しました
263行目 日本語で表¥示します 264行目 英語で表¥示します 265行目 途中経過などを表¥示します 266行目 起動時のバナーを表¥示しません 267行目 拡張機能¥を有効にします 268行目 拡張機能¥を無効にします 356行目 コンポーネントのonFatalExitメソ¥ッドが例外を起こしました
70行目 カーネル構¥成チェックスクリプト生成用オプション 194行目 カーネル構¥成チェックスクリプトファイルを出力しました 195行目の行末に改行を追加します.
95行目 ハンドラ割付表¥ [%s]\n 206行目 オブジェクトID割付表¥ [%s]\n 257行目 構¥文解析に失敗したため処理を中断します 378行目 カーネル構¥成ファイルの生成 380行目 カーネル構¥成ファイルの名前を指定します 449行目 --minimizeオプションは拡張機能¥です。使g用するには--extを指定してください。
ソース変更を行ったあとは再度コマンドプロンプト上で作業します。BFDライブラリが利用できないため,ここではchk.exeのコンパイルは行わず, cfg.exeのみ作成します.
> make -f Makefile.mingw cfg
コンパイル中に
c:/mingw/include/c++/3.2.3/backward/backward_warning.h:32:2: warning: #warning T his file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examp les include substituting the <X> header for the <X.h> header for C++ includes, o r <sstream> instead of the deprecated header <strstream.h>. To disable this warn ing use -Wno-deprecated.
というワーニングがうるさく感じる人は、Makefileの72行目を
CFLAGS = -O2 -Wall -Wno-deprecated
のように、-Wno-deprecatedを追加してみると消えます(特にお勧めはしません)。それでも、
parser.cpp: In member function `bool ParserComponent::parseStaticAPI(Parser&, Directory&, Token, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)': parser.cpp:1064: warning: `Directory*node' might be used uninitialized in this function
というワーニングが発生しますが、ここでは気にしないことにします(気にしなくてよいと言っている訳ではありません)。
とりあえず、以上のようにしてコンフィギュレータがコンパイルできました。
こうして作成したコンフィギュレータが期待通り正しく動作しているかどうかは各自で確認してください。