[edk2-devel] [Patch] BaseTools/Build: Fix Structured PCD app host env issues

Michael D Kinney posted 1 patch 4 years, 2 months ago
Failed in applying to current master (apply log)
.../Source/Python/Workspace/DscBuildData.py   | 35 +++++++++++++++----
1 file changed, 28 insertions(+), 7 deletions(-)
[edk2-devel] [Patch] BaseTools/Build: Fix Structured PCD app host env issues
Posted by Michael D Kinney 4 years, 2 months ago
https://bugzilla.tianocore.org/show_bug.cgi?id=2495
https://bugzilla.tianocore.org/show_bug.cgi?id=2496

Structured PCD processing requires a host POSIX build
environment.  If the Structure PCD application can not
be built using the default environment under Windows, then
retry the build after setting up the host environment for
the current tool chain tag.

Also reduce the build dependencies for the Structured PCD
application to increase compiler compatibility.

Cc: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
---
 .../Source/Python/Workspace/DscBuildData.py   | 35 +++++++++++++++----
 1 file changed, 28 insertions(+), 7 deletions(-)

diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py b/BaseTools/Source/Python/Workspace/DscBuildData.py
index c65a0dd346..bc3f32bb1d 100644
--- a/BaseTools/Source/Python/Workspace/DscBuildData.py
+++ b/BaseTools/Source/Python/Workspace/DscBuildData.py
@@ -91,9 +91,6 @@ WindowsCFLAGS = 'CFLAGS = $(CFLAGS) /wd4200 /wd4034 /wd4101 '
 LinuxCFLAGS = 'BUILD_CFLAGS += -Wno-pointer-to-int-cast -Wno-unused-variable '
 PcdMakefileEnd = '''
 !INCLUDE $(BASE_TOOLS_PATH)\Source\C\Makefiles\ms.common
-
-LIBS = $(LIB_PATH)\Common.lib
-
 !INCLUDE $(BASE_TOOLS_PATH)\Source\C\Makefiles\ms.app
 '''
 
@@ -2637,10 +2634,10 @@ class DscBuildData(PlatformBuildClassObject):
 
         MakeApp = PcdMakefileHeader
         if sys.platform == "win32":
-            MakeApp = MakeApp + 'APPFILE = %s\%s.exe\n' % (self.OutputPath, PcdValueInitName) + 'APPNAME = %s\n' % (PcdValueInitName) + 'OBJECTS = %s\%s.obj\n' % (self.OutputPath, PcdValueInitName) + 'INC = '
+            MakeApp = MakeApp + 'APPFILE = %s\%s.exe\n' % (self.OutputPath, PcdValueInitName) + 'APPNAME = %s\n' % (PcdValueInitName) + 'OBJECTS = %s\%s.obj %s.obj\n' % (self.OutputPath, PcdValueInitName, os.path.normpath(mws.join(GlobalData.gGlobalDefines["EDK_TOOLS_PATH"], "Source/C/Common/PcdValueCommon"))) + 'INC = '
         else:
             MakeApp = MakeApp + PcdGccMakefile
-            MakeApp = MakeApp + 'APPFILE = %s/%s\n' % (self.OutputPath, PcdValueInitName) + 'APPNAME = %s\n' % (PcdValueInitName) + 'OBJECTS = %s/%s.o\n' % (self.OutputPath, PcdValueInitName) + \
+            MakeApp = MakeApp + 'APPFILE = %s/%s\n' % (self.OutputPath, PcdValueInitName) + 'APPNAME = %s\n' % (PcdValueInitName) + 'OBJECTS = %s/%s.o %s.o\n' % (self.OutputPath, PcdValueInitName, os.path.normpath(mws.join(GlobalData.gGlobalDefines["EDK_TOOLS_PATH"], "Source/C/Common/PcdValueCommon"))) + \
                       'include $(MAKEROOT)/Makefiles/app.makefile\n' + 'INCLUDE +='
 
         IncSearchList = []
@@ -2723,8 +2720,8 @@ class DscBuildData(PlatformBuildClassObject):
                     IncludeFileFullPaths.append(os.path.normpath(includefullpath))
                     break
         SearchPathList = []
-        SearchPathList.append(os.path.normpath(mws.join(GlobalData.gWorkspace, "BaseTools/Source/C/Include")))
-        SearchPathList.append(os.path.normpath(mws.join(GlobalData.gWorkspace, "BaseTools/Source/C/Common")))
+        SearchPathList.append(os.path.normpath(mws.join(GlobalData.gGlobalDefines["EDK_TOOLS_PATH"], "BaseTools/Source/C/Include")))
+        SearchPathList.append(os.path.normpath(mws.join(GlobalData.gGlobalDefines["EDK_TOOLS_PATH"], "BaseTools/Source/C/Common")))
         SearchPathList.extend(str(item) for item in IncSearchList)
         IncFileList = GetDependencyList(IncludeFileFullPaths, SearchPathList)
         for include_file in IncFileList:
