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.kin...@intel.com> > Sent: Thursday, January 30, 2020 10:38 AM > To: devel@edk2.groups.io > Cc: Feng, Bob C <bob.c.f...@intel.com>; Gao, Liming <liming....@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.f...@intel.com> > Cc: Liming Gao <liming....@intel.com> > Signed-off-by: Michael D Kinney <michael.d.kin...@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/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-