From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web11.16388.1680061626482356245 for ; Tue, 28 Mar 2023 20:47:06 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=C4yAn0r/; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: gua.guo@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1680061626; x=1711597626; h=from:to:subject:date:message-id:references:in-reply-to: mime-version; bh=dJz+SWjIta8nhQ7PZea50M4B8aGgv7QHLXZJrIGo7oQ=; b=C4yAn0r/I0De5yeUQWIl+gkCawK/0nd6i1R15QRA//Duw0VtWChFh2nT lRNzR9QT58OdAEoV77vxIxn2DvD2T6m/oNpRrIAJPbu/gmjpKX/va4oaC iVcVWCNIFe2U/bjlWgMcYLm+IFMJs85DClvrXTutHr9m1exUCboP88a2L lGt4mfi30wxgYjhk4SlGugiCJhlezPPRhFjb/3b9PDRkKtxF5g8ZGLssn 8AqX/54+q4SkL05flbctqJAuLvCzx6VywwtxrV2cK2Vt/UDMMc2nOzlRE +anlMurgMkb18MpqgkO9aEN53hNMqZpmZmbQWi9+t3igv6wwT5LqBQoVf Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10663"; a="321165038" X-IronPort-AV: E=Sophos;i="5.98,299,1673942400"; d="png'150?scan'150,208,217,150";a="321165038" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2023 20:47:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10663"; a="753423064" X-IronPort-AV: E=Sophos;i="5.98,299,1673942400"; d="png'150?scan'150,208,217,150";a="753423064" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by fmsmga004.fm.intel.com with ESMTP; 28 Mar 2023 20:47:04 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 28 Mar 2023 20:47:03 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Tue, 28 Mar 2023 20:47:03 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.103) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.21; Tue, 28 Mar 2023 20:47:02 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cSzr5FtNBY4fes+u6KT7p72i3aKse66xgtZsgmVJYI5Hdx+wY2m5QYU8ignjfemMOSEKojWqDun4SCIHUj7fUppqrmcALbvsfltLKpulmBC34utphcJPvUeZYsl1dAlsl3kwKTT2tzmf/U0avaBPDj70/iNJnyzCfReEy3NnScbsipl9gJL5HB8e5vfDtkmfmZsq4lSDXhkwJuaj3EplrGcZGyQ23QnCxqVu2OnwNx14xkvwEJ9acBnwoT/W/nD/8iKlflEvKgPF2fJlHlwTzibIpMi3eIAwdMdfEZWX7DYiqZyIkDoA0J9KsO+ffdJDbbayR1jrt1QYk/NWaSXwYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=g1qoiYb3OJX917L/orPsFUUVefktfCUsRzmHdHL8giY=; b=Z7YDaVFcdHVwHSY9VAQRRV9CX0q2olSgUhyCYW+IcIxdPy6VbLzEd9Lcr/2kLKvXWJxaKFfcz7D5ex/CD93Mdt3hab2M560PxdIJ2bpbZZk2/3zVEpKesoRRpiIbPVzx6/4p3vNeBB4mCvQHNtfj17iBVZXOeU8lyw9etM5GYu2eMuf67F80f/RJRtBx3cZA04cX3vs86pDoB/BewR1RSnNJN8Z6wvLIZhlI1UCzo+a8rgkNpw1xyFcYxvtQzK6oEc5AWs/hJ3nviKWk8bOOE/9e3mB4jvhAehqE/fntRBIAthJC0WMZD6JfyrXwXZtosxYFftLZ5KQ4bec1ebQiYg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BL1PR11MB5478.namprd11.prod.outlook.com (2603:10b6:208:31d::12) by PH8PR11MB7023.namprd11.prod.outlook.com (2603:10b6:510:221::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.31; Wed, 29 Mar 2023 03:46:58 +0000 Received: from BL1PR11MB5478.namprd11.prod.outlook.com ([fe80::eb2d:a316:8bcd:3fb6]) by BL1PR11MB5478.namprd11.prod.outlook.com ([fe80::eb2d:a316:8bcd:3fb6%4]) with mapi id 15.20.6222.033; Wed, 29 Mar 2023 03:46:58 +0000 From: "Guo, Gua" To: "devel@edk2.groups.io" , "rebecca@bsdio.com" , Oliver Smith-Denny , "Jiang, Guomin" , "Lu, Xiaoyu1" , "Wang, Jian J" , "Yao, Jiewen" , Ard Biesheuvel , "Justen, Jordan L" , Gerd Hoffmann , "Feng, Bob C" , "Gao, Liming" , Andrew Fish , Leif Lindholm , "Kinney, Michael D" Subject: Re: [edk2-devel] [PATCH v2 03/13] BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38 Thread-Topic: [edk2-devel] [PATCH v2 03/13] BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38 Thread-Index: AQHZYZsybHiZEWpgykeiWJD1SC7pha8RG4JQ Date: Wed, 29 Mar 2023 03:46:57 +0000 Message-ID: References: <20230328173111.759017-1-rebecca@bsdio.com> <20230328173111.759017-4-rebecca@bsdio.com> In-Reply-To: <20230328173111.759017-4-rebecca@bsdio.com> Accept-Language: en-US X-Mentions: rebecca@bsdio.com X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BL1PR11MB5478:EE_|PH8PR11MB7023:EE_ x-ms-office365-filtering-correlation-id: 7dfc8efc-e3f1-4b3c-6e8f-08db30083ee8 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: KQG1PLJtC4JI3IiYmPCRHHncXq0pjTC03uDEXJoQLmqDRYpwnlCMXPpMHRPo95UnyMAbYbvPhf8Z3eOc/CMVWbm5JE/S0ALJPHoonovebPLEJdoUKLaYd5VtmeDXeqVdjzj6zwzLV+H2oQapJXUG0RTpSsMZwqEUsSmDNNf9Tz6KSrK7j5JXXvMdheOIEVOheLeGiP3bOdiTTm8pGmQJOXNXHpxP7c4WH97RMY0BaTBJbnQjuFJYj6oEBF786zydgiViBwfaYC9ykmy1xotZemQiqobYsPRgD3d7VImbB9MGNu767Wj6eY2qZPPU1vKJ/VduvHWvZlRiCoG5BYKAVrK99zRRCa5R0SCc5aKXanggeZTU06bQkZS0syg0iGvorZBqpd8no0iJwmeFUCGcZJwtrxnRqtYfmkriE/sPNB3ZpOdeuK0P41dRVFkIZXJLaoNv3Smdjq45fGng8LmvdKvKVAHYmgkeemnOV+p9UBYd5OZkPZJlkub/5RJRYd7WEb/tBYi30wTEEnZnl3pt8NE+4k6BGFxslbHo9EKjEdL4sC8W2Z+ASEcvRfyV+bV7sK/Lt1GFFX2wL5jrdG+j/fLvNXeR0KoUjPxj6Ho7ecUsnXBt7n+ZNm2J5VZMay1nyZGIciaQ23D18pM4skeBlVfBn1G5FYa7fUXqIxtOz43pR5SIBnvbBZ2pbwKbK+fS x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR11MB5478.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(376002)(396003)(136003)(366004)(39860400002)(346002)(451199021)(2906002)(38070700005)(86362001)(33656002)(166002)(15650500001)(38100700002)(66899021)(478600001)(45080400002)(53546011)(966005)(8676002)(83380400001)(7696005)(55016003)(6506007)(9686003)(6636002)(110136005)(71200400001)(316002)(66446008)(66556008)(66476007)(66946007)(64756008)(5660300002)(76116006)(99936003)(186003)(26005)(122000001)(8936002)(52536014)(82960400001)(921005)(41300700001)(30864003)(579004)(559001)(460985005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?878KCoWWSWuLSj1F1KwLU8xvmVMQhv7sVYLLi8f30CCAcYbFsHMn93UEunyx?= =?us-ascii?Q?tnTgQSPJRmIIhwD4UTz4QMU579DRd9RF4i8ftU1eYE5K+UtnWMmXkxAPz7gE?= =?us-ascii?Q?nIzfGYqpjXMvwENQohEIgq2Gt1i5zartbchmH4UPAjFaLmPNw4Ntzz0Km6Nq?= =?us-ascii?Q?4XAn2hCana5Txoe6qkxLwYV2abkvlwp1sXgNrhACHpLW+dNn0VhSFxiJm8VA?= =?us-ascii?Q?S+qTZpAn/mTOqQ6RkpDrGyyVqBhymER/n8JWFL7+U53ZRwSjPe6a8DHXYzay?= =?us-ascii?Q?256KmClpCmsiMSlVPyFyoTSMHFxEmV3i3Hf5I6+jyizXjtbUO10prHQv3Wzi?= =?us-ascii?Q?dYw0eu37uauI4KrakV8JBVk84Z6rjFagAyDede8L8zP7o2htgisr0DSJj3fe?= =?us-ascii?Q?XtrckhRIeZFoAIbZte10SY4dxLzMExllngkOC2vwnsk+8VGinFSZMy1WMce2?= =?us-ascii?Q?rzdnONLd8RnryY6sj9eZd/NiUkj9lxv8wJ7sghb+w63KwiIJTmG2zilpPPQi?= =?us-ascii?Q?nR3BPgR5sd0wtI6uj5rAO//eI3qcOmgACydVJtVvPyvTIIobJP0pjlCzg5Tr?= =?us-ascii?Q?aFM/C/cPJxp21IFqZEwZ2Y+pV2VVIbRC6k8rKNvfIOd9I9wiPX/U0ZrrA5Wg?= =?us-ascii?Q?TP/scdXHKsH2M4mJJAe2yOcAXLxw3HycHrS6BHKinXO6TWo6bjpcIKAQ3rJ3?= =?us-ascii?Q?fYEDBvhIX69ydc3ZANbeckieclEDt0rIhjGg1KMCQuW1FiwLy4K1+CwD1/bk?= =?us-ascii?Q?V/w8Pl1BpFj5NcCjPn6kHHRBeiEFiQ/BNlhs6YRRfxKakWFpc0E66vQP1Ua/?= =?us-ascii?Q?xCsqShHqeIvgEzWqCEDe06KbJPfQb+brFQEWctNGh1F1vzViVSe6G4vnDNC1?= =?us-ascii?Q?WKfAEKP/wM170wHVGi+na/KKAbtMi2fvqa3Fy8enJ9AzSWtnWTDpfkrjiLxF?= =?us-ascii?Q?uZhguoZU1GfnHI3X00B8QUg5IYXRypB4ivlG3iLY53Vpt4fDhVX2Fh+NKgAp?= =?us-ascii?Q?AUfr6IKKc0eTvn7+6phh9pTKAN64mt4ObSRoVfBIT9d/HkY97ctPjbHkKCtW?= =?us-ascii?Q?QBIiNJecPPX0jQBhbmfpzclkG7M0WtIFlPpPx6znoTFKC2S1OZrPydM35xtu?= =?us-ascii?Q?dQZGDUvq/99EU91CFndt0JLHLtWV97BjBILpMTsRX6saEWlvvHUonvR833j9?= =?us-ascii?Q?FuAtFEoCIBhlhm0GxbNRbVYklpKgHvB3ce7JwBoWQUb1wY4oDDVpJrTFQAs8?= =?us-ascii?Q?K3awvvGJ0z8tZkV9OL7TlyQ1r65WFuVEmmBNGFuPFE4j1V9R2OFjwyFoYOn6?= =?us-ascii?Q?ExR71mKgFqIidsk8IEuN7foUsTOcFB8m16LDnd+0Ho0TfJQe3xG+lHA9ea3u?= =?us-ascii?Q?dyCaK32/ZTEkdF/vCrb+DHq78eTiuo6+hCK1G907Q4BqGifn+kql+Nv9ZhYt?= =?us-ascii?Q?ksTrvJFEcsNNNP2RqKiUJDyYGppzr8eaDmOcAXtHFBepoX0xMCzZ6XjZLgzB?= =?us-ascii?Q?lqOImgXWGQt0sc3sZTTpp/S1ZVXzKsrrhzSCa6x2ePl5AUcisHzlE45Khqmy?= =?us-ascii?Q?M+ZLomQmNvqVWyh+S/0=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BL1PR11MB5478.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7dfc8efc-e3f1-4b3c-6e8f-08db30083ee8 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Mar 2023 03:46:57.5883 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: TmNAdY55Yh/pcfGN3K6FoWhdzpRTZYZaoTtLpOdQLpgwkmPnluy59GHQvZk9wB+3DL2FG2XGBKJUQ6v70xe2Zw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR11MB7023 Return-Path: gua.guo@intel.com X-OriginatorOrg: intel.com X-Groupsio-MsgNum: 102086 Content-Language: en-US Content-Type: multipart/related; boundary="_004_BL1PR11MB5478B90873AF5F75AEB77E88EF899BL1PR11MB5478namp_"; type="multipart/alternative" --_004_BL1PR11MB5478B90873AF5F75AEB77E88EF899BL1PR11MB5478namp_ Content-Type: multipart/alternative; boundary="_000_BL1PR11MB5478B90873AF5F75AEB77E88EF899BL1PR11MB5478namp_" --_000_BL1PR11MB5478B90873AF5F75AEB77E88EF899BL1PR11MB5478namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable @rebecca@bsdio.com On this part, whether is better to change it from "objcopy" to "llvm-objcop= y" Windows path: C:\Program Files (x86)\llvm-objcopy.exe Linux path: /usr/bin/llvm-objcopy [cid:image001.png@01D96232.F9B3D760] Thanks, Gua -----Original Message----- From: devel@edk2.groups.io On Behalf Of Rebecca Cran Sent: Wednesday, March 29, 2023 1:31 AM To: devel@edk2.groups.io; Oliver Smith-Denny ; Jiang, = Guomin ; Lu, Xiaoyu1 ; Wang, = Jian J ; Yao, Jiewen ; Ard Bie= sheuvel ; Justen, Jordan L ; Gerd Hoffmann ; Feng, Bob C ; Gao, Liming ; Andrew Fish ; = Leif Lindholm ; Kinney, Michael D Cc: Rebecca Cran Subject: [edk2-devel] [PATCH v2 03/13] BaseTools: Update CLANGDWARF toolcha= in and remove CLANG35 and CLANG38 Update the CLANGDWARF toolchain definition with the settings from CLANG38, = and delete the CLANG35 and CLANG38 toolchains. The CLANG35 and CLANG38 toolchains were added for compatibility with ARM's = proprietary clang-based toolchain. Things have since moved on, and with the= latest clang version being 16.0.0, versions 3.5 and 3.9 are obsolete and c= an be removed. Signed-off-by: Rebecca Cran > --- BaseTools/Conf/tools_def.template | 453 ++++++++------------ 1 file changed, 171 insertions(+), 282 deletions(-) diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.t= emplate index 2f0b804acef3..3abd22615533 100755 --- a/BaseTools/Conf/tools_def.template +++ b/BaseTools/Conf/tools_def.template @@ -273,32 +273,21 @@ DEFINE DTC_BIN =3D ENV(DTC_PREFIX)dtc # Required to build platforms or ACPI tables: # Intel(r) ACPI Compiler from # https://acpica.org/downloads -# -# CLANG35 -Linux,Windows- Requires: -# Clang v3.5 or later, and GNU binutils target= ing aarch64-linux-gnu or arm-linux-gnueabi -# Optional: -# Required to build platforms or ACPI tables: -# Intel(r) ACPI Compiler from -# https://acpica.org/downloads -# CLANG38 -Linux- Requires: -# Clang v3.8, LLVMgold plugin and GNU binutils= 2.26 targeting x86_64-linux-gnu, aarch64-linux-gnu or arm-linux-gnueabi -# Clang v3.9 or later, LLVMgold plugin and GNU= binutils 2.28 targeting x86_64-linux-gnu, aarch64-linux-gnu or arm-linux-g= nueabi +# CLANGDWARF -Linux- Requires: +# Clang 9 or above, and GNU binutils targeting= x86_64-linux-gnu, aaarch64-linux-gnu or arm-linux-gnuaebi # Optional: # Required to build platforms or ACPI tables: # Intel(r) ACPI Compiler from # https://acpica.org/downloads +# Required to compile nasm source: +# nasm compiler from +# NASM -- https://nasm.us # CLANGPDB -Linux, Windows, Mac- Requires: # Clang 9 or above from http://releases.llvm.or= g/ # Optional: # Required to compile nasm source: # nasm compiler from # NASM -- http://www.nasm.us/ -# CLANGDWARF -Linux, Windows, Mac- Requires: -# Clang 9 or above from http://releases.llvm.o= rg/ -# Optional: -# Required to compile nasm source: -# nasm compiler from -# NASM -- http://www.nasm.us/ # VS2008x86 -win64- Requires: # Microsoft Visual Studio 2008 (x86) # Microsoft Windows Server 2003 Driver Developm= ent Kit (Microsoft WINDDK) version 3790.1830 @@ -2483,187 +2472,187 @@ RELEASE_GCC5_LOONGARCH64_CC_FLAGS =3D DEF(G= CC5_LOONGARCH64_CC_FLAGS) -Wno-un # PE/COFF binaries using LLVM/Clang with Link Time Optimization enabled #= #########################################################################= ########### -*_CLANG38_*_*_FAMILY =3D GCC -*_CLANG38_*_MAKE_PATH =3D make -*_CLANG38_*_*_DLL =3D ENV(CLANG38_DLL) -*_CLANG38_*_ASL_PATH =3D DEF(UNIX_IASL_BIN) +*_CLANGDWARF_*_*_FAMILY =3D GCC +*_CLANGDWARF_*_MAKE_PATH =3D make +*_CLANGDWARF_*_*_DLL =3D ENV(CLANGDWARF_DLL) +*_CLANGDWARF_*_ASL_PATH =3D DEF(UNIX_IASL_BIN) -*_CLANG38_*_APP_FLAGS =3D -*_CLANG38_*_ASL_FLAGS =3D DEF(IASL_FLAGS) -*_CLANG38_*_ASL_OUTFLAGS =3D DEF(IASL_OUTFLAGS) -*_CLANG38_*_DEPS_FLAGS =3D DEF(GCC_DEPS_FLAGS) -DEFINE CLANG38_IA32_PREFIX =3D ENV(CLANG38_BIN) -DEFINE CLANG38_X64_PREFIX =3D ENV(CLANG38_BIN) +*_CLANGDWARF_*_APP_FLAGS =3D +*_CLANGDWARF_*_ASL_FLAGS =3D DEF(IASL_FLAGS) +*_CLANGDWARF_*_ASL_OUTFLAGS =3D DEF(IASL_OUTFLAGS) +*_CLANGDWARF_*_DEPS_FLAGS =3D DEF(GCC_DEPS_FLAGS) +DEFINE CLANGDWARF_IA32_PREFIX =3D ENV(CLANGDWARF_BIN) +DEFINE CLANGDWARF_X64_PREFIX =3D ENV(CLANGDWARF_BIN) -DEFINE CLANG38_IA32_TARGET =3D -target i686-pc-linux-gnu -DEFINE CLANG38_X64_TARGET =3D -target x86_64-pc-linux-gnu +DEFINE CLANGDWARF_IA32_TARGET =3D -target i686-pc-linux-gnu +DEFINE CLANGDWARF_X64_TARGET =3D -target x86_64-pc-linux-gnu -DEFINE CLANG38_WARNING_OVERRIDES =3D -Wno-parentheses-equality -Wno-tau= tological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empt= y-body -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-option = -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-unaligned-acce= ss -DEFINE CLANG38_ALL_CC_FLAGS =3D DEF(GCC48_ALL_CC_FLAGS) DEF(CLANG3= 8_WARNING_OVERRIDES) -fno-stack-protector -mms-bitfields -Wno-address -Wno-= shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redecla= ration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-= implicit-float -ftrap-function=3Dundefined_behavior_has_been_optimized_awa= y_by_clang -funsigned-char -fno-ms-extensions -Wno-null-dereference +DEFINE CLANGDWARF_WARNING_OVERRIDES =3D -Wno-parentheses-equality -Wno-= tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-e= mpty-body -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-opti= on -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-unaligned-a= ccess +DEFINE CLANGDWARF_ALL_CC_FLAGS =3D DEF(GCC48_ALL_CC_FLAGS) DEF(CLA= NGDWARF_WARNING_OVERRIDES) -fno-stack-protector -mms-bitfields -Wno-address= -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-r= edeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float= -mno-implicit-float -ftrap-function=3Dundefined_behavior_has_been_optimiz= ed_away_by_clang -funsigned-char -fno-ms-extensions -Wno-null-dereference ########################### -# CLANG38 IA32 definitions +# CLANGDWARF IA32 definitions ########################### -*_CLANG38_IA32_OBJCOPY_PATH =3D objcopy -*_CLANG38_IA32_CC_PATH =3D DEF(CLANG38_IA32_PREFIX)clang -*_CLANG38_IA32_SLINK_PATH =3D DEF(CLANG38_IA32_PREFIX)llvm-ar -*_CLANG38_IA32_DLINK_PATH =3D DEF(CLANG38_IA32_PREFIX)clang -*_CLANG38_IA32_ASLDLINK_PATH =3D DEF(CLANG38_IA32_PREFIX)clang -*_CLANG38_IA32_ASM_PATH =3D DEF(CLANG38_IA32_PREFIX)clang -*_CLANG38_IA32_PP_PATH =3D DEF(CLANG38_IA32_PREFIX)clang -*_CLANG38_IA32_VFRPP_PATH =3D DEF(CLANG38_IA32_PREFIX)clang -*_CLANG38_IA32_ASLCC_PATH =3D DEF(CLANG38_IA32_PREFIX)clang -*_CLANG38_IA32_ASLPP_PATH =3D DEF(CLANG38_IA32_PREFIX)clang -*_CLANG38_IA32_RC_PATH =3D objcopy - -*_CLANG38_IA32_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto= DEF(CLANG38_IA32_TARGET) -*_CLANG38_IA32_ASLDLINK_FLAGS =3D DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) = -Wl,-m,elf_i386 -*_CLANG38_IA32_ASM_FLAGS =3D DEF(GCC5_ASM_FLAGS) -m32 -march=3D= i386 DEF(CLANG38_IA32_TARGET) -*_CLANG38_IA32_RC_FLAGS =3D DEF(GCC_IA32_RC_FLAGS) -*_CLANG38_IA32_OBJCOPY_FLAGS =3D -*_CLANG38_IA32_NASM_FLAGS =3D -f elf32 -*_CLANG38_IA32_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANG38_IA32= _TARGET) -*_CLANG38_IA32_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_I= A32_TARGET) -*_CLANG38_IA32_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_I= A32_TARGET) - -DEBUG_CLANG38_IA32_CC_FLAGS =3D DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz= -flto -march=3Di586 DEF(CLANG38_IA32_TARGET) -g -malign-double -DEBUG_CLANG38_IA32_DLINK_FLAGS =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -fl= to -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=3Delf32-i386 -DEBUG_CLANG38_IA32_DLINK2_FLAGS =3D DEF(GCC5_IA32_DLINK2_FLAGS) -O3 - -RELEASE_CLANG38_IA32_CC_FLAGS =3D DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz= -flto -march=3Di586 DEF(CLANG38_IA32_TARGET) -malign-double -RELEASE_CLANG38_IA32_DLINK_FLAGS =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -fl= to -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=3Delf32-i386 -RELEASE_CLANG38_IA32_DLINK2_FLAGS =3D DEF(GCC5_IA32_DLINK2_FLAGS) -O3 - -NOOPT_CLANG38_IA32_CC_FLAGS =3D DEF(CLANG38_ALL_CC_FLAGS) -m32 -O0= -march=3Di586 DEF(CLANG38_IA32_TARGET) -g -malign-double -NOOPT_CLANG38_IA32_DLINK_FLAGS =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl= ,-O0 -Wl,-melf_i386 -Wl,--oformat=3Delf32-i386 -NOOPT_CLANG38_IA32_DLINK2_FLAGS =3D DEF(GCC5_IA32_DLINK2_FLAGS) -O0 +*_CLANGDWARF_IA32_OBJCOPY_PATH =3D objcopy +*_CLANGDWARF_IA32_CC_PATH =3D DEF(CLANGDWARF_IA32_PREFIX)clan= g +*_CLANGDWARF_IA32_SLINK_PATH =3D DEF(CLANGDWARF_IA32_PREFIX)llvm= -ar +*_CLANGDWARF_IA32_DLINK_PATH =3D DEF(CLANGDWARF_IA32_PREFIX)clan= g +*_CLANGDWARF_IA32_ASLDLINK_PATH =3D DEF(CLANGDWARF_IA32_PREFIX)clan= g +*_CLANGDWARF_IA32_ASM_PATH =3D DEF(CLANGDWARF_IA32_PREFIX)clan= g +*_CLANGDWARF_IA32_PP_PATH =3D DEF(CLANGDWARF_IA32_PREFIX)clan= g +*_CLANGDWARF_IA32_VFRPP_PATH =3D DEF(CLANGDWARF_IA32_PREFIX)clan= g +*_CLANGDWARF_IA32_ASLCC_PATH =3D DEF(CLANGDWARF_IA32_PREFIX)clan= g +*_CLANGDWARF_IA32_ASLPP_PATH =3D DEF(CLANGDWARF_IA32_PREFIX)clan= g +*_CLANGDWARF_IA32_RC_PATH =3D objcopy + +*_CLANGDWARF_IA32_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -m32 -fno-= lto DEF(CLANGDWARF_IA32_TARGET) +*_CLANGDWARF_IA32_ASLDLINK_FLAGS =3D DEF(GCC5_IA32_X64_ASLDLINK_FLAG= S) -Wl,-m,elf_i386 +*_CLANGDWARF_IA32_ASM_FLAGS =3D DEF(GCC5_ASM_FLAGS) -m32 -march= =3Di386 DEF(CLANGDWARF_IA32_TARGET) +*_CLANGDWARF_IA32_RC_FLAGS =3D DEF(GCC_IA32_RC_FLAGS) +*_CLANGDWARF_IA32_OBJCOPY_FLAGS =3D +*_CLANGDWARF_IA32_NASM_FLAGS =3D -f elf32 +*_CLANGDWARF_IA32_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANGDWAR= F_IA32_TARGET) +*_CLANGDWARF_IA32_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANGD= WARF_IA32_TARGET) +*_CLANGDWARF_IA32_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANGD= WARF_IA32_TARGET) + +DEBUG_CLANGDWARF_IA32_CC_FLAGS =3D DEF(CLANGDWARF_ALL_CC_FLAGS) -m= 32 -Oz -flto -march=3Di586 DEF(CLANGDWARF_IA32_TARGET) -g -malign-double +DEBUG_CLANGDWARF_IA32_DLINK_FLAGS =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) = -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=3Delf32-i386 +DEBUG_CLANGDWARF_IA32_DLINK2_FLAGS =3D DEF(GCC5_IA32_DLINK2_FLAGS) -O3 + +RELEASE_CLANGDWARF_IA32_CC_FLAGS =3D DEF(CLANGDWARF_ALL_CC_FLAGS) -m= 32 -Oz -flto -march=3Di586 DEF(CLANGDWARF_IA32_TARGET) -malign-double +RELEASE_CLANGDWARF_IA32_DLINK_FLAGS =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) = -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=3Delf32-i386 +RELEASE_CLANGDWARF_IA32_DLINK2_FLAGS =3D DEF(GCC5_IA32_DLINK2_FLAGS) -O3 + +NOOPT_CLANGDWARF_IA32_CC_FLAGS =3D DEF(CLANGDWARF_ALL_CC_FLAGS) -m= 32 -O0 -march=3Di586 DEF(CLANGDWARF_IA32_TARGET) -g -malign-double +NOOPT_CLANGDWARF_IA32_DLINK_FLAGS =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) = -Wl,-O0 -Wl,-melf_i386 -Wl,--oformat=3Delf32-i386 +NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS =3D DEF(GCC5_IA32_DLINK2_FLAGS) -O0 ########################## -# CLANG38 X64 definitions +# CLANGDWARF X64 definitions ########################## -*_CLANG38_X64_OBJCOPY_PATH =3D objcopy -*_CLANG38_X64_CC_PATH =3D DEF(CLANG38_X64_PREFIX)clang -*_CLANG38_X64_SLINK_PATH =3D DEF(CLANG38_X64_PREFIX)llvm-ar -*_CLANG38_X64_DLINK_PATH =3D DEF(CLANG38_X64_PREFIX)clang -*_CLANG38_X64_ASLDLINK_PATH =3D DEF(CLANG38_X64_PREFIX)clang -*_CLANG38_X64_ASM_PATH =3D DEF(CLANG38_X64_PREFIX)clang -*_CLANG38_X64_PP_PATH =3D DEF(CLANG38_X64_PREFIX)clang -*_CLANG38_X64_VFRPP_PATH =3D DEF(CLANG38_X64_PREFIX)clang -*_CLANG38_X64_ASLCC_PATH =3D DEF(CLANG38_X64_PREFIX)clang -*_CLANG38_X64_ASLPP_PATH =3D DEF(CLANG38_X64_PREFIX)clang -*_CLANG38_X64_RC_PATH =3D objcopy - -*_CLANG38_X64_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto = DEF(CLANG38_X64_TARGET) -*_CLANG38_X64_ASLDLINK_FLAGS =3D DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -= Wl,-m,elf_x86_64 -*_CLANG38_X64_ASM_FLAGS =3D DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANG3= 8_X64_TARGET) -*_CLANG38_X64_RC_FLAGS =3D DEF(GCC_X64_RC_FLAGS) -*_CLANG38_X64_OBJCOPY_FLAGS =3D -*_CLANG38_X64_NASM_FLAGS =3D -f elf64 -*_CLANG38_X64_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANG38_X64_T= ARGET) -*_CLANG38_X64_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_X6= 4_TARGET) -*_CLANG38_X64_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_X6= 4_TARGET) - -DEBUG_CLANG38_X64_CC_FLAGS =3D DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DE= FIAPI=3D__attribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpie -Oz -= flto DEF(CLANG38_X64_TARGET) -g -DEBUG_CLANG38_X64_DLINK_FLAGS =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -flt= o -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=3Delf64-x86-64 -Wl,-pie -mcmodel= =3Dsmall -DEBUG_CLANG38_X64_DLINK2_FLAGS =3D DEF(GCC5_X64_DLINK2_FLAGS) -O3 - -RELEASE_CLANG38_X64_CC_FLAGS =3D DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DE= FIAPI=3D__attribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpie -Oz -= flto DEF(CLANG38_X64_TARGET) -RELEASE_CLANG38_X64_DLINK_FLAGS =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -flt= o -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=3Delf64-x86-64 -Wl,-pie -mcmodel= =3Dsmall -RELEASE_CLANG38_X64_DLINK2_FLAGS =3D DEF(GCC5_X64_DLINK2_FLAGS) -O3 - -NOOPT_CLANG38_X64_CC_FLAGS =3D DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DE= FIAPI=3D__attribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpie -O0 D= EF(CLANG38_X64_TARGET) -g -NOOPT_CLANG38_X64_DLINK_FLAGS =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,= -O0 -Wl,-melf_x86_64 -Wl,--oformat=3Delf64-x86-64 -Wl,-pie -mcmodel=3Dsmall -NOOPT_CLANG38_X64_DLINK2_FLAGS =3D DEF(GCC5_X64_DLINK2_FLAGS) -O0 +*_CLANGDWARF_X64_OBJCOPY_PATH =3D objcopy +*_CLANGDWARF_X64_CC_PATH =3D DEF(CLANGDWARF_X64_PREFIX)clang +*_CLANGDWARF_X64_SLINK_PATH =3D DEF(CLANGDWARF_X64_PREFIX)llvm-a= r +*_CLANGDWARF_X64_DLINK_PATH =3D DEF(CLANGDWARF_X64_PREFIX)clang +*_CLANGDWARF_X64_ASLDLINK_PATH =3D DEF(CLANGDWARF_X64_PREFIX)clang +*_CLANGDWARF_X64_ASM_PATH =3D DEF(CLANGDWARF_X64_PREFIX)clang +*_CLANGDWARF_X64_PP_PATH =3D DEF(CLANGDWARF_X64_PREFIX)clang +*_CLANGDWARF_X64_VFRPP_PATH =3D DEF(CLANGDWARF_X64_PREFIX)clang +*_CLANGDWARF_X64_ASLCC_PATH =3D DEF(CLANGDWARF_X64_PREFIX)clang +*_CLANGDWARF_X64_ASLPP_PATH =3D DEF(CLANGDWARF_X64_PREFIX)clang +*_CLANGDWARF_X64_RC_PATH =3D objcopy + +*_CLANGDWARF_X64_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -m64 -fno-l= to DEF(CLANGDWARF_X64_TARGET) +*_CLANGDWARF_X64_ASLDLINK_FLAGS =3D DEF(GCC5_IA32_X64_ASLDLINK_FLAGS= ) -Wl,-m,elf_x86_64 +*_CLANGDWARF_X64_ASM_FLAGS =3D DEF(GCC5_ASM_FLAGS) -m64 DEF(CLA= NGDWARF_X64_TARGET) +*_CLANGDWARF_X64_RC_FLAGS =3D DEF(GCC_X64_RC_FLAGS) +*_CLANGDWARF_X64_OBJCOPY_FLAGS =3D +*_CLANGDWARF_X64_NASM_FLAGS =3D -f elf64 +*_CLANGDWARF_X64_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANGDWARF= _X64_TARGET) +*_CLANGDWARF_X64_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANGDW= ARF_X64_TARGET) +*_CLANGDWARF_X64_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANGDW= ARF_X64_TARGET) + +DEBUG_CLANGDWARF_X64_CC_FLAGS =3D DEF(CLANGDWARF_ALL_CC_FLAGS) -m6= 4 "-DEFIAPI=3D__attribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpie= -Oz -flto DEF(CLANGDWARF_X64_TARGET) -g +DEBUG_CLANGDWARF_X64_DLINK_FLAGS =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -= flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=3Delf64-x86-64 -Wl,-pie -mcmode= l=3Dsmall +DEBUG_CLANGDWARF_X64_DLINK2_FLAGS =3D DEF(GCC5_X64_DLINK2_FLAGS) -O3 + +RELEASE_CLANGDWARF_X64_CC_FLAGS =3D DEF(CLANGDWARF_ALL_CC_FLAGS) -m6= 4 "-DEFIAPI=3D__attribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpie= -Oz -flto DEF(CLANGDWARF_X64_TARGET) +RELEASE_CLANGDWARF_X64_DLINK_FLAGS =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -= flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat=3Delf64-x86-64 -Wl,-pie -mcmode= l=3Dsmall -fuse-ld=3Dlld +RELEASE_CLANGDWARF_X64_DLINK2_FLAGS =3D DEF(GCC5_X64_DLINK2_FLAGS) -O3 -= fuse-ld=3Dlld + +NOOPT_CLANGDWARF_X64_CC_FLAGS =3D DEF(CLANGDWARF_ALL_CC_FLAGS) -m6= 4 "-DEFIAPI=3D__attribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpie= -O0 DEF(CLANGDWARF_X64_TARGET) -g +NOOPT_CLANGDWARF_X64_DLINK_FLAGS =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -= flto -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat=3Delf64-x86-64 -Wl,-pie -mcmode= l=3Dsmall +NOOPT_CLANGDWARF_X64_DLINK2_FLAGS =3D DEF(GCC5_X64_DLINK2_FLAGS) -O0 ################## -# CLANG38 ARM definitions +# CLANGDWARF ARM definitions ################## -DEFINE CLANG38_ARM_TARGET =3D -target arm-linux-gnueabi -DEFINE CLANG38_ARM_CC_FLAGS =3D DEF(GCC_ARM_CC_FLAGS) DEF(CLANG38_ARM= _TARGET) DEF(CLANG38_WARNING_OVERRIDES) -mno-movt -DEFINE CLANG38_ARM_DLINK_FLAGS =3D DEF(CLANG38_ARM_TARGET) DEF(GCC_ARM_D= LINK_FLAGS) - -*_CLANG38_ARM_PP_FLAGS =3D DEF(GCC_PP_FLAGS) -*_CLANG38_ARM_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -*_CLANG38_ARM_APP_FLAGS =3D -*_CLANG38_ARM_ASL_FLAGS =3D DEF(IASL_FLAGS) -*_CLANG38_ARM_ASL_OUTFLAGS =3D DEF(IASL_OUTFLAGS) -*_CLANG38_ARM_DTCPP_FLAGS =3D DEF(GCC_DTCPP_FLAGS) - -*_CLANG38_ARM_CC_PATH =3D ENV(CLANG38_BIN)clang -*_CLANG38_ARM_ASM_PATH =3D ENV(CLANG38_BIN)clang -*_CLANG38_ARM_PP_PATH =3D ENV(CLANG38_BIN)clang -*_CLANG38_ARM_VFRPP_PATH =3D ENV(CLANG38_BIN)clang -*_CLANG38_ARM_ASLCC_PATH =3D ENV(CLANG38_BIN)clang -*_CLANG38_ARM_ASLPP_PATH =3D ENV(CLANG38_BIN)clang -*_CLANG38_ARM_DLINK_PATH =3D ENV(CLANG38_BIN)clang -*_CLANG38_ARM_ASLDLINK_PATH =3D ENV(CLANG38_BIN)clang - -*_CLANG38_ARM_SLINK_PATH =3D ENV(CLANG38_BIN)llvm-ar -*_CLANG38_ARM_RC_PATH =3D ENV(CLANG38_ARM_PREFIX)objcopy - -*_CLANG38_ARM_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -fno-lto -*_CLANG38_ARM_ASLDLINK_FLAGS =3D DEF(CLANG38_ARM_TARGET) DEF(GCC_ARM_A= SLDLINK_FLAGS) -*_CLANG38_ARM_ASM_FLAGS =3D DEF(GCC_ASM_FLAGS) DEF(CLANG38_ARM_TA= RGET) $(PLATFORM_FLAGS) -Qunused-arguments -*_CLANG38_ARM_DLINK2_FLAGS =3D DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--de= fsym=3DPECOFF_HEADER_SIZE=3D0x220 -*_CLANG38_ARM_PLATFORM_FLAGS =3D -march=3Darmv7-a -*_CLANG38_ARM_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANG38_ARM_TAR= GET) $(PLATFORM_FLAGS) -*_CLANG38_ARM_RC_FLAGS =3D DEF(GCC_ARM_RC_FLAGS) -*_CLANG38_ARM_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_ARM_= TARGET) $(PLATFORM_FLAGS) -*_CLANG38_ARM_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_ARM_= TARGET) -*_CLANG38_ARM_CC_XIPFLAGS =3D DEF(GCC_ARM_CC_XIPFLAGS) - - DEBUG_CLANG38_ARM_CC_FLAGS =3D DEF(CLANG38_ARM_CC_FLAGS) $(PLATFORM_= FLAGS) -flto -O1 - DEBUG_CLANG38_ARM_DLINK_FLAGS =3D DEF(CLANG38_ARM_DLINK_FLAGS) -flto -W= l,-O1 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=3D-pas= s-through=3D-llto-arm - NOOPT_CLANG38_ARM_CC_FLAGS =3D DEF(CLANG38_ARM_CC_FLAGS) $(PLATFORM_= FLAGS) -O0 - NOOPT_CLANG38_ARM_DLINK_FLAGS =3D DEF(CLANG38_ARM_DLINK_FLAGS) -RELEASE_CLANG38_ARM_CC_FLAGS =3D DEF(CLANG38_ARM_CC_FLAGS) $(PLATFORM_= FLAGS) -flto -O3 -RELEASE_CLANG38_ARM_DLINK_FLAGS =3D DEF(CLANG38_ARM_DLINK_FLAGS) -flto -W= l,-O3 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=3D-pas= s-through=3D-llto-arm +DEFINE CLANGDWARF_ARM_TARGET =3D -target arm-linux-gnueabi +DEFINE CLANGDWARF_ARM_CC_FLAGS =3D $(PLATFORM_FLAGS) DEF(GCC_ALL_CC_F= LAGS) -mlittle-endian -mabi=3Daapcs -fno-short-enums -funsigned-char -fomit= -frame-pointer -Wno-address -mthumb -fno-pic -fno-pie DEF(CLANGDWARF_ARM_TA= RGET) DEF(CLANGDWARF_WARNING_OVERRIDES) -mno-movt +DEFINE CLANGDWARF_ARM_DLINK_FLAGS =3D DEF(CLANGDWARF_ARM_TARGET) DEF(GCC= _ARM_DLINK_FLAGS) + +*_CLANGDWARF_ARM_PP_FLAGS =3D DEF(GCC_PP_FLAGS) +*_CLANGDWARF_ARM_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) +*_CLANGDWARF_ARM_APP_FLAGS =3D +*_CLANGDWARF_ARM_ASL_FLAGS =3D DEF(IASL_FLAGS) +*_CLANGDWARF_ARM_ASL_OUTFLAGS =3D DEF(IASL_OUTFLAGS) +*_CLANGDWARF_ARM_DTCPP_FLAGS =3D DEF(GCC_DTCPP_FLAGS) + +*_CLANGDWARF_ARM_CC_PATH =3D ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_ARM_ASM_PATH =3D ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_ARM_PP_PATH =3D ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_ARM_VFRPP_PATH =3D ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_ARM_ASLCC_PATH =3D ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_ARM_ASLPP_PATH =3D ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_ARM_DLINK_PATH =3D ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_ARM_ASLDLINK_PATH =3D ENV(CLANGDWARF_BIN)clang + +*_CLANGDWARF_ARM_SLINK_PATH =3D ENV(CLANGDWARF_BIN)llvm-ar +*_CLANGDWARF_ARM_RC_PATH =3D ENV(CLANGDWARF_ARM_PREFIX)objcopy + +*_CLANGDWARF_ARM_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -fno-lto +*_CLANGDWARF_ARM_ASLDLINK_FLAGS =3D DEF(CLANGDWARF_ARM_TARGET) DEF(GCC= _ARM_ASLDLINK_FLAGS) +*_CLANGDWARF_ARM_ASM_FLAGS =3D DEF(GCC_ASM_FLAGS) DEF(CLANGDWARF_= ARM_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments +*_CLANGDWARF_ARM_DLINK2_FLAGS =3D DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,-= -defsym=3DPECOFF_HEADER_SIZE=3D0x220 +*_CLANGDWARF_ARM_PLATFORM_FLAGS =3D -march=3Darmv7-a +*_CLANGDWARF_ARM_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_A= RM_TARGET) $(PLATFORM_FLAGS) +*_CLANGDWARF_ARM_RC_FLAGS =3D DEF(GCC_ARM_RC_FLAGS) +*_CLANGDWARF_ARM_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWAR= F_ARM_TARGET) $(PLATFORM_FLAGS) +*_CLANGDWARF_ARM_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWAR= F_ARM_TARGET) +*_CLANGDWARF_ARM_CC_XIPFLAGS =3D DEF(GCC_ARM_CC_XIPFLAGS) + + DEBUG_CLANGDWARF_ARM_CC_FLAGS =3D DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLA= TFORM_FLAGS) -flto -O1 + DEBUG_CLANGDWARF_ARM_DLINK_FLAGS =3D DEF(CLANGDWARF_ARM_DLINK_FLAGS) -f= lto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt= =3D-pass-through=3D-llto-arm + NOOPT_CLANGDWARF_ARM_CC_FLAGS =3D DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLA= TFORM_FLAGS) -O0 + NOOPT_CLANGDWARF_ARM_DLINK_FLAGS =3D DEF(CLANGDWARF_ARM_DLINK_FLAGS) +RELEASE_CLANGDWARF_ARM_CC_FLAGS =3D DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLA= TFORM_FLAGS) -flto -O3 +RELEASE_CLANGDWARF_ARM_DLINK_FLAGS =3D DEF(CLANGDWARF_ARM_DLINK_FLAGS) +-flto -Wl,-O3 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm +-Wl,-plugin-opt=3D-pass-through=3D-llto-arm ################## -# CLANG38 AARCH64 definitions +# CLANGDWARF AARCH64 definitions ################## -DEFINE CLANG38_AARCH64_TARGET =3D -target aarch64-linux-gnu -DEFINE CLANG38_AARCH64_CC_FLAGS =3D DEF(GCC_AARCH64_CC_FLAGS) DEF(CLANG38= _AARCH64_TARGET) -mcmodel=3Dsmall DEF(CLANG38_WARNING_OVERRIDES) -DEFINE CL= ANG38_AARCH64_DLINK_FLAGS =3D DEF(CLANG38_AARCH64_TARGET) DEF(GCC_AARCH64_= DLINK_FLAGS) -z common-page-size=3D0x1000 - -*_CLANG38_AARCH64_PP_FLAGS =3D DEF(GCC_PP_FLAGS) -*_CLANG38_AARCH64_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -*_CLANG38_AARCH64_APP_FLAGS =3D -*_CLANG38_AARCH64_ASL_FLAGS =3D DEF(IASL_FLAGS) -*_CLANG38_AARCH64_ASL_OUTFLAGS =3D DEF(IASL_OUTFLAGS) -*_CLANG38_AARCH64_DTCPP_FLAGS =3D DEF(GCC_DTCPP_FLAGS) - -*_CLANG38_AARCH64_CC_PATH =3D ENV(CLANG38_BIN)clang -*_CLANG38_AARCH64_ASM_PATH =3D ENV(CLANG38_BIN)clang -*_CLANG38_AARCH64_PP_PATH =3D ENV(CLANG38_BIN)clang -*_CLANG38_AARCH64_VFRPP_PATH =3D ENV(CLANG38_BIN)clang -*_CLANG38_AARCH64_ASLCC_PATH =3D ENV(CLANG38_BIN)clang -*_CLANG38_AARCH64_ASLPP_PATH =3D ENV(CLANG38_BIN)clang -*_CLANG38_AARCH64_DLINK_PATH =3D ENV(CLANG38_BIN)clang -*_CLANG38_AARCH64_ASLDLINK_PATH =3D ENV(CLANG38_BIN)clang - -*_CLANG38_AARCH64_SLINK_PATH =3D ENV(CLANG38_BIN)llvm-ar -*_CLANG38_AARCH64_RC_PATH =3D ENV(CLANG38_AARCH64_PREFIX)objcopy - -*_CLANG38_AARCH64_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -fno-lto -*_CLANG38_AARCH64_ASLDLINK_FLAGS =3D DEF(CLANG38_AARCH64_TARGET) DEF(GCC_A= ARCH64_ASLDLINK_FLAGS) -*_CLANG38_AARCH64_ASM_FLAGS =3D DEF(GCC_ASM_FLAGS) DEF(CLANG38_AARCH6= 4_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments -*_CLANG38_AARCH64_DLINK_FLAGS =3D DEF(CLANG38_AARCH64_TARGET) DEF(GCC_A= ARCH64_DLINK_FLAGS) -z common-page-size=3D0x1000 -*_CLANG38_AARCH64_DLINK_XIPFLAGS =3D -z common-page-size=3D0x20 -*_CLANG38_AARCH64_DLINK2_FLAGS =3D DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--de= fsym=3DPECOFF_HEADER_SIZE=3D0x228 -*_CLANG38_AARCH64_PLATFORM_FLAGS =3D -*_CLANG38_AARCH64_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANG38_AARCH64= _TARGET) $(PLATFORM_FLAGS) -*_CLANG38_AARCH64_RC_FLAGS =3D DEF(GCC_AARCH64_RC_FLAGS) -*_CLANG38_AARCH64_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_AARC= H64_TARGET) $(PLATFORM_FLAGS) -*_CLANG38_AARCH64_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_AARC= H64_TARGET) -*_CLANG38_AARCH64_CC_XIPFLAGS =3D DEF(GCC_AARCH64_CC_XIPFLAGS) - - DEBUG_CLANG38_AARCH64_CC_FLAGS =3D DEF(CLANG38_AARCH64_CC_FLAGS) $(PL= ATFORM_FLAGS) -flto -O1 - DEBUG_CLANG38_AARCH64_DLINK_FLAGS =3D DEF(CLANG38_AARCH64_DLINK_FLAGS) -= flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin= -opt=3D-pass-through=3D-llto-aarch64 - NOOPT_CLANG38_AARCH64_CC_FLAGS =3D DEF(CLANG38_AARCH64_CC_FLAGS) $(PL= ATFORM_FLAGS) -O0 - NOOPT_CLANG38_AARCH64_DLINK_FLAGS =3D DEF(CLANG38_AARCH64_DLINK_FLAGS) -RELEASE_CLANG38_AARCH64_CC_FLAGS =3D DEF(CLANG38_AARCH64_CC_FLAGS) $(PL= ATFORM_FLAGS) -flto -O3 -RELEASE_CLANG38_AARCH64_DLINK_FLAGS =3D DEF(CLANG38_AARCH64_DLINK_FLAGS) -= flto -Wl,-O3 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin= -opt=3D-pass-through=3D-llto-aarch64 +DEFINE CLANGDWARF_AARCH64_TARGET =3D -target aarch64-linux-gnu +DEFINE CLANGDWARF_AARCH64_CC_FLAGS =3D DEF(GCC_AARCH64_CC_FLAGS) +DEF(CLANGDWARF_AARCH64_TARGET) -mcmodel=3Dsmall +DEF(CLANGDWARF_WARNING_OVERRIDES) DEFINE CLANGDWARF_AARCH64_DLINK_FLAGS +=3D DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z +common-page-size=3D0x1000 + +*_CLANGDWARF_AARCH64_PP_FLAGS =3D DEF(GCC_PP_FLAGS) +*_CLANGDWARF_AARCH64_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) +*_CLANGDWARF_AARCH64_APP_FLAGS =3D +*_CLANGDWARF_AARCH64_ASL_FLAGS =3D DEF(IASL_FLAGS) +*_CLANGDWARF_AARCH64_ASL_OUTFLAGS =3D DEF(IASL_OUTFLAGS) +*_CLANGDWARF_AARCH64_DTCPP_FLAGS =3D DEF(GCC_DTCPP_FLAGS) + +*_CLANGDWARF_AARCH64_CC_PATH =3D ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_AARCH64_ASM_PATH =3D ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_AARCH64_PP_PATH =3D ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_AARCH64_VFRPP_PATH =3D ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_AARCH64_ASLCC_PATH =3D ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_AARCH64_ASLPP_PATH =3D ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_AARCH64_DLINK_PATH =3D ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_AARCH64_ASLDLINK_PATH =3D ENV(CLANGDWARF_BIN)clang + +*_CLANGDWARF_AARCH64_SLINK_PATH =3D ENV(CLANGDWARF_BIN)llvm-ar +*_CLANGDWARF_AARCH64_RC_PATH =3D ENV(CLANGDWARF_AARCH64_PREFIX)objc= opy + +*_CLANGDWARF_AARCH64_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -fno-lto +*_CLANGDWARF_AARCH64_ASLDLINK_FLAGS =3D DEF(CLANGDWARF_AARCH64_TARGET) DEF= (GCC_AARCH64_ASLDLINK_FLAGS) +*_CLANGDWARF_AARCH64_ASM_FLAGS =3D DEF(GCC_ASM_FLAGS) DEF(CLANGDWARF_= AARCH64_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments +*_CLANGDWARF_AARCH64_DLINK_FLAGS =3D DEF(CLANGDWARF_AARCH64_TARGET) DEF= (GCC_AARCH64_DLINK_FLAGS) -z common-page-size=3D0x1000 +*_CLANGDWARF_AARCH64_DLINK_XIPFLAGS =3D -z common-page-size=3D0x20 +*_CLANGDWARF_AARCH64_DLINK2_FLAGS =3D DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,-= -defsym=3DPECOFF_HEADER_SIZE=3D0x228 +*_CLANGDWARF_AARCH64_PLATFORM_FLAGS =3D +*_CLANGDWARF_AARCH64_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_A= ARCH64_TARGET) $(PLATFORM_FLAGS) +*_CLANGDWARF_AARCH64_RC_FLAGS =3D DEF(GCC_AARCH64_RC_FLAGS) +*_CLANGDWARF_AARCH64_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWAR= F_AARCH64_TARGET) $(PLATFORM_FLAGS) +*_CLANGDWARF_AARCH64_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWAR= F_AARCH64_TARGET) +*_CLANGDWARF_AARCH64_CC_XIPFLAGS =3D DEF(GCC_AARCH64_CC_XIPFLAGS) + + DEBUG_CLANGDWARF_AARCH64_CC_FLAGS =3D DEF(CLANGDWARF_AARCH64_CC_FLAGS= ) $(PLATFORM_FLAGS) -flto -O1 + DEBUG_CLANGDWARF_AARCH64_DLINK_FLAGS =3D DEF(CLANGDWARF_AARCH64_DLINK_FL= AGS) -flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-= plugin-opt=3D-pass-through=3D-llto-aarch64 + NOOPT_CLANGDWARF_AARCH64_CC_FLAGS =3D DEF(CLANGDWARF_AARCH64_CC_FLAGS= ) $(PLATFORM_FLAGS) -O0 + NOOPT_CLANGDWARF_AARCH64_DLINK_FLAGS =3D DEF(CLANGDWARF_AARCH64_DLINK_FL= AGS) +RELEASE_CLANGDWARF_AARCH64_CC_FLAGS =3D DEF(CLANGDWARF_AARCH64_CC_FLAGS= ) $(PLATFORM_FLAGS) -flto -O3 +RELEASE_CLANGDWARF_AARCH64_DLINK_FLAGS =3D +DEF(CLANGDWARF_AARCH64_DLINK_FLAGS) -flto -Wl,-O3 +-L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 +-Wl,-plugin-opt=3D-pass-through=3D-llto-aarch64 ##########################################################################= ########## # @@ -2763,106 +2752,6 @@ NOOPT_CLANGPDB_X64_DLINK_FLAGS =3D /NOLOGO /NO= DEFAULTLIB /IGNORE:4001 /OPT:RE NOOPT_CLANGPDB_X64_DLINK2_FLAGS =3D NOOPT_CLANGPDB_X64_GENFW_FLAGS =3D --keepexceptiontable -##########################################################################= ########## -# -# CLANGDWARF - This configuration is used to compile under Windows/Linux/M= ac to produce -# ELF binaries using LLVM/Clang/LLD with Link Time Optimiza= tion enabled -# -##########################################################= ########################## -*_CLANGDWARF_*_*_FAMILY =3D GCC -*_CLANGDWARF_*_*_BUILDRULEFAMILY =3D CLANGGCC -*_CLANGDWARF_*_MAKE_PATH =3D ENV(CLANG_HOST_BIN)make -*_CLANGDWARF_*_*_DLL =3D ENV(CLANGDWARF_DLL) -*_CLANGDWARF_*_ASL_PATH =3D DEF(UNIX_IASL_BIN) - -*_CLANGDWARF_*_APP_FLAGS =3D -*_CLANGDWARF_*_ASL_FLAGS =3D DEF(IASL_FLAGS) -*_CLANGDWARF_*_ASL_OUTFLAGS =3D DEF(IASL_OUTFLAGS) - -DEFINE CLANGDWARF_IA32_PREFIX =3D ENV(CLANG_BIN) -DEFINE CLANGDWARF_X64_PREFIX =3D ENV(CLANG_BIN) - -# LLVM/CLANG doesn't support -n link option. So, it can't share the same I= A32_X64_DLINK_COMMON flag. -# LLVM/CLANG doesn't support common page size. So, it can't share the same= GccBase.lds script. -DEFINE CLANGDWARF_IA32_X64_DLINK_COMMON =3D -nostdlib -Wl,-q,--gc-sectio= ns -z max-page-size=3D0x40 -DEFINE CLANGDWARF_DLINK2_FLAGS_COMMON =3D -Wl,--script=3D$(EDK_TOOLS_P= ATH)/Scripts/ClangBase.lds -DEFINE CLANGDWARF_IA32_X64_ASLDLINK_FLAGS =3D DEF(CLANGDWARF_IA32_X64_DLIN= K_COMMON) -Wl,--defsym=3DPECOFF_HEADER_SIZE=3D0 DEF(CLANGDWARF_DLINK2_FLAGS= _COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable -DEFINE CLANGDWARF_IA32_X64_DLINK_FLAGS =3D DEF(CLANGDWARF_IA32_X64_DLIN= K_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map= ,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive -DEFINE CLANGDWARF_IA32_DLINK2_FLAGS =3D -Wl,--defsym=3DPECOFF_HEADER= _SIZE=3D0x220 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON) -DEFINE CLANGDWARF_X64_DLINK2_FLAGS =3D -Wl,--defsym=3DPECOFF_HEADER= _SIZE=3D0x228 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON) - -########################### -# CLANGDWARF IA32 definitions -########################### -*_CLANGDWARF_IA32_CC_PATH =3D DEF(CLANGDWARF_IA32_PREFIX)clan= g -*_CLANGDWARF_IA32_SLINK_PATH =3D DEF(CLANGDWARF_IA32_PREFIX)llvm= -ar -*_CLANGDWARF_IA32_DLINK_PATH =3D DEF(CLANGDWARF_IA32_PREFIX)clan= g -*_CLANGDWARF_IA32_ASLDLINK_PATH =3D DEF(CLANGDWARF_IA32_PREFIX)clan= g -*_CLANGDWARF_IA32_ASM_PATH =3D DEF(CLANGDWARF_IA32_PREFIX)clan= g -*_CLANGDWARF_IA32_PP_PATH =3D DEF(CLANGDWARF_IA32_PREFIX)clan= g -*_CLANGDWARF_IA32_VFRPP_PATH =3D DEF(CLANGDWARF_IA32_PREFIX)clan= g -*_CLANGDWARF_IA32_ASLCC_PATH =3D DEF(CLANGDWARF_IA32_PREFIX)clan= g -*_CLANGDWARF_IA32_ASLPP_PATH =3D DEF(CLANGDWARF_IA32_PREFIX)clan= g -*_CLANGDWARF_IA32_RC_PATH =3D DEF(CLANGDWARF_IA32_PREFIX)llvm= -rc - -*_CLANGDWARF_IA32_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -m32 -fno-= lto DEF(CLANG38_IA32_TARGET) -*_CLANGDWARF_IA32_ASLDLINK_FLAGS =3D DEF(CLANGDWARF_IA32_X64_ASLDLIN= K_FLAGS) -Wl,-m,elf_i386 -fuse-ld=3Dlld -*_CLANGDWARF_IA32_ASM_FLAGS =3D DEF(GCC5_ASM_FLAGS) -m32 -march= =3Di386 DEF(CLANG38_IA32_TARGET) -*_CLANGDWARF_IA32_RC_FLAGS =3D DEF(GCC_IA32_RC_FLAGS) -*_CLANGDWARF_IA32_OBJCOPY_FLAGS =3D -*_CLANGDWARF_IA32_NASM_FLAGS =3D -f elf32 -*_CLANGDWARF_IA32_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANG38_I= A32_TARGET) -*_CLANGDWARF_IA32_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG3= 8_IA32_TARGET) -*_CLANGDWARF_IA32_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG3= 8_IA32_TARGET) - -DEBUG_CLANGDWARF_IA32_CC_FLAGS =3D DEF(CLANG38_ALL_CC_FLAGS) -m32 = -Oz -flto -march=3Di586 DEF(CLANG38_IA32_TARGET) -g -malign-double -DEBUG_CLANGDWARF_IA32_DLINK_FLAGS =3D DEF(CLANGDWARF_IA32_X64_DLINK_F= LAGS) -flto -Wl,-O3 -Wl,-melf_i386 -Wl,--oformat,elf32-i386 -DEBUG_CLANGDWARF_IA32_DLINK2_FLAGS =3D DEF(CLANGDWARF_IA32_DLINK2_FLAG= S) -O3 -fuse-ld=3Dlld - -RELEASE_CLANGDWARF_IA32_CC_FLAGS =3D DEF(CLANG38_ALL_CC_FLAGS) -m32 = -Oz -flto -march=3Di586 DEF(CLANG38_IA32_TARGET) -malign-double -RELEASE_CLANGDWARF_IA32_DLINK_FLAGS =3D DEF(CLANGDWARF_IA32_X64_DLINK_F= LAGS) -flto -Wl,-O3 -Wl,-melf_i386 -Wl,--oformat,elf32-i386 -RELEASE_CLANGDWARF_IA32_DLINK2_FLAGS =3D DEF(CLANGDWARF_IA32_DLINK2_FLAG= S) -O3 -fuse-ld=3Dlld - -NOOPT_CLANGDWARF_IA32_CC_FLAGS =3D DEF(CLANG38_ALL_CC_FLAGS) -m32 = -O0 -march=3Di586 DEF(CLANG38_IA32_TARGET) -g -malign-double -NOOPT_CLANGDWARF_IA32_DLINK_FLAGS =3D DEF(CLANGDWARF_IA32_X64_DLINK_F= LAGS) -Wl,-O0 -Wl,-melf_i386 -Wl,--oformat,elf32-i386 -NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS =3D DEF(CLANGDWARF_IA32_DLINK2_FLAG= S) -O0 -fuse-ld=3Dlld - -########################## -# CLANGDWARF X64 definitions -########################## -*_CLANGDWARF_X64_CC_PATH =3D DEF(CLANGDWARF_X64_PREFIX)clang -*_CLANGDWARF_X64_SLINK_PATH =3D DEF(CLANGDWARF_X64_PREFIX)llvm-a= r -*_CLANGDWARF_X64_DLINK_PATH =3D DEF(CLANGDWARF_X64_PREFIX)clang -*_CLANGDWARF_X64_ASLDLINK_PATH =3D DEF(CLANGDWARF_X64_PREFIX)clang -*_CLANGDWARF_X64_ASM_PATH =3D DEF(CLANGDWARF_X64_PREFIX)clang -*_CLANGDWARF_X64_PP_PATH =3D DEF(CLANGDWARF_X64_PREFIX)clang -*_CLANGDWARF_X64_VFRPP_PATH =3D DEF(CLANGDWARF_X64_PREFIX)clang -*_CLANGDWARF_X64_ASLCC_PATH =3D DEF(CLANGDWARF_X64_PREFIX)clang -*_CLANGDWARF_X64_ASLPP_PATH =3D DEF(CLANGDWARF_X64_PREFIX)clang -*_CLANGDWARF_X64_RC_PATH =3D DEF(CLANGDWARF_X64_PREFIX)llvm-r= c - -*_CLANGDWARF_X64_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -m64 -fno-l= to DEF(CLANG38_X64_TARGET) -*_CLANGDWARF_X64_ASLDLINK_FLAGS =3D DEF(CLANGDWARF_IA32_X64_ASLDLINK= _FLAGS) -Wl,-m,elf_x86_64 -fuse-ld=3Dlld -*_CLANGDWARF_X64_ASM_FLAGS =3D DEF(GCC5_ASM_FLAGS) -m64 DEF(CLA= NG38_X64_TARGET) -*_CLANGDWARF_X64_RC_FLAGS =3D DEF(GCC_X64_RC_FLAGS) -*_CLANGDWARF_X64_OBJCOPY_FLAGS =3D -*_CLANGDWARF_X64_NASM_FLAGS =3D -f elf64 -*_CLANGDWARF_X64_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANG38_X6= 4_TARGET) -*_CLANGDWARF_X64_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG38= _X64_TARGET) -*_CLANGDWARF_X64_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG38= _X64_TARGET) - -DEBUG_CLANGDWARF_X64_CC_FLAGS =3D DEF(CLANG38_ALL_CC_FLAGS) -m64 "= -DEFIAPI=3D__attribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpie -O= z -flto DEF(CLANG38_X64_TARGET) -g -DEBUG_CLANGDWARF_X64_DLINK_FLAGS =3D DEF(CLANGDWARF_IA32_X64_DLINK_FL= AGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mc= model=3Dsmall -Wl,--apply-dynamic-relocs -DEBUG_CLANGDWARF_X64_DLINK2_FLAGS =3D DEF(CLANGDWARF_X64_DLINK2_FLAGS)= -O3 -fuse-ld=3Dlld - -RELEASE_CLANGDWARF_X64_CC_FLAGS =3D DEF(CLANG38_ALL_CC_FLAGS) -m64 "= -DEFIAPI=3D__attribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpie -O= z -flto DEF(CLANG38_X64_TARGET) -RELEASE_CLANGDWARF_X64_DLINK_FLAGS =3D DEF(CLANGDWARF_IA32_X64_DLINK_FL= AGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mc= model=3Dsmall -Wl,--apply-dynamic-relocs -RELEASE_CLANGDWARF_X64_DLINK2_FLAGS =3D DEF(CLANGDWARF_X64_DLINK2_FLAGS)= -O3 -fuse-ld=3Dlld - -NOOPT_CLANGDWARF_X64_CC_FLAGS =3D DEF(CLANG38_ALL_CC_FLAGS) -m64 "= -DEFIAPI=3D__attribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpie -O= 0 DEF(CLANG38_X64_TARGET) -g -NOOPT_CLANGDWARF_X64_DLINK_FLAGS =3D DEF(CLANGDWARF_IA32_X64_DLINK_FL= AGS) -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel= =3Dsmall -Wl,--apply-dynamic-relocs -NOOPT_CLANGDWARF_X64_DLINK2_FLAGS =3D DEF(CLANGDWARF_X64_DLINK2_FLAGS)= -O0 -fuse-ld=3Dlld - # # # XCODE5 support -- 2.34.1 --_000_BL1PR11MB5478B90873AF5F75AEB77E88EF899BL1PR11MB5478namp_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

