summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiming Gao <liming.gao@intel.com>2015-06-08 09:44:01 +0000
committerlgao4 <lgao4@Edk2>2015-06-08 09:44:01 +0000
commitb74d65ed3a5c973766b44f081ceba2d6a269c0a6 (patch)
tree866586c602c327ee6c47e7ce2978a68f8860ebfc
parentf5e9390ef2b32749970f907bbf75f8500d994f2d (diff)
downloadedk2-b74d65ed3a5c973766b44f081ceba2d6a269c0a6.tar.gz
edk2-b74d65ed3a5c973766b44f081ceba2d6a269c0a6.tar.bz2
edk2-b74d65ed3a5c973766b44f081ceba2d6a269c0a6.zip
BaseTools: Update GenFds to handle file type Ffs Rule
Ffs Rule can specify a file type instead of specific file name. GenFds should search Binary sections of module INF file and output directory of the module to find all matched file with the specific file type. Current GenFds only considers the final output target file. This patch applies the above rule to match output file with the specific file type. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Yingke Liu <yingke.d.liu@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17579 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r--BaseTools/Source/Python/GenFds/Section.py25
1 files changed, 21 insertions, 4 deletions
diff --git a/BaseTools/Source/Python/GenFds/Section.py b/BaseTools/Source/Python/GenFds/Section.py
index c67177bb17..32314d6b7f 100644
--- a/BaseTools/Source/Python/GenFds/Section.py
+++ b/BaseTools/Source/Python/GenFds/Section.py
@@ -141,10 +141,27 @@ class Section (SectionClassObject):
else:
GenFdsGlobalVariable.InfLogger ("\nCurrent ARCH \'%s\' of File %s is not in the Support Arch Scope of %s specified by INF %s in FDF" %(FfsInf.CurrentArch, File.File, File.Arch, FfsInf.InfFileName))
- if Suffix != None:
- SuffixMap = FfsInf.GetFinalTargetSuffixMap()
- if Suffix in SuffixMap:
- FileList.extend(SuffixMap[Suffix])
+ if Suffix != None and os.path.exists(FfsInf.EfiOutputPath):
+ #
+ # Get Makefile path and time stamp
+ #
+ MakefileDir = FfsInf.EfiOutputPath[:-len('OUTPUT')]
+ Makefile = os.path.join(MakefileDir, 'Makefile')
+ if not os.path.exists(Makefile):
+ Makefile = os.path.join(MakefileDir, 'GNUmakefile')
+ if not os.path.exists(Makefile):
+ SuffixMap = FfsInf.GetFinalTargetSuffixMap()
+ if Suffix in SuffixMap:
+ FileList.extend(SuffixMap[Suffix])
+ else:
+ # Update to search files with suffix in all sub-dirs.
+ Tuple = os.walk(FfsInf.EfiOutputPath)
+ for Dirpath, Dirnames, Filenames in Tuple:
+ for F in Filenames:
+ if os.path.splitext(F)[1] in (Suffix):
+ FullName = os.path.join(Dirpath, F)
+ if os.path.getmtime(FullName) > os.path.getmtime(Makefile):
+ FileList.append(FullName)
#Process the file lists is alphabetical for a same section type
if len (FileList) > 1: