I confirmed that has fixed all the issues I had.
Thanks for the fix,
Olivier

> -----Original Message-----
> From: Chen, Hesheng [mailto:hesheng.c...@intel.com]
> Sent: 20 August 2014 08:31
> To: Jordan Justen; edk2-devel@lists.sourceforge.net; Liu, Yingke D
> Subject: Re: [edk2] [PATCH] BaseTools: Revert r15816 and r15831 to fix
> !if in .fdf
> 
> Justen and Dennis,
> I have merged these two patches together, many thanks to Dennis for the
> issue catching.
> This patch is going to:
> 1. Fix a bug in GenFds for wrongly handling '"' of command line
> parameter.
> 2. Provide different input parameter mode for different OS. For Linux,
> using a list. For Windows, using a string.
> 3. Remove 3 un-existing function calling.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Hess Chen <hesheng.c...@intel.com>
> 
> 
> Best Regards,
> Chen, Hess
> Intel China Software Center
> Tel: +86-21-6116-6740
> Email: hesheng.c...@intel.com
> 
> 
> -----Original Message-----
> From: Jordan Justen [mailto:jljus...@gmail.com]
> Sent: Wednesday, August 20, 2014 14:00 PM
> To: edk2-devel@lists.sourceforge.net; Liu, Yingke D; Chen, Hesheng
> Subject: Re: [edk2] [PATCH] BaseTools: Revert r15816 and r15831 to fix
> !if in .fdf
> 
> On Tue, Aug 19, 2014 at 9:50 PM, Liu, Yingke D <yingke.d....@intel.com>
> wrote:
> > Hi Jordan,
> >
> > The issue has been root caused.
> 
> Ah. Good to hear. So, will you be posting this patch for review with a
> commit message?
> https://github.com/tianocore/tianocore.github.io/wiki/Commit-Message-
> Format
> 
> Thanks Dennis and Hess!
> 
> -Jordan
> 
> > Before retiring top level makefile, the GenFds command was executed
> by make fds, but after the change, we call GenFds command directly. The
> -D option passed to Genfds is encapsulated by quotes which is remove
> automatically by shell, that's why building on windows is ok, but in
> Linux we split the command into sequence, the quotes are not removed if
> calling Genfds command directly instead of 'make fds'.
> >
> > The following change will fix the issue:
> >
> > Index: GenFds.py
> > ===================================================================
> > --- GenFds.py   (revision 15842)
> > +++ GenFds.py   (working copy)
> > @@ -157,7 +157,7 @@
> >
> >          if Options.Macros:
> >              for Pair in Options.Macros:
> > -                Pair.strip('"')
> > +                Pair = Pair.strip('"')
> >                  List = Pair.split('=')
> >                  if len(List) == 2:
> >                      if List[0].strip() == "EFI_SOURCE":Pair =
> > Pair.strip('"')
> >
> > Dennis
> >
> > -----Original Message-----
> > From: Jordan Justen [mailto:jordan.l.jus...@intel.com]
> > Sent: Wednesday, August 20, 2014 11:10 AM
> > To: Chen, Hesheng; edk2-devel@lists.sourceforge.net
> > Subject: Re: [edk2] [PATCH] BaseTools: Revert r15816 and r15831 to
> fix
> > !if in .fdf
> >
> > On 2014-08-19 19:07:26, Chen, Hesheng wrote:
> >> Hello Jordan and all,
> >> I think we should not revert the patch since only when problem
> >> happens then we can fix them.
> >
> > I do agree with this up to a point. It is nice to keep something in
> place and fix it quickly if possible.
> >
> > But, if we are keeping people from being able to work for a few days,
> then we should also consider reverting the feature temporarily and
> integrating it again after more testing.
> >
> >> I will try my best to provide responses quickly.
> >> Actually I have root caused the issue: there is a difference mode
> >> between Linux and Windows for handling popen() parameter. By my test
> >> only a list (first item is the command line itself) works well on
> >> Linux and only a string works well on Windows (using a list will
> lose
> >> some parameters). So here is the patch to provide different mode for
> >> different OS.
> >
> > I tried the patch, and it does not help the '!if' issue. I think
> build.py.patch will only change the behavior on Windows, but I am not
> testing it on Windows.
> >
> > I did not verify that adding a '!else' helps, like Olivier mentioned,
> > but I do note that my failure case involves an !if without a !else.
> > (OvmfPkg/OvmfPkgX64.fdf, CSM_ENABLE)
> >
> >> This patch can also fix the issue of KeyError: 'WORKSPACE'
> >
> > I don't know if I reproduced this issue. Does it cause the build to
> stop?
> >
> > -Jordan
> >
> >> -----Original Message-----
> >> From: Justen, Jordan L
> >> Sent: Wednesday, August 20, 2014 3:48 AM
> >> To: edk2-devel@lists.sourceforge.net
> >> Cc: Justen, Jordan L; Chen, Hesheng
> >> Subject: [PATCH] BaseTools: Revert r15816 and r15831 to fix !if in
> >> .fdf
> >>
> >> r15816: "This patch is going to retire the top level makefile on
> BaseTools for supporting a pure binary build without any complier."
> >>
> >> r15831: "This patch is going to fix a build failure (running of
> >> GenFds) in Linux system caused by patch at r15816."
> >>
> >> Something in these changes causes !if processing to not work
> correctly. Reverting these changes appears to fix it.
> >>
> >> Contributed-under: TianoCore Contribution Agreement 1.0
> >> Signed-off-by: Jordan Justen <jordan.l.jus...@intel.com>
> >> Cc: Hess Chen <hesheng.c...@intel.com>
> >> ---
> >> Hess,
> >>
> >> I think I should revert these changes. Can you investigate the !if
> processing bug, and resubmit the patch?
> >>
> >> Olivier mentioned that !if may only work if !endif is present.
> Perhaps that can help debug it.
> >>
> >>  BaseTools/Source/Python/AutoGen/AutoGen.py |  30 ++---
> BaseTools/Source/Python/AutoGen/GenMake.py |  96 ++++++++++++++-
> >>  BaseTools/Source/Python/build/build.py     | 181 ++----------------
> -----------
> >>  3 files changed, 116 insertions(+), 191 deletions(-)
> >>
> >> diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py
> >> b/BaseTools/Source/Python/AutoGen/AutoGen.py
> >> index 36e4347..c466257 100644
> >> --- a/BaseTools/Source/Python/AutoGen/AutoGen.py
> >> +++ b/BaseTools/Source/Python/AutoGen/AutoGen.py
> >> @@ -655,8 +655,6 @@ class WorkspaceAutoGen(AutoGen):
> >>                                      )
> >>                      Count += 1
> >>
> >> -    def _GenFdsCommand(self):
> >> -        return
> (GenMake.TopLevelMakefile(self)._TEMPLATE_.Replace(GenMake.TopLevelMake
> file(self)._TemplateDict)).strip()
> >>
> >>      ## Create makefile for the platform and modules in it
> >>      #
> >> @@ -664,6 +662,15 @@ class WorkspaceAutoGen(AutoGen):
> >>      #                                       modules will be created
> as well
> >>      #
> >>      def CreateMakeFile(self, CreateDepsMakeFile=False):
> >> +        # create makefile for platform
> >> +        Makefile = GenMake.TopLevelMakefile(self)
> >> +        if Makefile.Generate():
> >> +            EdkLogger.debug(EdkLogger.DEBUG_9, "Generated makefile
> for platform [%s] %s\n" %
> >> +                            (self.MetaFile, self.ArchList))
> >> +        else:
> >> +            EdkLogger.debug(EdkLogger.DEBUG_9, "Skipped the
> generation of makefile for platform [%s] %s\n" %
> >> +                            (self.MetaFile, self.ArchList))
> >> +
> >>          if CreateDepsMakeFile:
> >>              for Pa in self.AutoGenObjectList:
> >>                  Pa.CreateMakeFile(CreateDepsMakeFile)
> >> @@ -698,7 +705,6 @@ class WorkspaceAutoGen(AutoGen):
> >>      FvDir               = property(_GetFvDir)
> >>      MakeFileDir         = property(_GetMakeFileDir)
> >>      BuildCommand        = property(_GetBuildCommand)
> >> -    GenFdsCommand       = property(_GenFdsCommand)
> >>
> >>  ## AutoGen class for platform
> >>  #
> >> @@ -795,9 +801,6 @@ class PlatformAutoGen(AutoGen):
> >>          self._LibraryAutoGenList = None
> >>          self._BuildCommand = None
> >>
> >> -        # get library/modules for build
> >> -        self.LibraryBuildDirectoryList = []
> >> -        self.ModuleBuildDirectoryList = []
> >>          # get the original module/package/platform objects
> >>          self.BuildDatabase = Workspace.BuildDatabase
> >>          return True
> >> @@ -824,10 +827,6 @@ class PlatformAutoGen(AutoGen):
> >>          # don't do this twice
> >>          self.IsCodeFileCreated = True
> >>
> >> -    ## Generate Fds Command
> >> -    def _GenFdsCommand(self):
> >> -        return self.Workspace.GenFdsCommand
> >> -
> >>      ## Create makefile for the platform and mdoules in it
> >>      #
> >>      #   @param      CreateModuleMakeFile    Flag indicating if the
> makefile for
> >> @@ -845,11 +844,14 @@ class PlatformAutoGen(AutoGen):
> >>          if self.IsMakeFileCreated:
> >>              return
> >>
> >> -        # create library/module build dirs for platform
> >> +        # create makefile for platform
> >>          Makefile = GenMake.PlatformMakefile(self)
> >> -        self.LibraryBuildDirectoryList =
> Makefile.GetLibraryBuildDirectoryList()
> >> -        self.ModuleBuildDirectoryList =
> Makefile.GetModuleBuildDirectoryList()
> >> -
> >> +        if Makefile.Generate():
> >> +            EdkLogger.debug(EdkLogger.DEBUG_9, "Generated makefile
> for platform [%s] [%s]\n" %
> >> +                            (self.MetaFile, self.Arch))
> >> +        else:
> >> +            EdkLogger.debug(EdkLogger.DEBUG_9, "Skipped the
> generation of makefile for platform [%s] [%s]\n" %
> >> +                            (self.MetaFile, self.Arch))
> >>          self.IsMakeFileCreated = True
> >>
> >>      ## Deal with Shared FixedAtBuild Pcds diff --git
> >> a/BaseTools/Source/Python/AutoGen/GenMake.py
> >> b/BaseTools/Source/Python/AutoGen/GenMake.py
> >> index 0ad368a..64eedfa 100644
> >> --- a/BaseTools/Source/Python/AutoGen/GenMake.py
> >> +++ b/BaseTools/Source/Python/AutoGen/GenMake.py
> >> @@ -1105,7 +1105,6 @@ cleanlib:
> >>          self.IntermediateDirectoryList = []
> >>          self.ModuleBuildDirectoryList = []
> >>          self.LibraryBuildDirectoryList = []
> >> -        self.LibraryMakeCommandList = []
> >>
> >>      # Compose a dict object containing information used to do
> replacement in template
> >>      def _CreateTemplateDict(self):
> >> @@ -1129,7 +1128,6 @@ cleanlib:
> >>              Command = self._MAKE_TEMPLATE_[self._FileType] %
> {"file":Makefile}
> >>              LibraryMakefileList.append(Makefile)
> >>              LibraryMakeCommandList.append(Command)
> >> -        self.LibraryMakeCommandList = LibraryMakeCommandList
> >>
> >>          ModuleMakefileList = []
> >>          ModuleMakeCommandList = []
> >> @@ -1200,7 +1198,99 @@ cleanlib:
> >>  #
> >>  class TopLevelMakefile(BuildFile):
> >>      ## template used to generate toplevel makefile
> >> -    _TEMPLATE_ = TemplateString('''${BEGIN}    GenFds -f
> ${fdf_file} -o ${platform_build_directory} -t ${toolchain_tag} -b
> ${build_target} -p ${active_platform} -a ${build_architecture_list}
> ${extra_options}${END}${BEGIN} -r ${fd} ${END}${BEGIN} -i ${fv}
> ${END}${BEGIN} -C ${cap} ${END}${BEGIN} -D ${macro} ${END}''')
> >> +    _TEMPLATE_ = TemplateString('''\ ${makefile_header}
> >> +
> >> +#
> >> +# Platform Macro Definition
> >> +#
> >> +PLATFORM_NAME = ${platform_name}
> >> +PLATFORM_GUID = ${platform_guid}
> >> +PLATFORM_VERSION = ${platform_version}
> >> +
> >> +#
> >> +# Build Configuration Macro Definition # TOOLCHAIN =
> >> +${toolchain_tag} TOOLCHAIN_TAG = ${toolchain_tag} TARGET =
> >> +${build_target}
> >> +
> >> +#
> >> +# Build Directory Macro Definition
> >> +#
> >> +BUILD_DIR = ${platform_build_directory} FV_DIR =
> >> +${platform_build_directory}${separator}FV
> >> +
> >> +#
> >> +# Shell Command Macro
> >> +#
> >> +${BEGIN}${shell_command_code} = ${shell_command} ${END}
> >> +
> >> +MAKE = ${make_path}
> >> +MAKE_FILE = ${makefile_path}
> >> +
> >> +#
> >> +# Default target
> >> +#
> >> +all: modules fds
> >> +
> >> +#
> >> +# Initialization target: print build information and create
> >> +necessary directories #
> >> +init:
> >> +    -@
> >> +    ${BEGIN}-@${create_directory_command}
> >> +    ${END}
> >> +#
> >> +# library build target
> >> +#
> >> +libraries: init
> >> +${BEGIN}    @cd $(BUILD_DIR)${separator}${arch} && "$(MAKE)"
> >> +$(MAKE_FLAGS) libraries ${END}    @cd $(BUILD_DIR)
> >> +
> >> +#
> >> +# module build target
> >> +#
> >> +modules: init
> >> +${BEGIN}    @cd $(BUILD_DIR)${separator}${arch} && "$(MAKE)"
> >> +$(MAKE_FLAGS) modules ${END}    @cd $(BUILD_DIR)
> >> +
> >> +#
> >> +# Flash Device Image Target
> >> +#
> >> +fds: init
> >> +    -@cd $(FV_DIR)
> >> +${BEGIN}    GenFds -f ${fdf_file} -o $(BUILD_DIR) -t $(TOOLCHAIN) -
> b
> >> +$(TARGET) -p ${active_platform} -a ${build_architecture_list}
> >> +${extra_options}${END}${BEGIN} -r ${fd} ${END}${BEGIN} -i ${fv}
> >> +${END}${BEGIN} -C ${cap} ${END}${BEGIN} -D ${macro} ${END}
> >> +
> >> +#
> >> +# run command for emulator platform only #
> >> +run:
> >> +    cd $(BUILD_DIR)${separator}IA32 && ".${separator}SecMain"
> >> +    cd $(BUILD_DIR)
> >> +
> >> +#
> >> +# Clean intermediate files
> >> +#
> >> +clean:
> >> +${BEGIN}    -@${sub_build_command} clean
> >> +${END}    @cd $(BUILD_DIR)
> >> +
> >> +#
> >> +# Clean all generated files except to makefile #
> >> +cleanall:
> >> +${BEGIN}    ${cleanall_command}
> >> +${END}
> >> +
> >> +#
> >> +# Clean all library files
> >> +#
> >> +cleanlib:
> >> +${BEGIN}    -@${sub_build_command} cleanlib ${END}    @cd
> $(BUILD_DIR)\n
> >> +''')
> >>
> >>      ## Constructor of TopLevelMakefile
> >>      #
> >> diff --git a/BaseTools/Source/Python/build/build.py
> >> b/BaseTools/Source/Python/build/build.py
> >> index 85ee998..bd43f2c 100644
> >> --- a/BaseTools/Source/Python/build/build.py
> >> +++ b/BaseTools/Source/Python/build/build.py
> >> @@ -245,14 +245,7 @@ def LaunchCommand(Command, WorkingDir):
> >>      # if working directory doesn't exist, Popen() will raise an
> exception
> >>      if not os.path.isdir(WorkingDir):
> >>          EdkLogger.error("build", FILE_NOT_FOUND,
> >> ExtraData=WorkingDir)
> >> -
> >> -    # Command is used as the first Argument in following Popen().
> >> -    # It could be a string or sequence. We find that if command is
> a string in following Popen(),
> >> -    # ubuntu may fail with an error message that the command is not
> found.
> >> -    # So here we may need convert command from string to list
> instance.
> >> -    if not isinstance(Command, list):
> >> -        Command = Command.split()
> >> -
> >> +
> >>      Proc = None
> >>      EndOfProcedure = None
> >>      try:
> >> @@ -873,136 +866,7 @@ class Build():
> >>      #   @param  CreateDepModuleMakeFile     Flag used to indicate
> creating makefile
> >>      #                                       for dependent
> modules/Libraries
> >>      #
> >> -    def _BuildPa(self, Target, AutoGenObject,
> CreateDepsCodeFile=True, CreateDepsMakeFile=True, BuildModule=False):
> >> -        if AutoGenObject == None:
> >> -            return False
> >> -
> >> -        # skip file generation for cleanxxx targets, run and fds
> target
> >> -        if Target not in ['clean', 'cleanlib', 'cleanall', 'run',
> 'fds']:
> >> -            # for target which must generate AutoGen code and
> makefile
> >> -            if not self.SkipAutoGen or Target == 'genc':
> >> -                self.Progress.Start("Generating code")
> >> -                AutoGenObject.CreateCodeFile(CreateDepsCodeFile)
> >> -                self.Progress.Stop("done!")
> >> -            if Target == "genc":
> >> -                return True
> >> -
> >> -            if not self.SkipAutoGen or Target == 'genmake':
> >> -                self.Progress.Start("Generating makefile")
> >> -                AutoGenObject.CreateMakeFile(CreateDepsMakeFile)
> >> -                self.Progress.Stop("done!")
> >> -            if Target == "genmake":
> >> -                return True
> >> -        else:
> >> -            # always recreate top/platform makefile when clean,
> just in case of inconsistency
> >> -            AutoGenObject.CreateCodeFile(False)
> >> -            AutoGenObject.CreateMakeFile(False)
> >> -
> >> -        if EdkLogger.GetLevel() == EdkLogger.QUIET:
> >> -            EdkLogger.quiet("Building ... %s" %
> repr(AutoGenObject))
> >> -
> >> -        BuildCommand = AutoGenObject.BuildCommand
> >> -        if BuildCommand == None or len(BuildCommand) == 0:
> >> -            EdkLogger.error("build", OPTION_MISSING,
> >> -                            "No build command found for this
> module. "
> >> -                            "Please check your setting of
> %s_%s_%s_MAKE_PATH in Conf/tools_def.txt file." %
> >> -                                (AutoGenObject.BuildTarget,
> AutoGenObject.ToolChain, AutoGenObject.Arch),
> >> -                            ExtraData=str(AutoGenObject))
> >> -
> >> -        makefile =
> GenMake.BuildFile(AutoGenObject)._FILE_NAME_[GenMake.gMakeType]
> >> -
> >> -        # genfds
> >> -        if Target == 'fds':
> >> -            LaunchCommand(AutoGenObject.GenFdsCommand,
> AutoGenObject.MakeFileDir)
> >> -            return True
> >> -
> >> -        # run
> >> -        if Target == 'run':
> >> -            RunDir =
> os.path.normpath(os.path.join(AutoGenObject.BuildDir, 'IA32'))
> >> -            Command = '.\SecMain'
> >> -            os.chdir(RunDir)
> >> -            LaunchCommand(Command, RunDir)
> >> -            return True
> >> -
> >> -        # build modules
> >> -        if BuildModule:
> >> -            BuildCommand = BuildCommand + [Target]
> >> -            LaunchCommand(BuildCommand, AutoGenObject.MakeFileDir)
> >> -            self.CreateAsBuiltInf()
> >> -            return True
> >> -
> >> -        # build library
> >> -        if Target == 'libraries':
> >> -            for Lib in AutoGenObject.LibraryBuildDirectoryList:
> >> -                NewBuildCommand = BuildCommand + ['-f',
> os.path.normpath(os.path.join(Lib, makefile)), 'pbuild']
> >> -                LaunchCommand(NewBuildCommand,
> AutoGenObject.MakeFileDir)
> >> -            return True
> >> -
> >> -        # build module
> >> -        if Target == 'modules':
> >> -            for Lib in AutoGenObject.LibraryBuildDirectoryList:
> >> -                NewBuildCommand = BuildCommand + ['-f',
> os.path.normpath(os.path.join(Lib, makefile)), 'pbuild']
> >> -                LaunchCommand(NewBuildCommand,
> AutoGenObject.MakeFileDir)
> >> -            for Mod in AutoGenObject.ModuleBuildDirectoryList:
> >> -                NewBuildCommand = BuildCommand + ['-f',
> os.path.normpath(os.path.join(Mod, makefile)), 'pbuild']
> >> -                LaunchCommand(NewBuildCommand,
> AutoGenObject.MakeFileDir)
> >> -            self.CreateAsBuiltInf()
> >> -            return True
> >> -
> >> -        # cleanlib
> >> -        if Target == 'cleanlib':
> >> -            for Lib in AutoGenObject.LibraryBuildDirectoryList:
> >> -                LibMakefile = os.path.normpath(os.path.join(Lib,
> makefile))
> >> -                if os.path.exists(LibMakefile):
> >> -                    NewBuildCommand = BuildCommand + ['-f',
> LibMakefile, 'cleanall']
> >> -                    LaunchCommand(NewBuildCommand,
> AutoGenObject.MakeFileDir)
> >> -            return True
> >> -
> >> -        # clean
> >> -        if Target == 'clean':
> >> -            for Mod in AutoGenObject.ModuleBuildDirectoryList:
> >> -                ModMakefile = os.path.normpath(os.path.join(Mod,
> makefile))
> >> -                if os.path.exists(ModMakefile):
> >> -                    NewBuildCommand = BuildCommand + ['-f',
> ModMakefile, 'cleanall']
> >> -                    LaunchCommand(NewBuildCommand,
> AutoGenObject.MakeFileDir)
> >> -            for Lib in AutoGenObject.LibraryBuildDirectoryList:
> >> -                LibMakefile = os.path.normpath(os.path.join(Lib,
> makefile))
> >> -                if os.path.exists(LibMakefile):
> >> -                    NewBuildCommand = BuildCommand + ['-f',
> LibMakefile, 'cleanall']
> >> -                    LaunchCommand(NewBuildCommand,
> AutoGenObject.MakeFileDir)
> >> -            return True
> >> -
> >> -        # cleanall
> >> -        if Target == 'cleanall':
> >> -            try:
> >> -                #os.rmdir(AutoGenObject.BuildDir)
> >> -                RemoveDirectory(AutoGenObject.BuildDir, True)
> >> -                #
> >> -                # First should close DB.
> >> -                #
> >> -                self.Db.Close()
> >> -
> RemoveDirectory(os.path.dirname(GlobalData.gDatabasePath), True)
> >> -            except WindowsError, X:
> >> -                EdkLogger.error("build", FILE_DELETE_FAILURE,
> ExtraData=str(X))
> >> -        return True
> >> -
> >> -    ## Build a module or platform
> >> -    #
> >> -    # Create autogen code and makefile for a module or platform,
> and the launch
> >> -    # "make" command to build it
> >> -    #
> >> -    #   @param  Target                      The target of build
> command
> >> -    #   @param  Platform                    The platform file
> >> -    #   @param  Module                      The module file
> >> -    #   @param  BuildTarget                 The name of build
> target, one of "DEBUG", "RELEASE"
> >> -    #   @param  ToolChain                   The name of toolchain
> to build
> >> -    #   @param  Arch                        The arch of the
> module/platform
> >> -    #   @param  CreateDepModuleCodeFile     Flag used to indicate
> creating code
> >> -    #                                       for dependent
> modules/Libraries
> >> -    #   @param  CreateDepModuleMakeFile     Flag used to indicate
> creating makefile
> >> -    #                                       for dependent
> modules/Libraries
> >> -    #
> >> -    def _Build(self, Target, AutoGenObject,
> CreateDepsCodeFile=True, CreateDepsMakeFile=True, BuildModule=False):
> >> +    def _Build(self, Target, AutoGenObject,
> CreateDepsCodeFile=True, CreateDepsMakeFile=True):
> >>          if AutoGenObject == None:
> >>              return False
> >>
> >> @@ -1019,7 +883,7 @@ class Build():
> >>              if not self.SkipAutoGen or Target == 'genmake':
> >>                  self.Progress.Start("Generating makefile")
> >>                  AutoGenObject.CreateMakeFile(CreateDepsMakeFile)
> >> -                #AutoGenObject.CreateAsBuiltInf()
> >> +                AutoGenObject.CreateAsBuiltInf()
> >>                  self.Progress.Stop("done!")
> >>              if Target == "genmake":
> >>                  return True
> >> @@ -1039,34 +903,8 @@ class Build():
> >>                                  (AutoGenObject.BuildTarget,
> AutoGenObject.ToolChain, AutoGenObject.Arch),
> >>                              ExtraData=str(AutoGenObject))
> >>
> >> -        # genfds
> >> -        if Target == 'fds':
> >> -            LaunchCommand(AutoGenObject.GenFdsCommand,
> AutoGenObject.MakeFileDir)
> >> -            return True
> >> -
> >> -        # run
> >> -        if Target == 'run':
> >> -            RunDir =
> os.path.normpath(os.path.join(AutoGenObject.BuildDir, 'IA32'))
> >> -            Command = '.\SecMain'
> >> -            os.chdir(RunDir)
> >> -            LaunchCommand(Command, RunDir)
> >> -            return True
> >> -
> >> -        # build modules
> >>          BuildCommand = BuildCommand + [Target]
> >> -        if BuildModule:
> >> -            LaunchCommand(BuildCommand, AutoGenObject.MakeFileDir)
> >> -            self.CreateAsBuiltInf()
> >> -            return True
> >> -
> >> -        # build library
> >> -        if Target == 'libraries':
> >> -            pass
> >> -
> >> -        # not build modules
> >> -
> >> -
> >> -        # cleanall
> >> +        LaunchCommand(BuildCommand, AutoGenObject.MakeFileDir)
> >>          if Target == 'cleanall':
> >>              try:
> >>                  #os.rmdir(AutoGenObject.BuildDir) @@ -1406,10
> +1244,7 @@ class Build():
> >>                  self.LoadFixAddress = Wa.Platform.LoadFixAddress
> >>                  self.BuildReport.AddPlatformReport(Wa)
> >>                  self.Progress.Stop("done!")
> >> -                for Arch in Wa.ArchList:
> >> -                    GlobalData.gGlobalDefines['ARCH'] = Arch
> >> -                    Pa = PlatformAutoGen(Wa, self.PlatformFile,
> BuildTarget, ToolChain, Arch)
> >> -                    self._BuildPa(self.Target, Pa)
> >> +                self._Build(self.Target, Wa)
> >>
> >>                  # Create MAP file when Load Fix Address is enabled.
> >>                  if self.Target in ["", "all", "fds"]:
> >> @@ -1492,8 +1327,7 @@ class Build():
> >>                      Ma = ModuleAutoGen(Wa, self.ModuleFile,
> BuildTarget, ToolChain, Arch, self.PlatformFile)
> >>                      if Ma == None: continue
> >>                      MaList.append(Ma)
> >> -                    if not Ma.IsBinaryModule:
> >> -                        self._Build(self.Target, Ma,
> BuildModule=True)
> >> +                    self._Build(self.Target, Ma)
> >>
> >>                  self.BuildReport.AddPlatformReport(Wa, MaList)
> >>                  if MaList == []:
> >> @@ -1674,8 +1508,7 @@ class Build():
> >>                          #
> >>                          # Generate FD image if there's a FDF file
> found
> >>                          #
> >> -                        LaunchCommand(Wa.GenFdsCommand,
> os.getcwd())
> >> -
> >> +                        LaunchCommand(Wa.BuildCommand + ["fds"],
> >> + Wa.MakeFileDir)
> >>                          #
> >>                          # Create MAP file for all platform FVs
> after GenFds.
> >>                          #
> >> --
> >> 2.1.0
> >
> > ---------------------------------------------------------------------
> -
> > --------
> > Slashdot TV.
> > Video for Nerds.  Stuff that matters.
> > http://tv.slashdot.org/
> > _______________________________________________
> > edk2-devel mailing list
> > edk2-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/edk2-devel
> >
> > ---------------------------------------------------------------------
> -
> > --------
> > Slashdot TV.
> > Video for Nerds.  Stuff that matters.
> > http://tv.slashdot.org/
> > _______________________________________________
> > edk2-devel mailing list
> > edk2-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/edk2-devel




------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to