> -----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]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to