public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Michael D Kinney" <michael.d.kinney@intel.com>
To: "Feng, Bob C" <bob.c.feng@intel.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>,
	"Kinney, Michael D" <michael.d.kinney@intel.com>
Subject: Re: [edk2-devel] [Patch 0/4 V4] Enhance Incremental Build
Date: Fri, 6 Dec 2019 03:35:44 +0000	[thread overview]
Message-ID: <E92EE9817A31E24EB0585FDF735412F5B9E2AFAA@ORSMSX113.amr.corp.intel.com> (raw)
In-Reply-To: <08650203BA1BD64D8AD9B6D5D74A85D16157C357@SHSMSX104.ccr.corp.intel.com>



> -----Original Message-----
> From: Feng, Bob C <bob.c.feng@intel.com>
> Sent: Thursday, December 5, 2019 4:48 PM
> To: Kinney, Michael D <michael.d.kinney@intel.com>;
> devel@edk2.groups.io
> Cc: Feng, Bob C <bob.c.feng@intel.com>
> 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: devel@edk2.groups.io; Feng, Bob C
> <bob.c.feng@intel.com>; Kinney, Michael D
> <michael.d.kinney@intel.com>
> 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: devel@edk2.groups.io <devel@edk2.groups.io> On
> Behalf Of Bob
> > Feng
> > Sent: Thursday, December 5, 2019 12:18 AM
> > To: devel@edk2.groups.io
> > 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
> >
> >
> > 


  reply	other threads:[~2019-12-06  3:35 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-05  8:18 [Patch 0/4 V4] Enhance Incremental Build Bob Feng
2019-12-05  8:18 ` [Patch 1/4 V4] BaseTools: Add build option for dependency file generation Bob Feng
2019-12-05  8:18 ` [Patch 2/4 V4] BaseTools: Generate dependent files for ASL and ASM files Bob Feng
2019-12-05  8:18 ` [Patch 3/4 V4] BaseTools: Update build_rule.txt to generate dependent files Bob Feng
2019-12-05  8:18 ` [Patch 4/4 V4] BaseTools: Enhance Basetool for incremental build Bob Feng
2019-12-05 16:48 ` [edk2-devel] [Patch 0/4 V4] Enhance Incremental Build Michael D Kinney
2019-12-06  0:47   ` Bob Feng
2019-12-06  3:35     ` Michael D Kinney [this message]
2019-12-06  4:03       ` Bob Feng
  -- strict thread matches above, loose matches on Subject: below --
2019-12-03  8:52 Bob Feng
2019-12-03 14:33 ` [edk2-devel] " Liming Gao
2019-12-04  2:09   ` Bob Feng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=E92EE9817A31E24EB0585FDF735412F5B9E2AFAA@ORSMSX113.amr.corp.intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox