Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
Derek Lin c17956e0ee BaseTools: Skip module AutoGen by comparing timestamp.
[Introduction]

The BaseTool Build.py AutoGen parse INF meta-file and generate
AutoGen.c/AutoGen.h/makefile. When we only change .c .h code, the
AutoGen might be not necessary, but Build.py spend a lot of time on it.
There's a -u flag to skip all module's AutoGen. In my environment, it save
35%~50% of time in rebuild a ROM.
However, if user change one .INF meta-file, then -u flag is not available.

[Idea]

AutoGen can compare meta-file's timestamp and decide if the module's
AutoGen can be skipped. With this, when a module's INF is changed, we
only run this module's AutoGen, we don't need to run other module's.

[Implementation]

In the end of a module's AutoGen, we create a AutoGenTimeStamp.
The file save a file list that related to this module's AutoGen.
In other word, the file list in AutoGenTimeStamp is INPUT files of
module AutoGen, AutoGenTimeStamp file is OUTPUT.
During rebuild, we compare time stamp between INPUT and OUTPUT, and
decide if we can skip it.

Below is the Input/Output of a module's AutoGen.

[Input]
  1. All the DSC/DEC/FDF used by the platform.
  2. Macro and PCD defined by Build Options such as "build -D AAA=TRUE
     --pcd BbbPcd=0".
  3. INF file of a module.
  4. Source files of a module, list in [Sources] section of INF.
  5. All the library link by the module.
  6. All the .h files included by the module's sources.

[Output]
  AutoGen.c/AutoGen.h/makefile/AutoGenTimeStamp

[Testing]

This patch save my build time. When I make a change without touching
DSC/DEC/FDF, it is absolutely much faster than original rebuild,
35%~50% time saving in my environment
(compare to original tool rebuild time).
If I change any DSC/DEC/FDF, there's no performance improve, because it
can't skip any module's AutoGen.

