BaseTools: Add $(INC)-like support when compiling .nasm files

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 <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Cc: Bob Feng <bob.c.feng@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Zhiju.Fan <zhijux.fan@intel.com>
Reviewed-by: Bob Feng <bob.c.feng@intel.com>
This commit is contained in:
Zhiju.Fan 2018-12-19 00:13:12 +08:00 committed by BobCF
parent 7c3a1efd15
commit 073a76e662
1 changed files with 19 additions and 1 deletions

View File

@ -167,7 +167,7 @@ class BuildFile(object):
"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
#
@ -596,6 +596,24 @@ cleanlib:
}
)
FileMacroList.append(FileMacro)
# Add support when compiling .nasm source files
for File in self.FileCache.keys():
if not str(File).endswith('.nasm'):
continue
IncludePathList = []
for P in MyAgo.IncludePathList:
IncludePath = self._INC_FLAG_['NASM'] + self.PlaceMacro(P, self.Macros)
if IncludePath.endswith(os.sep):
IncludePath = IncludePath.rstrip(os.sep)
# When compiling .nasm files, need to add a literal backslash at each path
# To specify a literal backslash at the end of the line, precede it with a caret (^)
if P == MyAgo.IncludePathList[-1] and os.sep == '\\':
IncludePath = ''.join([IncludePath, '^', os.sep])
else:
IncludePath = os.path.join(IncludePath, '')
IncludePathList.append(IncludePath)
FileMacroList.append(self._FILE_MACRO_TEMPLATE.Replace({"macro_name": "NASM_INC", "source_file": IncludePathList}))
break
# Generate macros used to represent files containing list of input files
for ListFileMacro in self.ListFileMacros: