From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from ma1-aaemail-dr-lapp01.apple.com (ma1-aaemail-dr-lapp01.apple.com [17.171.2.60]) by mx.groups.io with SMTP id smtpd.web11.6795.1594863722080827567 for ; Wed, 15 Jul 2020 18:42:02 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@apple.com header.s=20180706 header.b=CCqjvqyf; spf=pass (domain: apple.com, ip: 17.171.2.60, mailfrom: afish@apple.com) Received: from pps.filterd (ma1-aaemail-dr-lapp01.apple.com [127.0.0.1]) by ma1-aaemail-dr-lapp01.apple.com (8.16.0.42/8.16.0.42) with SMTP id 06G1X59g049615 for ; Wed, 15 Jul 2020 18:42:00 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=from : content-type : mime-version : subject : message-id : date : to; s=20180706; bh=qCM3mLPKCo0TbGtd28MO2HXffviKWQnDTudD+3hkwl4=; b=CCqjvqyfTBn3lOk7RlMeE+5DKk+XKg62h2UsAcI4cZHcWA69iqIkUANCpDNl3MWXpG/a SpvmBn2t/54uHWaiF9wGXLg8OIC8p3naIfav7b109KXunxf9dN7AuLiP8MfT558Asmbt xPjrSbS7b275ClwDtqUFiwKOjp6ticX4KsQknQLn2na3RJGlA4XFWTtp6jOAHZg2EGYO ANJRfVFbuyFse8YYDK9MuALrUb3nnLBdpJVfo8KEu0SZ18YfhR5qlvn0hEJqr/GOS8Qo vGGn5xjmDxBECdcjIyzDjH8T7jUB45S4kbTQV/I4+rkp7yMLcHqqgUGCL8v2oUyF1fmF KQ== Received: from rn-mailsvcp-mta-lapp01.rno.apple.com (rn-mailsvcp-mta-lapp01.rno.apple.com [10.225.203.149]) by ma1-aaemail-dr-lapp01.apple.com with ESMTP id 329gjkdcw9-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO) for ; Wed, 15 Jul 2020 18:42:00 -0700 Received: from rn-mailsvcp-mmp-lapp04.rno.apple.com (rn-mailsvcp-mmp-lapp04.rno.apple.com [17.179.253.17]) by rn-mailsvcp-mta-lapp01.rno.apple.com (Oracle Communications Messaging Server 8.1.0.5.20200312 64bit (built Mar 12 2020)) with ESMTPS id <0QDJ00Z4PGPZDGK0@rn-mailsvcp-mta-lapp01.rno.apple.com> for devel@edk2.groups.io; Wed, 15 Jul 2020 18:42:00 -0700 (PDT) Received: from process_milters-daemon.rn-mailsvcp-mmp-lapp04.rno.apple.com by rn-mailsvcp-mmp-lapp04.rno.apple.com (Oracle Communications Messaging Server 8.1.0.5.20200312 64bit (built Mar 12 2020)) id <0QDJ00Q00GASHA00@rn-mailsvcp-mmp-lapp04.rno.apple.com> for devel@edk2.groups.io; Wed, 15 Jul 2020 18:41:59 -0700 (PDT) X-Va-A: X-Va-T-CD: e0acb9dc03d22e4581b62f3d752335f3 X-Va-E-CD: 0814991eeda5e6045aed4610372b7286 X-Va-R-CD: 017963a98aaba921fe59dcce6e85a6ae X-Va-CD: 0 X-Va-ID: 72951565-a883-4129-891e-e4e03f2cc6ec X-V-A: X-V-T-CD: e0acb9dc03d22e4581b62f3d752335f3 X-V-E-CD: 0814991eeda5e6045aed4610372b7286 X-V-R-CD: 017963a98aaba921fe59dcce6e85a6ae X-V-CD: 0 X-V-ID: acba373c-3c19-4ad6-bed1-1172b2f7ce27 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235,18.0.687 definitions=2020-07-15_12:2020-07-15,2020-07-15 signatures=0 Received: from [17.235.55.211] (unknown [17.235.55.211]) by rn-mailsvcp-mmp-lapp04.rno.apple.com (Oracle Communications Messaging Server 8.1.0.5.20200312 64bit (built Mar 12 2020)) with ESMTPSA id <0QDJ00PFEGPYOB00@rn-mailsvcp-mmp-lapp04.rno.apple.com> for devel@edk2.groups.io; Wed, 15 Jul 2020 18:41:59 -0700 (PDT) From: "Andrew Fish" MIME-version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\)) Subject: File in the build question. I'm working on a smart git grep Message-id: Date: Wed, 15 Jul 2020 18:41:58 -0700 To: edk2-devel-groups-io X-Mailer: Apple Mail (2.3608.80.23.2.2) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235,18.0.687 definitions=2020-07-15_12:2020-07-15,2020-07-15 signatures=0 Content-type: multipart/alternative; boundary="Apple-Mail=_B459265F-186A-43A9-941A-6E273EB7B202" --Apple-Mail=_B459265F-186A-43A9-941A-6E273EB7B202 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 I think I mentioned before on the list that I think a smart git grep = that only scopes to a give target would be useful. For our internal repo = we have lots of targets and lots of generations of platforms so lots of = code that hits in a git grep that is not in the platform.=20 In thinking about this it looks to me like the Build/**/AutoGenTimeStamp = (module build files) files and the Build/**/AutoGen (global build files) = contain a list of all the files for a project. I wrote some python that takes the build target (OvmfX64 for example) = parses all the AutoGenTimeStamp and AutoGen files merges then together = and removes the workspace path. All the other arguments are passed to = `git grep` and only lines that match the file set are displayed.=20 My questions are: 1) Did I extract all the files? 2) Are people interested in this feature? 3) Any ideas on how to hook it in? I just dropped in the root of the git = tree for development.=20 4) Any other cool ideas of what we could do with a file list of the = project? Example (to give people a feel for how it works): $ time ./ggrep.py OvmfX64 CC_FLAGS | wc -l 42 real 0m0.318s user 0m0.243s sys 0m0.576s $ time git grep CC_FLAGS | wc -l 479 real 0m0.110s user 0m0.148s sys 0m0.525s $ ./ggrep.py OvmfX64 CC_FLAGS OvmfX64 only: git grep CC_FLAGS CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf:96: MSFT:*_*_*_CC_FLAGS = =3D /wd4090 CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf:100: = RVCT:*_*_ARM_CC_FLAGS =3D -JCryptoPkg/Include --diag_remark=3D1 CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf:102: = GCC:*_CLANG35_*_CC_FLAGS =3D -std=3Dc99 CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf:103: = GCC:*_CLANG38_*_CC_FLAGS =3D -std=3Dc99 CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf:104: = GCC:*_CLANGPDB_*_CC_FLAGS =3D -std=3Dc99 = -Wno-error=3Dincompatible-pointer-types CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf:106: = XCODE:*_*_*_CC_FLAGS =3D -std=3Dc99 CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:55: = MSFT:DEBUG_VS2003_IA32_CC_FLAGS =3D=3D /nologo /c /WX /W4 = /Gs32768 /Gy /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /GX- /Zi /Gm CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:56: = MSFT:RELEASE_VS2003_IA32_CC_FLAGS =3D=3D /nologo /c /WX /W4 = /Gs32768 /Gy /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /GX- CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:57: = MSFT:DEBUG_VS2003xASL_IA32_CC_FLAGS =3D=3D /nologo /c /WX /W4 = /Gs32768 /Gy /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /GX- /Zi /Gm CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:58: = MSFT:RELEASE_VS2003xASL_IA32_CC_FLAGS =3D=3D /nologo /c /WX /W4 = /Gs32768 /Gy /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /GX- CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:59: = MSFT:DEBUG_DDK3790_IA32_CC_FLAGS =3D=3D /nologo /c /WX /Gy = /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:60: = MSFT:RELEASE_DDK3790_IA32_CC_FLAGS =3D=3D /nologo /c /WX /Gy = /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:61: = MSFT:DEBUG_DDK3790xASL_IA32_CC_FLAGS =3D=3D /nologo /c /WX /Gy = /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:62: = MSFT:RELEASE_DDK3790xASL_IA32_CC_FLAGS =3D=3D /nologo /c /WX /Gy = /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:63: = MSFT:DEBUG_*_IA32_CC_FLAGS =3D=3D /nologo /c /WX /GS- /W4 = /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:64: = MSFT:RELEASE_*_IA32_CC_FLAGS =3D=3D /nologo /c /WX /GS- /W4 = /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:65: = MSFT:DEBUG_*_X64_CC_FLAGS =3D=3D /nologo /c /WX /GS- /X /W4 = /Gs32768 /D UNICODE /O1b2s /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:66: = MSFT:RELEASE_*_X64_CC_FLAGS =3D=3D /nologo /c /WX /GS- /X /W4 = /Gs32768 /D UNICODE /O1b2s /Gy /FIAutoGen.h /EHs-c- /GR- /GF CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:67: = INTEL:*_*_*_CC_FLAGS =3D /Oi- CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:569: = MSFT:*_*_IA32_CC_FLAGS =3D -U_WIN32 -U_WIN64 -U_MSC_VER = $(OPENSSL_FLAGS) /wd4090 /wd4132 /wd4244 /wd4245 /wd4267 /wd4310 /wd4389 = /wd4700 /wd4702 /wd4706 /wd4819 CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:570: = MSFT:*_*_X64_CC_FLAGS =3D -U_WIN32 -U_WIN64 -U_MSC_VER = $(OPENSSL_FLAGS) /wd4090 /wd4132 /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 = /wd4700 /wd4389 /wd4702 /wd4706 /wd4819 CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:572: = INTEL:*_*_IA32_CC_FLAGS =3D -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC = $(OPENSSL_FLAGS) /w CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:573: = INTEL:*_*_X64_CC_FLAGS =3D -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC = $(OPENSSL_FLAGS) /w CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:582: = GCC:*_*_IA32_CC_FLAGS =3D -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) = -Wno-error=3Dmaybe-uninitialized -Wno-error=3Dunused-but-set-variable CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:583: = GCC:*_*_X64_CC_FLAGS =3D -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) = -Wno-error=3Dmaybe-uninitialized -Wno-error=3Dformat -Wno-format = -Wno-error=3Dunused-but-set-variable -DNO_MSABI_VA_FUNCS CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:584: = GCC:*_*_ARM_CC_FLAGS =3D $(OPENSSL_FLAGS) = -Wno-error=3Dmaybe-uninitialized -Wno-error=3Dunused-but-set-variable CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:585: = GCC:*_*_AARCH64_CC_FLAGS =3D $(OPENSSL_FLAGS) = -Wno-error=3Dmaybe-uninitialized -Wno-format = -Wno-error=3Dunused-but-set-variable CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:586: = GCC:*_*_RISCV64_CC_FLAGS =3D $(OPENSSL_FLAGS) = -Wno-error=3Dmaybe-uninitialized -Wno-format = -Wno-error=3Dunused-but-set-variable CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:587: = GCC:*_CLANG35_*_CC_FLAGS =3D -std=3Dc99 -Wno-error=3Duninitialized CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:588: = GCC:*_CLANG38_*_CC_FLAGS =3D -std=3Dc99 -Wno-error=3Duninitialized CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:589: = GCC:*_CLANGPDB_*_CC_FLAGS =3D -std=3Dc99 -Wno-error=3Duninitialized = -Wno-error=3Dincompatible-pointer-types -Wno-error=3Dpointer-sign = -Wno-error=3Dimplicit-function-declaration = -Wno-error=3Dignored-pragma-optimize CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:610: = RVCT:*_*_ARM_CC_FLAGS =3D $(OPENSSL_FLAGS) = --library_interface=3Daeabi_clib99 = --diag_suppress=3D1296,1295,550,1293,111,68,177,223,144,513,188,128,546,1,= 3017 -JCryptoPkg/Include CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:611: = XCODE:*_*_IA32_CC_FLAGS =3D -mmmx -msse -U_WIN32 -U_WIN64 = $(OPENSSL_FLAGS) -w -std=3Dc99 -Wno-error=3Duninitialized CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:612: = XCODE:*_*_X64_CC_FLAGS =3D -mmmx -msse -U_WIN32 -U_WIN64 = $(OPENSSL_FLAGS) -w -std=3Dc99 -Wno-error=3Duninitialized OvmfPkg/OvmfPkgX64.dsc:73: GCC:RELEASE_*_*_CC_FLAGS =3D = -DMDEPKG_NDEBUG OvmfPkg/OvmfPkgX64.dsc:74: INTEL:RELEASE_*_*_CC_FLAGS =3D /D = MDEPKG_NDEBUG OvmfPkg/OvmfPkgX64.dsc:75: MSFT:RELEASE_*_*_CC_FLAGS =3D /D = MDEPKG_NDEBUG OvmfPkg/OvmfPkgX64.dsc:77: GCC:*_*_*_CC_FLAGS =3D = -mno-mmx -mno-sse OvmfPkg/OvmfPkgX64.dsc:88: MSFT:*_*_*_CC_FLAGS =3D /D = DISABLE_NEW_DEPRECATED_INTERFACES OvmfPkg/OvmfPkgX64.dsc:89: INTEL:*_*_*_CC_FLAGS =3D /D = DISABLE_NEW_DEPRECATED_INTERFACES OvmfPkg/OvmfPkgX64.dsc:90: GCC:*_*_*_CC_FLAGS =3D -D = DISABLE_NEW_DEPRECATED_INTERFACES $./ggrep.py OvmfX64 CC_FLAG -- *.dsc OvmfX64 only: git grep CC_FLAG -- *.dsc OvmfPkg/OvmfPkgX64.dsc:73: GCC:RELEASE_*_*_CC_FLAGS =3D = -DMDEPKG_NDEBUG OvmfPkg/OvmfPkgX64.dsc:74: INTEL:RELEASE_*_*_CC_FLAGS =3D /D = MDEPKG_NDEBUG OvmfPkg/OvmfPkgX64.dsc:75: MSFT:RELEASE_*_*_CC_FLAGS =3D /D = MDEPKG_NDEBUG OvmfPkg/OvmfPkgX64.dsc:77: GCC:*_*_*_CC_FLAGS =3D = -mno-mmx -mno-sse OvmfPkg/OvmfPkgX64.dsc:88: MSFT:*_*_*_CC_FLAGS =3D /D = DISABLE_NEW_DEPRECATED_INTERFACES OvmfPkg/OvmfPkgX64.dsc:89: INTEL:*_*_*_CC_FLAGS =3D /D = DISABLE_NEW_DEPRECATED_INTERFACES OvmfPkg/OvmfPkgX64.dsc:90: GCC:*_*_*_CC_FLAGS =3D -D = DISABLE_NEW_DEPRECATED_INTERFACES $ Note if we cache the combined AutoGenTimeStamp and AutoGen files into a = single file in the Build direction and use that file on the next run the = time goes down to: real 0m0.177s user 0m0.185s sys 0m0.522s If you don=E2=80=99t pass any `git grep` commands you get the file list = back: $./ggrep.py OvmfX64 Conf/build_rule.txt Conf/tools_def.txt CryptoPkg/CryptoPkg.dec CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf CryptoPkg/Library/BaseCryptLib/Cipher/CryptAes.c =E2=80=A6 My prototype is around 135 lines of Python. Thanks, Andrew Fish --Apple-Mail=_B459265F-186A-43A9-941A-6E273EB7B202 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 I = think I mentioned before on the list that I think a smart git grep that = only scopes to a give target would be useful. For our internal repo we = have lots of targets and lots of generations of platforms so lots of = code that hits in a git grep that is not in the platform. 

