BaseTools: Support multi thread build Basetool on Windows

Add NmakeSubdirs.py to replace NmakeSubdirs.bat in VS Makefile. This script will
invoke nmake in multi thread mode. It can save more than half time of BaseTools
C clean build.
GCC make supports multiple thread in make phase. So, GNUmakefile doesn't need apply
this script.

single task or job=1:
    just single thread and invoke subprocess,subprocess will use
    system.stdout to print output.
multi task:
    thread number is logic cpu count.All subprocess output will pass to
    python script by PIPE and then script print it to system.stdout.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Dongao Guo<dongao.guo@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Test-by: Liming Gao <liming.gao@intel.com>
3 files changed
tree: 35c9ca0b7a5f5f28ef38529a405472f336676e89
  1. AppPkg/
  2. ArmPkg/
  3. ArmPlatformPkg/
  4. ArmVirtPkg/
  5. BaseTools/
  6. BeagleBoardPkg/
  7. Conf/
  8. CorebootModulePkg/
  9. CorebootPayloadPkg/
  10. CryptoPkg/
  11. DuetPkg/
  12. EdkCompatibilityPkg/
  13. EdkShellBinPkg/
  14. EdkShellPkg/
  15. EmbeddedPkg/
  16. EmulatorPkg/
  17. FatBinPkg/
  18. FatPkg/
  19. FmpDevicePkg/
  20. IntelFrameworkModulePkg/
  21. IntelFrameworkPkg/
  22. IntelFsp2Pkg/
  23. IntelFsp2WrapperPkg/
  24. IntelFspPkg/
  25. IntelFspWrapperPkg/
  26. IntelSiliconPkg/
  27. MdeModulePkg/
  28. MdePkg/
  29. NetworkPkg/
  30. Nt32Pkg/
  31. Omap35xxPkg/
  32. OptionRomPkg/
  33. OvmfPkg/
  34. PcAtChipsetPkg/
  35. QuarkPlatformPkg/
  36. QuarkSocPkg/
  37. SecurityPkg/
  38. ShellBinPkg/
  39. ShellPkg/
  40. SignedCapsulePkg/
  41. SourceLevelDebugPkg/
  42. StandaloneMmPkg/
  43. StdLib/
  44. StdLibPrivateInternalFiles/
  45. UefiCpuPkg/
  46. UnixPkg/
  47. Vlv2DeviceRefCodePkg/
  48. Vlv2TbltDevicePkg/
  49. .gitignore
  50. .gitmodules
  51. BuildNotes2.txt
  52. Contributions.txt
  53. edksetup.bat
  54. edksetup.sh
  55. License.txt
  56. Maintainers.txt
  57. Readme.md
Readme.md

EDK II Project

A modern, feature-rich, cross-platform firmware development environment for the UEFI and PI specifications from www.uefi.org.

Contributions to the EDK II open source project are covered by the TianoCore Contribution Agreement 1.1

The majority of the content in the EDK II open source project uses a BSD 2-Clause License. The EDK II open source project contains the following components that are covered by additional licenses:

The EDK II Project is composed of packages. The maintainers for each package are listed in Maintainers.txt.

Resources