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