On Thu, Oct 30, 2014 at 10:50 PM, Gao, Liming <liming....@intel.com> wrote:
> Scott:
>   I agree. And, I also verify this change with CYGGCC on IA32 arch. It could 
> pass build.
>
>   For the change in GenMake.py, it can always use '/' in the generated lst 
> file, because windows compiler also recognize it.

Will this change paths sent to all tools? If so, it seems like it has
a risk to break some tool other than the compiler.

(MS-ASL? winres?)

It seems like a fairly major change to makefile generation. (maybe?
I'm not sure of the scope of this change.)

At least changing it in all cases seems better than hard coding a
build rule family directly in the tool.

I wonder if a tools_def PATHSEP attribute could be something to consider.

I'm not sure if tools_def allows this syntax, but if so, then
something like this could then be used:
GCC:*_*_*_*_PATHSEP = /

-Jordan

>   Last question, have you instruction on how to generate windows base GCC 
> compiler?
>
> Index: Source/Python/AutoGen/GenMake.py
> ===================================================================
> --- Source/Python/AutoGen/GenMake.py    (revision 16124)
> +++ Source/Python/AutoGen/GenMake.py    (working copy)
> @@ -679,7 +679,8 @@
>                      NewFile = self.PlaceMacro(str(F), self.Macros)
>                      # In order to use file list macro as dependency
>                      if T.GenListFile:
> -                        self.ListFileMacros[T.ListFileMacro].append(str(F))
> +                        # gnu tools need forward slash path separater, even 
> on Windows
> +                        
> self.ListFileMacros[T.ListFileMacro].append(str(F).replace ('\\', '/'))
>                          self.FileListMacros[T.FileListMacro].append(NewFile)
>                      elif T.GenFileListMacro:
>                          self.FileListMacros[T.FileListMacro].append(NewFile)
>
> Thanks
> Liming
> -----Original Message-----
> From: Scott Duplichan [mailto:sc...@notabs.org]
> Sent: Wednesday, October 29, 2014 12:17 PM
> To: edk2-devel@lists.sourceforge.net; Gao, Liming
> Subject: RE: [edk2] EDK2 Developer Tools for Windows
>
> How about we make Cygwin a separate topic/patch?
>
> Here is a new patch that adds Windows support for both gcc 4.8.x and gcc 
> 4.9.x. This time testing is more thorough: boot testing using Duet for all 4 
> combinations of IA32/X64 and gcc 4.8.2 and gcc 4.9.1 passes. A Windows hosted 
> gcc 4.8.2 has been added here:
> http://sourceforge.net/projects/edk2developertoolsforwindows/
>
> The environment variable settings for Windows look like:
>
> set UEFI_BUILD_TOOLS=%cd%\tools
> set NASM_PREFIX=%UEFI_BUILD_TOOLS%\nasm211\
> set GCC48_BIN=%UEFI_BUILD_TOOLS%\gcc482-x86\bin\
> set GCC48_DLL=%UEFI_BUILD_TOOLS%\gcc482-x86\dll\;%GCC48_BIN%
> set GCC48_ARM_PREFIX=%UEFI_BUILD_TOOLS%\gcc482-arm\bin\
> set GCC48_AARCH64_PREFIX=%UEFI_BUILD_TOOLS%\gcc482-aarch64\bin\
> set GCC49_BIN=%UEFI_BUILD_TOOLS%\gcc491-x86\bin\
> set GCC49_DLL=%UEFI_BUILD_TOOLS%\gcc491-x86\dll\;%GCC49_BIN%
> set GCC49_ARM_PREFIX=%UEFI_BUILD_TOOLS%\gcc491-arm\bin\
> set GCC49_AARCH64_PREFIX=%UEFI_BUILD_TOOLS%\gcc491-aarch64\bin\
>
> No change is needed for building from Linux. Here is the patch:
> --
>
> BaseTools: Modify gcc 4.8 and 4.9 tool chain definition to support building 
> from Windows.
>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Scott Duplichan <sc...@notabs.org>
>
> --
>
> Index: BaseTools/Conf/build_rule.template
> ===================================================================
> --- BaseTools/Conf/build_rule.template  (revision 16254)
> +++ BaseTools/Conf/build_rule.template  (working copy)
> @@ -131,12 +131,34 @@
>      <Command.GCC, Command.RVCT>
>          # For RVCTCYGWIN CC_FLAGS must be first to work around pathing issues
>          "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}
> -        "$(SYMRENAME)" $(SYMRENAME_FLAGS) ${dst}
>
>      <Command.ARMGCC, Command.ARMLINUXGCC, command.XCODE>
>          "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}
>
> +[C-Code-File.COMMON.IPF]
> +    <InputFile>
> +        ?.c
> +        ?.C
> +        ?.cc
> +        ?.CC
> +        ?.cpp
> +        ?.Cpp
> +        ?.CPP
>
> +    <ExtraDependency>
> +        $(MAKE_FILE)
> +
> +    <OutputFile>
> +        $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
> +
> +    <Command.MSFT, Command.INTEL>
> +        "$(CC)" /Fo${dst} $(CC_FLAGS) $(INC) ${src}
> +
> +    <Command.GCC, Command.RVCT>
> +        # For RVCTCYGWIN CC_FLAGS must be first to work around pathing issues
> +        "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}
> +        "$(SYMRENAME)" $(SYMRENAME_FLAGS) ${dst}
> +
>  [C-Header-File]
>      <InputFile>
>          *.h, *.H
> Index: BaseTools/Conf/tools_def.template 
> ===================================================================
> --- BaseTools/Conf/tools_def.template   (revision 16254)
> +++ BaseTools/Conf/tools_def.template   (working copy)
> @@ -179,11 +179,11 @@
>  DEFINE GCC47_IA32_PREFIX       = /usr/bin/
>  DEFINE GCC47_X64_PREFIX        = /usr/bin/
>
> -DEFINE GCC48_IA32_PREFIX       = /usr/bin/
> -DEFINE GCC48_X64_PREFIX        = /usr/bin/
> +DEFINE GCC48_IA32_PREFIX       = ENV(GCC48_BIN)
> +DEFINE GCC48_X64_PREFIX        = ENV(GCC48_BIN)
>
> -DEFINE GCC49_IA32_PREFIX       = /usr/bin/
> -DEFINE GCC49_X64_PREFIX        = /usr/bin/
> +DEFINE GCC49_IA32_PREFIX       = ENV(GCC49_BIN)
> +DEFINE GCC49_X64_PREFIX        = ENV(GCC49_BIN)
>
>  DEFINE UNIX_IASL_BIN           = ENV(IASL_PREFIX)iasl
>  DEFINE WIN_ASL_BIN_DIR         = C:\ASL
> @@ -333,14 +333,14 @@
>  #                             Required to build platforms or ACPI tables:
>  #                               Intel(r) ACPI Compiler v20101013 from
>  #                               
> http://www.acpica.org/downloads/previous_releases.php
> -#   GCC48       -Linux-  Requires:
> -#                             GCC 4.8
> +#   GCC48  -Linux,Windows-  Requires:
> +#                             GCC 4.8 targeting x86_64-linux-gnu
>  #                        Optional:
>  #                             Required to build platforms or ACPI tables:
>  #                               Intel(r) ACPI Compiler v20101013 from
>  #                               
> http://www.acpica.org/downloads/previous_releases.php
> -#   GCC49       -Linux-  Requires:
> -#                             GCC 4.9
> +#   GCC49  -Linux,Windows-  Requires:
> +#                             GCC 4.9 targeting x86_64-linux-gnu
>  #                        Optional:
>  #                             Required to build platforms or ACPI tables:
>  #                               Intel(r) ACPI Compiler v20101013 from
> @@ -4367,7 +4367,8 @@
>  
> ####################################################################################
>  *_GCC48_*_*_FAMILY               = GCC
>
> -*_GCC48_*_MAKE_PATH                    = make
> +*_GCC48_*_MAKE_PATH                    = DEF(GCC48_IA32_PREFIX)make
> +*_GCC48_*_*_DLL                        = ENV(GCC48_DLL)
>  *_GCC48_*_ASL_PATH                     = DEF(UNIX_IASL_BIN)
>
>  *_GCC48_*_PP_FLAGS                     = DEF(GCC_PP_FLAGS)
> @@ -4489,7 +4490,8 @@
>  
> ####################################################################################
>  *_GCC49_*_*_FAMILY               = GCC
>
> -*_GCC49_*_MAKE_PATH                    = make
> +*_GCC49_*_MAKE_PATH                    = DEF(GCC49_IA32_PREFIX)make
> +*_GCC49_*_*_DLL                        = ENV(GCC49_DLL)
>  *_GCC49_*_ASL_PATH                     = DEF(UNIX_IASL_BIN)
>
>  *_GCC49_*_PP_FLAGS                     = DEF(GCC_PP_FLAGS)
> Index: BaseTools/Source/Python/AutoGen/GenMake.py
> ===================================================================
> --- BaseTools/Source/Python/AutoGen/GenMake.py  (revision 16254)
> +++ BaseTools/Source/Python/AutoGen/GenMake.py  (working copy)
> @@ -679,7 +679,11 @@
>                      NewFile = self.PlaceMacro(str(F), self.Macros)
>                      # In order to use file list macro as dependency
>                      if T.GenListFile:
> -                        self.ListFileMacros[T.ListFileMacro].append(str(F))
> +                        # gnu tools need forward slash path separater, even 
> on Windows
> +                        if self.PlatformInfo.ToolChainFamily in ('GCC'):
> +                            
> self.ListFileMacros[T.ListFileMacro].append(str(F).replace ('\\', '/'))
> +                        else:
> +
> + self.ListFileMacros[T.ListFileMacro].append(str(F))
>                          self.FileListMacros[T.FileListMacro].append(NewFile)
>                      elif T.GenFileListMacro:
>                          self.FileListMacros[T.FileListMacro].append(NewFile)
>
>
> --
> Thanks,
> Scott
>
> ]Jordan Justen [mailto:jordan.l.jus...@intel.com] wrote:
> ]
> ]]On 2014-10-24 02:56:46, Gao, Liming wrote:
> ]]> Jordan:
> ]]>   Before deprecate those tool chains, I still want to make them work
> ]]>   with the updated Build Tools.
> ]]
> ]]I think CYGGCC was able to build in (our internal) build pool.
> ]]
> ]]I'm not saying that CYGGCC was useful, or easy to setup, but just that ]]I 
> don't think it was totally broken. :) ]]
> ]]>   If there is no one to use them, I think we can remove them. Could
> ]]>   you raise your proposal in this mail list to collect more
> ]]>   feedbacks?
> ]]
> ]]Well, I can't see the purpose for the ELFGCC toolchain. It was only ]]used 
> with UnixPkg, which is now deprecated.  So I tried to remove it ]]August 
> 2013, but this was rejected.
> ]]
> ]]Anyway, I think we should consider adding 
> ]]BaseTools/Conf/tools_def.deprecated for older unused and unsupported 
> ]]toolchains. (Of course, we could just delete them too, because source 
> ]]control keeps them available in the history.) ]] ]]So, I think ELFGCC is a 
> clear candidate for deprecation.
> ]]
> ]]Regarding CYGGCC, I think it should also be deprecated in favor of 
> ]]running GCC44-GCC49 under a full cygwin environment. (bash shell, not
> ]]cmd.exe)
> ]
> ]I tried $ build -p ShellPkg/ShellPkg.dsc -b RELEASE -t GCC49 -a X64 ]from 
> the Cygwin bash shell and fails because the Cygwin linker only ]makes PE 
> images:
> ]
> ]    ld: unrecognised emulation mode: elf_x86_64
> ]    Supported emulations: i386pep i386pe
> ]
> ]Thanks,
> ]Scott
>
> ]
> ]-Jordan
> ]
>> -----Original Message-----
>> From: Jordan Justen [mailto:jljus...@gmail.com]
>> Sent: Friday, October 24, 2014 8:27 AM
>> To: edk2-devel@lists.sourceforge.net
>> Subject: Re: [edk2] EDK2 Developer Tools for Windows
>>
>> On Thu, Oct 23, 2014 at 6:46 AM, Gao, Liming <liming....@intel.com> wrote:
>> > Scott:
>> >   Yes. GenMake.py change is also required. But, this change will impact 
>> > CYGGCC tool chain. So, CYGGCC Make path should be changed to 
>> > DEF(CYGWIN_BIN)\make.exe instead of DEF(MS_VS_BIN)\nmake.exe.
>>
>> Can we change CYGGCC like this?
>>
>> I basically think CYGGCC is pointless, but I thought that the strange fact 
>> that it used nmake was one of the main characteristics of it.
>>
>> And, if we can change a toolchain so drastically, why can't we
>> deprecate toolchains? (For example, I think we should just deprecate
>> CYGGCC and ELFGCC...)
>>
>> -Jordan
>>
>> >   Next, could you create the full patch and send it for review?
>> >
>> > Thanks
>> > Liming
>> > -----Original Message-----
>> > From: Scott Duplichan [mailto:sc...@notabs.org]
>> > Sent: Wednesday, October 22, 2014 12:04 PM
>> > To: edk2-devel@lists.sourceforge.net
>> > Subject: Re: [edk2] EDK2 Developer Tools for Windows
>> >
>> > Hello Liming,
>> >
>> > Ah, yes. Why didn't I think of that! I retested on Windows and Linux using 
>> > your patch below and it all passes. The GenMake.py patch and the 
>> > corresponding update of build.exe are still needed.
>> >
>> > Thanks,
>> > Scott
>> >
>> > -----Original Message-----
>> > From: Gao, Liming [mailto:liming....@intel.com]
>> > Sent: Tuesday, October 21, 2014 10:21 PM
>> > To: edk2-devel@lists.sourceforge.net
>> > Subject: Re: [edk2] EDK2 Developer Tools for Windows
>> >
>> > Scott:
>> >   Could we configure GCC49_DLL like below to resolve this issue?
>> >
>> > set GCC49_DLL=D:\edk2build    ools\gcc491-x86\dll;
>> > D:\edk2build    ools\gcc491-x86\bin
>> >
>> > Thanks
>> > Liming
>> > -----Original Message-----
>> > From: Scott Duplichan [mailto:sc...@notabs.org]
>> > Sent: Wednesday, October 22, 2014 3:28 AM
>> > To: edk2-devel@lists.sourceforge.net
>> > Subject: Re: [edk2] EDK2 Developer Tools for Windows
>> >
>> > Hello Liming,
>> >
>> > The build_rule.template part of this revised patch looks good. It removes 
>> > the need for the non-ipf symrename echo work around, and makes the build 
>> > output easier to look at.
>> >
>> > The new tools_def.template patch almost works. I get an echo fail for 
>> > Windows hosted ARM/AARCH64 builds:
>> > "echo" objcopy not needed for
>> > d:\edk2build\edk2\Build\Shell\RELEASE_GCC49\ARM\ShellPkg\Application
>> > \S hell\Shell\DEBUG\Shell.dll '"echo"' is not recognized as an
>> > internal or external command.
>> >
>> > One solution would be to treat Windows hosted builds of ARM/AARCH64 same 
>> > as x86: let it invoke objcopy with no flags.
>> > Here is the reason the echo.exe in the gcc bin directory is no longer 
>> > invoked: When the build system tries to invoke "echo", it adds only the 
>> > gcc dll directory (*_GCC49_*_*_DLL) to the path. It does not add the gcc 
>> > bin directory to the path. The original patch solves this problem by 
>> > 'abusing' the purpose of *_GCC49_*_*_DLL and putting both DLL and BIN 
>> > paths there. Other solutions are putting echo.exe in the DLL directory 
>> > (confusing), or in the pre-existing path, or in BaseTools\Bin\Win32. But 
>> > these methods add extra steps when setting up the build environment.
>> >
>> >                    IA32     X64       ARM     ARCH64
>> > Windows host       pass     pass      fail    fail
>> > Linux host         pass     pass
>> >
>> > Here are the commands I used for testing on Windows:
>> >
>> > cd /d D:\edk2build\edk2
>> > Edk2Setup.bat
>> > set NASM_PREFIX=D:\edk2build    ools\nasm211\
>> > set GCC49_BIN=D:\edk2build    ools\gcc491-x86\bin\
>> > set GCC49_DLL=D:\edk2build    ools\gcc491-x86\dll\
>> > set GCC49_ARM_PREFIX=D:\edk2build    ools\gcc491-arm\bin\
>> > set GCC49_AARCH64_PREFIX=D:\edk2build    ools\gcc491-aarch64\bin\
>> > build.exe -p ShellPkg\ShellPkg.dsc -b RELEASE -t GCC49 -n 16 -a IA32
>> > build.exe -p ShellPkg\ShellPkg.dsc -b RELEASE -t GCC49 -n 16 -a X64
>> > build.exe -p ShellPkg\ShellPkg.dsc -b RELEASE -t GCC49 -n 16 -a ARM
>> > build.exe -p ShellPkg\ShellPkg.dsc -b RELEASE -t GCC49 -n 16 -a
>> > AARCH64
>> >
>> > Though I didn't test Linux hosted ARM/AARCH64 builds, they should still 
>> > work.
>> >
>> > Thanks,
>> > Scott
>> >
>> > -----Original Message-----
>> > From: Gao, Liming [mailto:liming....@intel.com]
>> > Sent: Tuesday, October 21, 2014 04:27 AM
>> > To: edk2-devel@lists.sourceforge.net
>> > Subject: Re: [edk2] EDK2 Developer Tools for Windows
>> >
>> > Scott:
>> >   Update the patch for BaseTools/Conf files.
>> >   1. Update build_rule.template to add the specific rule for IPF arch. 
>> > Then, the specific echo is not required.
>> >   2. Update tools_def.template to configure GCC49_BIN and GCC49_DLL. It is 
>> > the compatible change.
>> >
>> > Index: build_rule.template
>> > ===================================================================
>> > --- build_rule.template (revision 16124)
>> > +++ build_rule.template (working copy)
>> > @@ -131,12 +131,34 @@
>> >      <Command.GCC, Command.RVCT>
>> >          # For RVCTCYGWIN CC_FLAGS must be first to work around pathing 
>> > issues
>> >          "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}
>> > -        "$(SYMRENAME)" $(SYMRENAME_FLAGS) ${dst}
>> >
>> >      <Command.ARMGCC, Command.ARMLINUXGCC, command.XCODE>
>> >          "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}
>> >
>> > +[C-Code-File.COMMON.IPF]
>> > +    <InputFile>
>> > +        ?.c
>> > +        ?.C
>> > +        ?.cc
>> > +        ?.CC
>> > +        ?.cpp
>> > +        ?.Cpp
>> > +        ?.CPP
>> >
>> > +    <ExtraDependency>
>> > +        $(MAKE_FILE)
>> > +
>> > +    <OutputFile>
>> > +        $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
>> > +
>> > +    <Command.MSFT, Command.INTEL>
>> > +        "$(CC)" /Fo${dst} $(CC_FLAGS) $(INC) ${src}
>> > +
>> > +    <Command.GCC, Command.RVCT>
>> > +        # For RVCTCYGWIN CC_FLAGS must be first to work around pathing 
>> > issues
>> > +        "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}
>> > +        "$(SYMRENAME)" $(SYMRENAME_FLAGS) ${dst}
>> > +
>> >  [C-Header-File]
>> >      <InputFile>
>> >          *.h, *.H
>> > Index: tools_def.template
>> > ===================================================================
>> > --- tools_def.template  (revision 16124)
>> > +++ tools_def.template  (working copy)
>> > @@ -182,8 +182,8 @@
>> >  DEFINE GCC48_IA32_PREFIX       = /usr/bin/
>> >  DEFINE GCC48_X64_PREFIX        = /usr/bin/
>> >
>> > -DEFINE GCC49_IA32_PREFIX       = /usr/bin/
>> > -DEFINE GCC49_X64_PREFIX        = /usr/bin/
>> > +DEFINE GCC49_IA32_PREFIX       = ENV(GCC49_BIN)
>> > +DEFINE GCC49_X64_PREFIX        = ENV(GCC49_BIN)
>> >
>> >  DEFINE UNIX_IASL_BIN           = ENV(IASL_PREFIX)iasl
>> >  DEFINE WIN_ASL_BIN_DIR         = C:\ASL
>> > @@ -4489,7 +4489,8 @@
>> >  
>> > ####################################################################################
>> >  *_GCC49_*_*_FAMILY               = GCC
>> >
>> > -*_GCC49_*_MAKE_PATH                    = make
>> > +*_GCC49_*_MAKE_PATH                    = DEF(GCC49_IA32_PREFIX)make
>> > +*_GCC49_*_*_DLL                        = ENV(GCC49_DLL)
>> >  *_GCC49_*_ASL_PATH                     = DEF(UNIX_IASL_BIN)
>> >
>> >  *_GCC49_*_PP_FLAGS                     = DEF(GCC_PP_FLAGS)
>> >
>> > Thanks
>> > Liming
>> > -----Original Message-----
>> > From: Gao, Liming [mailto:liming....@intel.com]
>> > Sent: Tuesday, October 21, 2014 4:22 PM
>> > To: edk2-devel@lists.sourceforge.net
>> > Subject: Re: [edk2] EDK2 Developer Tools for Windows
>> >
>> > Scott:
>> >   I will download them and try again.
>> >
>> >   For the patch, I provide another compatible version in previous mail. 
>> > Have you any comment for it?
>> >
>> > Linux user doesn't need to set GCC49_BIN, GCC49_DLL env, because /usr/bin/ 
>> > is the default system PATH. Windows user need to set GCC49_BIN, GCC49_DLL 
>> > and IASL_PREFIX env to use this tool chain.
>> > Index: Conf/tools_def.template
>> > ===================================================================
>> > --- Conf/tools_def.template     (revision 16124)
>> > +++ Conf/tools_def.template     (working copy)
>> > @@ -182,8 +182,8 @@
>> >  DEFINE GCC48_IA32_PREFIX       = /usr/bin/
>> >  DEFINE GCC48_X64_PREFIX        = /usr/bin/
>> >
>> > -DEFINE GCC49_IA32_PREFIX       = /usr/bin/
>> > -DEFINE GCC49_X64_PREFIX        = /usr/bin/
>> > +DEFINE GCC49_IA32_PREFIX       = ENV(GCC49_BIN)
>> > +DEFINE GCC49_X64_PREFIX        = ENV(GCC49_BIN)
>> >
>> > -*_GCC49_*_MAKE_PATH                    = make
>> > +*_GCC49_*_MAKE_PATH                    = DEF(GCC49_BIN)make
>> > +*_GCC49_*_*_DLL                        = DEF(GCC49_DLL)
>> >  *_GCC49_*_ASL_PATH                     = DEF(UNIX_IASL_BIN)
>> >
>> > Thanks
>> > Liming
>> > -----Original Message-----
>> > From: Scott Duplichan [mailto:sc...@notabs.org]
>> > Sent: Tuesday, October 21, 2014 1:14 PM
>> > To: edk2-devel@lists.sourceforge.net
>> > Subject: [edk2] EDK2 Developer Tools for Windows
>> >
>> > Here are Windows hosted gcc tool chains for EDK2 builds:
>> >
>> > https://sourceforge.net/projects/edk2developertoolsforwindows/files/
>> >
>> > I will add more readme files tomorrow.
>> >
>> > The tools build IA32, X64, IPF, ARM, and AARCH64 from Windows. X64 builds 
>> > are well tested. I have not yet boot tested IA32 builds but plan to. I 
>> > don't have a way to boot test IPF, ARM, and AARCH64 builds.
>> >
>> > Only gcc 4.9.1 tool chains are uploaded. Older gcc versions can be built 
>> > if needed. A patch is included to add support for IA32, X64, ARM, and 
>> > AARCH64. If there is any interest in IPF it can be added too.
>> >
>> > This patch "breaks" non-Windows builds. The fix is to execute:
>> >
>> >   export GCC49_X86=/usr
>> >
>> > .. before building. I think logic needs to be added to edksetup.sh to set 
>> > GCC49_X86 if it is not already set. Linux guys, what is the best way?
>> >
>> > Thanks,
>> > Scott
>> >
>> >
>> >
>> > --------------------------------------------------------------------
>> > --
>> > -------- Comprehensive Server Monitoring with Site24x7.
>> > Monitor 10 servers for $9/Month.
>> > Get alerted through email, SMS, voice calls or mobile push notifications.
>> > Take corrective actions from your mobile device.
>> > http://p.sf.net/sfu/Zoho
>> > _______________________________________________
>> > edk2-devel mailing list
>> > edk2-devel@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/edk2-devel
>> >
>> > --------------------------------------------------------------------
>> > --
>> > -------- Comprehensive Server Monitoring with Site24x7.
>> > Monitor 10 servers for $9/Month.
>> > Get alerted through email, SMS, voice calls or mobile push notifications.
>> > Take corrective actions from your mobile device.
>> > http://p.sf.net/sfu/Zoho
>> > _______________________________________________
>> > edk2-devel mailing list
>> > edk2-devel@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/edk2-devel
>> >
>> > --------------------------------------------------------------------
>> > --
>> > -------- Comprehensive Server Monitoring with Site24x7.
>> > Monitor 10 servers for $9/Month.
>> > Get alerted through email, SMS, voice calls or mobile push notifications.
>> > Take corrective actions from your mobile device.
>> > http://p.sf.net/sfu/Zoho
>> > _______________________________________________
>> > edk2-devel mailing list
>> > edk2-devel@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/edk2-devel
>> >
>> >
>> > --------------------------------------------------------------------
>> > --
>> > -------- Comprehensive Server Monitoring with Site24x7.
>> > Monitor 10 servers for $9/Month.
>> > Get alerted through email, SMS, voice calls or mobile push notifications.
>> > Take corrective actions from your mobile device.
>> > http://p.sf.net/sfu/Zoho
>> > _______________________________________________
>> > edk2-devel mailing list
>> > edk2-devel@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/edk2-devel
>> >
>> > --------------------------------------------------------------------
>> > --
>> > -------- Comprehensive Server Monitoring with Site24x7.
>> > Monitor 10 servers for $9/Month.
>> > Get alerted through email, SMS, voice calls or mobile push notifications.
>> > Take corrective actions from your mobile device.
>> > http://p.sf.net/sfu/Zoho
>> > _______________________________________________
>> > edk2-devel mailing list
>> > edk2-devel@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/edk2-devel
>> >
>> >
>> > --------------------------------------------------------------------
>> > --
>> > -------- Comprehensive Server Monitoring with Site24x7.
>> > Monitor 10 servers for $9/Month.
>> > Get alerted through email, SMS, voice calls or mobile push notifications.
>> > Take corrective actions from your mobile device.
>> > http://p.sf.net/sfu/Zoho
>> > _______________________________________________
>> > edk2-devel mailing list
>> > edk2-devel@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/edk2-devel
>> >
>> > --------------------------------------------------------------------
>> > --
>> > -------- _______________________________________________
>> > edk2-devel mailing list
>> > edk2-devel@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/edk2-devel
>>
>> ----------------------------------------------------------------------
>> -------- _______________________________________________
>> edk2-devel mailing list
>> edk2-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/edk2-devel
>>
>> ----------------------------------------------------------------------
>> -------- _______________________________________________
>> edk2-devel mailing list
>> edk2-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/edk2-devel
>
> ------------------------------------------------------------------------------
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
> ------------------------------------------------------------------------------
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel

------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to