]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkCompatibilityPkg/Sample/Platform/Common.dsc
Sync all bug fixes between EDK1.04 and EDK1.06 into EdkCompatibilityPkg.
[mirror_edk2.git] / EdkCompatibilityPkg / Sample / Platform / Common.dsc
index c077e81c9e4e2f3100919c9444ce5320b7724e15..be582eec680cee00c599b6c38c1e2923648732da 100644 (file)
@@ -1,6 +1,6 @@
 #/*++\r
 #\r
-# Copyright (c) 2004 - 2007, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>\r
 # This program and the accompanying materials                          \r
 # are licensed and made available under the terms and conditions of the BSD License         \r
 # which accompanies this distribution.  The full text of the license may be found at        \r
@@ -268,7 +268,7 @@ $(DEST_DIR)\$(FILE).obj : $(SOURCE_FILE_NAME) $(INF_FILENAME) $(ALL_DEPS)
 # know how to create the .apr file, then you're missing (or mispelled) the\r
 # "APRIORI=" on the component lines in components section in the DSC file.\r
 #\r
-$(DEST_DIR)\$(BASE_NAME).bin : $(SOURCE_FILE_NAME)\r
+$(DEST_DIR)\$(BASE_NAME).bin : $(SOURCE_FILE_NAME) $(INF_FILENAME)\r
   $(GENAPRIORI) -v -f $(SOURCE_FILE_NAME) -o $(DEST_DIR)\$(BASE_NAME).bin\r
 \r
 $(DEST_DIR)\$(BASE_NAME).sec : $(DEST_DIR)\$(BASE_NAME).bin\r
@@ -299,34 +299,29 @@ clean :
 [Build.Ia32.Makefile,Build.Ipf.Makefile,Build.Ebc.Makefile,Build.x64.Makefile]\r
 \r
 #\r
-# Copy the makefile directly from the source directory, then make it\r
-# writable so we can copy over it later if we try to.\r
+# Set some required macros\r
 #\r
-$(DEST_DIR)\makefile.new : $(SOURCE_DIR)\makefile.new\r
-  copy $(SOURCE_DIR)\makefile.new $(DEST_DIR)\makefile.new\r
-  attrib -r $(DEST_DIR)\makefile.new\r
+MAKEFILE_MACROS = SOURCE_DIR=$(SOURCE_DIR)                \\r
+                  BUILD_DIR=$(BUILD_DIR)                  \\r
+                  FILE_GUID=$(FILE_GUID)                  \\r
+                  DEST_DIR=$(DEST_DIR)                    \\r
+                  PROCESSOR=$(PROCESSOR)                  \\r
+                  TOOLCHAIN=TOOLCHAIN_$(PROCESSOR)        \\r
+                  BASE_NAME=$(BASE_NAME)                  \\r
+                  PACKAGE_FILENAME=$(PACKAGE_FILENAME)\r
 \r
 #\r
-# Make the all target, set some required macros.\r
+# Just call the makefile from the source directory, passing in some\r
+# useful info.\r
 #\r
-call_makefile :\r
-  $(MAKE) -f $(DEST_DIR)\makefile.new all   \\r
-          SOURCE_DIR=$(SOURCE_DIR)          \\r
-          BUILD_DIR=$(BUILD_DIR)            \\r
-          FILE_GUID=$(FILE_GUID)            \\r
-          DEST_DIR=$(DEST_DIR)              \\r
-          PROCESSOR=$(PROCESSOR)            \\r
-          TOOLCHAIN=TOOLCHAIN_$(PROCESSOR)  \\r
-          BASE_NAME=$(BASE_NAME)            \\r
-          PACKAGE_FILENAME=$(PACKAGE_FILENAME)\r
-\r
-all : $(DEST_DIR)\makefile.new call_makefile\r
+all :\r
+  $(MAKE) -f $(SOURCE_DIR)\makefile.new all $(MAKEFILE_MACROS)\r
 \r
 #\r
 # Remove the generated temp and final files for this modules.\r
 #\r
 clean :\r
-  @- $(MAKE) -f $(DEST_DIR)\makefile.new clean > NUL 2>&1\r
+  @- $(MAKE) -f $(SOURCE_DIR)\makefile.new clean $(MAKEFILE_MACROS) > NUL 2>&1\r
 !IF ("$(FILE_GUID)" != "")\r
   @if exist $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* del $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).*\r
 !ENDIF\r
