|
@@ -11,6 +11,7 @@ import os
|
|
|
import sys
|
|
|
import logging
|
|
|
import argparse
|
|
|
+import multiprocessing
|
|
|
from edk2toolext import edk2_logging
|
|
|
from edk2toolext.environment import self_describing_environment
|
|
|
from edk2toolext.base_abstract_invocable import BaseAbstractInvocable
|
|
@@ -141,7 +142,8 @@ class Edk2ToolsBuild(BaseAbstractInvocable):
|
|
|
return ret
|
|
|
|
|
|
elif self.tool_chain_tag.lower().startswith("gcc"):
|
|
|
- ret = RunCmd("make", "-C .", workingdir=shell_env.get_shell_var("EDK_TOOLS_PATH"))
|
|
|
+ cpu_count = self.GetCpuThreads()
|
|
|
+ ret = RunCmd("make", f"-C . -j {cpu_count}", workingdir=shell_env.get_shell_var("EDK_TOOLS_PATH"))
|
|
|
if ret != 0:
|
|
|
raise Exception("Failed to build.")
|
|
|
|
|
@@ -154,6 +156,18 @@ class Edk2ToolsBuild(BaseAbstractInvocable):
|
|
|
logging.critical("Tool Chain not supported")
|
|
|
return -1
|
|
|
|
|
|
+ def GetCpuThreads(self) -> int:
|
|
|
+ ''' Function to return number of cpus. If error return 1'''
|
|
|
+ cpus = 1
|
|
|
+ try:
|
|
|
+ cpus = multiprocessing.cpu_count()
|
|
|
+ except:
|
|
|
+ # from the internet there are cases where cpu_count is not implemented.
|
|
|
+ # will handle error by just doing single proc build
|
|
|
+ pass
|
|
|
+ return cpus
|
|
|
+
|
|
|
+
|
|
|
|
|
|
def main():
|
|
|
Edk2ToolsBuild().Invoke()
|