From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.115; helo=mga14.intel.com; envelope-from=bob.c.feng@intel.com; receiver=edk2-devel@lists.01.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id D943B211D59A4 for ; Wed, 6 Mar 2019 01:22:38 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Mar 2019 01:22:37 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.58,447,1544515200"; d="scan'208";a="280174476" Received: from shwdepsi1121.ccr.corp.intel.com ([10.239.158.47]) by orsmga004.jf.intel.com with ESMTP; 06 Mar 2019 01:22:36 -0800 From: "Feng, Bob C" To: edk2-devel@lists.01.org Cc: Bob Feng , Liming Gao , Jaben Carsey Date: Wed, 6 Mar 2019 17:22:28 +0800 Message-Id: <20190306092228.25140-2-bob.c.feng@intel.com> X-Mailer: git-send-email 2.20.1.windows.1 In-Reply-To: <20190306092228.25140-1-bob.c.feng@intel.com> References: <20190306092228.25140-1-bob.c.feng@intel.com> MIME-Version: 1.0 Subject: [Patch V2 1/1] Document: Update DSC spec to remove EDK and IPF related contents X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Mar 2019 09:22:39 -0000 Content-Transfer-Encoding: 8bit BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1453 Remove EDK and IPF related contents inf Dsc spec. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Bob Feng Cc: Liming Gao Cc: Jaben Carsey --- 1_introduction/11_overview.md | 14 ++++---------- 2_dsc_overview/{211_[components]_section_processing.md => 210_[components]_section_processing.md} | 27 +++++---------------------- 2_dsc_overview/{212_[userextensions]_section.md => 211_[userextensions]_section.md} | 4 ++-- 2_dsc_overview/{213_[defaultstores]_section_processing.md => 212_[defaultstores]_section_processing.md} | 4 ++-- 2_dsc_overview/22_build_description_file_format.md | 50 ++++++++++---------------------------------------- 2_dsc_overview/23_[defines]_section_processing.md | 12 +++--------- 2_dsc_overview/24_[buildoptions]_section.md | 72 +++++++----------------------------------------------------------------- 2_dsc_overview/26_[libraries]_section_processing.md | 69 --------------------------------------------------------------------- 2_dsc_overview/{27_[libraryclasses]_section_processing.md => 26_[libraryclasses]_section_processing.md} | 4 ++-- 2_dsc_overview/{28_pcd_section_processing.md => 27_pcd_section_processing.md} | 34 +++++++++++++++++----------------- 2_dsc_overview/{29_pcd_sections.md => 28_pcd_sections.md} | 26 +++++++++++++------------- 2_dsc_overview/{210_pcd_database.md => 29_pcd_database.md} | 4 ++-- 3_edk_ii_dsc_file_format/{311_[components]_sections.md => 310_[components]_sections.md} | 62 +++++--------------------------------------------------------- 3_edk_ii_dsc_file_format/{312_[userextensions]_sections.md => 311_[userextensions]_sections.md} | 4 ++-- 3_edk_ii_dsc_file_format/{313_[defaultstores]_section.md => 312_[defaultstores]_section.md} | 4 ++-- 3_edk_ii_dsc_file_format/32_general_rules.md | 13 +------------ 3_edk_ii_dsc_file_format/33_platform_dsc_definition.md | 17 +++++------------ 3_edk_ii_dsc_file_format/35_[defines]_section.md | 12 +----------- 3_edk_ii_dsc_file_format/36_[buildoptions]_sections.md | 19 +++++++++---------- 3_edk_ii_dsc_file_format/38_[libraries]_sections.md | 94 ---------------------------------------------------------------------------------------------- 3_edk_ii_dsc_file_format/{39_[libraryclasses]_sections.md => 38_[libraryclasses]_sections.md} | 4 ++-- 3_edk_ii_dsc_file_format/{310_pcd_sections.md => 39_pcd_sections.md} | 14 +++++++------- README.md | 1 + SUMMARY.md | 26 ++++++++++++-------------- 24 files changed, 114 insertions(+), 476 deletions(-) diff --git a/1_introduction/11_overview.md b/1_introduction/11_overview.md index d9006df..ff2b517 100644 --- a/1_introduction/11_overview.md +++ b/1_introduction/11_overview.md @@ -1,9 +1,9 @@ -## 2.11 [Components] Section Processing +## 2.10 [Components] Section Processing -One or more `[Components]` sections contain lists of EDK components and EDK II -Modules. The format for specifying the INF file for EDK II modules incorporates -new scoping capabilities. +One or more `[Components]` sections contain lists of EDK II Modules. The format +for specifying the INF file for EDK II modules incorporates new scoping capabilities. This section uses one or more of the following section definitions: * `[Components]` * `[Components.IA32]` * `[Components.X64]` * `[Components.EBC]` * `[Components.common]` -EDK components are specified using a fully qualified path to the EDK INF file. - -`$(EDK_SOURCE)/Path/and/Filename.inf` - -Because EDK II modules have different requirements than EDK I components, -specifying the INF filename in the extended DSC file may require more than just -the INF filename and options. A scoping structure, that binds library class +A scoping structure, that binds library class (with an optional override instance,) PCD settings (also overriding the values specified in the `[PcdsPatchableInModule]` or `[PcdsFixedAtBuild]` sections) and build options for an EDK II module may be required. This scoping structure, containing sub-elements, is enclosed within curly braces: "{}". The opening curly brace, "{", must appear at the end of the inf filename line, before any @@ -79,20 +72,10 @@ Path/and/Filename.inf { There are four valid, optional sub-elements for EDK II modules. These sub-element are enclosed within angle brackets: `, `, `` and ``. -For EDK component INF files, an optional sub-element of -`` has been defined. If this element is specified, files -listed in the directory are used instead of the "same-named" files in the -component's directory. If an EDK component directory lists files, A.c, B.c and -C.h, and the directory specified in this sub-element contains the file B.c, -then the component will be built using files from the component directory: A.c -and C.h, and the file B.c from the override directory. Any other files listed -in the override directory will NOT be included in the build (no new or -additional files are permitted). - An INF file line may also have one argument, EXEC = Filename, that specifies an executable file that takes the INF filename as a parameter. The Filename must be executable, and must take the INF filename. No other arguments are permitted to the Filename. diff --git a/2_dsc_overview/212_[userextensions]_section.md b/2_dsc_overview/211_[userextensions]_section.md similarity index 93% rename from 2_dsc_overview/212_[userextensions]_section.md rename to 2_dsc_overview/211_[userextensions]_section.md index c176d86..4708e7e 100644 --- a/2_dsc_overview/212_[userextensions]_section.md +++ b/2_dsc_overview/211_[userextensions]_section.md @@ -1,9 +1,9 @@ -## 2.12 [UserExtensions] Section +## 2.11 [UserExtensions] Section Users may develop custom tools that use the `[UserExtensions]` sections.The EDK II `[UserExtensions]` sections allow for extending the DSC file with custom processing of component images. The format for a user extension section specifier is: diff --git a/2_dsc_overview/213_[defaultstores]_section_processing.md b/2_dsc_overview/212_[defaultstores]_section_processing.md similarity index 93% rename from 2_dsc_overview/213_[defaultstores]_section_processing.md rename to 2_dsc_overview/212_[defaultstores]_section_processing.md index 88a7ad2..be83759 100644 --- a/2_dsc_overview/213_[defaultstores]_section_processing.md +++ b/2_dsc_overview/212_[defaultstores]_section_processing.md @@ -1,9 +1,9 @@ -## 2.13 [DefaultStores] Section Processing +## 2.12 [DefaultStores] Section Processing The contents of this section are used to define DefaultStores names. Default store is UEFI HII concept. It is used to define HII default setting for the different store, such as standard default, manufacturing default. Platform can define the supported default store for DynamicHii/DynamicExHii PCD in this diff --git a/2_dsc_overview/22_build_description_file_format.md b/2_dsc_overview/22_build_description_file_format.md index 31e23f4..10dc428 100644 --- a/2_dsc_overview/22_build_description_file_format.md +++ b/2_dsc_overview/22_build_description_file_format.md @@ -1,9 +1,9 @@ - -## 2.6 [Libraries] Section Processing - -This section specifies all the EDK INF files that must be processed to build -the libraries used to build the individual EDK components. This will include -all the libraries called out in the individual component INF files. A sample -section is listed below. Each line from the libraries section specifies a -library component's INF file (relative to `$(EDK_SOURCE)`, or absolute path). - -This section is required for any EDK II DSC file that specifies one or more EDK -components. If only EDK II Modules are used, this section must not be -specified. If the section is specified, and only EDK II Modules are found, the -build and parsing tools will ignore this section. A warning message will be -emitted by the parsing tool if and only the parsing tool is executed in a -verbose mode. - -The `!include` statements may be used within the `[Libraries]` section. - -The file specified after the `!include` statement can only contain a list of -EDK Library INF files (with the path to the file). If the line starts with a -word, rather than a variable like `$(EDK_SOURCE)` the path is assumed to be -relative to `$(EDK_SOURCE)`. Again, only EDK Library INF files are permitted in -the file specified in the `!include` statement. - -This section will typically use one of the following section definitions: - -```ini -[Libraries.common] -[Libraries.IA32] -[Libraries.X64] -[Libraries.EBC] -``` - -The formats for entries in this section is: - -``` -$(EDK_SOURCE)/Path/to/LibraryName.inf -$(CUSTOM_DECOMPRESS_LIB_INF) -``` diff --git a/2_dsc_overview/27_[libraryclasses]_section_processing.md b/2_dsc_overview/26_[libraryclasses]_section_processing.md similarity index 96% rename from 2_dsc_overview/27_[libraryclasses]_section_processing.md rename to 2_dsc_overview/26_[libraryclasses]_section_processing.md index 50bda93..0f87ceb 100644 --- a/2_dsc_overview/27_[libraryclasses]_section_processing.md +++ b/2_dsc_overview/26_[libraryclasses]_section_processing.md @@ -1,9 +1,9 @@ -## 2.7 [LibraryClasses] Section Processing +## 2.6 [LibraryClasses] Section Processing The `[LibraryClasses]` section is used to provide a mapping between the library class names used by an EDK II module and the Library Instances that are selected by the platform integrator. Library Classes allow modules to be coded for a library class, and then allow platform integrator then chooses a Library diff --git a/2_dsc_overview/28_pcd_section_processing.md b/2_dsc_overview/27_pcd_section_processing.md similarity index 94% rename from 2_dsc_overview/28_pcd_section_processing.md rename to 2_dsc_overview/27_pcd_section_processing.md index a5d56b3..d2a409f 100644 --- a/2_dsc_overview/28_pcd_section_processing.md +++ b/2_dsc_overview/27_pcd_section_processing.md @@ -1,9 +1,9 @@ -## 2.8 PCD Section Processing +## 2.7 PCD Section Processing This section is for specifying global (or default) PCD values as well as the access method each PCD will use for modules in the platform. -### 2.8.1 PCD Access Methods +### 2.7.1 PCD Access Methods There are five defined PCD access methods. The five access methods are: `FeatureFlag`, `FixedAtBuild`, `PatchableInModule`, `Dynamic` and `DynamicEx` PCDs. -#### 2.8.1.1 FeatureFlag and Dynamic PCD Types +#### 2.7.1.1 FeatureFlag and Dynamic PCD Types The two recommended access methods that are commonly used in modules are `FeatureFlag` and the generic `Dynamic method`. The `Dynamic` form is used for configuration when the PCD value is produced and consumed by drivers during execution, the value may be user configurable from setup or the value is @@ -50,11 +50,11 @@ produced by the platform in a specified area. It is associated with modules that are released in source code. The dynamic form is the most flexible method, as platform integrators may chose a to use a different access method for a given platform without modifying the module's INF file or the code for the module. -#### 2.8.1.2 DynamicEx, FixedAtBuild and PatchableInModule PCD Access Methods +#### 2.7.1.2 DynamicEx, FixedAtBuild and PatchableInModule PCD Access Methods Similar in function, the `DynamicEx` access method can be used with modules that are released as binary. The `FixedAtBuild` and `PatchableInModule` PCDs are static and only the `PatchableInModule` PCD can have the value changed in a binary prior to including the module in a firmware image. @@ -82,11 +82,11 @@ The content in these sections is used for generating the `AutoGen.c` and [Pcds(PcdType).IA32] [Pcds(PcdType).X64] [Pcds(PcdType).EBC] ``` -### 2.8.2 PCD Access Method Categories +### 2.7.2 PCD Access Method Categories Of the five access methods of PCDs that have been defined, they fall into one of three categories: * `FeatureFlag` - always has a Boolean value. @@ -129,42 +129,42 @@ different datum type based on the architecture. For example, a PCD that is used for address manipulation may have a datum type of `UINT32` for IA32 and `UINT64` for X64 and EBC architectures. This will be declared in the EDK II Package Declaration (DEC) File. ********** -### 2.8.3 PCD Section Usage +### 2.7.3 PCD Section Usage PCD sections are optional unless the EDK II modules specified in the `[Components]` section use PCDs. The PCD sections are used to define the access method for a PCD. Since each module is built once for a given architecture, the PCD can be listed under different PCD access methods provided they are listed under different architectures. -#### 2.8.3.1 Access Methods +#### 2.7.3.1 Access Methods However, once a PCD access method is selected for a given architecture, the PCD can only use that access method. #### Example A PCD that will use the `FixedAtBuild` access method for IA32 cannot use the `PatchableInModule` access method for individual modules built for the IA32 architecture. -#### 2.8.3.2 Different Access Methods +#### 2.7.3.2 Different Access Methods It is permissible to have a PCD use different access methods for different architectures. #### Example A PCD that will use the FixedAtBuild access method for IA32 can use the Patchable in Module access method for X64. -#### 2.8.3.3 Item Access Methods +#### 2.7.3.3 Item Access Methods Multiple item access methods, `PcdsFeatureFlag`, `PcdsFixedAtBuild`, `PcdsPatchableInModule`, `PcdsDynamic` and `PcdsDynamicEx` are not allowed to be specified within a single [] section tag. @@ -187,11 +187,11 @@ be specified within a single [] section tag. [PcdsDynamicDefault.IA32] gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0 ``` -#### 2.8.3.4 Mixing PCD Dynamic item storage methods +#### 2.7.3.4 Mixing PCD Dynamic item storage methods It is not permissible to mix different PCD Dynamic item storage methods within a single section, as the format for the PCD entries in PcdsDynamicDefault, PcdsDynamicVpd, PcdsDynamicHii, and PcdsDynamicExDefault, PcdsDynamicExVpd and PcdsDynamicExHii sections are different. @@ -212,11 +212,11 @@ PcdsDynamicExHii sections are different. [PcdsDynamicExVpd.IA32] gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|*|0 ``` -#### 2.8.3.5 Multiple Architectural Section Tags +#### 2.7.3.5 Multiple Architectural Section Tags It is permissible to specify multiple architectural section tags for the same PCD item type in a single section. #### Example @@ -232,11 +232,11 @@ PCD item type in a single section. [PcdsDynamicDefault.IA32, PcdsDynamicDefault.X64] gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0 ``` -#### 2.8.3.6 Dynamic and DynamicEx PCD Storage Methods +#### 2.7.3.6 Dynamic and DynamicEx PCD Storage Methods The PCDs that use Dynamic and DynamicEx access methods can have their values stored in one of three different methods, Default, VPD or HII. A PCD using one of these access methods can use one storage method. It is not permissible to have a PCD try to store the data in the Default database and a VPD region at @@ -273,11 +273,11 @@ TokenSpaceGuid.PcdCname|||||` statements under the INF file definitions in the `[Components]` section. @@ -375,11 +375,11 @@ listed more than one time within a section. List a PCD in one of the other access methods is allowed, provided a single access method must be used for all instances of the PCD. If PCD field value is listed, it will override PCD value even if PCD value is after PCD field value. ********** -#### 2.8.3.9 Library Instances +#### 2.7.3.9 Library Instances Library Instances that use PCDs that the module is linked with must use the same PCD setting as the module using the Library Instance. So if a module uses a PCD as `PcdsFixedAtBuild`, then all library instances that use that PCD must also use the PCD as `PcdsFixedAtBuild` with the same value. @@ -393,11 +393,11 @@ The expression is a C-style expression using C relational, equality and logical numeric and bitwise operators or numeric and bitwise operators that evaluate to a value that matches the PCD's Datum Type (specified in the DEC package declaration file.) Precedence and associativity follow C standards. Using PCDs in expressions is also permitted. -#### 2.8.3.10 Maximum Size of a VOID* PCD +#### 2.7.3.10 Maximum Size of a VOID* PCD If the maximum size of a VOID* PCD is not specified in the DSC file, then the maximum size will be calculated based on the largest size of the following: * the string or array in the --pcd option diff --git a/2_dsc_overview/29_pcd_sections.md b/2_dsc_overview/28_pcd_sections.md similarity index 93% rename from 2_dsc_overview/29_pcd_sections.md rename to 2_dsc_overview/28_pcd_sections.md index d84d2f4..0b0b6d3 100644 --- a/2_dsc_overview/29_pcd_sections.md +++ b/2_dsc_overview/28_pcd_sections.md @@ -1,9 +1,9 @@ -## 2.9 PCD Sections +## 2.8 PCD Sections -### 2.9.1 [PcdsFeatureFlag] section +### 2.8.1 [PcdsFeatureFlag] section The required content for the FeatureFlag PCD is the PCD Token Space Guid C name, the PCD's C name (these two entries are separated by the period character), and a Boolean value of either TRUE, FALSE, 1 or 0. The PCD name and value entries are separated by the pipe "|" character. @@ -69,19 +69,19 @@ Format of an entry in this section is: ```ini [PcdsFeatureFlag.common] gEfiMdeModulePkgTokenSpaceGuid.PcdDxePcdDatabaseTraverseEnabled|1 ``` -### 2.9.2 [PcdsFixedAtBuild] and [PcdsPatchableInModule] sections +### 2.8.2 [PcdsFixedAtBuild] and [PcdsPatchableInModule] sections The section modifier, `SkuIdentifier`, can be used by the build tools to create images for one specific SKU. Unlike the `PcdsDynamic` and `PcdsDynamicEx` entries, no access methods are allowed for having different values during runtime for different SKUs. Do not use the `SkuIdentifier` when building all SKUs. -#### 2.9.2.1 PcdsFixedAtBuild +#### 2.8.2.1 PcdsFixedAtBuild The `FixedAtBuild` PCD access method cannot be used in a Binary Module. The required content for the `FixedAtBuild` PCD are the PCD Token Space Guid C name, the PCD's C name (these two entries are separated by the period @@ -125,11 +125,11 @@ Format for Boolean and numeric entries in this section is: gEfiMdePkgTokenSpaceGuid.PcdFSBClock|200000000 gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress|0x0 gEfiEdkNt32PkgTokenSpaceGuid.PcdWinNtPhysicalDisk|L"E:RW;245760;512"|VOID*|32 ``` -#### 2.9.2.2 PcdsPatchableInModule +#### 2.8.2.2 PcdsPatchableInModule The `PatchableInModule` PCD access method can be used with modules that are distributed in binary form. The PCD's value can be patched by tools that know the offset of the PCD into the binary file. @@ -163,11 +163,11 @@ Format of an entry in this section is: ```ini [PcdsPatchableInModule.common] gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000000|UINT32|4 ``` -### 2.9.3 [PcdsDynamic*] and [PcdsDynamicEx*] sections +### 2.8.3 [PcdsDynamic*] and [PcdsDynamicEx*] sections PCDs listed in these sections cannot be used in conditional directive statements. The Dynamic PCD access method cannot be used for modules that are distributed @@ -185,11 +185,11 @@ binary image supports multiple SKUs. The SKU selection based on things like a hardware jumper, or some other method that is outside the scope of this document. For using the standard PCD Get/Set PPI or Protocol. -#### 2.9.3.1 PcdsDynamicDefault +#### 2.8.3.1 PcdsDynamicDefault The Dynamic Default PCD access method will generate a volatile variable that can be accessed at runtime using PCD a Get PPI or Protocol. ```ini @@ -213,11 +213,11 @@ The format for a VOID* PCD entry in this section is: [PcdsDynamicDefault] gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x0 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x0 ``` -#### 2.9.3.2 PcdsDynamicHII +#### 2.8.3.2 PcdsDynamicHII The Dynamic Hii PCD access method will generate HII data content that can be accessed at runtime. For using the HII for PCD data, the section name is as follows: @@ -259,11 +259,11 @@ described in the following table. [PcdsDynamicHii.common.DEFAULT] gEfiMdeModulePkgTokenSpaceGuid.PcdValidRange|L"PcdValidRange"|gEfiGlobalVariableGuid|0x07|0|BS,RT,NV ``` -#### 2.9.3.3 PcdsDynamicVpd +#### 2.8.3.3 PcdsDynamicVpd The Dynamic Vpd PCD access method will generate macros that allow the data content (stored in read-only memory) to be accessed at runtime. Note that the PCD drivers may use a copy of the VPD data to allow runtime changes to these variables. @@ -296,11 +296,11 @@ The format for VOID* datum type content in this section is: gNoSuchTokenSpaceGuid.PcdOemBootOptionName | 0x22D4 | 100 | " " # VOID* gNoSuchTokenSpaceGuid.PcdOemBootOptionPath | 0x2338 | 100 | " " # VOID* gNoSuchTokenSpaceGuid.PcdEnableFastBoot | 0x239C | 1 | FALSE # BOOLEAN ``` -#### 2.9.3.4 PcdsDynamicExDefault +#### 2.8.3.4 PcdsDynamicExDefault The DynamicEx access method of PCD is recommended for modules that are distributed in binary form. Entries for `DynamicEx` are identical to the `Dynamic` entries. The `DynamicEx` @@ -327,11 +327,11 @@ The format for a VOID* PCD entry in this section is: [PcdsDynamicExDefault.common.DEFAULT] gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x0 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x0 ``` -#### 2.9.3.5 PcdsDynamicEx Hii +#### 2.8.3.5 PcdsDynamicEx Hii For using the HII for PCD data, the section name is as follows: `[PcdsDynamicExHii.$(arch).$(SKUID_IDENTIFIER)]` @@ -357,11 +357,11 @@ described in Table 9 HII Attributes. [PcdsDynamicExHii.common.DEFAULT] gEfiMdeModulePkgTokenSpaceGuid.PcdValidRange|L"PcdValidRange"|gEfiGlobalVariableGuid|0x07|0|BS,RT,NV ``` -#### 2.9.3.6 PcdsDynamicExVpd +#### 2.8.3.6 PcdsDynamicExVpd For using the VPD for PCD data, the section name is: `[PcdsDynamicExVpd.$(arch).$(SKUID_IDENTIFIER)]` diff --git a/2_dsc_overview/210_pcd_database.md b/2_dsc_overview/29_pcd_database.md similarity index 96% rename from 2_dsc_overview/210_pcd_database.md rename to 2_dsc_overview/29_pcd_database.md index 2e4380c..ab3fda5 100644 --- a/2_dsc_overview/210_pcd_database.md +++ b/2_dsc_overview/29_pcd_database.md @@ -1,9 +1,9 @@ -## 2.10 PCD Database +## 2.9 PCD Database Dynamic and DynamicEx PCDs can be modified during the boot/setup stages. In order to support modifications, a PEIM and a DXE driver use databases of these PCDs so that changes can persist across reboots. These databases are generated prior to the final image assembly. The following rules determine when the build diff --git a/3_edk_ii_dsc_file_format/311_[components]_sections.md b/3_edk_ii_dsc_file_format/310_[components]_sections.md similarity index 81% rename from 3_edk_ii_dsc_file_format/311_[components]_sections.md rename to 3_edk_ii_dsc_file_format/310_[components]_sections.md index b8e2875..abca3e9 100644 --- a/3_edk_ii_dsc_file_format/311_[components]_sections.md +++ b/3_edk_ii_dsc_file_format/310_[components]_sections.md @@ -1,9 +1,9 @@ -## 3.11 [Components] Sections +## 3.10 [Components] Sections The `[Components]` sections are required. #### Summary @@ -42,12 +42,11 @@ files. The `!include` statement is permitted in `[Components]` sections. however this method is NOT recommended. All EDK II file paths must be specified relative to a directory containing EDK II Packages (as specified by the WORKSPACE or a directory listed in -PACKAGES_PATH system environment variable). EDK INF component and library files -may use `$(EDK_SOURCE)` or `$(EFI_SOURCE)` global environment variables. If the +PACKAGES_PATH system environment variable). If the environment variable is not specified, the INF file path is assumed to be relative to the `WORKSPACE`. The following is an example of specifying a `WORKSPACE` (MdeModulePkg is in the directory pointed to by the WORKSPACE environment variable) relative Path: @@ -55,11 +54,11 @@ directory pointed to by the WORKSPACE environment variable) relative Path: `MdeModulePkg/Universal/Disk/DiskIo/Dxe` The following is an example of specifying an Indirect Path: ```ini -DEFINE FOUNDATION_LIB = $(EDK_SOURCE)/Foundation/Library +DEFINE FOUNDATION_LIB = $(WORKSPACE)/Foundation/Library $(FOUNDATION_LIB)/EdkIIGlueLib/EntryPoints ``` The permitted `DEFINE` statement must be a variable name assigned to a path. @@ -91,13 +90,10 @@ value, while the `` section of an INF use a different value. The FeatureFlag PCD and the two dynamic forms of PCDs are common to a platform, with the dynamic form PCD values stored in a "runtime database", read-only memory location or an HII data store. Therefore, having different values is prohibited for these access methods. -EDK components may have the scoped sub-element, `` that -is used to virtually replace files in the component's directory. - The format for items listed in the sub-elements is the identical format for content under the section. Within the context of an EDK II module sub-element, the `` entries must appear before `` entries; the `` entries @@ -128,20 +124,16 @@ modules in a binary image (the FDF file describes that ordering). ::= ["," "Components" ]* ::= "." ::= {} {} { } ::= [ ] - ::= {} {} {} + ::= {} {} ::= ".inf" ::= "EXEC" ::= ["." ] ::= # An OS recognisable extension that will # automatically be run. - ::= "{" - "" - - "}" ::= "{" [ ] [ ] [ ] [ ] @@ -267,49 +259,5 @@ individual modules. **_ClassName_** A Library Class Keyword defined in DEC files. The Keyword must also be present in the defines section `LIBRARY_CLASS` entry of the INF file - -#### Example Using EDK components in an EDK II DSC build - -``` -[Components] -DEFINE EDK=$(EDK_SOURCE)/Edk -DEFINE MDE=MdePkg/Library -DEFINE STATUS_CODE=$(MDE)/PeiDxeDebugLibReportStatusCode - -$(EDK)/Foundation/Core/Pei/PeiMain.inf -DEFINE NT32 = $(EDK)/Sample/Platform -$(NT32)/Generic/MonoStatusCode/Pei/Nt32/MonoStatusCode.inf -$(NT32)/Nt32/Pei/BootMode/BootMode.inf -$(NT32)/Nt32/Pei/FlashMap/FlashMap.inf -MdeModulePkg/Core/Dxe/DxeMain.inf -... -MdeModulePkg/Universal/Debugger/Debugport/Dxe/DebugPort.inf -MdeModulePkg/Cpu/DebugSupport/Dxe/DebugSupport.inf -... - -DEFINE MDEMODUNI = MdeModulePkg/Universal -$(MDEMODUNI)/DataHub/DataHubStdErr/Dxe/DataHubStdErr.inf -MdeModulePkg/Universal/Disk/DiskIo/Dxe/DiskIo.inf { - - DebugLib|$(STATUS_CODE)/PeiDxeDebugLibReportStatusCode.inf - BaseMemoryLib|$(MDE)/DxeMemoryLib/DxeMemoryLib.inf - MemoryAllocationLib|$(MDE)/DxeMemoryAllocationLib/DxeMemoryAllocationLib.inf - - PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE -} -MdeModulePkg/Universal/Ebc/Dxe/Ebc.inf -$(MDEMODUNI)/GenericMemoryTest/Dxe/NullMemoryTest.inf -$(MDEMODUNI)/StatusCode/Pei/PeiStatusCode.inf { - - MSFT:RELEASE_MYTOOLS_IA32_DLINK_FLAGS = Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib - DEBUG_MYTOOLS_IA32_DLINK_FLAGS = Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib - DEBUG_WINDDK3790x1830_IA32_DLINK_FLAGS = Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib - RELEASE_WINDDK3790x1830_IA32_DLINK_FLAGS = Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib - DEBUG_VS2003_IA32_DLINK_FLAGS = Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib - RELEASE_VS2003_IA32_DLINK_FLAGS = Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib -} -MdeModulePkg/Logo/Logo.inf -... -``` diff --git a/3_edk_ii_dsc_file_format/312_[userextensions]_sections.md b/3_edk_ii_dsc_file_format/311_[userextensions]_sections.md similarity index 94% rename from 3_edk_ii_dsc_file_format/312_[userextensions]_sections.md rename to 3_edk_ii_dsc_file_format/311_[userextensions]_sections.md index 6020c5c..504fa9f 100644 --- a/3_edk_ii_dsc_file_format/312_[userextensions]_sections.md +++ b/3_edk_ii_dsc_file_format/311_[userextensions]_sections.md @@ -1,9 +1,9 @@ -## 3.12 [UserExtensions] Sections +## 3.11 [UserExtensions] Sections The `[UserExtensions]` sections are optional. #### Summary diff --git a/3_edk_ii_dsc_file_format/313_[defaultstores]_section.md b/3_edk_ii_dsc_file_format/312_[defaultstores]_section.md similarity index 93% rename from 3_edk_ii_dsc_file_format/313_[defaultstores]_section.md rename to 3_edk_ii_dsc_file_format/312_[defaultstores]_section.md index 23dec7d..dfa7fa8 100644 --- a/3_edk_ii_dsc_file_format/313_[defaultstores]_section.md +++ b/3_edk_ii_dsc_file_format/312_[defaultstores]_section.md @@ -1,9 +1,9 @@ -## 3.13 [DefaultStores] Section +## 3.12 [DefaultStores] Section The `[DefaultStores]` section is optional in all EDK II DSC files. #### Summary diff --git a/3_edk_ii_dsc_file_format/32_general_rules.md b/3_edk_ii_dsc_file_format/32_general_rules.md index e040abc..d0cdb9b 100644 --- a/3_edk_ii_dsc_file_format/32_general_rules.md +++ b/3_edk_ii_dsc_file_format/32_general_rules.md @@ -1,9 +1,9 @@ - -## 3.8 [Libraries] Sections - -The section `[Libraries]` sections are optional in EDK II DSC files, although -if any EDK component is specified in the `[Components]` section, then the EDK -II DSC file must contain this section. EDK components can not use EDK II -Library Instances. - -#### Summary - -Defines the `[Libraries]` section tag which lists the libraries that are linked -against - -EDK I components. Entries may appear in any order. Entries for EDK are a list -of INF files, with a path that is relative to the `$(EFI_SOURCE)`, -`$(EDK_SOURCE)` or `$(ECP_SOURCE)` directories (or a MACRO definition). - -One or more `!include` statements may be used within the libraries sections. If -used, the file included must be a list of INF files and their paths relative to -the `$(EFI_SOURCE)`, `$(EDK_SOURCE)` or `$(ECP_SOURCE)` directories. - -#### Prototype - -```c - ::= "[Libraries" [] "]" * - ::= {} {} - {} - ::= "." [", Libraries." ]* - ::= - ::= ".inf" - ::= [{"$(EDK_SOURCE)"} {} "/"] * - ::= "/" -``` - -#### Parameters - -**_arch_** - -The arch attribute must be specified in the `Conf/tools_def.txt` file for the -tool chain used to build the platform in order to be valid. - -**_Path_** - -If only the `` element is specified, the path is `WORKSPACE` relative. - -#### Example - -```ini -[Libraries] - Foundation/Efi/Guid/EfiGuidLib.inf - Foundation/Framework/Guid/EdkFrameworkGuidLib.inf - Foundation/Guid/EdkGuidLib.inf - Foundation/Library/EfiCommonLib/EfiCommonLib.inf - Foundation/Cpu/Pentium/CpuIA32Lib/CpuIA32Lib.inf - Foundation/Cpu/Itanium/CpuIA64Lib/CpuIA64Lib.inf - Foundation/Library/CustomizedDecompress/CustomizedDecompress.inf - -[Libraries.IA32] - DEFINE PLATFORM_DIR = $(EDK_SOURCE)/Platform - $(PLATFORM_DIR)/IntelEpg/Guid/IntelEpgGuidLib.inf - $(PLATFORM_DIR)/IntelEpg/Ppi/IntelEpgPpiLib.inf - $(PLATFORM_DIR)/Generic/Guid/GenericGuidLib.inf - $(PLATFORM_DIR)/Generic/Lib/Port80MappingLib/PlatformPort80.inf -``` diff --git a/3_edk_ii_dsc_file_format/39_[libraryclasses]_sections.md b/3_edk_ii_dsc_file_format/38_[libraryclasses]_sections.md similarity index 95% rename from 3_edk_ii_dsc_file_format/39_[libraryclasses]_sections.md rename to 3_edk_ii_dsc_file_format/38_[libraryclasses]_sections.md index 9ac3878..cc9f96e 100644 --- a/3_edk_ii_dsc_file_format/39_[libraryclasses]_sections.md +++ b/3_edk_ii_dsc_file_format/38_[libraryclasses]_sections.md @@ -1,9 +1,9 @@ -## 3.9 [LibraryClasses] Sections +## 3.8 [LibraryClasses] Sections The `[LibraryClasses]` sections are optional if no library classes are defined for any of the components, or if only EDK modules are used. #### Summary diff --git a/3_edk_ii_dsc_file_format/310_pcd_sections.md b/3_edk_ii_dsc_file_format/39_pcd_sections.md similarity index 97% rename from 3_edk_ii_dsc_file_format/310_pcd_sections.md rename to 3_edk_ii_dsc_file_format/39_pcd_sections.md index f982d60..96e4f0e 100644 --- a/3_edk_ii_dsc_file_format/310_pcd_sections.md +++ b/3_edk_ii_dsc_file_format/39_pcd_sections.md @@ -1,9 +1,9 @@ -## 3.10 PCD Sections +## 3.9 PCD Sections The PCD sections are optional. PCD Values listed in the DSC file must be absolute values, macro names or expressions which may include other PCD names and/or macro names that have been @@ -111,11 +111,11 @@ PCDs with a C strucutre type is also a VOID* PCD. Its value can be specified lik normal VOID* PCD, and also be specified by its structure field. Refer to the _EDK II Build Specification_ for the description of the PCD processing rules. -### 3.10.1 [PcdsFeatureFlag] Sections +### 3.9.1 [PcdsFeatureFlag] Sections These are optional sections for EDK II DSC Files. #### Summary @@ -192,11 +192,11 @@ section tag can only be used as a conditional modifier. `SKUID_IDENTIFER` element exists in the `[Defines]` section, the build must break, stating that this platform requires separate builds for individual `SkuId`s. ********** -### 3.10.2 [PcdsFixedAtBuild] Section +### 3.9.2 [PcdsFixedAtBuild] Section These are optional sections for EDK II DSC Files. #### Summary @@ -298,11 +298,11 @@ must be used. `SKUID_IDENTIFER` element exists in the `[Defines]` section, the build must break, stating that this platform requires separate builds for individual `SkuId`s. ********** -### 3.10.3 [PcdsPatchableInModule] Sections +### 3.9.3 [PcdsPatchableInModule] Sections These are optional sections. #### Summary @@ -403,11 +403,11 @@ must be used. `SKUID_IDENTIFER` element exists in the `[Defines]` section, the build must break, stating that this platform requires separate builds for individual `SkuId`s. ********** -### 3.10.4 [PcdsDynamic] Sections +### 3.9.4 [PcdsDynamic] Sections These are optional sections. #### Summary @@ -632,11 +632,11 @@ the _UEFI Specification_ for a description of these attributes. [PcdsDynamicHii.IA32, PcdsDynamicHii.X64.Sku1.Standard] gEfiMyModulePkgTokenSpaceGuid.PcdChassisIntrution|L"TestVariable"|gSysConfigGuid|0x83|0x0 gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPlatformBootTimeOut|L"Timeout"|gEfiGlobalVariableGuid|0x0|10 # Variable: L"Timeout" ``` -### 3.10.5 [PcdsDynamicEx] Sections +### 3.9.5 [PcdsDynamicEx] Sections These are optional sections. #### Summary diff --git a/README.md b/README.md index 09bf6e1..5d774f5 100644 --- a/README.md +++ b/README.md @@ -192,5 +192,6 @@ Copyright (c) 2006-2017, Intel Corporation. All rights reserved. | | Add syntax to support SKU ID inherit from another SKU ID | | | | Add DefaultStores section to describe the default setting | | | | Add structure PCD field value assignment syntax | | | | Add !error statement section | | | |[#1110](https://bugzilla.tianocore.org/show_bug.cgi?id=1110) Extend exclamation statement's keyword to case-insensitive | | +| 1.29 | [#1453](https://bugzilla.tianocore.org/show_bug.cgi?id=1453) Update DSC spec to remove EDK related contents | Mar 2019 | diff --git a/SUMMARY.md b/SUMMARY.md index 263d6f3..e00a040 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -41,32 +41,30 @@ * [2.1 Processing Overview](2_dsc_overview/21_processing_overview.md#21-processing-overview) * [2.2 Build Description File Format](2_dsc_overview/22_build_description_file_format.md#22-build-description-file-format) * [2.3 [Defines] Section Processing](2_dsc_overview/23_[defines]_section_processing.md#23-defines-section-processing) * [2.4 [BuildOptions] Section](2_dsc_overview/24_[buildoptions]_section.md#24-buildoptions-section) * [2.5 [SkuIds] Section Processing](2_dsc_overview/25_[skuids]_section_processing.md#25-skuids-section-processing) - * [2.6 [Libraries] Section Processing](2_dsc_overview/26_[libraries]_section_processing.md#26-libraries-section-processing) - * [2.7 [LibraryClasses] Section Processing](2_dsc_overview/27_[libraryclasses]_section_processing.md#27-libraryclasses-section-processing) - * [2.8 PCD Section Processing](2_dsc_overview/28_pcd_section_processing.md#28-pcd-section-processing) - * [2.9 PCD Sections](2_dsc_overview/29_pcd_sections.md#29-pcd-sections) - * [2.10 PCD Database](2_dsc_overview/210_pcd_database.md#210-pcd-database) - * [2.11 [Components] Section Processing](2_dsc_overview/211_[components]_section_processing.md#211-components-section-processing) - * [2.12 [UserExtensions] Section](2_dsc_overview/212_[userextensions]_section.md#212-userextensions-section) - * [2.13 [DefaultStores] Section](2_dsc_overview/213_[defaultstores]_section_processing.md#213-defaultstores-section-processing) + * [2.6 [LibraryClasses] Section Processing](2_dsc_overview/26_[libraryclasses]_section_processing.md#26-libraryclasses-section-processing) + * [2.7 PCD Section Processing](2_dsc_overview/27_pcd_section_processing.md#27-pcd-section-processing) + * [2.8 PCD Sections](2_dsc_overview/28_pcd_sections.md#28-pcd-sections) + * [2.9 PCD Database](2_dsc_overview/29_pcd_database.md#29-pcd-database) + * [2.10 [Components] Section Processing](2_dsc_overview/210_[components]_section_processing.md#210-components-section-processing) + * [2.11 [UserExtensions] Section](2_dsc_overview/211_[userextensions]_section.md#211-userextensions-section) + * [2.12 [DefaultStores] Section](2_dsc_overview/212_[defaultstores]_section_processing.md#212-defaultstores-section-processing) * [3 EDK II DSC File Format](3_edk_ii_dsc_file_format/README.md#3-edk-ii-dsc-file-format) * [3.1 Building multiple architectures](3_edk_ii_dsc_file_format/31_building_multiple_architectures.md#31-building-multiple-architectures) * [3.2 General Rules](3_edk_ii_dsc_file_format/32_general_rules.md#32-general-rules) * [3.3 Platform DSC Definition](3_edk_ii_dsc_file_format/33_platform_dsc_definition.md#33-platform-dsc-definition) * [3.4 Header Section](3_edk_ii_dsc_file_format/34_header_section.md#34-header-section) * [3.5 [Defines] Section](3_edk_ii_dsc_file_format/35_[defines]_section.md#35-defines-section) * [3.6 [BuildOptions] Sections](3_edk_ii_dsc_file_format/36_[buildoptions]_sections.md#36-buildoptions-sections) * [3.7 [SkuIds] Section](3_edk_ii_dsc_file_format/37_[skuids]_section.md#37-skuids-section) - * [3.8 [Libraries] Sections](3_edk_ii_dsc_file_format/38_[libraries]_sections.md#38-libraries-sections) - * [3.9 [LibraryClasses] Sections](3_edk_ii_dsc_file_format/39_[libraryclasses]_sections.md#39-libraryclasses-sections) - * [3.10 PCD Sections](3_edk_ii_dsc_file_format/310_pcd_sections.md#310-pcd-sections) - * [3.11 [Components] Sections](3_edk_ii_dsc_file_format/311_[components]_sections.md#311-components-sections) - * [3.12 [UserExtensions] Sections](3_edk_ii_dsc_file_format/312_[userextensions]_sections.md#312-userextensions-sections) - * [3.13 [DefaultStores] Sections](3_edk_ii_dsc_file_format/313_[defaultstores]_section.md#313-defaultstores-section) + * [3.8 [LibraryClasses] Sections](3_edk_ii_dsc_file_format/38_[libraryclasses]_sections.md#38-libraryclasses-sections) + * [3.9 PCD Sections](3_edk_ii_dsc_file_format/39_pcd_sections.md#39-pcd-sections) + * [3.10 [Components] Sections](3_edk_ii_dsc_file_format/310_[components]_sections.md#310-components-sections) + * [3.11 [UserExtensions] Sections](3_edk_ii_dsc_file_format/311_[userextensions]_sections.md#311-userextensions-sections) + * [3.12 [DefaultStores] Sections](3_edk_ii_dsc_file_format/312_[defaultstores]_section.md#312-defaultstores-section) * [Appendix A Variables](appendix_a_variables.md#appendix-a-variables) * [Appendix B Sample EDK II DSC File](appendix_b_sample_edk_ii_dsc_file.md#appendix-b-sample-edk-ii-dsc-file) * [Appendix C Module Types](appendix_c_module_types.md#appendix-c-module-types) * [Appendix D Vpd Data Files](appendix_d_vpd_data_files/README.md#appendix-d-vpd-data-files) * [D.1 EDK II Build System Output File Format](appendix_d_vpd_data_files/d1_edk_ii_build_system_output_file_format.md#d1-edk-ii-build-system-output-file-format) -- 2.20.1.windows.1