blob: 724e702d6264abc22e42c46c9dc993f180e64901 [file] [log] [blame]
jljusten07a756b2007-10-17 01:54:36 +00001This directory contains the next generation of EDK II build tools and template files.
2Templates are located in the Conf directory, while the tools executables for
3Microsoft Windows 32-bit Operating Systems are located in the Bin\Win32 directory.
4
5The binary tools will be updated only after passing developer testing.
6
7The BaseTools package will be updated with new tools only after all testing on a set
8of binary tools has successfully completed.
9
10Current state of the tools is Proto-Type - not all tool functions have been implemented
11and there may be bugs in these tools. These tools are under constant development at
12this time.
13
14BaseTools Simple Usage:
151) Change the directory to the EDK2 root directory, where the edksetup.bat is
162) Run "edksetup.bat NewBuild"
173) Set the ACTIVE_PLATFORM to your desired platform description file
18 (%WORKSPACE%\Conf\target.txt)
194) To build platform, run "build" command in non-module directory
205) To build module individually, run "build" command in module directory, i.e. where the
21 *.inf file is
22
23Notes:
241) The tree structure generated by build tools is similar to Ant build system.
252) Makefile can be called directly by nmake for both top level platform and module. But
26 after you call "nmake cleanall", you have to call "build" command to rebuild platform
27 or modules because the AutoGen.* files have been be removed. The "makefile" itself
28 cannot generate AutoGen.* files. Only "build" command can.
293) build.exe in %WORKSPACE%\BaseTools\Bin\Win32 is generated from following revision of
30 Python source code:
jwang368809fb02007-10-22 09:09:57 +000031 r844 <buildtools_project>\BaseTools\Source\Python\Autogen
32 r844 <buildtools_project>\BaseTools\Source\Python\build
33 r844 <buildtools_project>\BaseTools\Source\Python\Common
34 r844 <buildtools_project>\BaseTools\Source\Python\CommonDataClass
35 r844 <buildtools_project>\BaseTools\Source\Python\GenFds
jljusten07a756b2007-10-17 01:54:36 +000036
374) GenFds.exe has is a combo of the follow python source.(This is a temporary branch)
jwang368809fb02007-10-22 09:09:57 +000038 r843 <buildtools_project>\BaseTools\Source\Python\Common
39 r843 <buildtools_project>\BaseTools\Source\Python\CommonDataClass
40 r843 <buildtools_project>\BaseTools\Source\Python\GenFds
jljusten07a756b2007-10-17 01:54:36 +000041
42Brief usage for Migration Tool MigrationMsa2Inf.exe:
431. Command line format:
44 MigrationMsa2Inf [options]
452. Input Files:
46 A syntactically valid MSA file
473. Output Files:
48 An extended INF file with possible auto-generated EntryPoint.c, CommonHeader.h/CommonHeader.txt, depending on options and module contents.
494. Prerequisite:
50 a. The workspace directory must be specified either by environment variable or -w option.
51 b. The Framework Database file must exist to specify the available packages in current workspace.
52 Two possible locations are: (The first location overrides the second)
53 $(WORKSPACE)\Tools\Conf\FrameworkDatabase.db
54 $(WORKSPACE)\Conf\FrameworkDatabase.db.
55 The <PackageList> field in FrameworkDatabase.db lists all available packages in current workspace.
56 One example:
57 <PackageList>
58 <Filename>MdePkg/MdePkg.nspd</Filename>
59 <Filename>MdeModulePkg/MdeModulePkg.spd</Filename>
60 <Filename>IntelFrameworkPkg/IntelFrameworkPkg.spd</Filename>
61 </PackageList>
62 The package list in FrameworkDatabase.db is important to the final quality of migration:
63 (1) It suggests the new package location: Translate package dependency Guid in MSA to Workspace relative path.
64 If the package dependency Guid cannot be found in current workspace a warning message is raised.
65 (2) It collects the Protocol/Guid/Ppi GuidCName a package contains.
66 The GuidCName acts as "clue" to add e.g. #include <Protocol/DiskIo.h> in CommonHeader.h
67
685. Example:
69 WORKSAPCE has already been set: $(WORKSPACE) = c:\work\EdkII.
70
71 a. MigrationMsa2Inf -f c:\work\EdkII\Nt32Pkg\WinNtThunkDxe\WinNtThunk.msa -o c:\work\EdkII\Nt32Pkg\WinNtThunkDxe\WinNtThunk.inf
72 b. MigrationMsa2Inf -f c:\work\EdkII\Nt32Pkg\WinNtThunkDxe\WinNtThunk.msa -a
73 Example a & b are equivalent to migrate WinNtThunk driver from EDKII to EDKII' code base.
74
75 c. MigrationMsa2Inf -f c:\work\EdkII\Nt32Pkg\WinNtThunkDxe\WinNtThunk.msa -a -c
76 The extra "-c" option performs several hardcode mapping due to the naming change in EDKII':
77 OldMdePkg Guid -> MdePkgGuid,
78 EdkModulePkg Guid -> MdeModulePkgGuid,
79 EdkGraphicsLib -> GraphicsLib
80 HiiLib -> HiiLibFramework
81 ...
82
83 d. MigrationMsa2Inf -f c:\work\EdkII\Nt32Pkg\WinNtThunkDxe\WinNtThunk.msa -m
84 The extra "-m" option suppresses the generation of "CommonHeader.h" and leave all C files intact.
85 Instead, it generates "CommonHeader.txt". Developers can manually copy its content to a local common header file in a module.
86
876. Known Limitations:
88 a. Tool does not handle Exit Boot Services Callback & Virtual Address Changed Event. Developers need to handle it manually.
89 b. The #include <Library/AbcLib.h> is based on library class naming convention: The header filename for "AbcLib" class are "AbcLib.h" by convention.
90 c. The #include <Guid/Xyz.h>, <Protocol/Xyz.h> and <Ppi/Xyz.h> are added based on gGuidCName listed in MSA.
91 If a GuidCName cannot map to a package Guid/Protocol/Ppi header file, a warning message is raised.
92 If a module uses the definition in a pakcage Guid/Protocol/Ppi header file without list its associative GuidCName, the build will beak. Developer needs to manually add the include statement.
93 d. The [Depex] sections are generated from DXS files with Guid Macro translated to Guid CName by naming convention, etc.
94 If tool fails to "guess" the Guid CName from Guid Macro, it will leave the GuidMacro in [Depex] section for manual resolution.
95 e. When tool generates [Sources] section, the modifiers for source files are lost. (Need to add proper tool chain, etc)
96 f. When tool generates [LibraryClasses] section, the recommended library instances are lost. (No impact to build)
97
987. Pyton Source
99 r682 <buildtools_project>\BaseTools\Source\Python\MigrationMsa2Inf
100
101
102Brief Usage for PcdSyntax Update:
103Usage:
104 PcdSyntaxUpdate.exe <directory_name>
105It searches all INF, DEC and DSC file under <directory_name> and update them with the following rules:
1061. Update INF files to conform to INF spec 0.44:
107 a. Rename PCD section name: e.g. [PcdsFeatureFlag] -> [FeaturePcd]
108 b. Adjust PCD section item format: e.g. PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid -> gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue
109 c. Update the syntax of binary INF file (not PCD related)
1102. Update DEC files to confirm to DEC spec 0.36
111 Adjust PCD section item format: e.g. PcdWinNtPhysicalDisk|0x00001000|gEfiNt32PkgTokenSpaceGuid|VOID*|L"E:RW;245760;512"-> gEfiNt32PkgTokenSpaceGuid.PcdWinNtFlashFvRecoverySize|0x0|UINT32|0x00001011
1123. Update DSC files to confirm to DSC spec
113 a. Adjust string/array typed PCD item format: e.g. PcdWinNtMemorySizeForSecMain|gEfiNt32PkgTokenSpaceGuid|L"64!64"|12 -> gEfiNt32PkgTokenSpaceGuid.PcdWinNtMemorySizeForSecMain|L"64!64"|VOID*|12
114 b. Adjust non-string/array typed PCD item format: e.g. PcdWinNtBootMode|gEfiNt32PkgTokenSpaceGuid|1 -> gEfiNt32PkgTokenSpaceGuid.PcdWinNtBootMode|1
115 c. Update the override library class in [Components] section: e.g.
116 <LibraryClass> {
117 PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
118 }
119 To
120 <LibraryClasses> {
121 PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
122 }
123
124Brief usage for Migration Tool Spd2Dec.exe:
1251. Command line format:
126 Spd2Dec [options] input_filename
1272. Input File:
128 A syntactically valid SPD file
1293. Output Files:
130 A DEC file whose syntax confirms to DEC spec.
131
1324. Example:
133 a. Spd2Dec -o c:\work\EdkII\Nt32Pkg\Nt32.spd c:\work\EdkII\Nt32Pkg\Nt32.dec
134 b. Spd2Dec -a c:\work\EdkII\Nt32Pkg\Nt32.spd
135 Example a & b are equivalent to migrate Nt32 package SPD file from EDKII to EDKII' snytax.
136
1376. Pyton Source
138 r777 <buildtools_project>\BaseTools\Source\Python\spd2Dec
139
140Brief usage for Migration Tool Fpd2Dsc.exe:
1411. Command line format:
142 Fpd2Dsc [options] input_filename
1432. Input File:
144 A syntactically valid FPD file
1453. Output Files:
146 A DSC file which syntax confirms to DSC spec.
1474. Prerequisite:
148 a. The workspace directory must be specified either by environment variable or -w option.
149
1505. Example:
151 WORKSAPCE has already been set: $(WORKSPACE) = c:\work\EdkII.
152
153 a. Fpd2Dsc -o c:\work\EdkII\Nt32Pkg\Nt32.dsc c:\work\EdkII\Nt32Pkg\Nt32.fpd
154 b. Fpd2Dsc -a c:\work\EdkII\Nt32Pkg\Nt32.fpd
155 Example a & b are equivalent to migrate Nt32 platform description file from EDKII to EDKII' snytax.
156
1576. Known Limitations:
158 a. Tool does not handle Libraries Section since no related info in original FPD file. Developers need to handle it manually in the output DSC file.
159 b. If MSA file which is corresponds to module guid could not be found in currect workspace, tool will dump the module guid.
160
1617. Pyton Source
162 r767 <buildtools_project>\BaseTools\Source\Python\Fpd2Dsc
163
16427-September-2007