In thinking about this = it looks to me like the Build/**/AutoGenTimeStamp (module build files) = files and the Build/**/AutoGen (global build files) contain a list of = all the files for a project.

I wrote some python that takes the = build target (OvmfX64 for example) parses all the  AutoGenTimeStamp = and AutoGen files merges then together and removes the workspace path. = All the other arguments are passed to `git grep` and only lines that = match the file set are displayed. 

My questions are:
1)= Did I extract all the files?
2) Are people = interested in this feature?
3) Any ideas on how to = hook it in? I just dropped in the root of the git tree for = development. 
4) Any other cool ideas of what = we could do with a file list of the project?

Example (to give people a feel for how = it works):
time ./ggrep.py = OvmfX64 CC_FLAGS | wc -l
      42

real 0m0.318s
user = 0m0.243s
sys = 0m0.576s
time git = grep CC_FLAGS | wc -l
     479

real 0m0.110s
user = 0m0.148s
sys = 0m0.525s
./ggrep.py OvmfX64 = CC_FLAGS
OvmfX64 only: git grep CC_FLAGS
CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf:96:  = MSFT:*_*_*_CC_FLAGS =3D /wd4090
CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf:100:  = RVCT:*_*_ARM_CC_FLAGS =3D -JCryptoPkg/Include = --diag_remark=3D1
CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf:102:  = GCC:*_CLANG35_*_CC_FLAGS =3D -std=3Dc99
CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf:103:  = GCC:*_CLANG38_*_CC_FLAGS =3D -std=3Dc99
CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf:104:  = GCC:*_CLANGPDB_*_CC_FLAGS =3D -std=3Dc99 = -Wno-error=3Dincompatible-pointer-types
CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf:106:  = XCODE:*_*_*_CC_FLAGS =3D -std=3Dc99
CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:55:   = MSFT:DEBUG_VS2003_IA32_CC_FLAGS        =3D=3D = /nologo /c /WX /W4 /Gs32768 /Gy /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- = /GR- /GF /GX- /Zi /Gm
CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:56:   = MSFT:RELEASE_VS2003_IA32_CC_FLAGS      =3D=3D /nologo /c = /WX /W4 /Gs32768 /Gy /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF = /GX-
CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:57:   = MSFT:DEBUG_VS2003xASL_IA32_CC_FLAGS    =3D=3D /nologo /c /WX = /W4 /Gs32768 /Gy /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /GX- /Zi = /Gm
CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:58:   = MSFT:RELEASE_VS2003xASL_IA32_CC_FLAGS  =3D=3D /nologo /c /WX /W4 = /Gs32768 /Gy /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF = /GX-
CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:59:   = MSFT:DEBUG_DDK3790_IA32_CC_FLAGS       =3D=3D /nologo /c = /WX /Gy /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /Zi = /Gm
CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:60:   = MSFT:RELEASE_DDK3790_IA32_CC_FLAGS     =3D=3D /nologo /c /WX = /Gy /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- = /GF
CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:61:   = MSFT:DEBUG_DDK3790xASL_IA32_CC_FLAGS   =3D=3D /nologo /c /WX /Gy = /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /Zi = /Gm
CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:62:   = MSFT:RELEASE_DDK3790xASL_IA32_CC_FLAGS =3D=3D /nologo /c /WX /Gy = /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF
CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:63:   = MSFT:DEBUG_*_IA32_CC_FLAGS             =3D=3D= /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- = /GR- /GF /Gy /Zi /Gm
CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:64:   = MSFT:RELEASE_*_IA32_CC_FLAGS           =3D=3D = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- = /GR- /GF
CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:65:   = MSFT:DEBUG_*_X64_CC_FLAGS            =   =3D=3D /nologo /c /WX /GS- /X /W4 /Gs32768 /D UNICODE /O1b2s /Gy = /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm
CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:66:   = MSFT:RELEASE_*_X64_CC_FLAGS            =3D=3D= /nologo /c /WX /GS- /X /W4 /Gs32768 /D UNICODE /O1b2s /Gy /FIAutoGen.h = /EHs-c- /GR- /GF
CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:67:  = INTEL:*_*_*_CC_FLAGS              =       =3D  /Oi-
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:569:  = MSFT:*_*_IA32_CC_FLAGS   =3D -U_WIN32 -U_WIN64 -U_MSC_VER = $(OPENSSL_FLAGS) /wd4090 /wd4132 /wd4244 /wd4245 /wd4267 /wd4310 /wd4389 = /wd4700 /wd4702 /wd4706 /wd4819
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:570:  = MSFT:*_*_X64_CC_FLAGS    =3D -U_WIN32 -U_WIN64 -U_MSC_VER = $(OPENSSL_FLAGS) /wd4090 /wd4132 /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 = /wd4700 /wd4389 /wd4702 /wd4706 /wd4819
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:572:  = INTEL:*_*_IA32_CC_FLAGS  =3D -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC = $(OPENSSL_FLAGS) /w
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:573:  = INTEL:*_*_X64_CC_FLAGS   =3D -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC = $(OPENSSL_FLAGS) /w
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:582:  = GCC:*_*_IA32_CC_FLAGS    =3D -U_WIN32 -U_WIN64 = $(OPENSSL_FLAGS) -Wno-error=3Dmaybe-uninitialized = -Wno-error=3Dunused-but-set-variable
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:583:  = GCC:*_*_X64_CC_FLAGS     =3D -U_WIN32 -U_WIN64 = $(OPENSSL_FLAGS) -Wno-error=3Dmaybe-uninitialized -Wno-error=3Dformat = -Wno-format -Wno-error=3Dunused-but-set-variable = -DNO_MSABI_VA_FUNCS
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:584:  = GCC:*_*_ARM_CC_FLAGS     =3D $(OPENSSL_FLAGS) = -Wno-error=3Dmaybe-uninitialized = -Wno-error=3Dunused-but-set-variable
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:585:  = GCC:*_*_AARCH64_CC_FLAGS =3D $(OPENSSL_FLAGS) = -Wno-error=3Dmaybe-uninitialized -Wno-format = -Wno-error=3Dunused-but-set-variable
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:586:  = GCC:*_*_RISCV64_CC_FLAGS =3D $(OPENSSL_FLAGS) = -Wno-error=3Dmaybe-uninitialized -Wno-format = -Wno-error=3Dunused-but-set-variable
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:587:  = GCC:*_CLANG35_*_CC_FLAGS =3D -std=3Dc99 = -Wno-error=3Duninitialized
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:588:  = GCC:*_CLANG38_*_CC_FLAGS =3D -std=3Dc99 = -Wno-error=3Duninitialized
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:589:  = GCC:*_CLANGPDB_*_CC_FLAGS =3D -std=3Dc99 -Wno-error=3Duninitialized = -Wno-error=3Dincompatible-pointer-types -Wno-error=3Dpointer-sign = -Wno-error=3Dimplicit-function-declaration = -Wno-error=3Dignored-pragma-optimize
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:610:  = RVCT:*_*_ARM_CC_FLAGS     =3D $(OPENSSL_FLAGS) = --library_interface=3Daeabi_clib99 = --diag_suppress=3D1296,1295,550,1293,111,68,177,223,144,513,188,128,546,1,= 3017 -JCryptoPkg/Include
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:611:  = XCODE:*_*_IA32_CC_FLAGS   =3D -mmmx -msse -U_WIN32 -U_WIN64 = $(OPENSSL_FLAGS) -w -std=3Dc99 -Wno-error=3Duninitialized
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:612:  = XCODE:*_*_X64_CC_FLAGS    =3D -mmmx -msse -U_WIN32 -U_WIN64 = $(OPENSSL_FLAGS) -w -std=3Dc99 -Wno-error=3Duninitialized
OvmfPkg/OvmfPkgX64.dsc:73:  GCC:RELEASE_*_*_CC_FLAGS =             =3D = -DMDEPKG_NDEBUG
OvmfPkg/OvmfPkgX64.dsc:74:  INTEL:RELEASE_*_*_CC_FLAGS =           =3D /D MDEPKG_NDEBUG
OvmfPkg/OvmfPkgX64.dsc:75:  = MSFT:RELEASE_*_*_CC_FLAGS            =3D = /D MDEPKG_NDEBUG
OvmfPkg/OvmfPkgX64.dsc:77:  GCC:*_*_*_CC_FLAGS   =                 =3D -mno-mmx = -mno-sse
OvmfPkg/OvmfPkgX64.dsc:88:  MSFT:*_*_*_CC_FLAGS =3D /D = DISABLE_NEW_DEPRECATED_INTERFACES
OvmfPkg/OvmfPkgX64.dsc:89:  = INTEL:*_*_*_CC_FLAGS =3D /D = DISABLE_NEW_DEPRECATED_INTERFACES
OvmfPkg/OvmfPkgX64.dsc:90:  = GCC:*_*_*_CC_FLAGS =3D -D = DISABLE_NEW_DEPRECATED_INTERFACES
$./ggrep.py OvmfX64 CC_FLAG -- = *.dsc
OvmfX64 only: git grep CC_FLAG -- *.dsc
OvmfPkg/OvmfPkgX64.dsc:73:  GCC:RELEASE_*_*_CC_FLAGS =             =3D = -DMDEPKG_NDEBUG
OvmfPkg/OvmfPkgX64.dsc:74:  INTEL:RELEASE_*_*_CC_FLAGS =           =3D /D MDEPKG_NDEBUG
OvmfPkg/OvmfPkgX64.dsc:75:  = MSFT:RELEASE_*_*_CC_FLAGS            =3D = /D MDEPKG_NDEBUG
OvmfPkg/OvmfPkgX64.dsc:77:  GCC:*_*_*_CC_FLAGS   =                 =3D -mno-mmx = -mno-sse
OvmfPkg/OvmfPkgX64.dsc:88:  MSFT:*_*_*_CC_FLAGS =3D /D = DISABLE_NEW_DEPRECATED_INTERFACES
OvmfPkg/OvmfPkgX64.dsc:89:  = INTEL:*_*_*_CC_FLAGS =3D /D = DISABLE_NEW_DEPRECATED_INTERFACES
OvmfPkg/OvmfPkgX64.dsc:90:  = GCC:*_*_*_CC_FLAGS =3D -D = DISABLE_NEW_DEPRECATED_INTERFACES
$

Note if = we cache the combined AutoGenTimeStamp and AutoGen files = into a single file in the Build direction and use that file on the next = run the time goes down to:
real 0m0.177s
user 0m0.185s
sys = 0m0.522s

If you don=E2=80=99t pass any `git = grep` commands you get the file list back:
$./ggrep.py OvmfX64
Conf/build_rule.txt
Conf/tools_def.txt
CryptoPkg/CryptoPkg.dec
CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
CryptoPkg/Library/BaseCryptLib/Cipher/CryptAes.c
=E2=80=A6


My prototype is around 135 lines of Python.

Thanks,

Andrew = Fish

= --Apple-Mail=_B459265F-186A-43A9-941A-6E273EB7B202--