2020年9月16日 星期三

Build Description Files

紀錄一下.inf .dec .dsc裡面要放什麼

  1. INF - Module Information file
  2. DEC - Package Declaration file
  3. DSC - Platform Description File

INF

就是要怎麼build這個module,可以使用下面幾個section來描述:

[Defines] - 基礎設定
  • INF_VERSION - INF的版本
  • BASE_NAME - Build完之後產生的efi或lib的檔名
  • MODULE_UNI_FILE - 可以把Abstract和Description一起build進header裡面
  • FILE_GUID - 此Module的Guid
  • MODULE_TYPE - 要build成什麼type
  • VERSION_STRING - 可以自訂此module的板號
  • ENTRY_POINT - 不是.lib才要,就是第一個跑的地方
  • LIBRARY_CLASS - 就是其他Module有要參考的話要用這個名稱
  • CONSTRUCTOR - 如果此Module是一個libaray而且需要被初始化的話可以加入這個
[Packages] - 這個module會用到的package

[Sources] - source code

[LibraryClass] - 需要用到的library,加入其他Module的INF裡面LIBRARY_CLASS的名子

[Protocols] - protocol

[Guids] - guid

[BuildOptions] - 在build code的時候給complier看的,有些東西可以先define在這裡

DEC

用來宣告這個Package有什麼可以用還有Include folder要去哪裡找,也可以在邊改pcd的值,這裡也有一些section要描述:

[Define] - 
  • DEC_SPECIFICATION - DEC版本
  • PACKAGE_NAME - 此package的名稱
  • PACKAGE_GUID - 此package的guid
  • PACKAGE_VERSION - 此package的版本
[Include] -

[Guid] - 這個package會用到的

[Pcds...] - ...
  • [PcdsFixedAtBuild]
  • [PcdsPatchableInModule]
  • [PcdsDynamic]
  • [PcdsDynamicEx]
  • ...

DSC

是用來描述如何build這個package,1個package必須包含1或多數個component

[Defines] - 
  • PLATFORM_NAME - package的名子
  • PLATFORM_GUID -
  • PLATFORM_VERSION - 
  • DSC_SPECIFICATION - dsc的版本
  • OUTPUT_DIRECTORY - build完會在哪
  • SUPPORTED_ARCHITECTURES - e.g. IA32, x64, arm...
  • BUILD_TARGET - DEBUG, RELEASE
  • SKU_IDENTIFIER - $(SkuUiName)

[LibraryClasses] - 把這個package裡面所有人會用到的library名稱和路徑列出來

[Pcds...] -

[Components] - 這個package要build的所有component或module

Ref.

https://github.com/tianocore/tianocore.github.io/wiki/Build-Description-Files