@@ -344,28 +339,32 @@ clean :
 [=============================================================================]\r
 [Build.Ia32.Custom_Makefile,Build.Ipf.Custom_Makefile,Build.Ebc.Custom_Makefile,Build.x64.Custom_Makefile]\r
 \r
+#\r
+# Set some required macros\r
+#\r
+MAKEFILE_MACROS = SOURCE_DIR=$(SOURCE_DIR)                \\r
+                  BUILD_DIR=$(BUILD_DIR)                  \\r
+                  DEST_DIR=$(DEST_DIR)                    \\r
+                  FILE_GUID=$(FILE_GUID)                  \\r
+                  PROCESSOR=$(PROCESSOR)                  \\r
+                  TOOLCHAIN=TOOLCHAIN_$(PROCESSOR)        \\r
+                  BASE_NAME=$(BASE_NAME)                  \\r
+                  PLATFORM=$(PLATFORM)                    \\r
+                  SOURCE_FV=$(SOURCE_FV)                  \\r
+                  PACKAGE_FILENAME=$(PACKAGE_FILENAME)\r
+\r
 #\r
 # Just call the makefile from the source directory, passing in some\r
 # useful info.\r
 #\r
 all : \r
-  $(MAKE) -f $(SOURCE_DIR)\makefile all    \\r
-          SOURCE_DIR=$(SOURCE_DIR)         \\r
-          BUILD_DIR=$(BUILD_DIR)           \\r
-          DEST_DIR=$(DEST_DIR)             \\r
-          FILE_GUID=$(FILE_GUID)           \\r
-          PROCESSOR=$(PROCESSOR)           \\r
-          TOOLCHAIN=TOOLCHAIN_$(PROCESSOR) \\r
-          BASE_NAME=$(BASE_NAME)           \\r
-          PLATFORM=$(PLATFORM)             \\r
-          SOURCE_FV=$(SOURCE_FV)           \\r
-          PACKAGE_FILENAME=$(PACKAGE_FILENAME)\r
+  $(MAKE) -f $(SOURCE_DIR)\makefile all $(MAKEFILE_MACROS)\r
 \r
 #\r
 # Remove the generated temp and final files for this modules.\r
 #\r
 clean :\r
-  @- $(MAKE) -f $(SOURCE_DIR)\makefile clean > NUL 2>&1\r
+  @- $(MAKE) -f $(SOURCE_DIR)\makefile clean $(MAKEFILE_MACROS) > NUL 2>&1\r
 !IF ("$(FILE_GUID)" != "")\r
   @if exist $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* del $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).*\r
 !ENDIF\r
@@ -496,9 +495,29 @@ clean :
 \r
 !IF "$(LOCALIZE)" == "YES"\r
 \r
-!IF "$(EFI_GENERATE_HII_EXPORT)" == "YES"\r
-STRGATHER_FLAGS   = $(STRGATHER_FLAGS) -hpk $(DEST_DIR)\$(BASE_NAME)Strings.hpk\r
+!IF (("$(EFI_GENERATE_HII_RESOURCE)" == "YES") && ("$(EFI_SPECIFICATION_VERSION)" >= "0x0002000A"))\r
+#\r
+# This will generate HII resource section in PE/COFF image.\r
+#\r
+# Note: when HII package list is built into resource section, Driver no longer\r
+# refer to C array generated by VfrCompiler ($(FILE_NAME)Bin) and StrGather\r
+# ($(BASE_NAME)Strings); while in current build rule, those C array objects\r
+# will still be linked with the Driver, so please turn on link flag "/OPT:REF"\r
+# to minimize the code size.\r
+#\r
+HII_PACK_FILES   = $(HII_PACK_FILES) $(DEST_DIR)\$(BASE_NAME)Strings.hpk\r
+LOCALIZE_TARGETS = $(LOCALIZE_TARGETS) $(DEST_DIR)\$(BASE_NAME).res\r
+LINK_FLAGS_DLL   = $(LINK_FLAGS_DLL) $(DEST_DIR)\$(BASE_NAME).res\r
+\r
+$(DEST_DIR)\$(BASE_NAME).rc : $(HII_PACK_FILES)\r
+  $(HIIPACK) -g $(FILE_GUID) $(HII_PACK_FILES) -rc $(DEST_DIR)\$(BASE_NAME).rc -hii $(DEST_DIR)\$(BASE_NAME).hii\r
+\r
+$(DEST_DIR)\$(BASE_NAME).res : $(DEST_DIR)\$(BASE_NAME).rc\r
+  $(RC) /fo $(DEST_DIR)\$(BASE_NAME).res $(DEST_DIR)\$(BASE_NAME).rc\r
 \r
+!ENDIF\r
+\r
+!IF (("$(EFI_GENERATE_HII_EXPORT)" == "YES") && ("$(EFI_SPECIFICATION_VERSION)" < "0x0002000A"))\r
 #\r
 # There will be one HII pack containing all the strings. Add that file\r
 # to the list of HII pack files we'll use to create our final HII export file.\r
@@ -507,6 +526,15 @@ HII_PACK_FILES    = $(HII_PACK_FILES) $(DEST_DIR)\$(BASE_NAME)Strings.hpk
 LOCALIZE_TARGETS  = $(LOCALIZE_TARGETS) $(DEST_DIR)\$(BASE_NAME).hii\r
 !ENDIF\r
 \r
+!IF ("$(EFI_SPECIFICATION_VERSION)" >= "0x0002000A")\r
+#\r
+# Note: currently -ppflag option is only available for UefiStrGather\r
+# Note: /GS- will cause warning for preprocess, so filter it out from STRGATHER_PPFLAG\r
+#\r
+STRGATHER_PPFLAG = $(C_FLAGS: /GS-=)\r
+STRGATHER_FLAGS  = $(STRGATHER_FLAGS) -ppflag "$(STRGATHER_PPFLAG)" -oh $(DEST_DIR)\$(BASE_NAME)StrDefs.h\r
+!ENDIF\r
+\r
 $(DEST_DIR)\$(BASE_NAME).sdb : $(SDB_FILES) $(SOURCE_FILES)\r
   $(STRGATHER) -scan -vdbr $(STRGATHER_FLAGS) -od $(DEST_DIR)\$(BASE_NAME).sdb \\r
     -skipext .uni -skipext .h $(SOURCE_FILES)\r
@@ -528,7 +556,7 @@ OBJECTS = $(OBJECTS) $(DEST_DIR)\$(BASE_NAME)Strings.obj
 $(DEST_DIR)\$(BASE_NAME)Strings.obj : $(DEST_DIR)\$(BASE_NAME)Strings.c $(INF_FILENAME) $(ALL_DEPS)\r
   $(CC) $(C_FLAGS) $(DEST_DIR)\$(BASE_NAME)Strings.c\r
 \r
-LOCALIZE_TARGETS = $(LOCALIZE_TARGETS) $(DEST_DIR)\$(BASE_NAME)StrDefs.h\r
+LOCALIZE_TARGETS = $(DEST_DIR)\$(BASE_NAME)StrDefs.h $(LOCALIZE_TARGETS)\r
 \r
 !ENDIF\r
 \r
@@ -677,7 +705,7 @@ $(TARGET_VER) : $(INF_FILENAME)
   $(GENSECTION) -O $(TARGET_VER) -S EFI_SECTION_VERSION -V $(BUILD_NUMBER)\r
 !ENDIF\r
 !ELSE\r
-$(TARGET_VER) : \r
+$(TARGET_VER) : $(INF_FILENAME)\r
   echo.>$(TARGET_VER)\r
   type $(TARGET_VER)>$(TARGET_VER)\r
 !ENDIF\r
@@ -741,7 +769,7 @@ $(TARGET_DPX) : $(DPX_SOURCE_FILE) $(INF_FILENAME)
 !ERROR Dependency expression source file "$(DPX_SOURCE_FILE)" does not exist.\r
 !ENDIF\r
 !ELSE\r
-$(TARGET_DPX) : \r
+$(TARGET_DPX) : $(INF_FILENAME)\r
   echo. > $(TARGET_DPX)\r
   type $(TARGET_DPX) > $(TARGET_DPX)\r
 !ENDIF\r
@@ -796,7 +824,7 @@ $(TARGET_DXE_DPX) : $(SOURCE_DIR)\$(DXE_DPX_SOURCE) $(INF_FILENAME)
 !ERROR Dependency expression source file "$(SOURCE_DIR)\$(DXE_DPX_SOURCE)" does not exist.\r
 !ENDIF\r
 !ELSE\r
-$(TARGET_DXE_DPX) : \r
+$(TARGET_DXE_DPX) : $(INF_FILENAME)\r
   echo. > $(TARGET_DXE_DPX)\r
   type $(TARGET_DXE_DPX) > $(TARGET_DXE_DPX)\r
 !ENDIF\r
@@ -963,7 +991,7 @@ $(TARGET_VER) : $(INF_FILENAME)
   $(GENSECTION) -O $(TARGET_VER) -S EFI_SECTION_VERSION -V $(BUILD_NUMBER)\r
 !ENDIF\r
 !ELSE\r
-$(TARGET_VER) : \r
+$(TARGET_VER) : $(INF_FILENAME)\r
   echo.>$(TARGET_VER)\r
   type $(TARGET_VER)>$(TARGET_VER)\r
 !ENDIF\r
@@ -1027,7 +1055,7 @@ $(TARGET_DPX) : $(DPX_SOURCE_FILE) $(INF_FILENAME)
 !ERROR Dependency expression source file "$(DPX_SOURCE_FILE)" does not exist.\r
 !ENDIF\r
 !ELSE\r
-$(TARGET_DPX) : \r
+$(TARGET_DPX) : $(INF_FILENAME)\r
   echo. > $(TARGET_DPX)\r
   type $(TARGET_DPX) > $(TARGET_DPX)\r
 !ENDIF\r
@@ -1069,9 +1097,29 @@ LIBS = $(LIBS) $(EBC_TOOLS_PATH)\lib\EbcLib.lib
 \r
 !IF "$(LOCALIZE)" == "YES"\r
 \r
-!IF "$(EFI_GENERATE_HII_EXPORT)" == "YES"\r
-STRGATHER_FLAGS   = $(STRGATHER_FLAGS) -hpk $(DEST_DIR)\$(BASE_NAME)Strings.hpk\r
+!IF (("$(EFI_GENERATE_HII_RESOURCE)" == "YES") && ("$(EFI_SPECIFICATION_VERSION)" >= "0x0002000A"))\r
+#\r
+# This will generate HII resource section in PE/COFF image.\r
+#\r
+# Note: when HII package list is built into resource section, Driver no longer\r
+# refer to C array generated by VfrCompiler ($(FILE_NAME)Bin) and StrGather\r
+# ($(BASE_NAME)Strings); while in current build rule, those C array objects\r
+# will still be linked with the Driver, so please turn on link flag "/OPT:REF"\r
+# to minimize the code size.\r
+#\r
+HII_PACK_FILES   = $(HII_PACK_FILES) $(DEST_DIR)\$(BASE_NAME)Strings.hpk\r
+LOCALIZE_TARGETS = $(LOCALIZE_TARGETS) $(DEST_DIR)\$(BASE_NAME).res\r
+OBJECTS          = $(OBJECTS) $(DEST_DIR)\$(BASE_NAME).res\r
+\r
+$(DEST_DIR)\$(BASE_NAME).rc : $(HII_PACK_FILES)\r
+  $(HIIPACK) -g $(FILE_GUID) $(HII_PACK_FILES) -rc $(DEST_DIR)\$(BASE_NAME).rc -hii $(DEST_DIR)\$(BASE_NAME).hii\r
 \r
+$(DEST_DIR)\$(BASE_NAME).res : $(DEST_DIR)\$(BASE_NAME).rc\r
+  $(RC) /fo $(DEST_DIR)\$(BASE_NAME).res $(DEST_DIR)\$(BASE_NAME).rc\r
+\r
+!ENDIF\r
+\r
+!IF (("$(EFI_GENERATE_HII_EXPORT)" == "YES") && ("$(EFI_SPECIFICATION_VERSION)" < "0x0002000A"))\r
 #\r
 # There will be one HII pack containing all the strings. Add that file\r
 # to the list of HII pack files we'll use to create our final HII export file.\r
@@ -1081,6 +1129,15 @@ HII_PACK_FILES = $(HII_PACK_FILES) $(DEST_DIR)\$(BASE_NAME)Strings.hpk
 LOCALIZE_TARGETS  = $(LOCALIZE_TARGETS) $(DEST_DIR)\$(BASE_NAME).hii\r
 !ENDIF\r
 \r
+!IF ("$(EFI_SPECIFICATION_VERSION)" >= "0x0002000A")\r
+#\r
+# Note: currently -ppflag option is only available for UefiStrGather\r
+# Note: /GS- will cause warning for preprocess, so filter it out from STRGATHER_PPFLAG\r
+#\r
+STRGATHER_PPFLAG = $(EBC_C_FLAGS: /GS-=)\r
+STRGATHER_FLAGS  = $(STRGATHER_FLAGS) -ppflag "$(STRGATHER_PPFLAG)" -oh $(DEST_DIR)\$(BASE_NAME)StrDefs.h\r
+!ENDIF\r
+\r
 $(DEST_DIR)\$(BASE_NAME).sdb : $(SDB_FILES) $(SOURCE_FILES)\r
   $(STRGATHER) -scan -vdbr $(STRGATHER_FLAGS) -od $(DEST_DIR)\$(BASE_NAME).sdb \\r
     -skipext .uni -skipext .h $(SOURCE_FILES)\r