@@ -2743,9 +2740,33 @@ class DscBuildData(PlatformBuildClassObject):
         else:
             Dest_PcdValueInitExe = os.path.join(self.OutputPath, PcdValueInitName) +".exe"
         Messages = ''
+
+        VsDevCmd = {
+            "VS2019"   : '"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\Common7\\Tools\\VsDevCmd.bat"',
+            "VS2017"   : '"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\Common7\\Tools\\VsDevCmd.bat"',
+            "VS2015"   : '"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Tools\\VsDevCmd.bat"',
+            "VS2015x86": '"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Tools\\VsDevCmd.bat"',
+            "VS2013"   : '"C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\Tools\\VsDevCmd.bat"',
+            "VS2013x86": '"C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\Tools\\VsDevCmd.bat"',
+            "VS2012"   : '"C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Common7\\Tools\\VsDevCmd.bat"',
+            "VS2012x86": '"C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Common7\\Tools\\VsDevCmd.bat"',
+            "VS2010"   : '"C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\vcvarsall.bat" x86',
+            "VS2010x86": '"C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\vcvarsall.bat" x86'
+        }
+
         if sys.platform == "win32":
             MakeCommand = 'nmake -f %s' % (MakeFileName)
             returncode, StdOut, StdErr = DscBuildData.ExecuteCommand (MakeCommand)
+            if returncode != 0:
+                #
+                # If the nmake command failed, then lookup and run the VS
+                # Development Environment script for the current ToolChain and
+                # try the nmake command again.
+                #
+                if self._Toolchain in VsDevCmd:
+                    MakeCommand = VsDevCmd[self._Toolchain] + '&' + MakeCommand
+                    if os.path.exists (MakeCommand.split('"')[1]):
+                        returncode, StdOut, StdErr = DscBuildData.ExecuteCommand (MakeCommand)
             Messages = StdOut
         else:
             MakeCommand = 'make -f %s' % (MakeFileName)
-- 
2.21.0.windows.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#53555): https://edk2.groups.io/g/devel/message/53555
Mute This Topic: https://groups.io/mt/70263619/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [Patch] BaseTools/Build: Fix Structured PCD app host env issues
Posted by Liming Gao 4 years, 2 months ago
Mike:
  I suggest to call BaseTools\set_vsprefix_envs.bat to setup VS environment. Its input parameter is VS2012, VS2013, VS2015, VS2017, VS2019. If so, we don't need to add VS installation path in Build python script. 

