Index: Python/AutoGen/AutoGen.py
===================================================================
--- Python/AutoGen/AutoGen.py	(revision 15886)
+++ Python/AutoGen/AutoGen.py	(working copy)
@@ -3020,6 +3020,10 @@
     #                                       dependent libraries will be created
     #
     def CreateMakeFile(self, CreateLibraryMakeFile=True):
+        # Ignore generating makefile when it is a binary module
+        if self.IsBinaryModule:
+            return
+
         if self.IsMakeFileCreated:
             return
 
@@ -3040,6 +3044,12 @@
 
         self.IsMakeFileCreated = True
 
+    def CopyBinaryFiles(self):
+        for File in self.Module.Binaries:
+            SrcPath = File.Path
+            DstPath = os.path.join(self.OutputDir , os.path.basename(SrcPath))
+            CopyLongFilePath(SrcPath, DstPath)
+
     ## Create autogen code for the module and its dependent libraries
     #
     #   @param      CreateLibraryCodeFile   Flag indicating if or not the code of
@@ -3054,6 +3064,11 @@
             CreatePcdDatabaseCode(self, TemplateString(), TemplateString())
             return
 
+        # Copy binary files to output directory
+        if self.IsBinaryModule:
+            self.CopyBinaryFiles()
+            return
+
         if not self.IsLibrary and CreateLibraryCodeFile:
             for LibraryAutoGen in self.LibraryAutoGenList:
                 LibraryAutoGen.CreateCodeFile()
Index: Python/build/build.py
===================================================================
--- Python/build/build.py	(revision 15886)
+++ Python/build/build.py	(working copy)
@@ -736,6 +736,10 @@
         self.BuildReport    = BuildReport(BuildOptions.ReportFile, BuildOptions.ReportType)
         self.TargetTxt      = TargetTxtClassObject()
         self.ToolDef        = ToolDefClassObject()
+
+        #Set global flag for build mode
+        GlobalData.gIgnoreSource = BuildOptions.IgnoreSources
+
         if BuildOptions.DisableCache:
             self.Db         = WorkspaceDatabase(":memory:")
         else:
@@ -1604,7 +1608,8 @@
 
                     for Ma in pModules:
                         # Generate build task for the module
-                        Bt = BuildTask.New(ModuleMakeUnit(Ma, self.Target))
+                        if not Ma.IsBinaryModule:
+                            Bt = BuildTask.New(ModuleMakeUnit(Ma, self.Target))
                         # Break build if any build thread has error
                         if BuildTask.HasError():
                             # we need a full version of makefile for platform
@@ -1877,6 +1882,7 @@
              "This option can also be specified by setting *_*_*_BUILD_FLAGS in [BuildOptions] section of platform DSC. If they are both specified, this value "\
              "will override the setting in [BuildOptions] section of platform DSC.")
     Parser.add_option("-N", "--no-cache", action="store_true", dest="DisableCache", default=False, help="Disable build cache mechanism")
+    Parser.add_option("--ignore-sources", action="store_true", dest="IgnoreSources", default=False, help="Focus to a binary build and ignore all source files")
 
     (Opt, Args)=Parser.parse_args()
     return (Opt, Args)
Index: Python/Workspace/WorkspaceDatabase.py
===================================================================
--- Python/Workspace/WorkspaceDatabase.py	(revision 15886)
+++ Python/Workspace/WorkspaceDatabase.py	(working copy)
@@ -38,6 +38,8 @@
 import re
 from Common.Parsing import IsValidWord
 
+import Common.GlobalData as GlobalData
+
 ## Platform build information from DSC file
 #
 #  This class is used to retrieve information stored in database and convert them
@@ -2008,7 +2010,7 @@
         return self._Defs
 
     ## Retrieve binary files
-    def _GetBinaryFiles(self):
+    def _GetBinaries(self):
         if self._Binaries == None:
             self._Binaries = []
             RecordList = self._RawData[MODEL_EFI_BINARY_FILE, self._Arch, self._Platform]
@@ -2035,8 +2037,22 @@
                 self._Binaries.append(File)
         return self._Binaries
 
+    ## Retrieve binary files with error check.
+    def _GetBinaryFiles(self):
+        Binaries = self._GetBinaries()
+        if GlobalData.gIgnoreSource and Binaries == []:
+            ErrorInfo = "The INF file does not contain any Binaries to use in creating the image\n"
+            EdkLogger.error('build', RESOURCE_NOT_AVAILABLE, ExtraData=ErrorInfo, File=self.MetaFile)
+
+        return Binaries
+
     ## Retrieve source files
     def _GetSourceFiles(self):
+        #Ignore all source files in a binary build mode
+        if GlobalData.gIgnoreSource:
+            self._Sources = []
+            return self._Sources
+
         if self._Sources == None:
             self._Sources = []
             RecordList = self._RawData[MODEL_EFI_SOURCE_FILE, self._Arch, self._Platform]