@@ -1102,7 +1159,7 @@ OBJECTS = $(OBJECTS) $(DEST_DIR)\$(BASE_NAME)Strings.obj
 $(DEST_DIR)\$(BASE_NAME)Strings.obj : $(DEST_DIR)\$(BASE_NAME)Strings.c $(INF_FILENAME) $(ALL_DEPS)\r
   $(EBC_CC) $(EBC_C_FLAGS) $(DEST_DIR)\$(BASE_NAME)Strings.c\r
 \r
-LOCALIZE_TARGETS = $(LOCALIZE_TARGETS) $(DEST_DIR)\$(BASE_NAME)StrDefs.h\r
+LOCALIZE_TARGETS = $(DEST_DIR)\$(BASE_NAME)StrDefs.h $(LOCALIZE_TARGETS)\r
 \r
 !ENDIF\r
 \r
@@ -1170,7 +1227,7 @@ $(TARGET_VER) : $(INF_FILENAME)
   $(GENSECTION) -O $(TARGET_VER) -S EFI_SECTION_VERSION -V $(BUILD_NUMBER)\r
 !ENDIF\r
 !ELSE\r
-$(TARGET_VER) : \r
+$(TARGET_VER) : $(INF_FILENAME)\r
   echo. > $(TARGET_VER)\r
   type $(TARGET_VER) > $(TARGET_VER)\r
 !ENDIF\r
@@ -1234,7 +1291,7 @@ $(TARGET_DPX) : $(DPX_SOURCE_FILE) $(INF_FILENAME)
 !ERROR Dependency expression source file "$(DPX_SOURCE_FILE)" does not exist.\r
 !ENDIF\r
 !ELSE\r
-$(TARGET_DPX) : \r
+$(TARGET_DPX) : $(INF_FILENAME)\r
   echo. > $(TARGET_DPX)\r
   type $(TARGET_DPX) > $(TARGET_DPX)\r
 !ENDIF\r
@@ -1293,7 +1350,7 @@ clean :
 # This section, as it now exists, only supports boot service drivers.\r
 #\r
 [=============================================================================]\r
-[Build.Ia32.BS_DRIVER_EFI|RT_DRIVER_EFI|APPLICATION_EFI,Build.Ipf.BS_DRIVER_EFI|RT_DRIVER_EFI|APPLICATION_EFI,Build.Ebc.BS_DRIVER_EFI|RT_DRIVER_EFI|APPLICATION_EFI,Build.x64.BS_DRIVER_EFI|RT_DRIVER_EFI|APPLICATION_EFI]\r
+[Build.Ia32.BS_DRIVER_EFI|RT_DRIVER_EFI|APPLICATION_EFI|PE32_PEIM_EFI,Build.Ipf.BS_DRIVER_EFI|RT_DRIVER_EFI|APPLICATION_EFI|PE32_PEIM_EFI,Build.Ebc.BS_DRIVER_EFI|RT_DRIVER_EFI|APPLICATION_EFI,Build.x64.BS_DRIVER_EFI|RT_DRIVER_EFI|APPLICATION_EFI|PE32_PEIM_EFI]\r
 #\r
 # Defines for standard intermediate files and build targets. For the source\r
 # .efi file, take the one in the source directory if it exists. If there's not\r
@@ -1320,6 +1377,8 @@ TARGET_DLL        = $(BIN_DIR)\$(BASE_NAME).dll
 #\r
 !IF "$(COMPONENT_TYPE)" == "APPLICATION"\r
 TARGET_FFS_FILE = $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).app\r
+!ELSE IF "$(COMPONENT_TYPE)" == "PE32_PEIM"\r
+TARGET_FFS_FILE = $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).pei\r
 !ELSE\r
 TARGET_FFS_FILE = $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).dxe\r
 !ENDIF\r
@@ -1348,7 +1407,7 @@ $(TARGET_VER) : $(INF_FILENAME)
   $(GENSECTION) -O $(TARGET_VER) -S EFI_SECTION_VERSION -V $(BUILD_NUMBER)\r
 !ENDIF\r
 !ELSE\r