Thanks
Liming
> -----Original Message-----
> From: Kinney, Michael D <michael.d.kinney@intel.com>
> Sent: Thursday, January 30, 2020 10:38 AM
> To: devel@edk2.groups.io
> Cc: Feng, Bob C <bob.c.feng@intel.com>; Gao, Liming <liming.gao@intel.com>
> Subject: [Patch] BaseTools/Build: Fix Structured PCD app host env issues
> 
> https://bugzilla.tianocore.org/show_bug.cgi?id=2495
> https://bugzilla.tianocore.org/show_bug.cgi?id=2496
> 
> Structured PCD processing requires a host POSIX build
> environment.  If the Structure PCD application can not
> be built using the default environment under Windows, then
> retry the build after setting up the host environment for
> the current tool chain tag.
> 
> Also reduce the build dependencies for the Structured PCD
> application to increase compiler compatibility.
> 
> Cc: Bob Feng <bob.c.feng@intel.com>
> Cc: Liming Gao <liming.gao@intel.com>
> Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
> ---
>  .../Source/Python/Workspace/DscBuildData.py   | 35 +++++++++++++++----
>  1 file changed, 28 insertions(+), 7 deletions(-)
> 
> diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py b/BaseTools/Source/Python/Workspace/DscBuildData.py
> index c65a0dd346..bc3f32bb1d 100644
> --- a/BaseTools/Source/Python/Workspace/DscBuildData.py
> +++ b/BaseTools/Source/Python/Workspace/DscBuildData.py
> @@ -91,9 +91,6 @@ WindowsCFLAGS = 'CFLAGS = $(CFLAGS) /wd4200 /wd4034 /wd4101 '
>  LinuxCFLAGS = 'BUILD_CFLAGS += -Wno-pointer-to-int-cast -Wno-unused-variable '
>  PcdMakefileEnd = '''
>  !INCLUDE $(BASE_TOOLS_PATH)\Source\C\Makefiles\ms.common
> -
> -LIBS = $(LIB_PATH)\Common.lib
> -
>  !INCLUDE $(BASE_TOOLS_PATH)\Source\C\Makefiles\ms.app
>  '''
> 
> @@ -2637,10 +2634,10 @@ class DscBuildData(PlatformBuildClassObject):
> 
>          MakeApp = PcdMakefileHeader
>          if sys.platform == "win32":
> -            MakeApp = MakeApp + 'APPFILE = %s\%s.exe\n' % (self.OutputPath, PcdValueInitName) + 'APPNAME = %s\n' %
> (PcdValueInitName) + 'OBJECTS = %s\%s.obj\n' % (self.OutputPath, PcdValueInitName) + 'INC = '
> +            MakeApp = MakeApp + 'APPFILE = %s\%s.exe\n' % (self.OutputPath, PcdValueInitName) + 'APPNAME = %s\n' %
> (PcdValueInitName) + 'OBJECTS = %s\%s.obj %s.obj\n' % (self.OutputPath, PcdValueInitName,
> os.path.normpath(mws.join(GlobalData.gGlobalDefines["EDK_TOOLS_PATH"], "Source/C/Common/PcdValueCommon"))) + 'INC = '
>          else:
>              MakeApp = MakeApp + PcdGccMakefile
> -            MakeApp = MakeApp + 'APPFILE = %s/%s\n' % (self.OutputPath, PcdValueInitName) + 'APPNAME = %s\n' % (PcdValueInitName)
> + 'OBJECTS = %s/%s.o\n' % (self.OutputPath, PcdValueInitName) + \
> +            MakeApp = MakeApp + 'APPFILE = %s/%s\n' % (self.OutputPath, PcdValueInitName) + 'APPNAME = %s\n' %
> (PcdValueInitName) + 'OBJECTS = %s/%s.o %s.o\n' % (self.OutputPath, PcdValueInitName,
> os.path.normpath(mws.join(GlobalData.gGlobalDefines["EDK_TOOLS_PATH"], "Source/C/Common/PcdValueCommon"))) + \
>                        'include $(MAKEROOT)/Makefiles/app.makefile\n' + 'INCLUDE +='
> 
>          IncSearchList = []
> @@ -2723,8 +2720,8 @@ class DscBuildData(PlatformBuildClassObject):
>                      IncludeFileFullPaths.append(os.path.normpath(includefullpath))
>                      break
>          SearchPathList = []
> -        SearchPathList.append(os.path.normpath(mws.join(GlobalData.gWorkspace, "BaseTools/Source/C/Include")))
> -        SearchPathList.append(os.path.normpath(mws.join(GlobalData.gWorkspace, "BaseTools/Source/C/Common")))
> +        SearchPathList.append(os.path.normpath(mws.join(GlobalData.gGlobalDefines["EDK_TOOLS_PATH"],
> "BaseTools/Source/C/Include")))
> +        SearchPathList.append(os.path.normpath(mws.join(GlobalData.gGlobalDefines["EDK_TOOLS_PATH"],
> "BaseTools/Source/C/Common")))
>          SearchPathList.extend(str(item) for item in IncSearchList)
>          IncFileList = GetDependencyList(IncludeFileFullPaths, SearchPathList)
>          for include_file in IncFileList:
> @@ -2743,9 +2740,33 @@ class DscBuildData(PlatformBuildClassObject):
>          else:
>              Dest_PcdValueInitExe = os.path.join(self.OutputPath, PcdValueInitName) +".exe"
>          Messages = ''
> +
> +        VsDevCmd = {
> +            "VS2019"   : '"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\Common7\\Tools\\VsDevCmd.bat"',
> +            "VS2017"   : '"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\Common7\\Tools\\VsDevCmd.bat"',
> +            "VS2015"   : '"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Tools\\VsDevCmd.bat"',
> +            "VS2015x86": '"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Tools\\VsDevCmd.bat"',
> +            "VS2013"   : '"C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\Tools\\VsDevCmd.bat"',
> +            "VS2013x86": '"C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\Tools\\VsDevCmd.bat"',
> +            "VS2012"   : '"C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Common7\\Tools\\VsDevCmd.bat"',
> +            "VS2012x86": '"C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Common7\\Tools\\VsDevCmd.bat"',
> +            "VS2010"   : '"C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\vcvarsall.bat" x86',
> +            "VS2010x86": '"C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\vcvarsall.bat" x86'
> +        }
> +
>          if sys.platform == "win32":
>              MakeCommand = 'nmake -f %s' % (MakeFileName)
>              returncode, StdOut, StdErr = DscBuildData.ExecuteCommand (MakeCommand)
> +            if returncode != 0:
> +                #
> +                # If the nmake command failed, then lookup and run the VS
> +                # Development Environment script for the current ToolChain and
> +                # try the nmake command again.
> +                #
> +                if self._Toolchain in VsDevCmd:
> +                    MakeCommand = VsDevCmd[self._Toolchain] + '&' + MakeCommand
> +                    if os.path.exists (MakeCommand.split('"')[1]):
> +                        returncode, StdOut, StdErr = DscBuildData.ExecuteCommand (MakeCommand)
>              Messages = StdOut
>          else:
>              MakeCommand = 'make -f %s' % (MakeFileName)
> --
> 2.21.0.windows.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#53598): https://edk2.groups.io/g/devel/message/53598
Mute This Topic: https://groups.io/mt/70263619/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [Patch] BaseTools/Build: Fix Structured PCD app host env issues
Posted by Michael D Kinney 4 years, 2 months ago
Liming,

