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