@rebecca@bsdio.com

 

On this part, whether is better to change it from= “objcopy” to “llvm-objcopy”

 

Windows path: C:\Program Files (x86)\llvm-objcopy= .exe

Linux path: /usr/bin/llvm-objcopy

 

 

Thanks,

Gua

-----O= riginal Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Rebecc= a Cran
Sent: Wednesday, March 29, 2023 1:31 AM
To: devel@edk2.groups.io; Oliver Smith-Denny <osd@smith-denny.com>; J= iang, Guomin <guomin.jiang@intel.com>; Lu, Xiaoyu1 <xiaoyu1.lu@int= el.com>; Wang, Jian J <jian.j.wang@intel.com>; Yao, Jiewen <jie= wen.yao@intel.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Justen, Jordan L <jordan.l.justen@intel.com>; Gerd Hoffmann <krax= el@redhat.com>; Feng, Bob C <bob.c.feng@intel.com>; Gao, Liming &l= t;gaoliming@byosoft.com.cn>; Andrew Fish <afish@apple.com>; Leif L= indholm <quic_llindhol@quicinc.com>; Kinney, Michael D <michael.d.= kinney@intel.com>
Cc: Rebecca Cran <rebecca@bsdio.com>
Subject: [edk2-devel] [PATCH v2 03/13] BaseTools: Update CLANGDWARF toolcha= in and remove CLANG35 and CLANG38

 

Update the CLANGDWARF toolchain definition with t= he settings from CLANG38, and delete the CLANG35 and CLANG38 toolchains.

 

The CLANG35 and CLANG38 toolchains were added for= compatibility with ARM's proprietary clang-based toolchain. Things have si= nce moved on, and with the latest clang version being 16.0.0, versions 3.5 = and 3.9 are obsolete and can be removed.

 

Signed-off-by: Rebecca Cran <r= ebecca@bsdio.com>

---

BaseTools/Conf/tools_def.template | 453 ++++++++-= -----------

1 file changed, 171 insertions(+), 282 deletions(= -)

 

diff --git a/BaseTools/Conf/tools_def.template b/= BaseTools/Conf/tools_def.template

index 2f0b804acef3..3abd22615533 100755

--- a/BaseTools/Conf/tools_def.template

+++ b/BaseTools/Conf/tools_def.template

@@ -273,32 +273,21 @@ DEFINE DTC_BIN  &= nbsp;           &nbs= p;  =3D ENV(DTC_PREFIX)dtc

#        =             &nb= sp;        Required to build platforms o= r ACPI tables:

#         = ;            &n= bsp;         Intel(r) ACPI Com= piler from

#        =             &nb= sp;          https://acpica.org/do= wnloads

-#

-#   CLANG35     -L= inux,Windows-  Requires:

