EDK2を使おうとすると、 .dscとか.decとか.fdfとか.infみたいな謎ファイルが大量に出てきます。

今までコピペして雰囲気で使っていたので、このあたりで各ファイルの役割をざっとまとめました。

.dscファイル

.dscファイルは、プラットフォームの定義を行うためのファイルです。

プラットフォームの定義は正確にはわかりませんが、複数のライブラリやアプリケーションをまとめた必要なものすべての定義を行います。

また、ライブラリ名に対する実際のライブラリのパスもここで指定します。

.fdfファイル

.dscファイルはビルドするファイル全体を指定しますが、.fdfファイルはそれらが実際にどのようにfirmware volumeに入れられるのかを指定します。

.infファイル

.infファイルは、モジュールの定義を行います。

具体的には、モジュールの内容(ソースコードやバイナリ等)のリスト、依存しているパッケージ、依存しているライブラリ、モジュールが使用するGUIDの一覧などが書かれています。

.decファイル

.decファイルは、GUIDなどの実体を指定します。.infファイルで参照されるGUIDはgEfiHogehogeProtocolGuidのようなCの変数名の形で参照されますが、これらの具体的な値を決めるのが.decファイルになります。また、ライブラリに対応するヘッダファイルの位置もこの.decファイルにより決定されます。

それぞれのファイルはEDK2のツールによってパースされ、最終的にMakefileAutogen.c, Autogen.hに変換されます。あとはそれぞれの環境でmakeを行っているだけのようです。