Reviewed-by: Liming Gao <liming....@intel.com>

>-----Original Message-----
>From: Shi, Steven
>Sent: Wednesday, January 30, 2019 12:18 PM
>To: edk2-devel@lists.01.org
>Cc: Gao, Liming <liming....@intel.com>
>Subject: [PATCH] BaseTools: Enable compiler cache support in edk2 build
>
>https://bugzilla.tianocore.org/show_bug.cgi?id=1499
>Compiler cache can greatly improve the build performance and
>guarantee the build result safe. In our testing, the compiler
>cache can improve the overall clean build time usually by 30+%
>in linux and 10+% in windows. The compiler cache are very fit
>to improve the Continuous Integration (CI) build performance.
>
>For linux compiler cache (ccache) enabling, there is no need
>to update edk2 code.
>Below link has the ccache enabling referencd steps:
>https://github.com/shijunjing/edk2/wiki/
>Edk2-compiler-cache-enabling-steps-on-Linux
>
>For windows compiler cache (clcache) enabling, we need update
>the .PDB debugging file producing option from /Zi to /Z7,
>which is to let the C object file contain its full symbolic
>debugging information rather than produces a separated PDB file
>for all obj files per folder. "PDB files are generated by a different
>process (mspdbsrv). They arrive or are updated on disk after
>cl completes a compilation or linking operation. One huge problem
>with caching them is that the pdb files are input files as well as
>outputs. mspdbsrv updates the file with new debug information if
>the file exists beforehand. If there are several compilations going
>on at once targetting the same pdb then the order the pdb gets
>updated is unpredictable. All this makes caching very hard."
>The /Zi issue more detail disccusion can be found:
>https://github.com/frerich/clcache/issues/30
>Please be aware that this change has no any impact to edk2 module
>level PDB file generation, and we still can get the PDB debug file
>for a .efi module. The /Z7 only impact intermediate obj files level
>PDB file, which is current one PDB file (vc140.pdb) per obj folder.
>
>Below link has the clcache enabling referencd steps:
>https://github.com/shijunjing/edk2/wiki/
>Edk2-compiler-cache-enabling-steps-on-Windows
>
>Have tested below tools which consume the .PDB file:
>*Edk2 source code debugger
>*Various hardware and software debuggers
>*Uefi code coverage tools
>
>Only update and test below most commonly used four msvc toolchains:
>VS2012x86 VS2013x86 VS2015x86 VS2017
>
>Contributed-under: TianoCore Contribution Agreement 1.1
>Signed-off-by: Steven Shi <steven....@intel.com>
>Cc: Liming Gao <liming....@intel.com>
>---
> BaseTools/Conf/tools_def.template | 32 ++++++++++++++++----------------
> 1 file changed, 16 insertions(+), 16 deletions(-)
>
>diff --git a/BaseTools/Conf/tools_def.template
>b/BaseTools/Conf/tools_def.template
>index 2bd0982872..7d04b3efd2 100755
>--- a/BaseTools/Conf/tools_def.template
>+++ b/BaseTools/Conf/tools_def.template
>@@ -2589,9 +2589,9 @@ NOOPT_VS2012xASL_X64_DLINK_FLAGS    =
>/NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:RE
> *_VS2012x86_IA32_ASM_PATH     = DEF(VS2012x86_BIN)\ml.exe
>
>       *_VS2012x86_IA32_MAKE_FLAGS  = /nologo
>-  DEBUG_VS2012x86_IA32_CC_FLAGS    = /nologo /arch:IA32 /c /WX /GS- /W4
>/Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm
>+  DEBUG_VS2012x86_IA32_CC_FLAGS    = /nologo /arch:IA32 /c /WX /GS-
>/W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7
> RELEASE_VS2012x86_IA32_CC_FLAGS    = /nologo /arch:IA32 /c /WX /GS- /W4
>/Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF
>-NOOPT_VS2012x86_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS-
>/W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm /Od
>+NOOPT_VS2012x86_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS-
>/W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od
>
>   DEBUG_VS2012x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd
>/Zi
> RELEASE_VS2012x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd
>@@ -2621,9 +2621,9 @@ NOOPT_VS2012x86_IA32_DLINK_FLAGS   =
>/NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF
> *_VS2012x86_X64_DLINK_PATH    = DEF(VS2012x86_BINX64)\link.exe
> *_VS2012x86_X64_ASLDLINK_PATH = DEF(VS2012x86_BINX64)\link.exe
>
>-  DEBUG_VS2012x86_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768
>/D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm
>+  DEBUG_VS2012x86_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768
>/D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7
> RELEASE_VS2012x86_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768
>/D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF
>-NOOPT_VS2012x86_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768
>/D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm /Od
>+NOOPT_VS2012x86_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768
>/D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od
>
>   DEBUG_VS2012x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
> RELEASE_VS2012x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
>@@ -3055,9 +3055,9 @@ NOOPT_VS2013xASL_X64_DLINK_FLAGS    =
>/NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:RE
> *_VS2013x86_IA32_ASM_PATH     = DEF(VS2013x86_BIN)\ml.exe
>
>       *_VS2013x86_IA32_MAKE_FLAGS  = /nologo
>-  DEBUG_VS2013x86_IA32_CC_FLAGS    = /nologo /arch:IA32 /c /WX /GS- /W4
>/Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm
>/Gw
>+  DEBUG_VS2013x86_IA32_CC_FLAGS    = /nologo /arch:IA32 /c /WX /GS-
>/W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7
>/Gw
> RELEASE_VS2013x86_IA32_CC_FLAGS    = /nologo /arch:IA32 /c /WX /GS- /W4
>/Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw
>-NOOPT_VS2013x86_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS-
>/W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm /Od
>+NOOPT_VS2013x86_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS-
>/W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od
>
>   DEBUG_VS2013x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd
>/Zi
> RELEASE_VS2013x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd
>@@ -3087,9 +3087,9 @@ NOOPT_VS2013x86_IA32_DLINK_FLAGS   =
>/NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF
> *_VS2013x86_X64_DLINK_PATH    = DEF(VS2013x86_BINX64)\link.exe
> *_VS2013x86_X64_ASLDLINK_PATH = DEF(VS2013x86_BINX64)\link.exe
>
>-  DEBUG_VS2013x86_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768
>/D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm /Gw
>+  DEBUG_VS2013x86_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768
>/D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw
> RELEASE_VS2013x86_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768
>/D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw
>-NOOPT_VS2013x86_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768
>/D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm /Od
>+NOOPT_VS2013x86_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768
>/D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od
>
>   DEBUG_VS2013x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
> RELEASE_VS2013x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
>@@ -3525,9 +3525,9 @@ NOOPT_VS2015xASL_X64_DLINK_FLAGS    =
>/NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:RE
> *_VS2015x86_IA32_ASM_PATH     = DEF(VS2015x86_BIN)\ml.exe
>
>       *_VS2015x86_IA32_MAKE_FLAGS  = /nologo
>-  DEBUG_VS2015x86_IA32_CC_FLAGS    = /nologo /arch:IA32 /c /WX /GS- /W4
>/Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm
>/Gw
>+  DEBUG_VS2015x86_IA32_CC_FLAGS    = /nologo /arch:IA32 /c /WX /GS-
>/W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7
>/Gw
> RELEASE_VS2015x86_IA32_CC_FLAGS    = /nologo /arch:IA32 /c /WX /GS- /W4
>/Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw
>-NOOPT_VS2015x86_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS-
>/W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm /Od
>+NOOPT_VS2015x86_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS-
>/W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od
>
>   DEBUG_VS2015x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd
>/Zi
> RELEASE_VS2015x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd
>@@ -3557,9 +3557,9 @@ NOOPT_VS2015x86_IA32_DLINK_FLAGS   =
>/NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF
> *_VS2015x86_X64_DLINK_PATH    = DEF(VS2015x86_BINX64)\link.exe
> *_VS2015x86_X64_ASLDLINK_PATH = DEF(VS2015x86_BINX64)\link.exe
>
>-  DEBUG_VS2015x86_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768
>/D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm /Gw
>+  DEBUG_VS2015x86_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768
>/D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw
> RELEASE_VS2015x86_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768
>/D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw
>-NOOPT_VS2015x86_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768
>/D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm /Od
>+NOOPT_VS2015x86_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768
>/D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od
>
>   DEBUG_VS2015x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
> RELEASE_VS2015x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
>@@ -3755,9 +3755,9 @@ NOOPT_VS2015x86xASL_X64_DLINK_FLAGS    =
>/NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT
> *_VS2017_IA32_ASM_PATH     = DEF(VS2017_BIN_IA32)\ml.exe
>
>       *_VS2017_IA32_MAKE_FLAGS  = /nologo
>-  DEBUG_VS2017_IA32_CC_FLAGS    = /nologo /arch:IA32 /c /WX /GS- /W4
>/Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm
>/Gw
>+  DEBUG_VS2017_IA32_CC_FLAGS    = /nologo /arch:IA32 /c /WX /GS- /W4
>/Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw
> RELEASE_VS2017_IA32_CC_FLAGS    = /nologo /arch:IA32 /c /WX /GS- /W4
>/Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw
>-NOOPT_VS2017_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS- /W4
>/Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm /Od
>+NOOPT_VS2017_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS- /W4
>/Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od
>
>   DEBUG_VS2017_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
> RELEASE_VS2017_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd
>@@ -3785,9 +3785,9 @@ NOOPT_VS2017_IA32_DLINK_FLAGS   = /NOLOGO
>/NODEFAULTLIB /IGNORE:4001 /OPT:REF /O
> *_VS2017_X64_DLINK_PATH    = DEF(VS2017_BIN_X64)\link.exe
> *_VS2017_X64_ASLDLINK_PATH = DEF(VS2017_BIN_X64)\link.exe
>
>-  DEBUG_VS2017_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768 /D
>UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm /Gw
>+  DEBUG_VS2017_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768 /D
>UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw
> RELEASE_VS2017_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768 /D
>UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw
>-NOOPT_VS2017_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D
>UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm /Od
>+NOOPT_VS2017_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D
>UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od
>
>   DEBUG_VS2017_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
> RELEASE_VS2017_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
>--
>2.17.1.windows.2

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to