From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web11.5923.1580731764755383476 for ; Mon, 03 Feb 2020 04:09:24 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: liming.gao@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Feb 2020 04:09:24 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,397,1574150400"; d="scan'208";a="431128792" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by fmsmga006.fm.intel.com with ESMTP; 03 Feb 2020 04:09:24 -0800 Received: from shsmsx601.ccr.corp.intel.com (10.109.6.141) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 3 Feb 2020 04:09:23 -0800 Received: from shsmsx606.ccr.corp.intel.com (10.109.6.216) by SHSMSX601.ccr.corp.intel.com (10.109.6.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 3 Feb 2020 20:09:21 +0800 Received: from shsmsx606.ccr.corp.intel.com ([10.109.6.216]) by SHSMSX606.ccr.corp.intel.com ([10.109.6.216]) with mapi id 15.01.1713.004; Mon, 3 Feb 2020 20:09:21 +0800 From: "Liming Gao" To: Pierre Gondois , "devel@edk2.groups.io" CC: "Feng, Bob C" , Sami Mujawar , nd Subject: Re: [PATCH v1 1/1] BaseTools: Rationalise makefile generation Thread-Topic: [PATCH v1 1/1] BaseTools: Rationalise makefile generation Thread-Index: AQHV0UqbnVKCYiuh8kG95BJjDwhSf6gJcjvw Date: Mon, 3 Feb 2020 12:09:21 +0000 Message-ID: <1be4c60e4abf41c094908a593e53a21d@intel.com> References: <20200113144045.2120-1-pierre.gondois@arm.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.2.0.6 dlp-product: dlpe-windows dlp-reaction: no-action x-originating-ip: [10.239.127.36] MIME-Version: 1.0 Return-Path: liming.gao@intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Pierre: Thanks for your contribution. Do you verify below configurations? And, ho= w do you verify Windows host + GCC make? 1. Windows Host + VS nmake 2. Windows Host + GCC make 3. Linux Host + GCC make. Thanks Liming > -----Original Message----- > From: Pierre Gondois > Sent: Thursday, January 23, 2020 1:37 AM > To: Pierre Gondois ; devel@edk2.groups.io > Cc: Feng, Bob C ; Gao, Liming ; Sami Mujawar ; nd > > Subject: RE: [PATCH v1 1/1] BaseTools: Rationalise makefile generation >=20 > Hello Bob and Liming, > Just to let you know, I created a Bugzilla here on the same topic: https:= //bugzilla.tianocore.org/show_bug.cgi?id=3D2481 >=20 > Regards, > Pierre >=20 > -----Original Message----- > From: PierreGondois > Sent: 13 January 2020 14:41 > To: devel@edk2.groups.io > Cc: Pierre Gondois ; bob.c.feng@intel.com; liming= .gao@intel.com; Sami Mujawar > ; pierre.gondois@arm.comnd@arm.com > Subject: [PATCH v1 1/1] BaseTools: Rationalise makefile generation >=20 > From: Pierre Gondois >=20 > The GenMake.py script tests the platform environment to determine the typ= e of makefile that needs to be generated. If a Windows > build host is detected, the makefile generated is of Nmake type. Otherwis= e a GNUmake type is generated. >=20 > Furthermore, the ___MAKE_PATH > option in tools_def.template defines the make tool to use. > E.g.: for VS2017 this is configured to use Nmake, cf. > *_VS2017_*_MAKE_PATH =3D DEF(VS2017_BIN_HOST)\nmake.exe while for GCC5 it= is setup to use GNU make. > *_GCC5_*_MAKE_PATH =3D DEF(GCC_HOST_PREFIX)make >=20 > This prevents using the GCC compiler toolchain on a Windows build host. >=20 > To address this issue this patch introduces 2 factors to determine the ge= nerated makefile output. > 1. Platform -> to determine shell commands used > in makefile. > 2. MakeTool -> to determine the type of makefile > that needs to be generated. >=20 > Signed-off-by: Pierre Gondois > Signed-off-by: Sami Mujawar > --- >=20 > The changes can be seen at https://github.com/PierreARM/edk2/tree/720_Bas= eTools_Rationalise_makefile_generation_v1 >=20 > Notes: > v1: > - Rationalise makefile generation [Pierre] >=20 > BaseTools/Source/Python/AutoGen/GenMake.py | 122 ++++++++++-----= ----- > BaseTools/Source/Python/AutoGen/IncludesAutoGen.py | 34 +++--- > BaseTools/Source/Python/build/build.py | 7 +- > 3 files changed, 88 insertions(+), 75 deletions(-) >=20 > diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py b/BaseTools/Sourc= e/Python/AutoGen/GenMake.py > index fe94f9a4c232bb599a59563444c3985700c78ec6..640b562257f74a45b38b8c857= dae4750f7c286e0 100755 > --- a/BaseTools/Source/Python/AutoGen/GenMake.py > +++ b/BaseTools/Source/Python/AutoGen/GenMake.py > @@ -2,6 +2,7 @@ > # Create makefile for MS nmake and GNU make # # Copyright (c) 2007 - 2= 018, Intel Corporation. All rights reserved.
> +# Copyright (c) 2020, ARM Limited. All rights reserved.
> # SPDX-License-Identifier: BSD-2-Clause-Patent # >=20 > @@ -52,13 +53,6 @@ gIncludeMacroConversion =3D { > "EFI_PPI_DEPENDENCY" : gPpiDefinition, > } >=20 > -## default makefile type > -gMakeType =3D "" > -if sys.platform =3D=3D "win32": > - gMakeType =3D "nmake" > -else: > - gMakeType =3D "gmake" > - >=20 > ## BuildFile class > # > @@ -77,6 +71,13 @@ class BuildFile(object): > "gmake" : "GNUmakefile" > } >=20 > + # Get Makefile name. > + def getMakefileName(self): > + if not self._FileType: > + return _DEFAULT_FILE_NAME_ > + else: > + return self._FILE_NAME_[self._FileType] > + > ## Fixed header string for makefile > _MAKEFILE_HEADER =3D '''# > # DO NOT EDIT > @@ -106,7 +107,7 @@ class BuildFile(object): > # $(RD) remove dir command > # > _SHELL_CMD_ =3D { > - "nmake" : { > + "win32" : { > "CP" : "copy /y", > "MV" : "move /y", > "RM" : "del /f /q", > @@ -114,7 +115,7 @@ class BuildFile(object): > "RD" : "rmdir /s /q", > }, >=20 > - "gmake" : { > + "posix" : { > "CP" : "cp -f", > "MV" : "mv -f", > "RM" : "rm -f", > @@ -125,35 +126,35 @@ class BuildFile(object): >=20 > ## directory separator > _SEP_ =3D { > - "nmake" : "\\", > - "gmake" : "/" > + "win32" : "\\", > + "posix" : "/" > } >=20 > ## directory creation template > _MD_TEMPLATE_ =3D { > - "nmake" : 'if not exist %(dir)s $(MD) %(dir)s', > - "gmake" : "$(MD) %(dir)s" > + "win32" : 'if not exist %(dir)s $(MD) %(dir)s', > + "posix" : "$(MD) %(dir)s" > } >=20 > ## directory removal template > _RD_TEMPLATE_ =3D { > - "nmake" : 'if exist %(dir)s $(RD) %(dir)s', > - "gmake" : "$(RD) %(dir)s" > + "win32" : 'if exist %(dir)s $(RD) %(dir)s', > + "posix" : "$(RD) %(dir)s" > } > ## cp if exist > _CP_TEMPLATE_ =3D { > - "nmake" : 'if exist %(Src)s $(CP) %(Src)s %(Dst)s', > - "gmake" : "test -f %(Src)s && $(CP) %(Src)s %(Dst)s" > + "win32" : 'if exist %(Src)s $(CP) %(Src)s %(Dst)s', > + "posix" : "test -f %(Src)s && $(CP) %(Src)s %(Dst)s" > } >=20 > _CD_TEMPLATE_ =3D { > - "nmake" : 'if exist %(dir)s cd %(dir)s', > - "gmake" : "test -e %(dir)s && cd %(dir)s" > + "win32" : 'if exist %(dir)s cd %(dir)s', > + "posix" : "test -e %(dir)s && cd %(dir)s" > } >=20 > _MAKE_TEMPLATE_ =3D { > - "nmake" : 'if exist %(file)s "$(MAKE)" $(MAKE_FLAGS) -f %(file= )s', > - "gmake" : 'test -e %(file)s && "$(MAKE)" $(MAKE_FLAGS) -f %(fi= le)s' > + "win32" : 'if exist %(file)s "$(MAKE)" $(MAKE_FLAGS) -f %(file= )s', > + "posix" : 'test -e %(file)s && "$(MAKE)" $(MAKE_FLAGS) -f %(fi= le)s' > } >=20 > _INCLUDE_CMD_ =3D { > @@ -169,22 +170,30 @@ class BuildFile(object): > # > def __init__(self, AutoGenObject): > self._AutoGenObject =3D AutoGenObject > - self._FileType =3D gMakeType >=20 > - ## Create build file > + MakePath =3D AutoGenObject.BuildOption.get('MAKE', {}).get('PATH= ') > + if not MakePath: > + self._FileType =3D "" > + elif "nmake" in MakePath: > + self._FileType =3D "nmake" > + else: > + self._FileType =3D "gmake" > + > + if sys.platform =3D=3D "win32": > + self._Platform =3D "win32" > + else: > + self._Platform =3D "posix" > + > + ## Create build file. > # > - # @param FileType Type of build file. Only nmake and gmake are= supported now. > + # Only nmake and gmake are supported. > # > - # @retval TRUE The build file is created or re-created succ= essfully > - # @retval FALSE The build file exists and is the same as the= one to be generated > + # @retval TRUE The build file is created or re-created succe= ssfully > + # @retval FALSE The build file exists and is the same as the = one to be generated > # > - def Generate(self, FileType=3DgMakeType): > - if FileType not in self._FILE_NAME_: > - EdkLogger.error("build", PARAMETER_INVALID, "Invalid build t= ype [%s]" % FileType, > - ExtraData=3D"[%s]" % str(self._AutoGenObject= )) > - self._FileType =3D FileType > + def Generate(self): > FileContent =3D self._TEMPLATE_.Replace(self._TemplateDict) > - FileName =3D self._FILE_NAME_[FileType] > + FileName =3D self.getMakefileName() > if not os.path.exists(os.path.join(self._AutoGenObject.MakeFileD= ir, "deps.txt")): > with open(os.path.join(self._AutoGenObject.MakeFileDir, "dep= s.txt"),"w+") as fd: > fd.write("") > @@ -200,7 +209,7 @@ class BuildFile(object): > # @retval list The directory creation command list > # > def GetCreateDirectoryCommand(self, DirList): > - return [self._MD_TEMPLATE_[self._FileType] % {'dir':Dir} for Dir= in DirList] > + return [self._MD_TEMPLATE_[self._Platform] % {'dir':Dir} for > + Dir in DirList] >=20 > ## Return a list of directory removal command string > # > @@ -209,7 +218,7 @@ class BuildFile(object): > # @retval list The directory removal command list > # > def GetRemoveDirectoryCommand(self, DirList): > - return [self._RD_TEMPLATE_[self._FileType] % {'dir':Dir} for Dir= in DirList] > + return [self._RD_TEMPLATE_[self._Platform] % {'dir':Dir} for > + Dir in DirList] >=20 > def PlaceMacro(self, Path, MacroDefinitions=3DNone): > if Path.startswith("$("): > @@ -459,11 +468,8 @@ cleanlib: > # Compose a dict object containing information used to do replacemen= t in template > @property > def _TemplateDict(self): > - if self._FileType not in self._SEP_: > - EdkLogger.error("build", PARAMETER_INVALID, "Invalid Makefil= e type [%s]" % self._FileType, > - ExtraData=3D"[%s]" % str(self._AutoGenObject= )) > MyAgo =3D self._AutoGenObject > - Separator =3D self._SEP_[self._FileType] > + Separator =3D self._SEP_[self._Platform] >=20 > # break build if no source files and binary files are found > if len(MyAgo.SourceFileList) =3D=3D 0 and len(MyAgo.BinaryFileLi= st) =3D=3D 0: > @@ -625,10 +631,10 @@ cleanlib: >=20 > BcTargetList =3D [] >=20 > - MakefileName =3D self._FILE_NAME_[self._FileType] > + MakefileName =3D self.getMakefileName() > LibraryMakeCommandList =3D [] > for D in self.LibraryBuildDirectoryList: > - Command =3D self._MAKE_TEMPLATE_[self._FileType] % {"file":o= s.path.join(D, MakefileName)} > + Command =3D self._MAKE_TEMPLATE_[self._Platform] % > + {"file":os.path.join(D, MakefileName)} > LibraryMakeCommandList.append(Command) >=20 > package_rel_dir =3D MyAgo.SourceDir @@ -680,8 +686,8 @@ cleanlib= : > "separator" : Separator, > "module_tool_definitions" : ToolsDef, >=20 > - "shell_command_code" : list(self._SHELL_CMD_[self._Fi= leType].keys()), > - "shell_command" : list(self._SHELL_CMD_[self._Fi= leType].values()), > + "shell_command_code" : list(self._SHELL_CMD_[self._Pl= atform].keys()), > + "shell_command" : list(self._SHELL_CMD_[self._Pl= atform].values()), >=20 > "module_entry_point" : ModuleEntryPoint, > "image_entry_point" : ImageEntryPoint, > @@ -716,7 +722,7 @@ cleanlib: > self.ResultFileList.append(Dst) > if '%s :' %(Dst) not in self.BuildTargetList: > self.BuildTargetList.append("%s :" %(Dst)) > - self.BuildTargetList.append('\t' + self._CP_TEMP= LATE_[self._FileType] %{'Src': Src, 'Dst': Dst}) > + self.BuildTargetList.append('\t' + > + self._CP_TEMPLATE_[self._Platform] %{'Src': Src, 'Dst': Dst}) >=20 > FfsCmdList =3D Cmd[0] > for index, Str in enumerate(FfsCmdList): > @@ -1217,7 +1223,7 @@ ${BEGIN}\t-@${create_directory_command}\n${END}\ > # Compose a dict object containing information used to do replacemen= t in template > @property > def _TemplateDict(self): > - Separator =3D self._SEP_[self._FileType] > + Separator =3D self._SEP_[self._Platform] > MyAgo =3D self._AutoGenObject > if self._FileType not in MyAgo.CustomMakefile: > EdkLogger.error('build', OPTION_NOT_SUPPORTED, "No custom ma= kefile for %s" % self._FileType, @@ -1247,7 +1253,7 @@ > ${BEGIN}\t-@${create_directory_command}\n${END}\ > ToolsDef.append("%s_%s =3D %s" % (Tool, Attr, MyAgo.= BuildOption[Tool][Attr])) > ToolsDef.append("") >=20 > - MakefileName =3D self._FILE_NAME_[self._FileType] > + MakefileName =3D self.getMakefileName() > MakefileTemplateDict =3D { > "makefile_header" : self._FILE_HEADER_[self._FileT= ype], > "makefile_path" : os.path.join("$(MODULE_BUILD_D= IR)", MakefileName), > @@ -1280,8 +1286,8 @@ ${BEGIN}\t-@${create_directory_command}\n${END}\ > "separator" : Separator, > "module_tool_definitions" : ToolsDef, >=20 > - "shell_command_code" : list(self._SHELL_CMD_[self._Fi= leType].keys()), > - "shell_command" : list(self._SHELL_CMD_[self._Fi= leType].values()), > + "shell_command_code" : list(self._SHELL_CMD_[self._Pl= atform].keys()), > + "shell_command" : list(self._SHELL_CMD_[self._Pl= atform].values()), >=20 > "create_directory_command" : self.GetCreateDirectoryCommand= (self.IntermediateDirectoryList), > "custom_makefile_content" : CustomMakefile > @@ -1408,7 +1414,7 @@ cleanlib: > # Compose a dict object containing information used to do replacemen= t in template > @property > def _TemplateDict(self): > - Separator =3D self._SEP_[self._FileType] > + Separator =3D self._SEP_[self._Platform] >=20 > MyAgo =3D self._AutoGenObject > if "MAKE" not in MyAgo.ToolDefinition or "PATH" not in MyAgo.Too= lDefinition["MAKE"]: > @@ -1419,13 +1425,13 @@ cleanlib: > self.ModuleBuildDirectoryList =3D self.GetModuleBuildDirectoryLi= st() > self.LibraryBuildDirectoryList =3D self.GetLibraryBuildDirectory= List() >=20 > - MakefileName =3D self._FILE_NAME_[self._FileType] > + MakefileName =3D self.getMakefileName() > LibraryMakefileList =3D [] > LibraryMakeCommandList =3D [] > for D in self.LibraryBuildDirectoryList: > D =3D self.PlaceMacro(D, {"BUILD_DIR":MyAgo.BuildDir}) > Makefile =3D os.path.join(D, MakefileName) > - Command =3D self._MAKE_TEMPLATE_[self._FileType] % {"file":M= akefile} > + Command =3D self._MAKE_TEMPLATE_[self._Platform] % > + {"file":Makefile} > LibraryMakefileList.append(Makefile) > LibraryMakeCommandList.append(Command) > self.LibraryMakeCommandList =3D LibraryMakeCommandList @@ -1435,= 7 +1441,7 @@ cleanlib: > for D in self.ModuleBuildDirectoryList: > D =3D self.PlaceMacro(D, {"BUILD_DIR":MyAgo.BuildDir}) > Makefile =3D os.path.join(D, MakefileName) > - Command =3D self._MAKE_TEMPLATE_[self._FileType] % {"file":M= akefile} > + Command =3D self._MAKE_TEMPLATE_[self._Platform] % > + {"file":Makefile} > ModuleMakefileList.append(Makefile) > ModuleMakeCommandList.append(Command) >=20 > @@ -1455,8 +1461,8 @@ cleanlib: >=20 > "toolchain_tag" : MyAgo.ToolChain, > "build_target" : MyAgo.BuildTarget, > - "shell_command_code" : list(self._SHELL_CMD_[self._Fi= leType].keys()), > - "shell_command" : list(self._SHELL_CMD_[self._Fi= leType].values()), > + "shell_command_code" : list(self._SHELL_CMD_[self._Pl= atform].keys()), > + "shell_command" : list(self._SHELL_CMD_[self._Pl= atform].values()), > "build_architecture_list" : MyAgo.Arch, > "architecture" : MyAgo.Arch, > "separator" : Separator, > @@ -1514,7 +1520,7 @@ class TopLevelMakefile(BuildFile): > # Compose a dict object containing information used to do replacemen= t in template > @property > def _TemplateDict(self): > - Separator =3D self._SEP_[self._FileType] > + Separator =3D self._SEP_[self._Platform] >=20 > # any platform autogen object is ok because we just need common = information > MyAgo =3D self._AutoGenObject > @@ -1570,10 +1576,10 @@ class TopLevelMakefile(BuildFile): > else: > ExtraOption +=3D " --pcd " + pcdname + '=3D' + pcd[3] >=20 > - MakefileName =3D self._FILE_NAME_[self._FileType] > + MakefileName =3D self.getMakefileName() > SubBuildCommandList =3D [] > for A in MyAgo.ArchList: > - Command =3D self._MAKE_TEMPLATE_[self._FileType] % {"file":o= s.path.join("$(BUILD_DIR)", A, MakefileName)} > + Command =3D self._MAKE_TEMPLATE_[self._Platform] % > + {"file":os.path.join("$(BUILD_DIR)", A, MakefileName)} > SubBuildCommandList.append(Command) >=20 > MakefileTemplateDict =3D { > @@ -1588,8 +1594,8 @@ class TopLevelMakefile(BuildFile): >=20 > "toolchain_tag" : MyAgo.ToolChain, > "build_target" : MyAgo.BuildTarget, > - "shell_command_code" : list(self._SHELL_CMD_[self._Fi= leType].keys()), > - "shell_command" : list(self._SHELL_CMD_[self._Fi= leType].values()), > + "shell_command_code" : list(self._SHELL_CMD_[self._Pl= atform].keys()), > + "shell_command" : list(self._SHELL_CMD_[self._Pl= atform].values()), > 'arch' : list(MyAgo.ArchList), > "build_architecture_list" : ','.join(MyAgo.ArchList), > "separator" : Separator, > diff --git a/BaseTools/Source/Python/AutoGen/IncludesAutoGen.py b/BaseToo= ls/Source/Python/AutoGen/IncludesAutoGen.py > index bb6e883d84ca6decc97514f95a35bd6db8714eed..c41dc33c4bcf33d30cf8bfc82= 9718ed96923ff8f 100644 > --- a/BaseTools/Source/Python/AutoGen/IncludesAutoGen.py > +++ b/BaseTools/Source/Python/AutoGen/IncludesAutoGen.py > @@ -2,6 +2,7 @@ > # Build cache intermediate result and state # # Copyright (c) 2019, In= tel Corporation. All rights reserved.
> +# Copyright (c) 2020, ARM Limited. All rights reserved.
> # SPDX-License-Identifier: BSD-2-Clause-Patent # from Common.caching i= mport cached_property @@ -12,20 +13,6 @@ from > Common.Misc import SaveFileOnChange, PathClass from Common.Misc import T= emplateString import sys gIsFileMap =3D {} -if > sys.platform =3D=3D "win32": > - _INCLUDE_DEPS_TEMPLATE =3D TemplateString(''' > -${BEGIN} > -!IF EXIST(${deps_file}) > -!INCLUDE ${deps_file} > -!ENDIF > -${END} > - ''') > -else: > - _INCLUDE_DEPS_TEMPLATE =3D TemplateString(''' > -${BEGIN} > --include ${deps_file} > -${END} > - ''') >=20 > DEP_FILE_TAIL =3D "# Updated \n" >=20 > @@ -59,6 +46,25 @@ class IncludesAutoGen(): >=20 > def CreateDepsInclude(self): > deps_file =3D {'deps_file':self.deps_files} > + > + MakePath =3D self.module_autogen.BuildOption.get('MAKE', {}).get= ('PATH') > + if not MakePath: > + EdkLogger.error("build", PARAMETER_MISSING, Message=3D"No Ma= ke path available.") > + elif "nmake" in MakePath: > + _INCLUDE_DEPS_TEMPLATE =3D TemplateString(''' > + ${BEGIN} > + !IF EXIST(${deps_file}) > + !INCLUDE ${deps_file} > + !ENDIF > + ${END} > + ''') > + else: > + _INCLUDE_DEPS_TEMPLATE =3D TemplateString(''' > + ${BEGIN} > + -include ${deps_file} > + ${END} > + ''') > + > try: > deps_include_str =3D _INCLUDE_DEPS_TEMPLATE.Replace(deps_fil= e) > except Exception as e: > diff --git a/BaseTools/Source/Python/build/build.py b/BaseTools/Source/Py= thon/build/build.py > index 34acdccbdbd00a3d10f9c6c42004f59a96ff0063..a2a4337b7524163049c77f998= 74ce1a7aa4c1644 100755 > --- a/BaseTools/Source/Python/build/build.py > +++ b/BaseTools/Source/Python/build/build.py > @@ -4,6 +4,7 @@ > # Copyright (c) 2014, Hewlett-Packard Development Company, L.P.
# = Copyright (c) 2007 - 2019, Intel Corporation. All rights > reserved.
# Copyright (c) 2018, Hewlett Packard Enterprise Developm= ent, L.P.
> +# Copyright (c) 2020, ARM Limited. All rights reserved.
> # > # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -1250,7 +1251,7 @@= class Build(): > (AutoGenObject.BuildTarget, AutoGenObjec= t.ToolChain, AutoGenObject.Arch), > ExtraData=3Dstr(AutoGenObject)) >=20 > - makefile =3D GenMake.BuildFile(AutoGenObject)._FILE_NAME_[GenMak= e.gMakeType] > + makefile =3D GenMake.BuildFile(AutoGenObject).getMakefileName() >=20 > # run > if Target =3D=3D 'run': > @@ -2039,10 +2040,10 @@ class Build(): > ModuleBuildDirectoryList =3D data_pipe.Get("ModuleBuildDirec= toryList") >=20 > for m_build_dir in LibraryBuildDirectoryList: > - if not os.path.exists(os.path.join(m_build_dir,GenMake.B= uildFile._FILE_NAME_[GenMake.gMakeType])): > + if not os.path.exists(os.path.join(m_build_dir,GenMake.B= uildFile.getMakefileName())): > return None > for m_build_dir in ModuleBuildDirectoryList: > - if not os.path.exists(os.path.join(m_build_dir,GenMake.B= uildFile._FILE_NAME_[GenMake.gMakeType])): > + if not os.path.exists(os.path.join(m_build_dir,GenMake.B= uildFile.getMakefileName())): > return None > Wa =3D WorkSpaceInfo( > workspacedir,active_p,target,toolchain,archlist > -- > 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)' >=20