-#        = ;            &n= bsp;        Clang v3.5 or later, and GNU= binutils targeting aarch64-linux-gnu or arm-linux-gnueabi

-#        = ;            &n= bsp;   Optional:

-#        = ;            &n= bsp;        Required to build platforms = or ACPI tables:

-#        = ;            &n= bsp;          Intel(r) ACPI Co= mpiler from

-#        = ;            &n= bsp;          https://acpica.org/do= wnloads

-#   CLANG38  -Linux-  Requir= es:

-#        = ;            &n= bsp;        Clang v3.8, LLVMgold plugin = and GNU binutils 2.26 targeting x86_64-linux-gnu, aarch64-linux-gnu or arm-= linux-gnueabi

-#        = ;            &n= bsp;        Clang v3.9 or later, LLVMgol= d plugin and GNU binutils 2.28 targeting x86_64-linux-gnu, aarch64-linux-gn= u or arm-linux-gnueabi

+#   CLANGDWARF  -Linux-  Req= uires:

+#        = ;            &n= bsp;        Clang 9 or above, and GNU bi= nutils targeting x86_64-linux-gnu, aaarch64-linux-gnu or arm-linux-gnuaebi<= o:p>

#        =             &nb= sp;   Optional:

#        =             &nb= sp;        Required to build platforms o= r ACPI tables:

#        =             &nb= sp;          Intel(r) ACPI Com= piler from

#        =             &nb= sp;          https://acpica.org/do= wnloads

+#        = ;            &n= bsp;        Required to compile nasm sou= rce:

+#        = ;            &n= bsp;          nasm compiler fr= om

+#        = ;            &n= bsp;          NASM -- https://nasm.us

#   CLANGPDB -Linux, Windows, Mac- = ; Requires:

#        =             &nb= sp;        Clang 9 or above from http://releases.llvm.= org/

#        =             &nb= sp;   Optional:

#        =             &nb= sp;        Required to compile nasm sour= ce:

#        =             &nb= sp;          nasm compiler fro= m

#        =             &nb= sp;          NASM -- http://www.nasm.us/

-#   CLANGDWARF -Linux, Windows, Mac-&n= bsp; Requires:

-#        = ;            &n= bsp;        Clang 9 or above from http://releases.llvm.= org/

-#        = ;            &n= bsp;   Optional:

-#        = ;            &n= bsp;        Required to compile nasm sou= rce:

-#        = ;            &n= bsp;          nasm compiler fr= om

-#        = ;            &n= bsp;          NASM -- http://www.nasm.us/

#   VS2008x86   -win64- = Requires:

#        =             &nb= sp;        Microsoft Visual Studio 2008 = (x86)

#         = ;            &n= bsp;       Microsoft Windows Server 2003= Driver Development Kit (Microsoft WINDDK) version 3790.1830

@@ -2483,187 +2472,187 @@ RELEASE_GCC5_LOONGARCH6= 4_CC_FLAGS       =3D DEF(GCC5_LOONGARCH64_CC_= FLAGS) -Wno-un

#  PE/COFF binaries using LLVM/Clang with Li= nk Time Optimization enabled  #  ################################= ####################################################

-*_CLANG38_*_*_FAMILY    &nbs= p;           =3D GCC=

-*_CLANG38_*_MAKE_PATH    &nb= sp;          =3D make

-*_CLANG38_*_*_DLL     &= nbsp;           &nbs= p; =3D ENV(CLANG38_DLL)

-*_CLANG38_*_ASL_PATH    &nbs= p;           =3D DEF(UNIX= _IASL_BIN)

+*_CLANGDWARF_*_*_FAMILY    &= nbsp;           =3D GCC

+*_CLANGDWARF_*_MAKE_PATH    =            =3D make<= /o:p>

+*_CLANGDWARF_*_*_DLL    &nbs= p;            &= nbsp; =3D ENV(CLANGDWARF_DLL)

+*_CLANGDWARF_*_ASL_PATH    &= nbsp;           =3D DEF(U= NIX_IASL_BIN)

-*_CLANG38_*_APP_FLAGS    &nb= sp;          =3D

-*_CLANG38_*_ASL_FLAGS    &nb= sp;          =3D DEF(IASL_FLAG= S)

-*_CLANG38_*_ASL_OUTFLAGS    =         =3D DEF(IASL_OUTFLAGS)

-*_CLANG38_*_DEPS_FLAGS    &n= bsp;         =3D DEF(GCC_DEPS_FLAGS= )

-DEFINE CLANG38_IA32_PREFIX   &nbs= p;      =3D ENV(CLANG38_BIN)

-DEFINE CLANG38_X64_PREFIX    = ;       =3D ENV(CLANG38_BIN)

+*_CLANGDWARF_*_APP_FLAGS    =            =3D=

+*_CLANGDWARF_*_ASL_FLAGS    =            =3D DEF(IASL_F= LAGS)

+*_CLANGDWARF_*_ASL_OUTFLAGS   &nb= sp;        =3D DEF(IASL_OUTFLAGS)

+*_CLANGDWARF_*_DEPS_FLAGS    = ;          =3D DEF(GCC_DEPS_FL= AGS)

+DEFINE CLANGDWARF_IA32_PREFIX   &= nbsp;      =3D ENV(CLANGDWARF_BIN)

+DEFINE CLANGDWARF_X64_PREFIX   &n= bsp;       =3D ENV(CLANGDWARF_BIN)=

-DEFINE CLANG38_IA32_TARGET   &nbs= p;      =3D -target i686-pc-linux-gnu

-DEFINE CLANG38_X64_TARGET    = ;       =3D -target x86_64-pc-linux-gnu<= /o:p>

+DEFINE CLANGDWARF_IA32_TARGET   &= nbsp;      =3D -target i686-pc-linux-gnu

+DEFINE CLANGDWARF_X64_TARGET   &n= bsp;       =3D -target x86_64-pc-linux-gnu

-DEFINE CLANG38_WARNING_OVERRIDES  &nbs= p; =3D -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautologica= l-constant-out-of-range-compare -Wno-empty-body -Wno-unused-const-variable = -Wno-varargs -Wno-unknown-warning-option -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-unaligned-access

-DEFINE CLANG38_ALL_CC_FLAGS   &nb= sp;     =3D DEF(GCC48_ALL_CC_FLAGS) DEF(CLANG38_WARNING= _OVERRIDES) -fno-stack-protector -mms-bitfields -Wno-address -Wno-shift-neg= ative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -f= no-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implicit-float  -ftrap-function= =3Dundefined_behavior_has_been_optimized_away_by_clang -funsigned-char -fno= -ms-extensions -Wno-null-dereference

+DEFINE CLANGDWARF_WARNING_OVERRIDES  &= nbsp; =3D -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautolog= ical-constant-out-of-range-compare -Wno-empty-body -Wno-unused-const-variab= le -Wno-varargs -Wno-unknown-warning-option -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-unaligned-access

+DEFINE CLANGDWARF_ALL_CC_FLAGS   =       =3D DEF(GCC48_ALL_CC_FLAGS) DEF(CLANGDWARF_W= ARNING_OVERRIDES) -fno-stack-protector -mms-bitfields -Wno-address -Wno-shi= ft-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclarat= ion -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implic= it-float  -ftrap-function=3Dundefined_behavior_has_been_optimized_away= _by_clang -funsigned-char -fno-ms-extensions -Wno-null-dereference

 ###########################

-# CLANG38 IA32 definitions

+# CLANGDWARF IA32 definitions

###########################

-*_CLANG38_IA32_OBJCOPY_PATH   &nb= sp;     =3D objcopy

-*_CLANG38_IA32_CC_PATH    &n= bsp;         =3D DEF(CLANG38_IA32_P= REFIX)clang

-*_CLANG38_IA32_SLINK_PATH    = ;       =3D DEF(CLANG38_IA32_PREFIX)llvm-ar

-*_CLANG38_IA32_DLINK_PATH    = ;       =3D DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_ASLDLINK_PATH   &n= bsp;    =3D DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_ASM_PATH    &= nbsp;        =3D DEF(CLANG38_IA32_PREFIX= )clang

-*_CLANG38_IA32_PP_PATH    &n= bsp;         =3D DEF(CLANG38_IA32_P= REFIX)clang

-*_CLANG38_IA32_VFRPP_PATH    = ;       =3D DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_ASLCC_PATH    &nbs= p;      =3D DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_ASLPP_PATH    = ;       =3D DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_RC_PATH    &n= bsp;         =3D objcopy=

-

-*_CLANG38_IA32_ASLCC_FLAGS   &nbs= p;      =3D DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF= (CLANG38_IA32_TARGET)

-*_CLANG38_IA32_ASLDLINK_FLAGS   &= nbsp;   =3D DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386

-*_CLANG38_IA32_ASM_FLAGS    =         =3D DEF(GCC5_ASM_FLAGS) -m32 -ma= rch=3Di386 DEF(CLANG38_IA32_TARGET)

-*_CLANG38_IA32_RC_FLAGS    &= nbsp;        =3D DEF(GCC_IA32_RC_FLAGS)<= o:p>

-*_CLANG38_IA32_OBJCOPY_FLAGS   &n= bsp;    =3D

-*_CLANG38_IA32_NASM_FLAGS    = ;       =3D -f elf32

-*_CLANG38_IA32_PP_FLAGS    &= nbsp;        =3D DEF(GCC_PP_FLAGS) DEF(C= LANG38_IA32_TARGET)

-*_CLANG38_IA32_ASLPP_FLAGS   &nbs= p;      =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_IA32_= TARGET)

-*_CLANG38_IA32_VFRPP_FLAGS   &nbs= p;      =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_IA32_= TARGET)

-

-DEBUG_CLANG38_IA32_CC_FLAGS   &nb= sp;     =3D DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto -m= arch=3Di586 DEF(CLANG38_IA32_TARGET) -g -malign-double

-DEBUG_CLANG38_IA32_DLINK_FLAGS   =    =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i38= 6 -Wl,--oformat=3Delf32-i386

-DEBUG_CLANG38_IA32_DLINK2_FLAGS   = ;  =3D DEF(GCC5_IA32_DLINK2_FLAGS) -O3

-

-RELEASE_CLANG38_IA32_CC_FLAGS   &= nbsp;   =3D DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto -march=3Di58= 6 DEF(CLANG38_IA32_TARGET) -malign-double

-RELEASE_CLANG38_IA32_DLINK_FLAGS  &nbs= p; =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--of= ormat=3Delf32-i386

-RELEASE_CLANG38_IA32_DLINK2_FLAGS   = =3D DEF(GCC5_IA32_DLINK2_FLAGS) -O3

-

-NOOPT_CLANG38_IA32_CC_FLAGS   &nb= sp;     =3D DEF(CLANG38_ALL_CC_FLAGS) -m32 -O0 -march= =3Di586 DEF(CLANG38_IA32_TARGET) -g -malign-double

-NOOPT_CLANG38_IA32_DLINK_FLAGS   =    =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_i386 -Wl,= --oformat=3Delf32-i386

-NOOPT_CLANG38_IA32_DLINK2_FLAGS   = ;  =3D DEF(GCC5_IA32_DLINK2_FLAGS) -O0

+*_CLANGDWARF_IA32_OBJCOPY_PATH   =       =3D objcopy

+*_CLANGDWARF_IA32_CC_PATH    = ;          =3D DEF(CLANGDWARF_= IA32_PREFIX)clang

+*_CLANGDWARF_IA32_SLINK_PATH   &n= bsp;       =3D DEF(CLANGDWARF_IA32_PREFIX)llv= m-ar

+*_CLANGDWARF_IA32_DLINK_PATH   &n= bsp;       =3D DEF(CLANGDWARF_IA32_PREFIX)cla= ng

+*_CLANGDWARF_IA32_ASLDLINK_PATH   = ;     =3D DEF(CLANGDWARF_IA32_PREFIX)clang

+*_CLANGDWARF_IA32_ASM_PATH   &nbs= p;         =3D DEF(CLANGDWARF_IA32_= PREFIX)clang

+*_CLANGDWARF_IA32_PP_PATH    = ;          =3D DEF(CLANGDWARF_= IA32_PREFIX)clang

+*_CLANGDWARF_IA32_VFRPP_PATH   &n= bsp;       =3D DEF(CLANGDWARF_IA32_PREFIX)cla= ng

+*_CLANGDWARF_IA32_ASLCC_PATH   &n= bsp;       =3D DEF(CLANGDWARF_IA32_PREFIX)cla= ng

+*_CLANGDWARF_IA32_ASLPP_PATH   &n= bsp;       =3D DEF(CLANGDWARF_IA32_PREFIX)cla= ng

+*_CLANGDWARF_IA32_RC_PATH    = ;          =3D objcopy

+

+*_CLANGDWARF_IA32_ASLCC_FLAGS   &= nbsp;      =3D DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto = DEF(CLANGDWARF_IA32_TARGET)

+*_CLANGDWARF_IA32_ASLDLINK_FLAGS  &nbs= p;    =3D DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386<= o:p>

+*_CLANGDWARF_IA32_ASM_FLAGS   &nb= sp;        =3D DEF(GCC5_ASM_FLAGS) -m32 = -march=3Di386 DEF(CLANGDWARF_IA32_TARGET)

+*_CLANGDWARF_IA32_RC_FLAGS   &nbs= p;         =3D DEF(GCC_IA32_RC_FLAG= S)

+*_CLANGDWARF_IA32_OBJCOPY_FLAGS   = ;     =3D

+*_CLANGDWARF_IA32_NASM_FLAGS   &n= bsp;       =3D -f elf32

+*_CLANGDWARF_IA32_PP_FLAGS   &nbs= p;         =3D DEF(GCC_PP_FLAGS) DE= F(CLANGDWARF_IA32_TARGET)

+*_CLANGDWARF_IA32_ASLPP_FLAGS   &= nbsp;      =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF= _IA32_TARGET)

+*_CLANGDWARF_IA32_VFRPP_FLAGS   &= nbsp;      =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF= _IA32_TARGET)

+

+DEBUG_CLANGDWARF_IA32_CC_FLAGS   =       =3D DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -Oz -f= lto -march=3Di586 DEF(CLANGDWARF_IA32_TARGET) -g -malign-double<= /p>

+DEBUG_CLANGDWARF_IA32_DLINK_FLAGS  &nb= sp;   =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_= i386 -Wl,--oformat=3Delf32-i386

+DEBUG_CLANGDWARF_IA32_DLINK2_FLAGS  &n= bsp;  =3D DEF(GCC5_IA32_DLINK2_FLAGS) -O3

+

+RELEASE_CLANGDWARF_IA32_CC_FLAGS  &nbs= p;    =3D DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -Oz -flto -march= =3Di586 DEF(CLANGDWARF_IA32_TARGET) -malign-double

+RELEASE_CLANGDWARF_IA32_DLINK_FLAGS   =  =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,-= -oformat=3Delf32-i386

+RELEASE_CLANGDWARF_IA32_DLINK2_FLAGS  = =3D DEF(GCC5_IA32_DLINK2_FLAGS) -O3

+

+NOOPT_CLANGDWARF_IA32_CC_FLAGS   =       =3D DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -O0 -m= arch=3Di586 DEF(CLANGDWARF_IA32_TARGET) -g -malign-double

+NOOPT_CLANGDWARF_IA32_DLINK_FLAGS  &nb= sp;   =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_i386 -= Wl,--oformat=3Delf32-i386

+NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS  &n= bsp;  =3D DEF(GCC5_IA32_DLINK2_FLAGS) -O0

 ##########################

-# CLANG38 X64 definitions

+# CLANGDWARF X64 definitions

##########################

-*_CLANG38_X64_OBJCOPY_PATH   &nbs= p;     =3D objcopy

-*_CLANG38_X64_CC_PATH    &nb= sp;         =3D DEF(CLANG38_X64_PRE= FIX)clang

-*_CLANG38_X64_SLINK_PATH    =        =3D DEF(CLANG38_X64_PREFIX)llvm-ar

-*_CLANG38_X64_DLINK_PATH    =        =3D DEF(CLANG38_X64_PREFIX)clang<= /o:p>

-*_CLANG38_X64_ASLDLINK_PATH   &nb= sp;    =3D DEF(CLANG38_X64_PREFIX)clang

-*_CLANG38_X64_ASM_PATH    &n= bsp;        =3D DEF(CLANG38_X64_PREFIX)c= lang

-*_CLANG38_X64_PP_PATH    &nb= sp;         =3D DEF(CLANG38_X64_PRE= FIX)clang

-*_CLANG38_X64_VFRPP_PATH    =        =3D DEF(CLANG38_X64_PREFIX)clang<= /o:p>

-*_CLANG38_X64_ASLCC_PATH    =        =3D DEF(CLANG38_X64_PREFIX)clang<= /o:p>

-*_CLANG38_X64_ASLPP_PATH    =        =3D DEF(CLANG38_X64_PREFIX)clang<= /o:p>

-*_CLANG38_X64_RC_PATH    &nb= sp;         =3D objcopy<= /p>

-

-*_CLANG38_X64_ASLCC_FLAGS    = ;      =3D DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(= CLANG38_X64_TARGET)

-*_CLANG38_X64_ASLDLINK_FLAGS   &n= bsp;   =3D DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64

-*_CLANG38_X64_ASM_FLAGS    &= nbsp;       =3D DEF(GCC5_ASM_FLAGS) -m64 DEF(= CLANG38_X64_TARGET)

-*_CLANG38_X64_RC_FLAGS    &n= bsp;        =3D DEF(GCC_X64_RC_FLAGS)

-*_CLANG38_X64_OBJCOPY_FLAGS   &nb= sp;    =3D

-*_CLANG38_X64_NASM_FLAGS    =        =3D -f elf64

-*_CLANG38_X64_PP_FLAGS    &n= bsp;        =3D DEF(GCC_PP_FLAGS) DEF(CL= ANG38_X64_TARGET)

-*_CLANG38_X64_ASLPP_FLAGS    = ;      =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_X64_TA= RGET)

-*_CLANG38_X64_VFRPP_FLAGS    = ;      =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_X64_TA= RGET)

-

-DEBUG_CLANG38_X64_CC_FLAGS   &nbs= p;     =3D DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAP= I=3D__attribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpie -Oz = -flto DEF(CLANG38_X64_TARGET) -g

-DEBUG_CLANG38_X64_DLINK_FLAGS   &= nbsp;  =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x86_= 64 -Wl,--oformat=3Delf64-x86-64 -Wl,-pie -mcmodel=3Dsmall

-DEBUG_CLANG38_X64_DLINK2_FLAGS   =   =3D DEF(GCC5_X64_DLINK2_FLAGS) -O3

-

-RELEASE_CLANG38_X64_CC_FLAGS   &n= bsp;   =3D DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=3D__attr= ibute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpie -Oz -flto DEF(= CLANG38_X64_TARGET)

-RELEASE_CLANG38_X64_DLINK_FLAGS   = ; =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--o= format=3Delf64-x86-64 -Wl,-pie -mcmodel=3Dsmall

-RELEASE_CLANG38_X64_DLINK2_FLAGS   =3D= DEF(GCC5_X64_DLINK2_FLAGS) -O3

-

-NOOPT_CLANG38_X64_CC_FLAGS   &nbs= p;     =3D DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAP= I=3D__attribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpie -O0 = DEF(CLANG38_X64_TARGET) -g

-NOOPT_CLANG38_X64_DLINK_FLAGS   &= nbsp;  =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64 -Wl= ,--oformat=3Delf64-x86-64 -Wl,-pie -mcmodel=3Dsmall

-NOOPT_CLANG38_X64_DLINK2_FLAGS   =   =3D DEF(GCC5_X64_DLINK2_FLAGS) -O0

+*_CLANGDWARF_X64_OBJCOPY_PATH   &= nbsp;     =3D objcopy

+*_CLANGDWARF_X64_CC_PATH    =           =3D DEF(CLANGDWARF_X= 64_PREFIX)clang

+*_CLANGDWARF_X64_SLINK_PATH   &nb= sp;       =3D DEF(CLANGDWARF_X64_PREFIX)llvm-= ar

+*_CLANGDWARF_X64_DLINK_PATH   &nb= sp;       =3D DEF(CLANGDWARF_X64_PREFIX)clang=

+*_CLANGDWARF_X64_ASLDLINK_PATH   =      =3D DEF(CLANGDWARF_X64_PREFIX)clang

+*_CLANGDWARF_X64_ASM_PATH    = ;         =3D DEF(CLANGDWARF_X64_PR= EFIX)clang

+*_CLANGDWARF_X64_PP_PATH    =           =3D DEF(CLANGDWARF_X= 64_PREFIX)clang

+*_CLANGDWARF_X64_VFRPP_PATH   &nb= sp;       =3D DEF(CLANGDWARF_X64_PREFIX)clang=

+*_CLANGDWARF_X64_ASLCC_PATH   &nb= sp;       =3D DEF(CLANGDWARF_X64_PREFIX)clang=

+*_CLANGDWARF_X64_ASLPP_PATH   &nb= sp;       =3D DEF(CLANGDWARF_X64_PREFIX)clang=

+*_CLANGDWARF_X64_RC_PATH    =           =3D objcopy

+

+*_CLANGDWARF_X64_ASLCC_FLAGS   &n= bsp;      =3D DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto D= EF(CLANGDWARF_X64_TARGET)

+*_CLANGDWARF_X64_ASLDLINK_FLAGS   = ;    =3D DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64=

+*_CLANGDWARF_X64_ASM_FLAGS   &nbs= p;        =3D DEF(GCC5_ASM_FLAGS) -m64 D= EF(CLANGDWARF_X64_TARGET)

+*_CLANGDWARF_X64_RC_FLAGS    = ;         =3D DEF(GCC_X64_RC_FLAGS)=

+*_CLANGDWARF_X64_OBJCOPY_FLAGS   =      =3D

+*_CLANGDWARF_X64_NASM_FLAGS   &nb= sp;       =3D -f elf64

+*_CLANGDWARF_X64_PP_FLAGS    = ;         =3D DEF(GCC_PP_FLAGS) DEF= (CLANGDWARF_X64_TARGET)

+*_CLANGDWARF_X64_ASLPP_FLAGS   &n= bsp;      =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_= X64_TARGET)

+*_CLANGDWARF_X64_VFRPP_FLAGS   &n= bsp;      =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_= X64_TARGET)

+

+DEBUG_CLANGDWARF_X64_CC_FLAGS   &= nbsp;     =3D DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-= DEFIAPI=3D__attribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpi= e -Oz -flto DEF(CLANGDWARF_X64_TARGET) -g

+DEBUG_CLANGDWARF_X64_DLINK_FLAGS  &nbs= p;   =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x= 86_64 -Wl,--oformat=3Delf64-x86-64 -Wl,-pie -mcmodel=3Dsmall

+DEBUG_CLANGDWARF_X64_DLINK2_FLAGS  &nb= sp;  =3D DEF(GCC5_X64_DLINK2_FLAGS) -O3

+

+RELEASE_CLANGDWARF_X64_CC_FLAGS   = ;    =3D DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=3D= __attribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpie -Oz -flt= o DEF(CLANGDWARF_X64_TARGET)

+RELEASE_CLANGDWARF_X64_DLINK_FLAGS  &n= bsp; =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,= --oformat=3Delf64-x86-64 -Wl,-pie -mcmodel=3Dsmall -fuse-ld=3Dlld

+RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   = =3D DEF(GCC5_X64_DLINK2_FLAGS) -O3 -fuse-ld=3Dlld

+

+NOOPT_CLANGDWARF_X64_CC_FLAGS   &= nbsp;     =3D DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-= DEFIAPI=3D__attribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpi= e -O0 DEF(CLANGDWARF_X64_TARGET) -g

+NOOPT_CLANGDWARF_X64_DLINK_FLAGS  &nbs= p;   =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-O0 -Wl,-melf_x= 86_64 -Wl,--oformat=3Delf64-x86-64 -Wl,-pie -mcmodel=3Dsmall

+NOOPT_CLANGDWARF_X64_DLINK2_FLAGS  &nb= sp;  =3D DEF(GCC5_X64_DLINK2_FLAGS) -O0

 ##################

-# CLANG38 ARM definitions

+# CLANGDWARF ARM definitions

##################

-DEFINE CLANG38_ARM_TARGET    = ;    =3D -target arm-linux-gnueabi

-DEFINE CLANG38_ARM_CC_FLAGS   &nb= sp;  =3D DEF(GCC_ARM_CC_FLAGS) DEF(CLANG38_ARM_TARGET) DEF(CLANG38_WAR= NING_OVERRIDES) -mno-movt

-DEFINE CLANG38_ARM_DLINK_FLAGS   =3D D= EF(CLANG38_ARM_TARGET) DEF(GCC_ARM_DLINK_FLAGS)

-

-*_CLANG38_ARM_PP_FLAGS    &n= bsp;      =3D DEF(GCC_PP_FLAGS)

-*_CLANG38_ARM_ASLCC_FLAGS    = ;    =3D DEF(GCC_ASLCC_FLAGS)

-*_CLANG38_ARM_APP_FLAGS    &= nbsp;     =3D

-*_CLANG38_ARM_ASL_FLAGS    &= nbsp;     =3D DEF(IASL_FLAGS)

-*_CLANG38_ARM_ASL_OUTFLAGS   &nbs= p;   =3D DEF(IASL_OUTFLAGS)

-*_CLANG38_ARM_DTCPP_FLAGS    = ;    =3D DEF(GCC_DTCPP_FLAGS)

-

