summaryrefslogtreecommitdiffstats
path: root/BaseTools/Source/Python/AutoGen/PlatformAutoGen.py
diff options
context:
space:
mode:
authorPierre Gondois <pierre.gondois@arm.com>2020-02-10 18:49:07 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2020-02-12 02:34:44 +0000
commit818283de3f6d3b288deda54f0734be5bb70ddd5a (patch)
treeba30c9f6974f183d5db7aeadb8a4893e9330d85d /BaseTools/Source/Python/AutoGen/PlatformAutoGen.py
parente465aae055258457e91ce2d3fef87d25507c5b24 (diff)
downloadedk2-818283de3f6d3b288deda54f0734be5bb70ddd5a.tar.gz
edk2-818283de3f6d3b288deda54f0734be5bb70ddd5a.tar.bz2
edk2-818283de3f6d3b288deda54f0734be5bb70ddd5a.zip
BaseTools: Rationalise makefile generation
The GenMake.py script tests the platform environment to determine the type of makefile that needs to be generated. If a Windows build host is detected, the makefile generated is of Nmake type. Otherwise a GNUmake type is generated. Furthermore, the <TARGET>_<TAGNAME>_<ARCH>_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 = DEF(VS2017_BIN_HOST)\nmake.exe while for GCC5 it is setup to use GNU make. *_GCC5_*_MAKE_PATH = DEF(GCC_HOST_PREFIX)make This prevents using the GCC compiler toolchain on a Windows build host. To address this issue this patch introduces 2 factors to determine the generated makefile output. 1. Platform -> to determine shell commands used in makefile. 2. MakeTool -> to determine the type of makefile that needs to be generated. Signed-off-by: Pierre Gondois <pierre.gondois@arm.com> Signed-off-by: Sami Mujawar <sami.mujawar@arm.com> Reviewed-by: Bob Feng <bob.c.feng@intel.com>
Diffstat (limited to 'BaseTools/Source/Python/AutoGen/PlatformAutoGen.py')
-rw-r--r--BaseTools/Source/Python/AutoGen/PlatformAutoGen.py13
1 files changed, 7 insertions, 6 deletions
diff --git a/BaseTools/Source/Python/AutoGen/PlatformAutoGen.py b/BaseTools/Source/Python/AutoGen/PlatformAutoGen.py
index 7bd24dad42..d32178b00c 100644
--- a/BaseTools/Source/Python/AutoGen/PlatformAutoGen.py
+++ b/BaseTools/Source/Python/AutoGen/PlatformAutoGen.py
@@ -2,6 +2,7 @@
# Create makefile for MS nmake and GNU make
#
# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2020, ARM Limited. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
@@ -106,8 +107,9 @@ class PlatformAutoGen(AutoGen):
self.BuildDatabase = Workspace.BuildDatabase
self.DscBuildDataObj = Workspace.Platform
- # flag indicating if the makefile/C-code file has been created or not
- self.IsMakeFileCreated = False
+ # MakeFileName is used to get the Makefile name and as a flag
+ # indicating whether the file has been created.
+ self.MakeFileName = ""
self._DynamicPcdList = None # [(TokenCName1, TokenSpaceGuidCName1), (TokenCName2, TokenSpaceGuidCName2), ...]
self._NonDynamicPcdList = None # [(TokenCName1, TokenSpaceGuidCName1), (TokenCName2, TokenSpaceGuidCName2), ...]
@@ -191,16 +193,15 @@ class PlatformAutoGen(AutoGen):
self.CreateLibModuelDirs()
def CreateLibModuelDirs(self):
- # no need to create makefile for the platform more than once
- if self.IsMakeFileCreated:
+ # No need to create makefile for the platform more than once.
+ if self.MakeFileName:
return
# create library/module build dirs for platform
Makefile = GenMake.PlatformMakefile(self)
self.LibraryBuildDirectoryList = Makefile.GetLibraryBuildDirectoryList()
self.ModuleBuildDirectoryList = Makefile.GetModuleBuildDirectoryList()
-
- self.IsMakeFileCreated = True
+ self.MakeFileName = Makefile.getMakefileName()
@property
def AllPcdList(self):