Re: [edk2] [Patch 1/2] BaseTools: Add $(INC)-like support when compiling .nasm files
Yes, I agree. I will help to update a V2. Best Regards, Zhu Yonghong -Original Message- From: Carsey, Jaben Sent: Thursday, October 25, 2018 10:20 PM To: Zhu, Yonghong ; edk2-devel@lists.01.org Cc: Gao, Liming Subject: RE: [edk2] [Patch 1/2] BaseTools: Add $(INC)-like support when compiling .nasm files > -Original Message- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of > Yonghong Zhu > Sent: Thursday, October 25, 2018 12:38 AM > To: edk2-devel@lists.01.org > Cc: Gao, Liming > Subject: [edk2] [Patch 1/2] BaseTools: Add $(INC)-like support when > compiling .nasm files > > From: zhijufan > > current edk2\BaseTools\Conf\build_rule.template, the compile of nasm > source files does not have the $(INC) support. > > The '-I' option only includes the directory of the nasm source file > (${s_path}(+)). Hence, it will be impossible for nasm files to include > files outside of the nasm source file directory. > > As a comparison, the compile of both .s and .asm have $(INC) support > in their compile commands. > > Fixes: https://bugzilla.tianocore.org/show_bug.cgi?id=1085 > Cc: Liming Gao > Cc: Yonghong Zhu > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Zhiju.Fan > --- > BaseTools/Source/Python/AutoGen/GenMake.py | 14 +- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py > b/BaseTools/Source/Python/AutoGen/GenMake.py > index d94d8f9..8860d50 100644 > --- a/BaseTools/Source/Python/AutoGen/GenMake.py > +++ b/BaseTools/Source/Python/AutoGen/GenMake.py > @@ -165,11 +165,11 @@ class BuildFile(object): > _INCLUDE_CMD_ = { > "nmake" : '!INCLUDE', > "gmake" : "include" > } > > -_INC_FLAG_ = {TAB_COMPILER_MSFT : "/I", "GCC" : "-I", "INTEL" : "-I", > "RVCT" : "-I"} > +_INC_FLAG_ = {TAB_COMPILER_MSFT : "/I", "GCC" : "-I", "INTEL" : > + "-I", > "RVCT" : "-I", "NASM" : "-I"} > > ## Constructor of BuildFile > # > # @param AutoGenObject Object of AutoGen class > # > @@ -594,10 +594,22 @@ cleanlib: > "macro_name" : "INC", > "source_file" : > IncludePathList > } > ) > FileMacroList.append(FileMacro) > +for File in self.FileCache.keys(): > +if not str(File).endswith('.nasm'): > +continue > +FileMacro = "" > +IncludePathList = [] > +for P in MyAgo.IncludePathList: > +IncludePathList.append(self._INC_FLAG_['NASM'] + > self.PlaceMacro(P, self.Macros)) > +if FileBuildRule.INC_LIST_MACRO in self.ListFileMacros: > + > self.ListFileMacros[FileBuildRule.INC_LIST_MACRO].append(self._INC_FLA > G > _['NASM'] + P) > +FileMacro += > self._FILE_MACRO_TEMPLATE.Replace({"macro_name": "NASM_INC", > "source_file": IncludePathList}) Why do we use += on FileMacro here? Seems like = will be fine. We can also skip initializing the FileMacro since it's only ever assigned here. > +FileMacroList.append(FileMacro) > +break > > # Generate macros used to represent files containing list of input > files > for ListFileMacro in self.ListFileMacros: > ListFileName = os.path.join(MyAgo.OutputDir, "%s.lst" % > ListFileMacro.lower()[:len(ListFileMacro) - 5]) > FileMacroList.append("%s = %s" % (ListFileMacro, > ListFileName)) > -- > 2.6.1.windows.1 > > ___ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [Patch 1/2] BaseTools: Add $(INC)-like support when compiling .nasm files
> -Original Message- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of > Yonghong Zhu > Sent: Thursday, October 25, 2018 12:38 AM > To: edk2-devel@lists.01.org > Cc: Gao, Liming > Subject: [edk2] [Patch 1/2] BaseTools: Add $(INC)-like support when > compiling .nasm files > > From: zhijufan > > current edk2\BaseTools\Conf\build_rule.template, the compile of nasm > source files does not have the $(INC) support. > > The '-I' option only includes the directory of the nasm source file > (${s_path}(+)). Hence, it will be impossible for nasm files to include > files outside of the nasm source file directory. > > As a comparison, the compile of both .s and .asm have $(INC) support > in their compile commands. > > Fixes: https://bugzilla.tianocore.org/show_bug.cgi?id=1085 > Cc: Liming Gao > Cc: Yonghong Zhu > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Zhiju.Fan > --- > BaseTools/Source/Python/AutoGen/GenMake.py | 14 +- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py > b/BaseTools/Source/Python/AutoGen/GenMake.py > index d94d8f9..8860d50 100644 > --- a/BaseTools/Source/Python/AutoGen/GenMake.py > +++ b/BaseTools/Source/Python/AutoGen/GenMake.py > @@ -165,11 +165,11 @@ class BuildFile(object): > _INCLUDE_CMD_ = { > "nmake" : '!INCLUDE', > "gmake" : "include" > } > > -_INC_FLAG_ = {TAB_COMPILER_MSFT : "/I", "GCC" : "-I", "INTEL" : "-I", > "RVCT" : "-I"} > +_INC_FLAG_ = {TAB_COMPILER_MSFT : "/I", "GCC" : "-I", "INTEL" : "-I", > "RVCT" : "-I", "NASM" : "-I"} > > ## Constructor of BuildFile > # > # @param AutoGenObject Object of AutoGen class > # > @@ -594,10 +594,22 @@ cleanlib: > "macro_name" : "INC", > "source_file" : > IncludePathList > } > ) > FileMacroList.append(FileMacro) > +for File in self.FileCache.keys(): > +if not str(File).endswith('.nasm'): > +continue > +FileMacro = "" > +IncludePathList = [] > +for P in MyAgo.IncludePathList: > +IncludePathList.append(self._INC_FLAG_['NASM'] + > self.PlaceMacro(P, self.Macros)) > +if FileBuildRule.INC_LIST_MACRO in self.ListFileMacros: > + > self.ListFileMacros[FileBuildRule.INC_LIST_MACRO].append(self._INC_FLAG > _['NASM'] + P) > +FileMacro += > self._FILE_MACRO_TEMPLATE.Replace({"macro_name": "NASM_INC", > "source_file": IncludePathList}) Why do we use += on FileMacro here? Seems like = will be fine. We can also skip initializing the FileMacro since it's only ever assigned here. > +FileMacroList.append(FileMacro) > +break > > # Generate macros used to represent files containing list of input > files > for ListFileMacro in self.ListFileMacros: > ListFileName = os.path.join(MyAgo.OutputDir, "%s.lst" % > ListFileMacro.lower()[:len(ListFileMacro) - 5]) > FileMacroList.append("%s = %s" % (ListFileMacro, ListFileName)) > -- > 2.6.1.windows.1 > > ___ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
[edk2] [Patch 1/2] BaseTools: Add $(INC)-like support when compiling .nasm files
From: zhijufan current edk2\BaseTools\Conf\build_rule.template, the compile of nasm source files does not have the $(INC) support. The '-I' option only includes the directory of the nasm source file (${s_path}(+)). Hence, it will be impossible for nasm files to include files outside of the nasm source file directory. As a comparison, the compile of both .s and .asm have $(INC) support in their compile commands. Fixes: https://bugzilla.tianocore.org/show_bug.cgi?id=1085 Cc: Liming Gao Cc: Yonghong Zhu Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Zhiju.Fan --- BaseTools/Source/Python/AutoGen/GenMake.py | 14 +- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py b/BaseTools/Source/Python/AutoGen/GenMake.py index d94d8f9..8860d50 100644 --- a/BaseTools/Source/Python/AutoGen/GenMake.py +++ b/BaseTools/Source/Python/AutoGen/GenMake.py @@ -165,11 +165,11 @@ class BuildFile(object): _INCLUDE_CMD_ = { "nmake" : '!INCLUDE', "gmake" : "include" } -_INC_FLAG_ = {TAB_COMPILER_MSFT : "/I", "GCC" : "-I", "INTEL" : "-I", "RVCT" : "-I"} +_INC_FLAG_ = {TAB_COMPILER_MSFT : "/I", "GCC" : "-I", "INTEL" : "-I", "RVCT" : "-I", "NASM" : "-I"} ## Constructor of BuildFile # # @param AutoGenObject Object of AutoGen class # @@ -594,10 +594,22 @@ cleanlib: "macro_name" : "INC", "source_file" : IncludePathList } ) FileMacroList.append(FileMacro) +for File in self.FileCache.keys(): +if not str(File).endswith('.nasm'): +continue +FileMacro = "" +IncludePathList = [] +for P in MyAgo.IncludePathList: +IncludePathList.append(self._INC_FLAG_['NASM'] + self.PlaceMacro(P, self.Macros)) +if FileBuildRule.INC_LIST_MACRO in self.ListFileMacros: + self.ListFileMacros[FileBuildRule.INC_LIST_MACRO].append(self._INC_FLAG_['NASM'] + P) +FileMacro += self._FILE_MACRO_TEMPLATE.Replace({"macro_name": "NASM_INC", "source_file": IncludePathList}) +FileMacroList.append(FileMacro) +break # Generate macros used to represent files containing list of input files for ListFileMacro in self.ListFileMacros: ListFileName = os.path.join(MyAgo.OutputDir, "%s.lst" % ListFileMacro.lower()[:len(ListFileMacro) - 5]) FileMacroList.append("%s = %s" % (ListFileMacro, ListFileName)) -- 2.6.1.windows.1 ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel