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