That script does not set everything up to build
host apps for all VS20xx tool chains.  It works
for VS2017, VS2019, but not any of the others.
It sets env vars for those other tool chains but
Does not run the VS environment setup script that 
updates PATH and sets LIBS and INC to support 
build of POSIX apps.

Mike

> -----Original Message-----
> From: Gao, Liming <liming.gao@intel.com>
> Sent: Friday, January 31, 2020 12:27 AM
> To: Kinney, Michael D <michael.d.kinney@intel.com>;
> devel@edk2.groups.io
> Cc: Feng, Bob C <bob.c.feng@intel.com>
> Subject: RE: [Patch] BaseTools/Build: Fix Structured
> PCD app host env issues
> 
> Mike:
>   I suggest to call BaseTools\set_vsprefix_envs.bat to
> setup VS environment. Its input parameter is VS2012,
> VS2013, VS2015, VS2017, VS2019. If so, we don't need to
> add VS installation path in Build python script.
> 
> Thanks
> Liming
> > -----Original Message-----
> > From: Kinney, Michael D <michael.d.kinney@intel.com>
> > Sent: Thursday, January 30, 2020 10:38 AM
> > To: devel@edk2.groups.io
> > Cc: Feng, Bob C <bob.c.feng@intel.com>; Gao, Liming
> <liming.gao@intel.com>
> > Subject: [Patch] BaseTools/Build: Fix Structured PCD
> app host env issues
> >
> > https://bugzilla.tianocore.org/show_bug.cgi?id=2495
> > https://bugzilla.tianocore.org/show_bug.cgi?id=2496
> >
> > Structured PCD processing requires a host POSIX build
> > environment.  If the Structure PCD application can
> not
> > be built using the default environment under Windows,
> then
> > retry the build after setting up the host environment
> for
> > the current tool chain tag.
> >
> > Also reduce the build dependencies for the Structured
> PCD
> > application to increase compiler compatibility.
> >
> > Cc: Bob Feng <bob.c.feng@intel.com>
> > Cc: Liming Gao <liming.gao@intel.com>
> > Signed-off-by: Michael D Kinney
> <michael.d.kinney@intel.com>
> > ---
> >  .../Source/Python/Workspace/DscBuildData.py   | 35
> +++++++++++++++----
> >  1 file changed, 28 insertions(+), 7 deletions(-)
> >
> > diff --git
> a/BaseTools/Source/Python/Workspace/DscBuildData.py
> b/BaseTools/Source/Python/Workspace/DscBuildData.py
> > index c65a0dd346..bc3f32bb1d 100644
> > ---
> a/BaseTools/Source/Python/Workspace/DscBuildData.py
> > +++
> b/BaseTools/Source/Python/Workspace/DscBuildData.py
> > @@ -91,9 +91,6 @@ WindowsCFLAGS = 'CFLAGS = $(CFLAGS)
> /wd4200 /wd4034 /wd4101 '
> >  LinuxCFLAGS = 'BUILD_CFLAGS += -Wno-pointer-to-int-
> cast -Wno-unused-variable '
> >  PcdMakefileEnd = '''
> >  !INCLUDE
> $(BASE_TOOLS_PATH)\Source\C\Makefiles\ms.common
> > -
> > -LIBS = $(LIB_PATH)\Common.lib
> > -
> >  !INCLUDE
> $(BASE_TOOLS_PATH)\Source\C\Makefiles\ms.app
> >  '''
> >
> > @@ -2637,10 +2634,10 @@ class
> DscBuildData(PlatformBuildClassObject):
> >
> >          MakeApp = PcdMakefileHeader
> >          if sys.platform == "win32":
> > -            MakeApp = MakeApp + 'APPFILE =
> %s\%s.exe\n' % (self.OutputPath, PcdValueInitName) +
> 'APPNAME = %s\n' %
> > (PcdValueInitName) + 'OBJECTS = %s\%s.obj\n' %
> (self.OutputPath, PcdValueInitName) + 'INC = '
> > +            MakeApp = MakeApp + 'APPFILE =
> %s\%s.exe\n' % (self.OutputPath, PcdValueInitName) +
> 'APPNAME = %s\n' %
> > (PcdValueInitName) + 'OBJECTS = %s\%s.obj %s.obj\n' %
> (self.OutputPath, PcdValueInitName,
> >
> os.path.normpath(mws.join(GlobalData.gGlobalDefines["ED
> K_TOOLS_PATH"], "Source/C/Common/PcdValueCommon"))) +
> 'INC = '
> >          else:
> >              MakeApp = MakeApp + PcdGccMakefile
> > -            MakeApp = MakeApp + 'APPFILE = %s/%s\n'
> % (self.OutputPath, PcdValueInitName) + 'APPNAME =
> %s\n' % (PcdValueInitName)
> > + 'OBJECTS = %s/%s.o\n' % (self.OutputPath,
> PcdValueInitName) + \
> > +            MakeApp = MakeApp + 'APPFILE = %s/%s\n'
> % (self.OutputPath, PcdValueInitName) + 'APPNAME =
> %s\n' %
> > (PcdValueInitName) + 'OBJECTS = %s/%s.o %s.o\n' %
> (self.OutputPath, PcdValueInitName,
> >
> os.path.normpath(mws.join(GlobalData.gGlobalDefines["ED
> K_TOOLS_PATH"], "Source/C/Common/PcdValueCommon"))) + \
> >                        'include
> $(MAKEROOT)/Makefiles/app.makefile\n' + 'INCLUDE +='
> >
> >          IncSearchList = []
> > @@ -2723,8 +2720,8 @@ class
> DscBuildData(PlatformBuildClassObject):
> >
> IncludeFileFullPaths.append(os.path.normpath(includeful
> lpath))
> >                      break
> >          SearchPathList = []
> > -
> SearchPathList.append(os.path.normpath(mws.join(GlobalD
> ata.gWorkspace, "BaseTools/Source/C/Include")))
> > -
> SearchPathList.append(os.path.normpath(mws.join(GlobalD
> ata.gWorkspace, "BaseTools/Source/C/Common")))
> > +
> SearchPathList.append(os.path.normpath(mws.join(GlobalD
> ata.gGlobalDefines["EDK_TOOLS_PATH"],
> > "BaseTools/Source/C/Include")))
> > +
> SearchPathList.append(os.path.normpath(mws.join(GlobalD
> ata.gGlobalDefines["EDK_TOOLS_PATH"],
> > "BaseTools/Source/C/Common")))
> >          SearchPathList.extend(str(item) for item in
> IncSearchList)
> >          IncFileList =
> GetDependencyList(IncludeFileFullPaths, SearchPathList)
> >          for include_file in IncFileList:
> > @@ -2743,9 +2740,33 @@ class
> DscBuildData(PlatformBuildClassObject):
> >          else:
> >              Dest_PcdValueInitExe =
> os.path.join(self.OutputPath, PcdValueInitName) +".exe"
> >          Messages = ''
> > +
> > +        VsDevCmd = {
> > +            "VS2019"   : '"C:\\Program Files
> (x86)\\Microsoft Visual
> Studio\\2019\\Enterprise\\Common7\\Tools\\VsDevCmd.bat"
> ',
> > +            "VS2017"   : '"C:\\Program Files
> (x86)\\Microsoft Visual
> Studio\\2017\\Enterprise\\Common7\\Tools\\VsDevCmd.bat"
> ',
> > +            "VS2015"   : '"C:\\Program Files
> (x86)\\Microsoft Visual Studio
> 14.0\\Common7\\Tools\\VsDevCmd.bat"',
> > +            "VS2015x86": '"C:\\Program Files
> (x86)\\Microsoft Visual Studio
> 14.0\\Common7\\Tools\\VsDevCmd.bat"',
> > +            "VS2013"   : '"C:\\Program Files
> (x86)\\Microsoft Visual Studio
> 12.0\\Common7\\Tools\\VsDevCmd.bat"',
> > +            "VS2013x86": '"C:\\Program Files
> (x86)\\Microsoft Visual Studio
> 12.0\\Common7\\Tools\\VsDevCmd.bat"',
> > +            "VS2012"   : '"C:\\Program Files
> (x86)\\Microsoft Visual Studio
> 11.0\\Common7\\Tools\\VsDevCmd.bat"',
> > +            "VS2012x86": '"C:\\Program Files
> (x86)\\Microsoft Visual Studio
> 11.0\\Common7\\Tools\\VsDevCmd.bat"',
> > +            "VS2010"   : '"C:\\Program Files
> (x86)\\Microsoft Visual Studio 10.0\\VC\\vcvarsall.bat"
> x86',
> > +            "VS2010x86": '"C:\\Program Files
> (x86)\\Microsoft Visual Studio 10.0\\VC\\vcvarsall.bat"
> x86'
> > +        }
> > +
> >          if sys.platform == "win32":
> >              MakeCommand = 'nmake -f %s' %
> (MakeFileName)
> >              returncode, StdOut, StdErr =
> DscBuildData.ExecuteCommand (MakeCommand)
> > +            if returncode != 0:
> > +                #
> > +                # If the nmake command failed, then
> lookup and run the VS
> > +                # Development Environment script for
> the current ToolChain and
> > +                # try the nmake command again.
> > +                #
> > +                if self._Toolchain in VsDevCmd:
> > +                    MakeCommand =
> VsDevCmd[self._Toolchain] + '&' + MakeCommand
> > +                    if os.path.exists
> (MakeCommand.split('"')[1]):
> > +                        returncode, StdOut, StdErr =
> DscBuildData.ExecuteCommand (MakeCommand)
> >              Messages = StdOut
> >          else:
> >              MakeCommand = 'make -f %s' %
> (MakeFileName)
> > --
> > 2.21.0.windows.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#53607): https://edk2.groups.io/g/devel/message/53607
Mute This Topic: https://groups.io/mt/70263619/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [Patch] BaseTools/Build: Fix Structured PCD app host env issues
Posted by Sean via Groups.Io 4 years, 2 months ago
Mike,
The hardcoded vs paths are not a safe assumption.
I would rather see agreement of how the environment should be configured prior to calling edk2 build and if being capable of building host os specific binaries is the requirement then that should be clarified and the scripts can be updated.  That way this type of stuff is contained within environment specific scripts rather than the edk2 build system.

thanks
Sean

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#53626): https://edk2.groups.io/g/devel/message/53626
Mute This Topic: https://groups.io/mt/70263619/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [Patch] BaseTools/Build: Fix Structured PCD app host env issues
Posted by Michael D Kinney 4 years, 2 months ago
Sean,

I agree the hard coded paths are not good.  This was a quick workaround to see if I could get the Azure Pipeline agents to function.  It we continue this path, we would have to migrate those out to something like toolsdef.txt or other mechanism that is more flexible.

There is a fundamental assumption that all edk2 build environments support a host POSIX build.  It would be better to update Azure Pipelines config to meet this assumption, and I can abandon this patch with the hard coded paths.

Do you have a suggestion for a patch to the Azure Pipelines YAML files to setup the VS host env?

Thanks,

Mike

From: sean.brogan via [] <sean.brogan=microsoft.com@[]>
Sent: Friday, January 31, 2020 4:33 PM
To: Kinney, Michael D <michael.d.kinney@intel.com>; devel@edk2.groups.io
Subject: Re: [edk2-devel] [Patch] BaseTools/Build: Fix Structured PCD app host env issues

Mike,
The hardcoded vs paths are not a safe assumption.
I would rather see agreement of how the environment should be configured prior to calling edk2 build and if being capable of building host os specific binaries is the requirement then that should be clarified and the scripts can be updated.  That way this type of stuff is contained within environment specific scripts rather than the edk2 build system.

thanks
Sean

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#53630): https://edk2.groups.io/g/devel/message/53630
Mute This Topic: https://groups.io/mt/70263619/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [Patch] BaseTools/Build: Fix Structured PCD app host env issues
Posted by Liming Gao 4 years, 2 months ago
Mike:
  Sorry. This edk2\BaseTools\get_vsvars.bat can set VS host env. 

Thanks
Liming
> -----Original Message-----
> From: Kinney, Michael D <michael.d.kinney@intel.com>
> Sent: Saturday, February 1, 2020 12:43 AM
> To: Gao, Liming <liming.gao@intel.com>; devel@edk2.groups.io; Kinney, Michael D <michael.d.kinney@intel.com>
> Cc: Feng, Bob C <bob.c.feng@intel.com>
> Subject: RE: [Patch] BaseTools/Build: Fix Structured PCD app host env issues
> 
> Liming,
> 
> That script does not set everything up to build
> host apps for all VS20xx tool chains.  It works
> for VS2017, VS2019, but not any of the others.
> It sets env vars for those other tool chains but
> Does not run the VS environment setup script that
> updates PATH and sets LIBS and INC to support
> build of POSIX apps.
> 
> Mike
> 
> > -----Original Message-----
> > From: Gao, Liming <liming.gao@intel.com>
> > Sent: Friday, January 31, 2020 12:27 AM
> > To: Kinney, Michael D <michael.d.kinney@intel.com>;
> > devel@edk2.groups.io
> > Cc: Feng, Bob C <bob.c.feng@intel.com>
> > Subject: RE: [Patch] BaseTools/Build: Fix Structured
> > PCD app host env issues
> >
> > Mike:
> >   I suggest to call BaseTools\set_vsprefix_envs.bat to
> > setup VS environment. Its input parameter is VS2012,
> > VS2013, VS2015, VS2017, VS2019. If so, we don't need to
> > add VS installation path in Build python script.
> >
> > Thanks
> > Liming
> > > -----Original Message-----
> > > From: Kinney, Michael D <michael.d.kinney@intel.com>
> > > Sent: Thursday, January 30, 2020 10:38 AM
> > > To: devel@edk2.groups.io
> > > Cc: Feng, Bob C <bob.c.feng@intel.com>; Gao, Liming
> > <liming.gao@intel.com>
> > > Subject: [Patch] BaseTools/Build: Fix Structured PCD
> > app host env issues
> > >
> > > https://bugzilla.tianocore.org/show_bug.cgi?id=2495
> > > https://bugzilla.tianocore.org/show_bug.cgi?id=2496
> > >
> > > Structured PCD processing requires a host POSIX build
> > > environment.  If the Structure PCD application can
> > not
> > > be built using the default environment under Windows,
> > then
> > > retry the build after setting up the host environment
> > for
> > > the current tool chain tag.
> > >
> > > Also reduce the build dependencies for the Structured
> > PCD
> > > application to increase compiler compatibility.
> > >
> > > Cc: Bob Feng <bob.c.feng@intel.com>
> > > Cc: Liming Gao <liming.gao@intel.com>
> > > Signed-off-by: Michael D Kinney
> > <michael.d.kinney@intel.com>
> > > ---
> > >  .../Source/Python/Workspace/DscBuildData.py   | 35
> > +++++++++++++++----
> > >  1 file changed, 28 insertions(+), 7 deletions(-)
> > >
> > > diff --git
> > a/BaseTools/Source/Python/Workspace/DscBuildData.py
> > b/BaseTools/Source/Python/Workspace/DscBuildData.py
> > > index c65a0dd346..bc3f32bb1d 100644
> > > ---
> > a/BaseTools/Source/Python/Workspace/DscBuildData.py
> > > +++
> > b/BaseTools/Source/Python/Workspace/DscBuildData.py
> > > @@ -91,9 +91,6 @@ WindowsCFLAGS = 'CFLAGS = $(CFLAGS)
> > /wd4200 /wd4034 /wd4101 '
> > >  LinuxCFLAGS = 'BUILD_CFLAGS += -Wno-pointer-to-int-
> > cast -Wno-unused-variable '
> > >  PcdMakefileEnd = '''
> > >  !INCLUDE
> > $(BASE_TOOLS_PATH)\Source\C\Makefiles\ms.common
> > > -
> > > -LIBS = $(LIB_PATH)\Common.lib
> > > -
> > >  !INCLUDE
> > $(BASE_TOOLS_PATH)\Source\C\Makefiles\ms.app
> > >  '''
> > >
> > > @@ -2637,10 +2634,10 @@ class
> > DscBuildData(PlatformBuildClassObject):
> > >
> > >          MakeApp = PcdMakefileHeader
> > >          if sys.platform == "win32":
> > > -            MakeApp = MakeApp + 'APPFILE =
> > %s\%s.exe\n' % (self.OutputPath, PcdValueInitName) +
> > 'APPNAME = %s\n' %
> > > (PcdValueInitName) + 'OBJECTS = %s\%s.obj\n' %
> > (self.OutputPath, PcdValueInitName) + 'INC = '
> > > +            MakeApp = MakeApp + 'APPFILE =
> > %s\%s.exe\n' % (self.OutputPath, PcdValueInitName) +
> > 'APPNAME = %s\n' %
> > > (PcdValueInitName) + 'OBJECTS = %s\%s.obj %s.obj\n' %
> > (self.OutputPath, PcdValueInitName,
> > >
> > os.path.normpath(mws.join(GlobalData.gGlobalDefines["ED
> > K_TOOLS_PATH"], "Source/C/Common/PcdValueCommon"))) +
> > 'INC = '
> > >          else:
> > >              MakeApp = MakeApp + PcdGccMakefile
> > > -            MakeApp = MakeApp + 'APPFILE = %s/%s\n'
> > % (self.OutputPath, PcdValueInitName) + 'APPNAME =
> > %s\n' % (PcdValueInitName)
> > > + 'OBJECTS = %s/%s.o\n' % (self.OutputPath,
> > PcdValueInitName) + \
> > > +            MakeApp = MakeApp + 'APPFILE = %s/%s\n'
> > % (self.OutputPath, PcdValueInitName) + 'APPNAME =
> > %s\n' %
> > > (PcdValueInitName) + 'OBJECTS = %s/%s.o %s.o\n' %
> > (self.OutputPath, PcdValueInitName,
> > >
> > os.path.normpath(mws.join(GlobalData.gGlobalDefines["ED
> > K_TOOLS_PATH"], "Source/C/Common/PcdValueCommon"))) + \
> > >                        'include
> > $(MAKEROOT)/Makefiles/app.makefile\n' + 'INCLUDE +='
> > >
> > >          IncSearchList = []
> > > @@ -2723,8 +2720,8 @@ class
> > DscBuildData(PlatformBuildClassObject):
> > >
> > IncludeFileFullPaths.append(os.path.normpath(includeful
> > lpath))
> > >                      break
> > >          SearchPathList = []
> > > -
> > SearchPathList.append(os.path.normpath(mws.join(GlobalD
> > ata.gWorkspace, "BaseTools/Source/C/Include")))
> > > -
> > SearchPathList.append(os.path.normpath(mws.join(GlobalD
> > ata.gWorkspace, "BaseTools/Source/C/Common")))
> > > +
> > SearchPathList.append(os.path.normpath(mws.join(GlobalD
> > ata.gGlobalDefines["EDK_TOOLS_PATH"],
> > > "BaseTools/Source/C/Include")))
> > > +
> > SearchPathList.append(os.path.normpath(mws.join(GlobalD
> > ata.gGlobalDefines["EDK_TOOLS_PATH"],
> > > "BaseTools/Source/C/Common")))
> > >          SearchPathList.extend(str(item) for item in
> > IncSearchList)
> > >          IncFileList =
> > GetDependencyList(IncludeFileFullPaths, SearchPathList)
> > >          for include_file in IncFileList:
> > > @@ -2743,9 +2740,33 @@ class
> > DscBuildData(PlatformBuildClassObject):
> > >          else:
> > >              Dest_PcdValueInitExe =
> > os.path.join(self.OutputPath, PcdValueInitName) +".exe"
> > >          Messages = ''
> > > +
> > > +        VsDevCmd = {
> > > +            "VS2019"   : '"C:\\Program Files
> > (x86)\\Microsoft Visual
> > Studio\\2019\\Enterprise\\Common7\\Tools\\VsDevCmd.bat"
> > ',
> > > +            "VS2017"   : '"C:\\Program Files
> > (x86)\\Microsoft Visual
> > Studio\\2017\\Enterprise\\Common7\\Tools\\VsDevCmd.bat"
> > ',
> > > +            "VS2015"   : '"C:\\Program Files
> > (x86)\\Microsoft Visual Studio
> > 14.0\\Common7\\Tools\\VsDevCmd.bat"',
> > > +            "VS2015x86": '"C:\\Program Files
> > (x86)\\Microsoft Visual Studio
> > 14.0\\Common7\\Tools\\VsDevCmd.bat"',
> > > +            "VS2013"   : '"C:\\Program Files
> > (x86)\\Microsoft Visual Studio
> > 12.0\\Common7\\Tools\\VsDevCmd.bat"',
> > > +            "VS2013x86": '"C:\\Program Files
> > (x86)\\Microsoft Visual Studio
> > 12.0\\Common7\\Tools\\VsDevCmd.bat"',
> > > +            "VS2012"   : '"C:\\Program Files
> > (x86)\\Microsoft Visual Studio
> > 11.0\\Common7\\Tools\\VsDevCmd.bat"',
> > > +            "VS2012x86": '"C:\\Program Files
> > (x86)\\Microsoft Visual Studio
> > 11.0\\Common7\\Tools\\VsDevCmd.bat"',
> > > +            "VS2010"   : '"C:\\Program Files
> > (x86)\\Microsoft Visual Studio 10.0\\VC\\vcvarsall.bat"
> > x86',
> > > +            "VS2010x86": '"C:\\Program Files
> > (x86)\\Microsoft Visual Studio 10.0\\VC\\vcvarsall.bat"
> > x86'
> > > +        }
> > > +
> > >          if sys.platform == "win32":
> > >              MakeCommand = 'nmake -f %s' %
> > (MakeFileName)
> > >              returncode, StdOut, StdErr =
> > DscBuildData.ExecuteCommand (MakeCommand)
> > > +            if returncode != 0:
> > > +                #
> > > +                # If the nmake command failed, then
> > lookup and run the VS
> > > +                # Development Environment script for
> > the current ToolChain and
> > > +                # try the nmake command again.
> > > +                #
> > > +                if self._Toolchain in VsDevCmd:
> > > +                    MakeCommand =
> > VsDevCmd[self._Toolchain] + '&' + MakeCommand
> > > +                    if os.path.exists
> > (MakeCommand.split('"')[1]):
> > > +                        returncode, StdOut, StdErr =
> > DscBuildData.ExecuteCommand (MakeCommand)
> > >              Messages = StdOut
> > >          else:
> > >              MakeCommand = 'make -f %s' %
> > (MakeFileName)
> > > --
> > > 2.21.0.windows.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#53639): https://edk2.groups.io/g/devel/message/53639
Mute This Topic: https://groups.io/mt/70263619/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-