From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4001:c0b::233; helo=mail-it0-x233.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-it0-x233.google.com (mail-it0-x233.google.com [IPv6:2607:f8b0:4001:c0b::233]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id C7E4320337368 for ; Tue, 26 Jun 2018 01:22:22 -0700 (PDT) Received: by mail-it0-x233.google.com with SMTP id p185-v6so1060820itp.4 for ; Tue, 26 Jun 2018 01:22:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=EDpAysYpN3bz5HA7Xxc1rEBx8mpv13ocAfJ89cPCsEI=; b=aubjgs3fkTV2rO08Vu1zIs5yeHHARYUe9FG5asUKu2oGI69CFECgn5cvbttbNxwt5E /3QqsDJ1MdOgLpP5i1fdILqzx8816sKsAVUxkJVc1vo91cKRi3NcSA77xLhBEkWCSQb6 ua12zJtlpmHgYuqEpDZymESZlfwUBIlGQAJNY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=EDpAysYpN3bz5HA7Xxc1rEBx8mpv13ocAfJ89cPCsEI=; b=ERWz3tdHg3ve4qeoop86QkRKHl0BR7tWcb3f6gJGnoHRwz/T3gsMRBxrvKXqWZOy1a IrVCOyQYrgSnMtJeo3/PDKr3CJuiAhO0Y2pnxBWSjRZsT9QGsYRjPIcRH2uwZgLsbzj9 Uru+2ItG+Gtk5xYZXAH0vkWEkgTP7OxD8y+rpcAsyBDrVm26NOmW6LKDW9FpKUA2pDsL Py0DU9GsXV9Sjc/vnOB78J2qj0nyEZVrVZKJCNBmbv2SlpIo5sZAinC6Lk4keNPuWCQY Ywd6hh0tQAyC9fjVaIqagFnnezNWwvtgw8OOii+8hYKbOt7gqwjAvv3v7pHgXPK2FIQJ FAeA== X-Gm-Message-State: APt69E32i3gku5P45s5wV7q2asrYHwnXsvKi0IikegVlY6lhnzj9kK32 wQCDk8XC6jsYD0CLWfz5lj5CtOhYy3KzWjNlQSbYrw== X-Google-Smtp-Source: ADUXVKKbsEp7YMR/lL5rdm1lHpT1fHhSC5pbPBAxl58dpvybwXOPjE+UsVvdZwPh5kCCK3pg4oa1bpsmsbBQm80swlc= X-Received: by 2002:a24:6196:: with SMTP id s144-v6mr642742itc.68.1530001341190; Tue, 26 Jun 2018 01:22:21 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a6b:bbc7:0:0:0:0:0 with HTTP; Tue, 26 Jun 2018 01:22:20 -0700 (PDT) In-Reply-To: <4A89E2EF3DFEDB4C8BFDE51014F606A14E29DED3@SHSMSX104.ccr.corp.intel.com> References: <20180623005740.43200-1-christopher.co@microsoft.com> <20180623005740.43200-2-christopher.co@microsoft.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E29D4B5@SHSMSX104.ccr.corp.intel.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E29D7EF@SHSMSX104.ccr.corp.intel.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E29DED3@SHSMSX104.ccr.corp.intel.com> From: Ard Biesheuvel Date: Tue, 26 Jun 2018 10:22:20 +0200 Message-ID: To: "Gao, Liming" Cc: Chris Co , "edk2-devel@lists.01.org" , Leif Lindholm , Charles Garcia-Tobin Subject: Re: [PATCH v2 1/1] BaseTools/tools_def: Add GCC49xASL Toolchain support X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Jun 2018 08:22:23 -0000 Content-Type: text/plain; charset="UTF-8" On 26 June 2018 at 06:40, Gao, Liming wrote: > Chris: > Here is the example usage. You can add below [BuildOptions] in your platform DSC. Then, it will use override ASL path and flag. > > [BuildOptions] > *_*_*_ASL_PATH == C:\Asl\asl.exe > *_*_*_ASL_FLAGS == /MsftInternal > *_*_*_ASL_OUTFLAGS == /Fo= > I strongly prefer this over adding a new MS specific toolchain definition. >>-----Original Message----- >>From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of >>Chris Co >>Sent: Tuesday, June 26, 2018 2:21 AM >>To: Gao, Liming ; Ard Biesheuvel >> >>Cc: edk2-devel@lists.01.org; Leif Lindholm ; Charles >>Garcia-Tobin >>Subject: Re: [edk2] [PATCH v2 1/1] BaseTools/tools_def: Add GCC49xASL >>Toolchain support >> >> >> >>> -----Original Message----- >>> From: Gao, Liming >>> Sent: Monday, June 25, 2018 1:15 AM >>> To: Ard Biesheuvel >>> Cc: Chris Co ; edk2-devel@lists.01.org; Leif >>> Lindholm ; Charles Garcia-Tobin >> Tobin@arm.com> >>> Subject: RE: [edk2] [PATCH v2 1/1] BaseTools/tools_def: Add GCC49xASL >>> Toolchain support >>> >>> Ard: >>> The commit log message says that the Microsoft ASL compiler is necessary >>> to expose Windows-specific Pin Function Config Descriptors on Windows IoT >>> devices. >>> >> >>I'll add a bit more detail here. Prior to the inclusion of Pin Function Descriptors >>in the 6.2 spec, we added a vendor-specific descriptor through the MSFT ASL >>compiler with /MsftInternal flag which essentially implemented the >>functionality of the proposed Pin Function Config Descriptors so that pins >>could be exposed to user-mode applications. Now that the spec is updated >>and the standard ASL compiler supports the new descriptors, I wanted to >>move us to the standardized ASL compiler but was disappointed to find out >>that Windows has not been enlightened to process the Pin Function Config >>Descriptor yet. So we still need this fall back to the MSFT ASL compiler with >>/MsftInternal flag while I work with the ACPI team here to implement these >>descriptors. My hope is that in the next year I can move us back to the >>standard ASL compiler. >> >>> Besides, there is no ways to configure tool chain with the parameter in >>build >>> command. But, tool chain ASL path and flag can be overridden in >>> [BuildOptions] of platform DSC file. Another way is to provide the generic >>> DSC file to include MS ASL option setting in [BuildOptions] section. Platform >>> DSC can decide to include it or not. >>> >> >>Since the MS ASL really only impacts Windows IoT boards, platform dsc >>overrides on the Windows IoT ARM boards might be a better option here. >> >>> Thanks >>> Liming >>> >-----Original Message----- >>> >From: Ard Biesheuvel [mailto:ard.biesheuvel@linaro.org] >>> >Sent: Monday, June 25, 2018 3:34 PM >>> >To: Gao, Liming >>> >Cc: Chris Co ; edk2-devel@lists.01.org; >>> >Leif Lindholm ; Charles Garcia-Tobin >>> > >>> >Subject: Re: [edk2] [PATCH v2 1/1] BaseTools/tools_def: Add GCC49xASL >>> >Toolchain support >>> > >>> >(+ Charles) >>> > >>> >On 25 June 2018 at 03:38, Gao, Liming wrote: >>> >> Chris: >>> >> GCC 4.9 targeting arm-none-eabi. This GCC4.9 should run in Windows >>> OS. >>> >So, could you give some info where windows GCC49 is from. >>> >> >> >>We get Windows GCC49 from linaro: >>https://releases.linaro.org/archive/14.09/components/toolchain/binaries/gcc >>-linaro-arm-none-eabi-4.9-2014.09_win32.zip >>Make comes from MinGW >> >>> > >>> >OK, so first of all, could you elaborate on why we need a different ASL >>> >compiler? We have spent the past 5 years in conference calls and >>> >meeting rooms to standardize ACPI on ARM, so I am rather disappointed >>> >that we have this discrepancy. >>> > >>> >Then, could you explain why you chose GCC49? We have GCC5 now as well, >>> >which enables LTO and generally results in smaller code. Also, is there >>> >any way we could parameterize the existing GCCx toolchains to allow a >>> >different ASL compiler to be selected? >>> > >> >>We are using GCC49 because this was the last GCC build for Windows as exe >>we could find. We use these tools to build using GCC on Windows: >>https://releases.linaro.org/archive/14.09/components/toolchain/binaries/gcc >>-linaro-arm-none-eabi-4.9-2014.09_win32.zip >>I would love to use GCC5 if toolchain exes are readily available for Windows. >> >>There are two main deltas between existing GCCx toolchains and the one I am >>adding here: ASL compiler delta and echo/noop delta. >>The ASL delta was discussed above. We have one more delta: >>(*_GCC49xASL_ARM_OBJCOPY_PATH = noop, >>*_GCC49xASL_ARM_SYMRENAME_PATH = noop). On Linux, these are set >>to `echo` which effectively no-ops them. On Windows, echo behaves >>differently and unfortunately there's no clean Windows command to noop, so >>we made a noop.exe program and added it to our build tools. If we can find a >>way to parameterize the existing GCCx toolchain to select command based on >>build environment, then I think this patch can be dropped in favor of reusing >>the existing GCCx chain. >> >>> >Thanks, >>> >Ard. >>> > >>> > >>> >>>-----Original Message----- >>> >>>From: Chris Co [mailto:Christopher.Co@microsoft.com] >>> >>>Sent: Saturday, June 23, 2018 8:58 AM >>> >>>To: edk2-devel@lists.01.org >>> >>>Cc: Zhu, Yonghong ; Gao, Liming >>> >>>; Leif Lindholm >>> >>>Subject: [PATCH v2 1/1] BaseTools/tools_def: Add GCC49xASL Toolchain >>> >>>support >>> >>> >>> >>>From: Chris Co >>> >>> >>> >>>This patch adds a build option for invoking GCC49 ARM cross compiler >>> >>>in the Windows environment to build firmware for Windows 10 IoT >>> >>>devices using NXP i.MX6 and i.MX7 SoCs. >>> >>> >>> >>>In addition, this build option targets the Microsoft ASL compiler >>> >>>instead of iasl. The Microsoft ASL compiler is necessary to expose >>> >>>Windows-specific Pin Function Config Descriptors on Windows IoT >>> >>>devices. >>> >>> >>> >>>Contributed-under: TianoCore Contribution Agreement 1.1 >>> >>>Signed-off-by: Christopher Co >>> >>>Cc: Yonghong Zhu >>> >>>Cc: Liming Gao >>> >>>Cc: Leif Lindholm >>> >>>--- >>> >>> BaseTools/Conf/tools_def.template | 61 ++++++++++++++++++++ >>> >>> 1 file changed, 61 insertions(+) >>> >>> >>> >>>diff --git a/BaseTools/Conf/tools_def.template >>> >>>b/BaseTools/Conf/tools_def.template >>> >>>index 11a79029b890..f7a375ebaf1e 100755 >>> >>>--- a/BaseTools/Conf/tools_def.template >>> >>>+++ b/BaseTools/Conf/tools_def.template >>> >>>@@ -393,6 +393,12 @@ DEFINE DTC_BIN = ENV(DTC_PREFIX)dtc >>> >>> # Required to build platforms or ACPI tables: >>> >>> # Intel(r) ACPI Compiler from >>> >>> # >>> >>https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Facpica. >>> org%2Fdownloads&data=02%7C01%7CChristopher.Co%40microsoft.co >>> >>m%7C04783c7442e045028b6b08d5da73c590%7C72f988bf86f141af91ab2d7cd0 >>> 11db47%7C1%7C0%7C636655113127087911&sdata=rekWKjfTCvj%2FCv >>> mXi%2FtAcEOw7ooGMYGo6uyKoNCL0os%3D&reserved=0 >>> >>>+# GCC49xASL -Windows- Requires: >>> >>>+# GCC 4.9 targeting arm-none-eabi >>> >>>+# Optional: >>> >>>+# Required to build platforms or ACPI tables: >>> >>>+# Microsoft ASL ACPI Compiler (asl.exe) from Windows >>> >WDK >>> >>>+# >>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs. >>> microsoft.com%2Fen-us%2Fwindows- >>> &data=02%7C01%7CChristopher.Co%40microsoft.com%7C04783c7442e >>> 045028b6b08d5da73c590%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0 >>> %7C636655113127087911&sdata=OEHhpxkYbIqRmALJeMDjp4RekTgVK >>G >>> 6dlmdmYa3HNOg%3D&reserved=0 >>> >>>hardware/drivers/download-the-wdk >>> >>> # GCC5 -Linux,Windows- Requires: >>> >>> # GCC 5 with LTO support, targeting x86_64-linux-gnu, >>> >aarch64- >>> >>>linux-gnu, or arm-linux-gnueabi >>> >>> # Optional: >>> >>>@@ -5466,6 +5472,61 @@ RELEASE_GCC49_AARCH64_DLINK_FLAGS = >>> >>>DEF(GCC49_AARCH64_DLINK_FLAGS) >>> >>> NOOPT_GCC49_AARCH64_DLINK_FLAGS = >>> >>>DEF(GCC49_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000 -O0 >>> >>> NOOPT_GCC49_AARCH64_DLINK_XIPFLAGS = -z common-page- >>> size=0x20 >>> >- >>> >>>O0 >>> >>> >>> >>>+###################################################### >>> ## >>> >## >>> >>>########################## >>> >>>+# >>> >>>+# GCC49xASL - This configuration is used to compile under Windows to >>> >>>produce >>> >>>+# PE/COFF binaries using GCC 4.9. >>> >>>+# >>> >>>+###################################################### >>> ## >>> >## >>> >>>########################## >>> >>>+*_GCC49xASL_*_*_FAMILY = GCC >>> >>>+ >>> >>>+*_GCC49xASL_*_MAKE_PATH = >>> DEF(GCC_HOST_PREFIX)make >>> >>>+*_GCC49xASL_*_*_DLL = ENV(GCC49_DLL) >>> >>>+*_GCC49xASL_*_ASL_PATH = DEF(WIN_ASL_BIN) >>> >>>+ >>> >>>+*_GCC49xASL_*_PP_FLAGS = DEF(GCC_PP_FLAGS) >>> >>>+*_GCC49xASL_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) >>> >>>+*_GCC49xASL_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) >>> >>>+*_GCC49xASL_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) >>> >>>+*_GCC49xASL_*_APP_FLAGS = >>> >>>+*_GCC49xASL_*_ASL_FLAGS = /MsftInternal >>> >>>+*_GCC49xASL_*_ASL_OUTFLAGS = DEF(MS_ASL_OUTFLAGS) >>> >>>+ >>> >>>+################## >>> >>>+# GCC49xASL ARM definitions >>> >>>+################## >>> >>>+*_GCC49xASL_ARM_OBJCOPY_PATH = noop >>> >>>+*_GCC49xASL_ARM_CC_PATH = ENV(GCC49_ARM_PREFIX)gcc >>> >>>+*_GCC49xASL_ARM_SLINK_PATH = ENV(GCC49_ARM_PREFIX)ar >>> >>>+*_GCC49xASL_ARM_DLINK_PATH = >>ENV(GCC49_ARM_PREFIX)gcc >>> >>>+*_GCC49xASL_ARM_ASLDLINK_PATH = >>> ENV(GCC49_ARM_PREFIX)gcc >>> >>>+*_GCC49xASL_ARM_ASM_PATH = >>ENV(GCC49_ARM_PREFIX)gcc >>> >>>+*_GCC49xASL_ARM_PP_PATH = ENV(GCC49_ARM_PREFIX)gcc >>> >>>+*_GCC49xASL_ARM_VFRPP_PATH = >>> ENV(GCC49_ARM_PREFIX)gcc >>> >>>+*_GCC49xASL_ARM_ASLCC_PATH = >>ENV(GCC49_ARM_PREFIX)gcc >>> >>>+*_GCC49xASL_ARM_ASLPP_PATH = >>ENV(GCC49_ARM_PREFIX)gcc >>> >>>+*_GCC49xASL_ARM_RC_PATH = >>> >ENV(GCC49_ARM_PREFIX)objcopy >>> >>>+*_GCC49xASL_ARM_SYMRENAME_PATH = noop >>> >>>+ >>> >>>+*_GCC49xASL_ARM_ARCHCC_FLAGS = -mthumb >>> >>>+*_GCC49xASL_ARM_PLATFORM_FLAGS = -march=armv7-a >>> >>>+ >>> >>>+*_GCC49xASL_ARM_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) >>> >>>+*_GCC49xASL_ARM_ASLDLINK_FLAGS = >>> >>>DEF(GCC49_ARM_ASLDLINK_FLAGS) >>> >>>+*_GCC49xASL_ARM_ASM_FLAGS = >>> DEF(GCC49_ARM_ASM_FLAGS) >>> >>>+*_GCC49xASL_ARM_DLINK_FLAGS = >>> >DEF(GCC49_ARM_DLINK_FLAGS) >>> >>>+*_GCC49xASL_ARM_DLINK2_FLAGS = >>> >DEF(GCC49_ARM_DLINK2_FLAGS) >>> >>>+*_GCC49xASL_ARM_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) >>> >>>+*_GCC49xASL_ARM_PLATFORM_FLAGS = -march=armv7-a >>> >>>+*_GCC49xASL_ARM_PP_FLAGS = $(ARCHCC_FLAGS) >>> >>>$(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS) >>> >>>+*_GCC49xASL_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS) >>> >>>+*_GCC49xASL_ARM_VFRPP_FLAGS = $(ARCHCC_FLAGS) >>> >>>$(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS) >>> >>>+*_GCC49xASL_ARM_CC_XIPFLAGS = >>> DEF(GCC49_ARM_CC_XIPFLAGS) >>> >>>+ >>> >>>+ DEBUG_GCC49xASL_ARM_CC_FLAGS = >>> DEF(GCC49_ARM_CC_FLAGS) >>> >- >>> >>>O0 >>> >>>+RELEASE_GCC49xASL_ARM_CC_FLAGS = >>> DEF(GCC49_ARM_CC_FLAGS) >>> >- >>> >>>Wno-unused-but-set-variable -Wno-unused-const-variable >>> >>>+ NOOPT_GCC49xASL_ARM_CC_FLAGS = >>> DEF(GCC49_ARM_CC_FLAGS) >>> >- >>> >>>O0 >>> >>>+ >>> >>> >>> >>>####################################################### >>> ## >>> >## >>> >>>######################### >>> >>> # >>> >>> # GCC 5 - This configuration is used to compile under Linux to >>> >>>produce >>> >>>-- >>> >>>2.16.2.gvfs.1.33.gf5370f1 >>> >> >>> >> _______________________________________________ >>> >> edk2-devel mailing list >>> >> edk2-devel@lists.01.org >>> >> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flist >>> >> s.01.org%2Fmailman%2Flistinfo%2Fedk2- >>> devel&data=02%7C01%7CChristo >>> >> >>> >>pher.Co%40microsoft.com%7C04783c7442e045028b6b08d5da73c590%7C72f9 >>> 88bf >>> >> >>> >>86f141af91ab2d7cd011db47%7C1%7C0%7C636655113127087911&sdata= >>> WLQCR >>> >> O6Olja0J14OBnX1PSsdXnTYEXDMki9fN7CuAHs%3D&reserved=0 >>_______________________________________________ >>edk2-devel mailing list >>edk2-devel@lists.01.org >>https://lists.01.org/mailman/listinfo/edk2-devel