-*_CLANG38_ARM_CC_PATH    &nb= sp;       =3D ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_ASM_PATH    &n= bsp;      =3D ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_PP_PATH    &nb= sp;       =3D ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_VFRPP_PATH    =      =3D ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_ASLCC_PATH    =      =3D ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_ASLPP_PATH    =      =3D ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_DLINK_PATH    =      =3D ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_ASLDLINK_PATH   &nb= sp;  =3D ENV(CLANG38_BIN)clang

-

-*_CLANG38_ARM_SLINK_PATH    =      =3D ENV(CLANG38_BIN)llvm-ar

-*_CLANG38_ARM_RC_PATH    &nb= sp;       =3D ENV(CLANG38_ARM_PREFIX)objcopy<= o:p>

-

-*_CLANG38_ARM_ASLCC_FLAGS    &nbs= p;   =3D DEF(GCC_ASLCC_FLAGS) -fno-lto

-*_CLANG38_ARM_ASLDLINK_FLAGS   &n= bsp; =3D DEF(CLANG38_ARM_TARGET) DEF(GCC_ARM_ASLDLINK_FLAGS)

-*_CLANG38_ARM_ASM_FLAGS    &= nbsp;     =3D DEF(GCC_ASM_FLAGS) DEF(CLANG38_ARM_TARGET= ) $(PLATFORM_FLAGS) -Qunused-arguments

-*_CLANG38_ARM_DLINK2_FLAGS   &nbs= p;   =3D DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=3DPECOFF_HEADE= R_SIZE=3D0x220

-*_CLANG38_ARM_PLATFORM_FLAGS   &n= bsp; =3D -march=3Darmv7-a

-*_CLANG38_ARM_PP_FLAGS    &n= bsp;      =3D DEF(GCC_PP_FLAGS) DEF(CLANG38_ARM_TA= RGET) $(PLATFORM_FLAGS)

-*_CLANG38_ARM_RC_FLAGS    &n= bsp;      =3D DEF(GCC_ARM_RC_FLAGS)

-*_CLANG38_ARM_VFRPP_FLAGS    = ;    =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_ARM_TARGET) $(PLAT= FORM_FLAGS)

-*_CLANG38_ARM_ASLPP_FLAGS    = ;    =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_ARM_TARGET)

-*_CLANG38_ARM_CC_XIPFLAGS    = ;    =3D DEF(GCC_ARM_CC_XIPFLAGS)

-

-  DEBUG_CLANG38_ARM_CC_FLAGS  &nb= sp;  =3D DEF(CLANG38_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1

-  DEBUG_CLANG38_ARM_DLINK_FLAGS  =3D D= EF(CLANG38_ARM_DLINK_FLAGS) -flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Library/Gcc= Lto -llto-arm -Wl,-plugin-opt=3D-pass-through=3D-llto-arm

-  NOOPT_CLANG38_ARM_CC_FLAGS  &nb= sp;  =3D DEF(CLANG38_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -O0

-  NOOPT_CLANG38_ARM_DLINK_FLAGS  =3D D= EF(CLANG38_ARM_DLINK_FLAGS)

-RELEASE_CLANG38_ARM_CC_FLAGS   &n= bsp; =3D DEF(CLANG38_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3

-RELEASE_CLANG38_ARM_DLINK_FLAGS  =3D DEF(CL= ANG38_ARM_DLINK_FLAGS) -flto -Wl,-O3 -L$(WORKSPACE)/ArmPkg/Library/GccLto -= llto-arm -Wl,-plugin-opt=3D-pass-through=3D-llto-arm

+DEFINE CLANGDWARF_ARM_TARGET   &n= bsp;    =3D -target arm-linux-gnueabi

+DEFINE CLANGDWARF_ARM_CC_FLAGS   =    =3D $(PLATFORM_FLAGS) DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -m= abi=3Daapcs -fno-short-enums -funsigned-char -fomit-frame-pointer -Wno-addr= ess -mthumb -fno-pic -fno-pie DEF(CLANGDWARF_ARM_TARGET) DEF(CLANGDWARF_WAR= NING_OVERRIDES) -mno-movt

+DEFINE CLANGDWARF_ARM_DLINK_FLAGS   = =3D DEF(CLANGDWARF_ARM_TARGET) DEF(GCC_ARM_DLINK_FLAGS)

+

+*_CLANGDWARF_ARM_PP_FLAGS    = ;       =3D DEF(GCC_PP_FLAGS)

+*_CLANGDWARF_ARM_ASLCC_FLAGS   &n= bsp;    =3D DEF(GCC_ASLCC_FLAGS)

+*_CLANGDWARF_ARM_APP_FLAGS   &nbs= p;      =3D

+*_CLANGDWARF_ARM_ASL_FLAGS   &nbs= p;      =3D DEF(IASL_FLAGS)

+*_CLANGDWARF_ARM_ASL_OUTFLAGS   &= nbsp;   =3D DEF(IASL_OUTFLAGS)

+*_CLANGDWARF_ARM_DTCPP_FLAGS    &= nbsp;   =3D DEF(GCC_DTCPP_FLAGS)

+

+*_CLANGDWARF_ARM_CC_PATH    =         =3D ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_ASM_PATH    = ;       =3D ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_PP_PATH    =         =3D ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_VFRPP_PATH   &nb= sp;     =3D ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_ASLCC_PATH   &nb= sp;     =3D ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_ASLPP_PATH   &nb= sp;     =3D ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_DLINK_PATH   &nb= sp;     =3D ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_ASLDLINK_PATH   =   =3D ENV(CLANGDWARF_BIN)clang

+

+*_CLANGDWARF_ARM_SLINK_PATH   &nb= sp;     =3D ENV(CLANGDWARF_BIN)llvm-ar

+*_CLANGDWARF_ARM_RC_PATH    =         =3D ENV(CLANGDWARF_ARM_PREFIX)ob= jcopy

+

+*_CLANGDWARF_ARM_ASLCC_FLAGS   &n= bsp;    =3D DEF(GCC_ASLCC_FLAGS) -fno-lto

+*_CLANGDWARF_ARM_ASLDLINK_FLAGS   = ;  =3D DEF(CLANGDWARF_ARM_TARGET) DEF(GCC_ARM_ASLDLINK_FLAGS)

+*_CLANGDWARF_ARM_ASM_FLAGS   &nbs= p;      =3D DEF(GCC_ASM_FLAGS) DEF(CLANGDWARF_ARM_= TARGET) $(PLATFORM_FLAGS) -Qunused-arguments

+*_CLANGDWARF_ARM_DLINK2_FLAGS   &= nbsp;   =3D DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=3DPECOFF_HE= ADER_SIZE=3D0x220

+*_CLANGDWARF_ARM_PLATFORM_FLAGS   = ;  =3D -march=3Darmv7-a

+*_CLANGDWARF_ARM_PP_FLAGS    = ;       =3D DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_= ARM_TARGET) $(PLATFORM_FLAGS)

+*_CLANGDWARF_ARM_RC_FLAGS    = ;       =3D DEF(GCC_ARM_RC_FLAGS)<= /p>

+*_CLANGDWARF_ARM_VFRPP_FLAGS   &n= bsp;    =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_ARM_TARGET) = $(PLATFORM_FLAGS)

+*_CLANGDWARF_ARM_ASLPP_FLAGS   &n= bsp;    =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_ARM_TARGET)<= o:p>

+*_CLANGDWARF_ARM_CC_XIPFLAGS   &n= bsp;    =3D DEF(GCC_ARM_CC_XIPFLAGS)

+

+  DEBUG_CLANGDWARF_ARM_CC_FLAGS  =    =3D DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1

+  DEBUG_CLANGDWARF_ARM_DLINK_FLAGS  = =3D DEF(CLANGDWARF_ARM_DLINK_FLAGS) -flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Lib= rary/GccLto -llto-arm -Wl,-plugin-opt=3D-pass-through=3D-llto-arm

+  NOOPT_CLANGDWARF_ARM_CC_FLAGS  =    =3D DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -O0

+  NOOPT_CLANGDWARF_ARM_DLINK_FLAGS  = =3D DEF(CLANGDWARF_ARM_DLINK_FLAGS)

+RELEASE_CLANGDWARF_ARM_CC_FLAGS   = ;  =3D DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3

+RELEASE_CLANGDWARF_ARM_DLINK_FLAGS  =3D DEF= (CLANGDWARF_ARM_DLINK_FLAGS)

+-flto -Wl,-O3 -L$(WORKSPACE)/ArmPkg/Library/GccL= to -llto-arm

+-Wl,-plugin-opt=3D-pass-through=3D-llto-arm=

 ##################

-# CLANG38 AARCH64 definitions

+# CLANGDWARF AARCH64 definitions

##################

-DEFINE CLANG38_AARCH64_TARGET    = =3D -target aarch64-linux-gnu

-DEFINE CLANG38_AARCH64_CC_FLAGS  =3D DEF(GC= C_AARCH64_CC_FLAGS) DEF(CLANG38_AARCH64_TARGET) -mcmodel=3Dsmall DEF(CLANG3= 8_WARNING_OVERRIDES) -DEFINE CLANG38_AARCH64_DLINK_FLAGS  =3D DEF(CLAN= G38_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=3D0x1000

-

-*_CLANG38_AARCH64_PP_FLAGS   &nbs= p;   =3D DEF(GCC_PP_FLAGS)

-*_CLANG38_AARCH64_ASLCC_FLAGS    = =3D DEF(GCC_ASLCC_FLAGS)

-*_CLANG38_AARCH64_APP_FLAGS   &nb= sp;  =3D

-*_CLANG38_AARCH64_ASL_FLAGS   &nb= sp;  =3D DEF(IASL_FLAGS)

-*_CLANG38_AARCH64_ASL_OUTFLAGS   =3D D= EF(IASL_OUTFLAGS)

-*_CLANG38_AARCH64_DTCPP_FLAGS    = =3D DEF(GCC_DTCPP_FLAGS)

-

-*_CLANG38_AARCH64_CC_PATH    = ;    =3D ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_ASM_PATH   &nbs= p;   =3D ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_PP_PATH    = ;    =3D ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_VFRPP_PATH   &n= bsp; =3D ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_ASLCC_PATH   &n= bsp; =3D ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_ASLPP_PATH   &n= bsp; =3D ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_DLINK_PATH   &n= bsp; =3D ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_ASLDLINK_PATH  =3D ENV(CL= ANG38_BIN)clang

-

-*_CLANG38_AARCH64_SLINK_PATH   &n= bsp; =3D ENV(CLANG38_BIN)llvm-ar

-*_CLANG38_AARCH64_RC_PATH    = ;    =3D ENV(CLANG38_AARCH64_PREFIX)objcopy

-

-*_CLANG38_AARCH64_ASLCC_FLAGS    = =3D DEF(GCC_ASLCC_FLAGS) -fno-lto

-*_CLANG38_AARCH64_ASLDLINK_FLAGS =3D DEF(CLANG38= _AARCH64_TARGET) DEF(GCC_AARCH64_ASLDLINK_FLAGS)

-*_CLANG38_AARCH64_ASM_FLAGS   &nb= sp;  =3D DEF(GCC_ASM_FLAGS) DEF(CLANG38_AARCH64_TARGET) $(PLATFORM_FLA= GS) -Qunused-arguments

-*_CLANG38_AARCH64_DLINK_FLAGS    = =3D DEF(CLANG38_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page= -size=3D0x1000

-*_CLANG38_AARCH64_DLINK_XIPFLAGS =3D -z common-p= age-size=3D0x20

-*_CLANG38_AARCH64_DLINK2_FLAGS   =3D D= EF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=3DPECOFF_HEADER_SIZE=3D0x228<= /o:p>

-*_CLANG38_AARCH64_PLATFORM_FLAGS =3D<= /p>

-*_CLANG38_AARCH64_PP_FLAGS   &nbs= p;   =3D DEF(GCC_PP_FLAGS) DEF(CLANG38_AARCH64_TARGET) $(PLATFORM= _FLAGS)

-*_CLANG38_AARCH64_RC_FLAGS   &nbs= p;   =3D DEF(GCC_AARCH64_RC_FLAGS)

-*_CLANG38_AARCH64_VFRPP_FLAGS    = =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_AARCH64_TARGET) $(PLATFORM_FLAGS)=

-*_CLANG38_AARCH64_ASLPP_FLAGS    = =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_AARCH64_TARGET)

-*_CLANG38_AARCH64_CC_XIPFLAGS    = =3D DEF(GCC_AARCH64_CC_XIPFLAGS)

-

-  DEBUG_CLANG38_AARCH64_CC_FLAGS  = ;  =3D DEF(CLANG38_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1<= /o:p>

-  DEBUG_CLANG38_AARCH64_DLINK_FLAGS =3D DEF= (CLANG38_AARCH64_DLINK_FLAGS) -flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Library/G= ccLto -llto-aarch64 -Wl,-plugin-opt=3D-pass-through=3D-llto-aarch64

-  NOOPT_CLANG38_AARCH64_CC_FLAGS  = ;  =3D DEF(CLANG38_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -O0<= /p>

-  NOOPT_CLANG38_AARCH64_DLINK_FLAGS =3D DEF= (CLANG38_AARCH64_DLINK_FLAGS)

-RELEASE_CLANG38_AARCH64_CC_FLAGS  &nbs= p; =3D DEF(CLANG38_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3=

-RELEASE_CLANG38_AARCH64_DLINK_FLAGS =3D DEF(CLAN= G38_AARCH64_DLINK_FLAGS) -flto -Wl,-O3 -L$(WORKSPACE)/ArmPkg/Library/GccLto= -llto-aarch64 -Wl,-plugin-opt=3D-pass-through=3D-llto-aarch64

+DEFINE CLANGDWARF_AARCH64_TARGET  &nbs= p; =3D -target aarch64-linux-gnu

+DEFINE CLANGDWARF_AARCH64_CC_FLAGS  =3D DEF= (GCC_AARCH64_CC_FLAGS)

+DEF(CLANGDWARF_AARCH64_TARGET) -mcmodel=3Dsmall =

+DEF(CLANGDWARF_WARNING_OVERRIDES) DEFINE CLANGDW= ARF_AARCH64_DLINK_FLAGS 

+=3D DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH= 64_DLINK_FLAGS) -z

+common-page-size=3D0x1000

+

+*_CLANGDWARF_AARCH64_PP_FLAGS   &= nbsp;   =3D DEF(GCC_PP_FLAGS)

+*_CLANGDWARF_AARCH64_ASLCC_FLAGS  &nbs= p; =3D DEF(GCC_ASLCC_FLAGS)

+*_CLANGDWARF_AARCH64_APP_FLAGS   =    =3D

+*_CLANGDWARF_AARCH64_ASL_FLAGS   =    =3D DEF(IASL_FLAGS)

+*_CLANGDWARF_AARCH64_ASL_OUTFLAGS   = =3D DEF(IASL_OUTFLAGS)

+*_CLANGDWARF_AARCH64_DTCPP_FLAGS  &nbs= p; =3D DEF(GCC_DTCPP_FLAGS)

+

+*_CLANGDWARF_AARCH64_CC_PATH   &n= bsp;    =3D ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_ASM_PATH   &= nbsp;   =3D ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_PP_PATH   &n= bsp;    =3D ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_VFRPP_PATH   = ;  =3D ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_ASLCC_PATH   = ;  =3D ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_ASLPP_PATH   = ;  =3D ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_DLINK_PATH   = ;  =3D ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_ASLDLINK_PATH  =3D ENV= (CLANGDWARF_BIN)clang

+

+*_CLANGDWARF_AARCH64_SLINK_PATH   = ;  =3D ENV(CLANGDWARF_BIN)llvm-ar

+*_CLANGDWARF_AARCH64_RC_PATH   &n= bsp;    =3D ENV(CLANGDWARF_AARCH64_PREFIX)objcopy=

+

+*_CLANGDWARF_AARCH64_ASLCC_FLAGS  &nbs= p; =3D DEF(GCC_ASLCC_FLAGS) -fno-lto

+*_CLANGDWARF_AARCH64_ASLDLINK_FLAGS =3D DEF(CLAN= GDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_ASLDLINK_FLAGS)

+*_CLANGDWARF_AARCH64_ASM_FLAGS   =    =3D DEF(GCC_ASM_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) $(PLATFO= RM_FLAGS) -Qunused-arguments

+*_CLANGDWARF_AARCH64_DLINK_FLAGS  &nbs= p; =3D DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z commo= n-page-size=3D0x1000

+*_CLANGDWARF_AARCH64_DLINK_XIPFLAGS =3D -z commo= n-page-size=3D0x20

+*_CLANGDWARF_AARCH64_DLINK2_FLAGS   = =3D DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=3DPECOFF_HEADER_SIZE=3D0x228<= o:p>

+*_CLANGDWARF_AARCH64_PLATFORM_FLAGS =3D

+*_CLANGDWARF_AARCH64_PP_FLAGS   &= nbsp;   =3D DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) $(PL= ATFORM_FLAGS)

+*_CLANGDWARF_AARCH64_RC_FLAGS   &= nbsp;   =3D DEF(GCC_AARCH64_RC_FLAGS)

+*_CLANGDWARF_AARCH64_VFRPP_FLAGS  &nbs= p; =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) $(PLATFORM_FLAGS= )

