コンフィギュレータ構築メモ
Windows 環境 + MinGW

最終更新日 2003年 10月 7日

TOPPERS/JSPカーネルを使用する際にはコンフィギュレータのコンパイルも必要となります。ここではWindows上で, MinGW(Minimalist GNU for Windows)のGCCを使用してコンフィギュレータを作成したときの作業をまとめてみました。これは作業メモであり,正しく動作することを保証するものではありませんのでその点はご了承ください。

ちなみにMinGWって何?という方はこちらを参照してください。

目次

作業手順

コンパイラを入手

ここではMinGWのGCCを使用します。私の場合,本家サイトの ダウンロードページから、MinGW-3.1.0-1.exeをダウンロードしました。

MinGWのインストール

ダウンロードした実行ファイルを実行するだけです。特に問題がなければデフォルトの設定のままでよいでしょう。

パスの設定を行う

環境変数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コマンドに渡すことのできるパラメータ数が多いとエラーがでるかも知れません)。

ソースコードの編集

変更しなくてもワーニングがでるだけでコンパイルはできますが、いくつかの点についてはソースコードを次のように変更することで解決することができます。

  1. parser.cpp(5箇所)
    
    292行目
    
    カーネル構¥成ファイルはCプリプロセッサを通過させる必要があります
    
    
    
    293行目
    
    不正なカーネル構¥成ファイル
    
    
    
    1045行目
    
    登録されているAPIの一覧を表¥示します
    
    
    
    1128行目
    
    次のエラーは直前行の';'忘れによる可能¥性が高いです
    
    
    
    1143行目
    
    静的APIの構¥文解析に失敗しました
    
    
  2. mpstrstream.cppの247行目の行末に改行を追加します。
  3. component.cpp (7箇所)
    
    263行目
    
    日本語で表¥示します
    
    
    
    264行目
    
    英語で表¥示します
    
    
    
    265行目
    
    途中経過などを表¥示します
    
    
    
    266行目
    
    起動時のバナーを表¥示しません
    
    
    
    267行目
    
    拡張機能¥を有効にします
    
    
    
    268行目
    
    拡張機能¥を無効にします
    
    
    
    356行目
    
    コンポーネントのonFatalExitメソ¥ッドが例外を起こしました
    
    
  4. cfg/jsp/jsp_checkscript.cpp (3個所)
    
    70行目
    
    カーネル構¥成チェックスクリプト生成用オプション
    
    
    
    194行目
    
    カーネル構¥成チェックスクリプトファイルを出力しました
    
    
    
    195行目の行末に改行を追加します.
    
    
  5. cfg/jsp/jsp_parser.cpp (6箇所)
    
    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

というワーニングが発生しますが、ここでは気にしないことにします(気にしなくてよいと言っている訳ではありません)。

とりあえず、以上のようにしてコンフィギュレータがコンパイルできました。

こうして作成したコンフィギュレータが期待通り正しく動作しているかどうかは各自で確認してください。