public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
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&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


  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