Re: [edk2-devel] [Patch 0/4] Enhance Incremental Build

2019-11-11 Thread Liming Gao
Bob:
  This is a fundamental change. It needs more review and test. 

  But now, 201911 stable tag softfreeze will be coming on 11-15. So, I don't 
think this change will catch 201911 stable tag. Right? 

Thanks
Liming
>-Original Message-
>From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of
>Bob Feng
>Sent: Monday, November 11, 2019 5:40 PM
>To: devel@edk2.groups.io
>Subject: [edk2-devel] [Patch 0/4] Enhance Incremental Build
>
>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 (#50387): https://edk2.groups.io/g/devel/message/50387
Mute This Topic: https://groups.io/mt/52516787/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



[edk2-devel] [Patch 0/4] Enhance Incremental Build

2019-11-11 Thread Bob Feng
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 (#50360): https://edk2.groups.io/g/devel/message/50360
Mute This Topic: https://groups.io/mt/52516787/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-