2001年7月30日 作成

Using PRC-Tools
■戻る■  ■トップ■  ■進む■


定義ファイル

プロジェクトには、オプションとして、 build-prc や他のいくつかのユーティリティーに読み込まれるような、 定義ファイルを含む場合がある。 このファイルは、 データベースのヘッダフラグ、マルチセクションの名前、 エクスポートされたライブラリ関数、ハックで用いられる SysTrap のベクタ等、 プロジェクトの種々雑多なプロパティーを指定するのに使われる。

基本的な文法

定義ファイルには、拡張子として `.def' をつける。 そのファイルには、自由な形式で、数値や文字列、コメント、キーワード、 様々な句読点が含まれる。

  • 数値: 10 進数 (`37')、8 進数 (`045')、16 進数 (`0x25') で表現される。
  • 文字列: シングルクオート (`'Hello'') 又は ダブルクオート (`"world"') でくくられる。C で用いられるようなエスケープシーケンス (`\t', `\n', `\'', `\"', `\\', `\177', `\x7F', ...) も含む。 文字列にスペースが含まれず、キーワードと競合しない場合、クオートを省略できる。
  • コメント: C のスタイルのもの (`/* コメント */') や C++ のスタイルのもの ((`// から行の終りまで') はコメントとして無視される。

定義ファイルは、いくつかの条項から成り、以下のような文法を持つ:


  clause-kind { specific-data... }

例えば、仮に、ビームを用いないとてつもなく大きいアプリケーションに対する定義ファイルを示す:


  application { "Dr McCoy" DAFp copy-prevention }

  /* This app has three code resources: code #1 with all unannotated
     functions, #2 with functions placed in the "editfns" section,
     and #3 with "viewfns" functions.  */

  multiple code { editfns viewfns }

注意: 定義ファイルの文法についてのいくつかの詳細は、 定義ファイルにあるべきものを分かりやすくするよう変更されている。 例えば、ファイル名をハンドルする最善の方法が何かは不明瞭である。 ファイルに現れるべきかどうか、 ハックのトラップは、 build-prc コマンドラインに対応するファイル名にマッチすべきかなど。

プロジェクト種別の指定

この条項でビルドされるプロジェクトと共に、 古いスタイルの build-prc コマンドで用いられるデータベースヘッダの属性を指定できる:


  project-kind [ type ] { dbname crid miscellaneous... }

この条項は、ひとつしか書いてはならない。 また、他の条項より前に、ファイルの最初になければならない。 dbnamecridtype はそれぞれ、 データベース名、クリエータ ID、タイプを示す。 project-kinddatabase である場合を除いて、 タイプを省略でき、プロジェクトの種類に適したものが使用される。 project-kind は、bfd 実行形式のプロセスを制御し、 以下のうちひとつを選ぶことになる:

app
application
Palm OS アプリケーションをビルドする。 デフォルトのタイプは appl である。 bfd 実行形式にあるコードセクションとデータセクションとが、 Palm OS の codedatarloc リソース、 code #0pref #0 リソースに変換され、結合される。
glib
GLib 共有ライブラリをビルドする。 デフォルトのタイプは GLib である。 bfd 実行形式のコードセクションとデータセクションとが、 GLib の codedatarloc リソースに変換される。
syslib
システム共有ライブラリをビルドする。 デフォルトのタイプは libr である。 bfd 実行形式のコードセクションが、 libr コードリソースに変換される。 システムライブラリは典型的に、それ自身のグローバルデータを持たないため、 data フラグを使用しないかぎり、 bfd 実行形式のデータセクションは変換されずに、ワーニングとして出力される。
hack
HackMaster のハックをビルドする。 デフォルトのタイプは HACK である。 bfd 実行形式のコードセクションが、トラップの条項に従って処理される。 データセクションについては、build-prc からワーニングが出力される。
database
bfd 実行形式で特別なハンドリングを意味しない。 一般的なデータベースをビルドする。 この場合、type を省略してはならない。

データベース名とクリエータ ID とは、中括弧内の最初に来なければならない。 その後に以下の値を順不同で続ける:

read-only
appinfo-dirty
backup
ok-to-install-newer
reset-after-install
copy-prevention
stream
hidden
launchable-data
対応するデータベースヘッダ属性をセットする。 build-prc へオプションとして指定することで追加できる。 これらは、ハイフンの代わりに、アンダースコアを用いたり、省略できたりする (`readonly'`appinfo_dirty'、等)。
modification=num
modnum=num
modno=num
データベースヘッダへの修正番号をnum としてセットする。
version=num
データベースヘッダのバージョン番号を num としてセットする。
stack=size
アプリケーションに対して、 pref #0 リソースで要求されるスタックスペースのバイト数を size としてセットする。 デフォルトは 4K が要求される。
data
システム共有ライブラリに対して、 bfd 実行形式のデータセクションを Palm OS データリソースへ変換するよう指定する。 このフラグがなければ、build-prc がシステム共有ライブラリをビルドするとき、 データセクションを変換する代わりにワーニングを出力する。

マルチコードセクションの宣言

プロジェクトで必要とする関数の section 属性で使用する各セクション名を、 multiple code 条項で定義ファイルに列挙する:


  multiple code { sectionname... }

実行形式にリクするのに必要なセクション名のアセンブリ言語のリストを生成するために、multigen で用いられる。 また、build-prc が、名前が付けられたコードセクションを、 .prc ファイルの番号が付けられたコードリソースにマッピングするのに用いられる。

build-prc は、実行形式において、この条項から省略されたセクションがある場合、 ワーニングを出力する。

エキスポートされたライブラリのエントリポイント関数の列挙

この条項は、これから実装される。 次のようになるだろう。


  export { function-name... }

HackMaster のトラップへのパッチの列挙

この条項は、これから実装される。 次のようになるだろう。


  trap { vector <filename> ... }

スタンドアロンのコードリソースの追加

この条項は、これから実装される。 次のようになるだろう。


  code id <filename>

コマンドラインより、ファイルに列挙したほうが簡便だろう。


■戻る■  ■トップ■  ■進む■