public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [Patch 0/1] BaseTools: Using compiler to generate source code dependency files.
@ 2019-10-28 10:47 Bob Feng
  2019-10-28 10:47 ` [Patch 1/1] BaseTools: Generate source file dependency in Make phase Bob Feng
  2019-10-28 12:23 ` [edk2-devel] [Patch 0/1] BaseTools: Using compiler to generate source code dependency files Ryszard Knop
  0 siblings, 2 replies; 9+ messages in thread
From: Bob Feng @ 2019-10-28 10:47 UTC (permalink / raw)
  To: devel

BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2311

To support incremental build, build tool generates the dependent header
file for each of source file. This procedure is done in AutoGen phase.
The build tool goes through all the source file and header file and
use regular expression to find out all the dependent files for a source
file. This procedure is much time-consuming. And this method can't handle
the MACRO in #include, for example #include PATH(xxx.h).

This patch is going to use compiler to generate dependent files. This method
will be faster and more accurate.

The basic idea is:
1. In AutoGen phase, build tool add "!Include deps.txt" into Makefile instead
of defining COMMON_DEPS list.
2. During the Make phase, the compilers, Trim and C preprocessor generate 
dependent files, .d file, for each source file.
3. After Make, The build tool combines the .d files and generate a file deps.txt 
which list all the included files for a module.
4. Each source file will depends on the Module's includes files. The difference
with orignial behavior is that if the user
change the source file, build tool will only build that source file in 
incremental build; while if the user change a module's header file, build tool
will build the whole module in incremental build.

In this way, the time of AutoGen phase will be reduced much. And since we
will use c preprocessor to handle #include, the MACRO will be handled well
and the final dependent files will be more accurate.

Feng, Bob C (1):
  BaseTools: Using compiler to generate source code dependency files.

 BaseTools/Conf/build_rule.template            |  89 ++++++-----
 BaseTools/Conf/tools_def.template             | 138 +++++++++---------
 BaseTools/Source/Python/AutoGen/GenMake.py    |  73 +++------
 .../Source/Python/AutoGen/IncludesAutoGen.py  |  99 +++++++++++++
 BaseTools/Source/Python/Trim/Trim.py          | 113 +++++++++++---
 BaseTools/Source/Python/build/build.py        |  58 ++++++--
 6 files changed, 378 insertions(+), 192 deletions(-)
 create mode 100644 BaseTools/Source/Python/AutoGen/IncludesAutoGen.py

-- 
2.20.1.windows.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2019-10-29  4:11 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-10-28 10:47 [Patch 0/1] BaseTools: Using compiler to generate source code dependency files Bob Feng
2019-10-28 10:47 ` [Patch 1/1] BaseTools: Generate source file dependency in Make phase Bob Feng
2019-10-28 12:23 ` [edk2-devel] [Patch 0/1] BaseTools: Using compiler to generate source code dependency files Ryszard Knop
2019-10-28 14:56   ` Bob Feng
2019-10-28 15:03     ` Yao, Jiewen
2019-10-28 15:25       ` Bob Feng
2019-10-28 17:18       ` Andrew Fish
2019-10-29  1:11         ` Bob Feng
2019-10-29  4:11           ` Andrew Fish

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox