From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: "Gao, Liming" <liming.gao@intel.com>
Cc: Chris Co <Christopher.Co@microsoft.com>,
"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 10:22:20 +0200 [thread overview]
Message-ID: <CAKv+Gu_vfvOo8SGcznft_dyYD7o8zkO6OSTX+Ztg+cmMUUM_gw@mail.gmail.com> (raw)
In-Reply-To: <4A89E2EF3DFEDB4C8BFDE51014F606A14E29DED3@SHSMSX104.ccr.corp.intel.com>
On 26 June 2018 at 06:40, Gao, Liming <liming.gao@intel.com> 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 <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 8:22 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
2018-06-26 8:22 ` Ard Biesheuvel [this message]
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=CAKv+Gu_vfvOo8SGcznft_dyYD7o8zkO6OSTX+Ztg+cmMUUM_gw@mail.gmail.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