From: "Gao, Liming" <liming.gao@intel.com>
To: "Shi, Steven" <steven.shi@intel.com>,
"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Subject: Re: [PATCH] BaseTools: Enable compiler cache support in edk2 build
Date: Mon, 11 Mar 2019 02:44:22 +0000 [thread overview]
Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E3FFD5F@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <20190130041802.26216-1-steven.shi@intel.com>
Reviewed-by: Liming Gao <liming.gao@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.gao@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.shi@intel.com>
>Cc: Liming Gao <liming.gao@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
prev parent reply other threads:[~2019-03-11 2:44 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-30 4:18 [PATCH] BaseTools: Enable compiler cache support in edk2 build Steven Shi
2019-03-11 2:44 ` Gao, Liming [this message]
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=4A89E2EF3DFEDB4C8BFDE51014F606A14E3FFD5F@SHSMSX104.ccr.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