From: "Gao, Liming" <liming.gao@intel.com>
To: Chris Co <Christopher.Co@microsoft.com>,
Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
Leif Lindholm <leif.lindholm@linaro.org>,
Charles Garcia-Tobin <Charles.Garcia-Tobin@arm.com>
Subject: Re: [PATCH v2 1/1] BaseTools/tools_def: Add GCC49xASL Toolchain support
Date: Tue, 26 Jun 2018 04:40:38 +0000 [thread overview]
Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E29DED3@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <DM5PR2101MB11285765EC9702660CCC7678944A0@DM5PR2101MB1128.namprd21.prod.outlook.com>
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=
Thanks
Liming
>-----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 <liming.gao@intel.com>; Ard Biesheuvel
><ard.biesheuvel@linaro.org>
>Cc: edk2-devel@lists.01.org; Leif Lindholm <leif.lindholm@linaro.org>; Charles
>Garcia-Tobin <Charles.Garcia-Tobin@arm.com>
>Subject: Re: [edk2] [PATCH v2 1/1] BaseTools/tools_def: Add GCC49xASL
>Toolchain support
>
>
>
>> -----Original Message-----
>> From: Gao, Liming <liming.gao@intel.com>
>> Sent: Monday, June 25, 2018 1:15 AM
>> To: Ard Biesheuvel <ard.biesheuvel@linaro.org>
>> Cc: Chris Co <Christopher.Co@microsoft.com>; edk2-devel@lists.01.org; Leif
>> Lindholm <leif.lindholm@linaro.org>; Charles Garcia-Tobin <Charles.Garcia-
>> 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 <liming.gao@intel.com>
>> >Cc: Chris Co <Christopher.Co@microsoft.com>; edk2-devel@lists.01.org;
>> >Leif Lindholm <leif.lindholm@linaro.org>; Charles Garcia-Tobin
>> ><Charles.Garcia- Tobin@arm.com>
>> >Subject: Re: [edk2] [PATCH v2 1/1] BaseTools/tools_def: Add GCC49xASL
>> >Toolchain support
>> >
>> >(+ Charles)
>> >
>> >On 25 June 2018 at 03:38, Gao, Liming <liming.gao@intel.com> 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 <yonghong.zhu@intel.com>; Gao, Liming
>> >>><liming.gao@intel.com>; Leif Lindholm <leif.lindholm@linaro.org>
>> >>>Subject: [PATCH v2 1/1] BaseTools/tools_def: Add GCC49xASL Toolchain
>> >>>support
>> >>>
>> >>>From: Chris Co <chrco@microsoft.com>
>> >>>
>> >>>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 <christopher.co@microsoft.com>
>> >>>Cc: Yonghong Zhu <yonghong.zhu@intel.com>
>> >>>Cc: Liming Gao <liming.gao@intel.com>
>> >>>Cc: Leif Lindholm <leif.lindholm@linaro.org>
>> >>>---
>> >>> 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
next prev parent reply other threads:[~2018-06-26 4:40 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-23 0:57 [PATCH v2 0/1] BaseTools/tools_def: Add GCC49xASL Toolchain support Chris Co
2018-06-23 0:57 ` [PATCH v2 1/1] " Chris Co
2018-06-25 1:38 ` Gao, Liming
2018-06-25 7:33 ` Ard Biesheuvel
2018-06-25 8:15 ` Gao, Liming
2018-06-25 18:21 ` Chris Co
2018-06-25 19:10 ` Leif Lindholm
2018-06-25 19:50 ` Chris Co
2018-06-26 4:40 ` Gao, Liming [this message]
2018-06-26 8:22 ` Ard Biesheuvel
2018-06-26 18:42 ` Chris Co
2018-06-26 18:51 ` Ard Biesheuvel
2018-06-27 4:14 ` Chris Co
2018-06-27 5:07 ` Ard Biesheuvel
2018-06-29 3:49 ` Chris Co
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A89E2EF3DFEDB4C8BFDE51014F606A14E29DED3@SHSMSX104.ccr.corp.intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox