> -----Original Message-----
> From: Feng, Bob C <[email protected]>
> Sent: Thursday, December 5, 2019 4:48 PM
> To: Kinney, Michael D <[email protected]>;
> [email protected]
> Cc: Feng, Bob C <[email protected]>
> Subject: RE: [edk2-devel] [Patch 0/4 V4] Enhance
> Incremental Build
>
> Hi Mike,
>
> A tool chain enable this feature by defining the
> *_<tool chain name>_*_DEPS_FLAGS in tools_def and
> applying $(DEPS_FLAGS) in build_rule.txt.
> I have added those setting for MSVC, GCC, CLANG tool
> chain in tools_def.template and build_rule.template.
> Those exist tool chains are all enable this feature by
> default.
>
> Only RVCT tool chain does not support this feature, but
> according to
> https://bugzilla.tianocore.org/show_bug.cgi?id=1750,
> RVCT will be dropped from our support tool chains.
>
> So is it fine to add comments for each tool chain to
> document this tool chain is enabled to generate
> dependency files in build_rule.template?
Do you mean tools_def.template? Then yes.
>
> Thanks,
> Bob
>
> -----Original Message-----
> From: Kinney, Michael D
> Sent: Friday, December 6, 2019 12:49 AM
> To: [email protected]; Feng, Bob C
> <[email protected]>; Kinney, Michael D
> <[email protected]>
> Subject: RE: [edk2-devel] [Patch 0/4 V4] Enhance
> Incremental Build
>
> Hi Bob,
>
> How does a tool chain opt-in or opt-out of this
> feature?
>
> As you point out, not all tool chains provide the
> information needed to support this feature. We need to
> make sure the use of this feature or not is clearly
> documented in the profile for each tool chain.
>
> Thanks,
>
> Mike
>
> > -----Original Message-----
> > From: [email protected] <[email protected]> On
> Behalf Of Bob
> > Feng
> > Sent: Thursday, December 5, 2019 12:18 AM
> > To: [email protected]
> > Subject: [edk2-devel] [Patch 0/4 V4] Enhance
> Incremental Build
> >
> > V4: Move .deps files to where corresponding .obj file
> locate
> > V3: Change CLANG9 to CLANGPDB according to commit
> 14672c34bd
> > V2: Fixed a bug in patch 4/4.
> >
> > Incremental build reduces the build time by only
> building the module
> > that need to update. Edk2 Build system is a Makefile
> based build
> > system. The incrememtal build ability is provided by
> the Make program.
> > But Edk2 build tool need to generate correct makefile
> to have Make
> > program do incremental build correctly.
> >
> > The current solution in build tool to support
> incremental build is
> > that build tool find out the include file list for
> each source file of
> > a module, and in module's makefile, build tool add
> the include file
> > list as the source file's dependency.
> > In this way Make program can decide if it need to
> rebuild a source
> > code by checking its dependency. This solution has 2
> shortcommings,
> > one is the process of finding include list is slow,
> the other is this
> > method can't handle case that a MACRO in #include
> statement so the
> > related source file is always built.
> >
> > This patch provides another method to support
> incremental build. That
> > is to use c preprocessor and trim tool to generate
> dependency files
> > for the source file.
> > This method will save much time in AutoGen phase and
> handle MACRO in
> > #include correctly.
> >
> > For C files:
> > 1. MSVS.
> > cl.exe has a build option /showIncludes to
> display include
> > files on stdout. Build tool captures
> > that messages and generate dependency files,
> .deps files.
> > 2. CLANG and GCC
> > -MMD -MF build option are used to generate
> dependency files by
> > preprocessor. Build tool updates the
> > .deps files.
> >
> > For ASL files:
> > 1. Trim find out all the included files, which
> are asl specific
> > include format, and generate .trim.deps file.
> > 2. ASL PP use c preprocessor to find out all
> included files with
> > #include format and generate a .deps file
> > 3. build tool updates the .deps file
> >
> > For ASM files (.asm, .s or .nasm):
> > 1. Trim find out all the included files, which
> are asm specific
> > include format, and generate .trim.deps file.
> > 2. ASM PP use c preprocessor to find out all
> included files with
> > #include format and generate a deps file
> > 3. build tool updates the .deps file
> >
> > Build tool add "include" instruction for those deps
> files in the
> > Makefile.
> >
> > This patch does not support RVCT tool chain for the
> BZ
> > https://bugzilla.tianocore.org/show_bug.cgi?id=1750
> >
> > Feng, Bob C (4):
> > BaseTools: Add build option for dependency file
> generation
> > BaseTools: Generate dependent files for ASL and ASM
> files
> > BaseTools: Update build_rule.txt to generate
> dependent files.
> > BaseTools: Enhance Basetool for incremental build
> >
> > BaseTools/Conf/build_rule.template | 94
> > ++++---
> > BaseTools/Conf/tools_def.template | 173
> > ++++++------
> > BaseTools/Source/Python/AutoGen/GenMake.py | 83
> > ++----
> > .../Source/Python/AutoGen/IncludesAutoGen.py | 255
> > ++++++++++++++++++
> > .../Source/Python/AutoGen/ModuleAutoGen.py | 23
> ++
> > BaseTools/Source/Python/Trim/Trim.py | 115
> > ++++++--
> > BaseTools/Source/Python/build/build.py | 63
> > ++++-
> > 7 files changed, 588 insertions(+), 218 deletions(-)
> create mode
> > 100644
> BaseTools/Source/Python/AutoGen/IncludesAutoGen.py
> >
> > --
> > 2.20.1.windows.1
> >
> >
> >
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#51811): https://edk2.groups.io/g/devel/message/51811
Mute This Topic: https://groups.io/mt/65666140/21656
Group Owner: [email protected]
Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-