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

2020-02-02 Thread Liming Gao
Mike:
  Sorry. This edk2\BaseTools\get_vsvars.bat can set VS host env. 

Thanks
Liming
> -Original Message-
> From: Kinney, Michael D 
> Sent: Saturday, February 1, 2020 12:43 AM
> To: Gao, Liming ; devel@edk2.groups.io; Kinney, Michael 
> D 
> Cc: Feng, Bob C 
> 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 
> > Sent: Friday, January 31, 2020 12:27 AM
> > To: Kinney, Michael D ;
> > devel@edk2.groups.io
> > Cc: Feng, Bob C 
> > 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 
> > > Sent: Thursday, January 30, 2020 10:38 AM
> > > To: devel@edk2.groups.io
> > > Cc: Feng, Bob C ; Gao, Liming
> > 
> > > 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 
> > > Cc: Liming Gao 
> > > Signed-off-by: Michael D Kinney
> > 
> > > ---
> > >  .../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, 

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

2020-02-01 Thread Michael D Kinney
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 [] 
Sent: Friday, January 31, 2020 4:33 PM
To: Kinney, Michael D ; 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/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



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

2020-01-31 Thread Sean via Groups.Io
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/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



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

2020-01-31 Thread Michael D Kinney
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 
> Sent: Friday, January 31, 2020 12:27 AM
> To: Kinney, Michael D ;
> devel@edk2.groups.io
> Cc: Feng, Bob C 
> 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 
> > Sent: Thursday, January 30, 2020 10:38 AM
> > To: devel@edk2.groups.io
> > Cc: Feng, Bob C ; Gao, Liming
> 
> > 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 
> > Cc: Liming Gao 
> > Signed-off-by: Michael D Kinney
> 
> > ---
> >  .../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:
> >  

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

2020-01-31 Thread Liming Gao
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 
> Sent: Thursday, January 30, 2020 10:38 AM
> To: devel@edk2.groups.io
> Cc: Feng, Bob C ; Gao, Liming 
> 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 
> Cc: Liming Gao 
> Signed-off-by: Michael D Kinney 
> ---
>  .../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 
>