Please note that if your environment will generate DSC/FDF during prebuild,
it will not skip any AutoGen because of DSC timestamp is changed. This will
require prebuild script not to update metafile when content is not changed.
2017-03-25 12:13:01 +08:00
AppPkg AppPkg: Update email and URL. 2016-10-26 09:34:34 -07:00
ArmPkg ArmPkg/DefaultExceptionHandlerLib: walk call stack unconditionally 2017-03-22 15:48:01 +00:00
ArmPlatformPkg ArmPlatformPkg/PlatformIntelBdsLib: don't clobber ConSplitter handle 2017-03-03 21:42:38 +00:00
ArmVirtPkg ArmVirtPkg/ArmVirtQemu: refer to Shell app via its declared GUID 2017-03-22 15:34:59 +00:00
BaseTools BaseTools: Skip module AutoGen by comparing timestamp. 2017-03-25 12:13:01 +08:00
BeagleBoardPkg ArmPkg: remove unused PcdArmUncachedMemoryMask PCD 2017-02-27 16:18:29 +00:00
Conf EDK II: Add .gitignore 2014-10-14 16:08:15 +00:00
CorebootModulePkg CorebootPayloadPkg/CbSupportPei: Fix the memory map issue 2016-11-17 14:49:11 -08:00
CorebootPayloadPkg CorebootPayloadPkg: Use EfiEventGroupSignal from UefiLib 2017-01-20 15:55:41 +08:00
CryptoPkg CryptoPkg:SmmCryptLib: Add real Pkcs5Pbkdf2.c. 2017-03-15 21:50:52 +08:00
DuetPkg DuetPkg: Add SortLib/UefiBootManagerLib 2017-03-20 14:48:18 +08:00
EdkCompatibilityPkg EdkCompatibilityPkg: Fix some typos of "according" 2017-02-08 14:49:21 +08:00
EdkShellBinPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
EdkShellPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
EmbeddedPkg EmbeddedPkg/PrePiLib: allocate code pages for DxeCore 2017-03-14 20:08:31 +00:00
EmulatorPkg EmulatorPkg: Add SortLib/UefiBootManagerLib 2017-03-20 14:48:18 +08:00
FatBinPkg FatBinPkg: New EnhancedFatDxe binaries for IA32, X64, EBC and IPF 2016-12-19 15:26:52 +08:00
FatPkg FatPkg: Refine casting expression result to bigger size 2017-03-06 14:33:21 +08:00
IntelFrameworkModulePkg IntelFrameworkModulePkg: Refine casting expression result to bigger size 2017-03-06 14:33:22 +08:00
IntelFrameworkPkg IntelFrameworkPkg UefiLib: Make the event empty function public 2017-01-20 15:51:17 +08:00
IntelFsp2Pkg IntelFsp2Pkg: Raise exception for invalid BSF option 2017-03-16 22:07:04 +08:00
IntelFsp2WrapperPkg IntelFsp2WrapperPkg: Add Readme.md 2017-03-13 08:54:30 +08:00
IntelFspPkg IntelFspPkg: Fix typos in comments 2016-10-24 09:26:28 +08:00
IntelFspWrapperPkg IntelFspWrapperPkg: Refine casting expression result to bigger size 2017-03-06 14:33:23 +08:00
IntelSiliconPkg IntelSiliconPkg: Fix format issues 2016-12-20 10:51:16 +08:00
MdeModulePkg MdeModulePkg/Network: Fix potential ASSERT if NetIp4IsUnicast is called 2017-03-23 11:39:15 +08:00
MdePkg MdePkg/DevicePathLib: Fix FromText bug for multi-instance devicepath 2017-03-23 13:11:32 +08:00
NetworkPkg NetworkPkg/IScsiDxe: Fix the incorrect error handling in DriverEntryPoint 2017-03-23 11:40:06 +08:00
Nt32Pkg Nt32Pkg: Use Shell source code directly 2017-03-17 12:25:14 +08:00
Omap35xxPkg ArmPkg: remove unused PcdArmUncachedMemoryMask PCD 2017-02-27 16:18:29 +00:00
OptionRomPkg OptionRomPkg: Fix typos in comments 2016-11-15 11:05:34 +08:00
OvmfPkg OvmfPkg/build.sh: Parse qemu version in more cases 2017-03-16 14:31:18 -07:00
PcAtChipsetPkg PcAtChipsetPkg: Refine casting expression result to bigger size 2017-03-06 14:33:24 +08:00
PerformancePkg PerformancePkg Dp_App: Handle "/" separator in debug path for GCC build 2017-03-16 11:08:44 +08:00
QuarkPlatformPkg QuarkPlatformPkg/PlatformBootManagerLib: use new UefiShellFileGuid definition 2017-03-22 15:43:57 +00:00
QuarkSocPkg QuarkSocPkg: Remove use of IntelFrameworkModulePkg legacy libs 2016-12-02 15:59:19 +00:00
SecurityPkg SecurityPkg/Opal: Refine casting expression result to bigger size 2017-03-06 14:33:24 +08:00
ShellBinPkg ShellBinPkg: New Shell binaries for IA32 and X64 2016-12-19 15:27:38 +08:00
ShellPkg ShellPkg: Add Shell invocation option '-exit' 2017-03-23 12:48:51 +08:00
SignedCapsulePkg SignedCapsulePkg: Add Readme.md 2017-03-10 10:44:14 +08:00
SourceLevelDebugPkg SourceLevelDebugPkg: Refine casting expression result to bigger size 2017-03-06 14:33:25 +08:00
StdLib StdLib/LibC ARM AARCH64: do not redefine compiler intrinsics 2016-08-09 10:10:12 +02:00
StdLibPrivateInternalFiles StdLib: Clarify and improve comments. 2016-01-06 00:31:42 +00:00
UefiCpuPkg UefiCpuPkg/RegisterCpuFeaturesLib: Set CpuFeatureEntry initial value 2017-03-23 10:00:53 +08:00
UnixPkg UnixPkg: Remove UnixPkg files (It is replaced by EmulatorPkg) 2013-07-29 21:09:55 +00:00
Vlv2DeviceRefCodePkg Vlv2DeviceRefCodePkg: Fixed thermal issue. 2017-02-08 15:32:39 +08:00
Vlv2TbltDevicePkg Vlv2TbltDevicePkg/BootScriptSaveDxe: save 64-bit LoopTimes 2017-01-03 12:23:41 +01:00
.gitignore EDK II: Add .gitignore 2014-10-14 16:08:15 +00:00
BuildNotes2.txt BaseTools: Updated BuildNotes URLs 2016-03-25 09:46:44 +08:00
Edk2Setup.bat Edk2Setup.bat: Fix build errors from VS tools PREFIX ENV missing 2016-11-05 09:10:58 +08:00
Maintainers.txt Add SignedCapsule content. 2017-03-10 10:44:13 +08:00
edksetup.bat edksetup.bat: make sure BASE_TOOLS_PATH be set correctly 2016-10-26 13:45:45 +08:00
edksetup.sh edksetup.sh, BaseTools/BuildEnv: add --reconfig support 2016-10-24 13:53:16 +01:00