public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
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&amp;data=02%7C01%7CChristopher.Co%40microsoft.co
>>>
>>m%7C04783c7442e045028b6b08d5da73c590%7C72f988bf86f141af91ab2d7cd0
>>> 11db47%7C1%7C0%7C636655113127087911&amp;sdata=rekWKjfTCvj%2FCv
>>> mXi%2FtAcEOw7ooGMYGo6uyKoNCL0os%3D&amp;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-
>>> &amp;data=02%7C01%7CChristopher.Co%40microsoft.com%7C04783c7442e
>>> 045028b6b08d5da73c590%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0
>>> %7C636655113127087911&amp;sdata=OEHhpxkYbIqRmALJeMDjp4RekTgVK
>>G
>>> 6dlmdmYa3HNOg%3D&amp;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&amp;data=02%7C01%7CChristo
>>> >>
>>>
>>pher.Co%40microsoft.com%7C04783c7442e045028b6b08d5da73c590%7C72f9
>>> 88bf
>>> >>
>>>
>>86f141af91ab2d7cd011db47%7C1%7C0%7C636655113127087911&amp;sdata=
>>> WLQCR
>>> >> O6Olja0J14OBnX1PSsdXnTYEXDMki9fN7CuAHs%3D&amp;reserved=0
>>_______________________________________________
>>edk2-devel mailing list
>>edk2-devel@lists.01.org
>>https://lists.01.org/mailman/listinfo/edk2-devel


  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