-$(TARGET_VER) : \r
+$(TARGET_VER) : $(INF_FILENAME)\r
   echo. > $(TARGET_VER)\r
   type $(TARGET_VER) > $(TARGET_VER)\r
 !ENDIF\r
@@ -1412,7 +1471,7 @@ $(TARGET_DPX) : $(DPX_SOURCE_FILE) $(INF_FILENAME)
 !ERROR Dependency expression source file "$(DPX_SOURCE_FILE)" does not exist.\r
 !ENDIF\r
 !ELSE\r
-$(TARGET_DPX) : \r
+$(TARGET_DPX) : $(INF_FILENAME)\r
   echo. > $(TARGET_DPX)\r
   type $(TARGET_DPX) > $(TARGET_DPX)\r
 !ENDIF\r
@@ -1438,18 +1497,17 @@ clean :
 [=============================================================================]\r
 [Compile.Ia32.Bin|Bmp,Compile.x64.Bin|Bmp,Compile.Ipf.Bin|Bmp]\r
 #\r
-# We simply copy the binary file from the source directory to the destination directory\r
+# We simply define the binary source file name\r
 #\r
-$(DEST_DIR)\$(BASE_NAME).bin : $(SOURCE_FILE_NAME)\r
-  copy $** $@\r
+BINARY_SOURCE_FILE = $(SOURCE_FILE_NAME)\r
 \r
 [=============================================================================]\r
 [Build.Ia32.BINARY|Legacy16|Logo,Build.Ipf.BINARY|Legacy16|Logo,Build.x64.BINARY|Legacy16|Logo]\r
 #\r
 # Use GenFfsFile to convert it to an FFS file\r
 #\r
-$(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).ffs : $(DEST_DIR)\$(BASE_NAME).bin $(PACKAGE_FILENAME)\r
-  $(GENSECTION) -I $(DEST_DIR)\$(BASE_NAME).bin -O $(DEST_DIR)\$(BASE_NAME).sec -S EFI_SECTION_RAW\r
+$(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).ffs : $(BINARY_SOURCE_FILE) $(PACKAGE_FILENAME) $(INF_FILENAME)\r
+  $(GENSECTION) -I $(BINARY_SOURCE_FILE) -O $(DEST_DIR)\$(BASE_NAME).sec -S EFI_SECTION_RAW\r
   $(GENFFSFILE) -B $(DEST_DIR) -P1 $(PACKAGE_FILENAME) -V\r
 \r
 all : $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).ffs\r
@@ -1469,7 +1527,8 @@ clean :
 #\r
 # Use GenFfsFile to convert it to an raw FFS file\r
 #\r
-$(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).raw : $(DEST_DIR)\$(BASE_NAME).bin $(PACKAGE_FILENAME)\r
+$(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).raw : $(BINARY_SOURCE_FILE) $(PACKAGE_FILENAME) $(INF_FILENAME)\r
+  copy $(BINARY_SOURCE_FILE) $(DEST_DIR)\$(BASE_NAME).bin /Y\r
   $(GENFFSFILE) -B $(DEST_DIR) -P1 $(PACKAGE_FILENAME) -V\r
 \r
 all : $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).raw\r
@@ -1515,6 +1574,8 @@ SDB_FILES       = $(SDB_FILES) $(DEST_DIR)\$(FILE).sdb
 STRGATHER_FLAGS = $(STRGATHER_FLAGS) -db $(DEST_DIR)\$(FILE).sdb\r
 LOCALIZE        = YES\r
 \r
+[=============================================================================]\r
+[Compile.Ia32.hfr,Compile.Ipf.hfr,Compile.Ebc.hfr,Compile.x64.hfr]\r
 [=============================================================================]\r
 [Compile.Ia32.Vfr,Compile.Ipf.Vfr,Compile.x64.Vfr]\r
 \r
@@ -1695,7 +1756,7 @@ HII_IFR_PACK_FILES = $(HII_IFR_PACK_FILES) $(DEST_DIR)\$(FILE).hpk
 #\r
 # Run GenSection on the firmware volume image.\r
 #\r
-$(DEST_DIR)\$(SOURCE_FV)Fv.sec : $(SOURCE_FILE_NAME)\r
+$(DEST_DIR)\$(SOURCE_FV)Fv.sec : $(SOURCE_FILE_NAME) $(INF_FILENAME)\r
   $(GENSECTION) -I $(SOURCE_FILE_NAME) -O $(DEST_DIR)\$(SOURCE_FV)Fv.sec -S EFI_SECTION_FIRMWARE_VOLUME_IMAGE\r
 \r
 [=============================================================================]\r