+*_CLANGDWARF_AARCH64_ASLPP_FLAGS  &nbs= p; =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET)

+*_CLANGDWARF_AARCH64_CC_XIPFLAGS  &nbs= p; =3D DEF(GCC_AARCH64_CC_XIPFLAGS)

+

+  DEBUG_CLANGDWARF_AARCH64_CC_FLAGS &n= bsp;  =3D DEF(CLANGDWARF_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1=

+  DEBUG_CLANGDWARF_AARCH64_DLINK_FLAGS =3D = DEF(CLANGDWARF_AARCH64_DLINK_FLAGS) -flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Lib= rary/GccLto -llto-aarch64 -Wl,-plugin-opt=3D-pass-through=3D-llto-aarch64

+  NOOPT_CLANGDWARF_AARCH64_CC_FLAGS &n= bsp;  =3D DEF(CLANGDWARF_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -O0<= /o:p>

+  NOOPT_CLANGDWARF_AARCH64_DLINK_FLAGS =3D = DEF(CLANGDWARF_AARCH64_DLINK_FLAGS)

+RELEASE_CLANGDWARF_AARCH64_CC_FLAGS  &= nbsp; =3D DEF(CLANGDWARF_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3=

+RELEASE_CLANGDWARF_AARCH64_DLINK_FLAGS =3D =

+DEF(CLANGDWARF_AARCH64_DLINK_FLAGS) -flto -Wl,-O= 3

+-L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch= 64

+-Wl,-plugin-opt=3D-pass-through=3D-llto-aarch64<= o:p>

 ###########################################= #########################################

#

@@ -2763,106 +2752,6 @@ NOOPT_CLANGPDB_X64_DLINK_= FLAGS      =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 = /OPT:RE

NOOPT_CLANGPDB_X64_DLINK2_FLAGS   =   =3D

NOOPT_CLANGPDB_X64_GENFW_FLAGS   &= nbsp;  =3D --keepexceptiontable

-################################################= ####################################

-#

-# CLANGDWARF - This configuration is used to com= pile under Windows/Linux/Mac to produce -#  ELF binaries using LLVM/Cl= ang/LLD with Link Time Optimization enabled -# -###########################= #########################################################

-*_CLANGDWARF_*_*_FAMILY    &= nbsp;        =3D GCC

-*_CLANGDWARF_*_*_BUILDRULEFAMILY  &nbs= p; =3D CLANGGCC

-*_CLANGDWARF_*_MAKE_PATH    =         =3D ENV(CLANG_HOST_BIN)make=

-*_CLANGDWARF_*_*_DLL    &nbs= p;           =3D ENV(CLAN= GDWARF_DLL)

-*_CLANGDWARF_*_ASL_PATH    &= nbsp;        =3D DEF(UNIX_IASL_BIN)=

-

-*_CLANGDWARF_*_APP_FLAGS    =         =3D

-*_CLANGDWARF_*_ASL_FLAGS    =         =3D DEF(IASL_FLAGS)

-*_CLANGDWARF_*_ASL_OUTFLAGS   &nb= sp;     =3D DEF(IASL_OUTFLAGS)

-

-DEFINE CLANGDWARF_IA32_PREFIX   &= nbsp;   =3D ENV(CLANG_BIN)

-DEFINE CLANGDWARF_X64_PREFIX   &n= bsp;    =3D ENV(CLANG_BIN)

-

-# LLVM/CLANG doesn't support -n link option. So,= it can't share the same IA32_X64_DLINK_COMMON flag.

-# LLVM/CLANG doesn't support common page size. S= o, it can't share the same GccBase.lds script.

-DEFINE CLANGDWARF_IA32_X64_DLINK_COMMON &nb= sp; =3D -nostdlib -Wl,-q,--gc-sections -z max-page-size=3D0x40

-DEFINE CLANGDWARF_DLINK2_FLAGS_COMMON  = ;   =3D -Wl,--script=3D$(EDK_TOOLS_PATH)/Scripts/ClangBase.lds

-DEFINE CLANGDWARF_IA32_X64_ASLDLINK_FLAGS =3D DE= F(CLANGDWARF_IA32_X64_DLINK_COMMON) -Wl,--defsym=3DPECOFF_HEADER_SIZE=3D0 D= EF(CLANGDWARF_DLINK2_FLAGS_COMMON) -Wl,--entry,ReferenceAcpiTable -u Refere= nceAcpiTable

-DEFINE CLANGDWARF_IA32_X64_DLINK_FLAGS &nbs= p;  =3D DEF(CLANGDWARF_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTR= Y_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).ma= p,--whole-archive

-DEFINE CLANGDWARF_IA32_DLINK2_FLAGS  &= nbsp;    =3D -Wl,--defsym=3DPECOFF_HEADER_SIZE=3D0x220 DEF(C= LANGDWARF_DLINK2_FLAGS_COMMON)

-DEFINE CLANGDWARF_X64_DLINK2_FLAGS  &n= bsp;     =3D -Wl,--defsym=3DPECOFF_HEADER_SIZE=3D0x228 = DEF(CLANGDWARF_DLINK2_FLAGS_COMMON)

-

-###########################

-# CLANGDWARF IA32 definitions

-###########################

-*_CLANGDWARF_IA32_CC_PATH    = ;          =3D DEF(CLANGDWARF_= IA32_PREFIX)clang

-*_CLANGDWARF_IA32_SLINK_PATH   &n= bsp;       =3D DEF(CLANGDWARF_IA32_PREFIX)llv= m-ar

-*_CLANGDWARF_IA32_DLINK_PATH    &= nbsp;      =3D DEF(CLANGDWARF_IA32_PREFIX)cla= ng

-*_CLANGDWARF_IA32_ASLDLINK_PATH   = ;     =3D DEF(CLANGDWARF_IA32_PREFIX)clang

-*_CLANGDWARF_IA32_ASM_PATH   &nbs= p;         =3D DEF(CLANGDWARF_IA32_= PREFIX)clang

-*_CLANGDWARF_IA32_PP_PATH    = ;          =3D DEF(CLANGDWARF_= IA32_PREFIX)clang

-*_CLANGDWARF_IA32_VFRPP_PATH   &n= bsp;       =3D DEF(CLANGDWARF_IA32_PREFIX)cla= ng

-*_CLANGDWARF_IA32_ASLCC_PATH   &n= bsp;       =3D DEF(CLANGDWARF_IA32_PREFIX)cla= ng

-*_CLANGDWARF_IA32_ASLPP_PATH   &n= bsp;       =3D DEF(CLANGDWARF_IA32_PREFIX)cla= ng

-*_CLANGDWARF_IA32_RC_PATH    = ;          =3D DEF(CLANGDWARF_= IA32_PREFIX)llvm-rc

-

-*_CLANGDWARF_IA32_ASLCC_FLAGS   &= nbsp;      =3D DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto = DEF(CLANG38_IA32_TARGET)

-*_CLANGDWARF_IA32_ASLDLINK_FLAGS  &nbs= p;    =3D DEF(CLANGDWARF_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf= _i386 -fuse-ld=3Dlld

-*_CLANGDWARF_IA32_ASM_FLAGS   &nb= sp;        =3D DEF(GCC5_ASM_FLAGS) -m32 = -march=3Di386 DEF(CLANG38_IA32_TARGET)

-*_CLANGDWARF_IA32_RC_FLAGS   &nbs= p;         =3D DEF(GCC_IA32_RC_FLAG= S)

-*_CLANGDWARF_IA32_OBJCOPY_FLAGS   = ;     =3D

-*_CLANGDWARF_IA32_NASM_FLAGS   &n= bsp;       =3D -f elf32

-*_CLANGDWARF_IA32_PP_FLAGS   &nbs= p;         =3D DEF(GCC_PP_FLAGS) DE= F(CLANG38_IA32_TARGET)

-*_CLANGDWARF_IA32_ASLPP_FLAGS   &= nbsp;      =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_IA= 32_TARGET)

-*_CLANGDWARF_IA32_VFRPP_FLAGS   &= nbsp;      =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_IA= 32_TARGET)

-

-DEBUG_CLANGDWARF_IA32_CC_FLAGS   =       =3D DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto= -march=3Di586 DEF(CLANG38_IA32_TARGET) -g -malign-double

-DEBUG_CLANGDWARF_IA32_DLINK_FLAGS  &nb= sp;   =3D DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,= -melf_i386 -Wl,--oformat,elf32-i386

-DEBUG_CLANGDWARF_IA32_DLINK2_FLAGS  &n= bsp;  =3D DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O3 -fuse-ld=3Dlld

-

-RELEASE_CLANGDWARF_IA32_CC_FLAGS  &nbs= p;    =3D DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto -march=3D= i586 DEF(CLANG38_IA32_TARGET) -malign-double

-RELEASE_CLANGDWARF_IA32_DLINK_FLAGS  &= nbsp; =3D DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_i386= -Wl,--oformat,elf32-i386

-RELEASE_CLANGDWARF_IA32_DLINK2_FLAGS  = =3D DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O3 -fuse-ld=3Dlld

-

-NOOPT_CLANGDWARF_IA32_CC_FLAGS   =       =3D DEF(CLANG38_ALL_CC_FLAGS) -m32 -O0 -marc= h=3Di586 DEF(CLANG38_IA32_TARGET) -g -malign-double

-NOOPT_CLANGDWARF_IA32_DLINK_FLAGS  &nb= sp;   =3D DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_= i386 -Wl,--oformat,elf32-i386

-NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS  &n= bsp;  =3D DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 -fuse-ld=3Dlld

-

-##########################

-# CLANGDWARF X64 definitions

-##########################

-*_CLANGDWARF_X64_CC_PATH    =           =3D DEF(CLANGDWARF_X= 64_PREFIX)clang

-*_CLANGDWARF_X64_SLINK_PATH   &nb= sp;       =3D DEF(CLANGDWARF_X64_PREFIX)llvm-= ar

-*_CLANGDWARF_X64_DLINK_PATH   &nb= sp;       =3D DEF(CLANGDWARF_X64_PREFIX)clang=

-*_CLANGDWARF_X64_ASLDLINK_PATH   =      =3D DEF(CLANGDWARF_X64_PREFIX)clang

-*_CLANGDWARF_X64_ASM_PATH    = ;         =3D DEF(CLANGDWARF_X64_PR= EFIX)clang

-*_CLANGDWARF_X64_PP_PATH    =           =3D DEF(CLANGDWARF_X= 64_PREFIX)clang

-*_CLANGDWARF_X64_VFRPP_PATH   &nb= sp;       =3D DEF(CLANGDWARF_X64_PREFIX)clang=

-*_CLANGDWARF_X64_ASLCC_PATH   &nb= sp;       =3D DEF(CLANGDWARF_X64_PREFIX)clang=

-*_CLANGDWARF_X64_ASLPP_PATH   &nb= sp;       =3D DEF(CLANGDWARF_X64_PREFIX)clang=

-*_CLANGDWARF_X64_RC_PATH    =           =3D DEF(CLANGDWARF_X= 64_PREFIX)llvm-rc

-

-*_CLANGDWARF_X64_ASLCC_FLAGS   &n= bsp;      =3D DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto D= EF(CLANG38_X64_TARGET)

-*_CLANGDWARF_X64_ASLDLINK_FLAGS   = ;    =3D DEF(CLANGDWARF_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_= x86_64 -fuse-ld=3Dlld

-*_CLANGDWARF_X64_ASM_FLAGS   &nbs= p;        =3D DEF(GCC5_ASM_FLAGS) -m64 D= EF(CLANG38_X64_TARGET)

-*_CLANGDWARF_X64_RC_FLAGS    = ;         =3D DEF(GCC_X64_RC_FLAGS)=

-*_CLANGDWARF_X64_OBJCOPY_FLAGS   =      =3D

-*_CLANGDWARF_X64_NASM_FLAGS   &nb= sp;       =3D -f elf64

-*_CLANGDWARF_X64_PP_FLAGS    = ;         =3D DEF(GCC_PP_FLAGS) DEF= (CLANG38_X64_TARGET)

-*_CLANGDWARF_X64_ASLPP_FLAGS   &n= bsp;      =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_X64= _TARGET)

-*_CLANGDWARF_X64_VFRPP_FLAGS   &n= bsp;      =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_X64= _TARGET)

-

-DEBUG_CLANGDWARF_X64_CC_FLAGS   &= nbsp;     =3D DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEF= IAPI=3D__attribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpie -= Oz -flto DEF(CLANG38_X64_TARGET) -g

-DEBUG_CLANGDWARF_X64_DLINK_FLAGS  &nbs= p;   =3D DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-= melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=3Dsmall -Wl,--appl= y-dynamic-relocs

-DEBUG_CLANGDWARF_X64_DLINK2_FLAGS  &nb= sp;  =3D DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=3Dlld

-

-RELEASE_CLANGDWARF_X64_CC_FLAGS   = ;    =3D DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=3D__a= ttribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpie -Oz -flto D= EF(CLANG38_X64_TARGET)

-RELEASE_CLANGDWARF_X64_DLINK_FLAGS  &n= bsp; =3D DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_6= 4 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=3Dsmall -Wl,--apply-dynamic-= relocs

-RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   = =3D DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=3Dlld

-

-NOOPT_CLANGDWARF_X64_CC_FLAGS   &= nbsp;     =3D DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEF= IAPI=3D__attribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpie -= O0 DEF(CLANG38_X64_TARGET) -g

-NOOPT_CLANGDWARF_X64_DLINK_FLAGS  &nbs= p;   =3D DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x= 86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=3Dsmall -Wl,--apply-dyna= mic-relocs

-NOOPT_CLANGDWARF_X64_DLINK2_FLAGS  &nb= sp;  =3D DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O0 -fuse-ld=3Dlld

-

#

#

# XCODE5 support

--

2.34.1

 

 

 

 

 

--_000_BL1PR11MB5478B90873AF5F75AEB77E88EF899BL1PR11MB5478namp_-- --_004_BL1PR11MB5478B90873AF5F75AEB77E88EF899BL1PR11MB5478namp_ Content-Type: image/png; name="image001.png" Content-Description: image001.png Content-Disposition: inline; filename="image001.png"; size=53798; creation-date="Wed, 29 Mar 2023 03:46:52 GMT"; modification-date="Wed, 29 Mar 2023 03:46:54 GMT" Content-ID: Content-Transfer-Encoding: base64 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 --_004_BL1PR11MB5478B90873AF5F75AEB77E88EF899BL1PR11MB5478namp_--