public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [BaseTools Patch 0/2] Add clang/gnumake build support in windows
@ 2021-08-18 14:18 Steven Shi
  2021-08-18 14:18 ` [BaseTools Patch 1/2] BaseTools: add clang + gnu make " Steven Shi
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Steven Shi @ 2021-08-18 14:18 UTC (permalink / raw)
  To: devel; +Cc: michael.d.kinney, gaoliming, bob.c.feng, yuqi.chen, Steven Shi

Google Summer of Code 2021 project: Add clang + gnu make build support
for Edk2 BaseTools in windows

Details of tool combinations and build steps:
https://github.com/alyssachne/edk2/tree/2021-gsoc-llvm-gnumake-v3

Only plan to check-in to edk2-staging right now

Help to send this patch serial for Yuqi Chen <yuqi.chen@mail.utoronto.ca>,
since she has git configure problem.

Alyssa (2):
  BaseTools: add clang + gnu make build support in windows
  Readme: Update the readme to add project details

 BaseTools/Source/C/BrotliCompress/GNUmakefile |   8 +-
 BaseTools/Source/C/Common/CommonLib.h         |   9 +
 BaseTools/Source/C/Common/MyAlloc.c           |   4 +-
 BaseTools/Source/C/Common/MyAlloc.h           |   4 +-
 BaseTools/Source/C/DevicePath/GNUmakefile     |   6 +-
 BaseTools/Source/C/EfiRom/GNUmakefile         |   6 +-
 BaseTools/Source/C/GNUmakefile                |  74 ++-
 BaseTools/Source/C/GenCrc32/GNUmakefile       |   6 +-
 BaseTools/Source/C/GenFfs/GNUmakefile         |   6 +-
 BaseTools/Source/C/GenFv/GNUmakefile          |   6 +-
 BaseTools/Source/C/GenFw/GNUmakefile          |   6 +-
 BaseTools/Source/C/GenSec/GNUmakefile         |   6 +-
 BaseTools/Source/C/LzmaCompress/GNUmakefile   |   6 +-
 BaseTools/Source/C/Makefiles/app.makefile     |   5 +-
 BaseTools/Source/C/Makefiles/header.makefile  |  84 ++-
 BaseTools/Source/C/Makefiles/lib.makefile     |   6 +-
 BaseTools/Source/C/Makefiles/ms.app           |   2 +-
 BaseTools/Source/C/Makefiles/ms.common        |   9 +
 BaseTools/Source/C/TianoCompress/GNUmakefile  |   6 +-
 BaseTools/Source/C/VfrCompile/GNUmakefile     |  29 +-
 .../C/VfrCompile/Pccts/antlr/AntlrMS.mak      |   9 +-
 .../Source/C/VfrCompile/Pccts/antlr/makefile  |   7 +
 .../Source/C/VfrCompile/Pccts/dlg/DlgMS.mak   |   9 +-
 .../Source/C/VfrCompile/Pccts/dlg/makefile    |   7 +
 BaseTools/Source/C/VolInfo/GNUmakefile        |   6 +-
 BaseTools/Tests/GNUmakefile                   |  17 +-
 BaseTools/Tests/TestTools.py                  |   2 +-
 BaseTools/Tests/TianoCompress.py              |   5 +-
 BaseTools/toolsetup.bat                       |  14 +-
 ReadMe.rst                                    | 553 ++++++------------
 edksetup.bat                                  |   7 +-
 31 files changed, 457 insertions(+), 467 deletions(-)

-- 
2.28.0.windows.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [BaseTools Patch 1/2] BaseTools: add clang + gnu make build support in windows
  2021-08-18 14:18 [BaseTools Patch 0/2] Add clang/gnumake build support in windows Steven Shi
@ 2021-08-18 14:18 ` Steven Shi
  2021-08-18 14:18 ` [BaseTools Patch 2/2] Readme: Update the readme to add project details Steven Shi
  2021-08-19 16:25 ` [BaseTools Patch 0/2] Add clang/gnumake build support in windows Michael D Kinney
  2 siblings, 0 replies; 5+ messages in thread
From: Steven Shi @ 2021-08-18 14:18 UTC (permalink / raw)
  To: devel; +Cc: michael.d.kinney, gaoliming, bob.c.feng, yuqi.chen, Steven Shi

From: Alyssa <yuqi.chen@mail.utoronto.ca>

This change allows to build BaseTools with LLVM clang and
gnu make in windows. After this change, there will be three
tool combinations supported in windows to build Basetool:

Clang    + gun make
Clang-cl + nmake
MSVC     + nmake

Signed-off-by: Yuqi Chen <yuqi.chen@mail.utoronto.ca>
Signed-off-by: Steven Shi <steven.shi@intel.com>
Cc: Liming Gao gaoliming@byosoft.com.cn
Cc: Yuwei Chen yuwei.chen@intel.com
Cc: Bob Feng bob.c.feng@intel.com
---
 BaseTools/Source/C/BrotliCompress/GNUmakefile |  8 +-
 BaseTools/Source/C/Common/CommonLib.h         |  9 ++
 BaseTools/Source/C/Common/MyAlloc.c           |  4 +-
 BaseTools/Source/C/Common/MyAlloc.h           |  4 +-
 BaseTools/Source/C/DevicePath/GNUmakefile     |  6 +-
 BaseTools/Source/C/EfiRom/GNUmakefile         |  6 +-
 BaseTools/Source/C/GNUmakefile                | 74 +++++++++-------
 BaseTools/Source/C/GenCrc32/GNUmakefile       |  6 +-
 BaseTools/Source/C/GenFfs/GNUmakefile         |  6 +-
 BaseTools/Source/C/GenFv/GNUmakefile          |  6 +-
 BaseTools/Source/C/GenFw/GNUmakefile          |  6 +-
 BaseTools/Source/C/GenSec/GNUmakefile         |  6 +-
 BaseTools/Source/C/LzmaCompress/GNUmakefile   |  6 +-
 BaseTools/Source/C/Makefiles/app.makefile     |  5 +-
 BaseTools/Source/C/Makefiles/header.makefile  | 84 ++++++++++++++-----
 BaseTools/Source/C/Makefiles/lib.makefile     |  6 +-
 BaseTools/Source/C/Makefiles/ms.app           |  2 +-
 BaseTools/Source/C/Makefiles/ms.common        |  9 ++
 BaseTools/Source/C/TianoCompress/GNUmakefile  |  6 +-
 BaseTools/Source/C/VfrCompile/GNUmakefile     | 29 ++++++-
 .../C/VfrCompile/Pccts/antlr/AntlrMS.mak      |  9 +-
 .../Source/C/VfrCompile/Pccts/antlr/makefile  |  7 ++
 .../Source/C/VfrCompile/Pccts/dlg/DlgMS.mak   |  9 +-
 .../Source/C/VfrCompile/Pccts/dlg/makefile    |  7 ++
 BaseTools/Source/C/VolInfo/GNUmakefile        |  6 +-
 BaseTools/Tests/GNUmakefile                   | 17 ++--
 BaseTools/Tests/TestTools.py                  |  2 +-
 BaseTools/Tests/TianoCompress.py              |  5 +-
 BaseTools/toolsetup.bat                       | 14 +++-
 edksetup.bat                                  |  7 +-
 30 files changed, 286 insertions(+), 85 deletions(-)

diff --git a/BaseTools/Source/C/BrotliCompress/GNUmakefile b/BaseTools/Source/C/BrotliCompress/GNUmakefile
index b150e5dd2b..aefada57c0 100644
--- a/BaseTools/Source/C/BrotliCompress/GNUmakefile
+++ b/BaseTools/Source/C/BrotliCompress/GNUmakefile
@@ -6,7 +6,11 @@
 #
 MAKEROOT ?= ..
 
-APPNAME = BrotliCompress
+ifeq ($(OS),Windows_NT)
+  APPNAME = BrotliCompress.exe
+else
+  APPNAME = BrotliCompress
+endif
 
 OBJECTS = \
   BrotliCompress.o \
@@ -38,4 +42,6 @@ OBJECTS = \
 include $(MAKEROOT)/Makefiles/app.makefile
 
 TOOL_INCLUDE = -I ./brotli/c/include
+ifneq ($(OS),Windows_NT)
 LIBS += -lm
+endif
\ No newline at end of file
diff --git a/BaseTools/Source/C/Common/CommonLib.h b/BaseTools/Source/C/Common/CommonLib.h
index 0f05d88db2..13b640e1cf 100644
--- a/BaseTools/Source/C/Common/CommonLib.h
+++ b/BaseTools/Source/C/Common/CommonLib.h
@@ -443,6 +443,15 @@ Returns:
 }
 #endif
 
+#ifndef __GNUC__
+#include <stdio.h>
+#include <sys/stat.h>
+#define stricmp _stricmp // https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/stricmp-wcsicmp
+#define getcwd _getcwd //https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/getcwd
+#define access _access //https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/access-crt
+#define fileno _fileno //https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/posix-fileno
+#endif
+
 #ifdef __GNUC__
 #include <stdio.h>
 #include <sys/stat.h>
diff --git a/BaseTools/Source/C/Common/MyAlloc.c b/BaseTools/Source/C/Common/MyAlloc.c
index d104795d46..0a1b5d9c85 100644
--- a/BaseTools/Source/C/Common/MyAlloc.c
+++ b/BaseTools/Source/C/Common/MyAlloc.c
@@ -159,7 +159,7 @@ MyCheck (
 // ////////////////////////////////////////////////////////////////////////////
 //
 //
-VOID *
+static VOID *
 MyAlloc (
   UINTN      Size,
   UINT8 File[],
@@ -402,7 +402,7 @@ MyRealloc (
 // ////////////////////////////////////////////////////////////////////////////
 //
 //
-VOID
+static VOID
 MyFree (
   VOID       *Ptr,
   UINT8 File[],
diff --git a/BaseTools/Source/C/Common/MyAlloc.h b/BaseTools/Source/C/Common/MyAlloc.h
index aff29d05ab..c4ed79ee8f 100644
--- a/BaseTools/Source/C/Common/MyAlloc.h
+++ b/BaseTools/Source/C/Common/MyAlloc.h
@@ -103,7 +103,7 @@ MyCheck (
 //
 // --*/
 //
-VOID  *
+static VOID  *
 MyAlloc (
   UINTN      Size,
   UINT8      File[],
@@ -167,7 +167,7 @@ MyRealloc (
 //
 // --*/
 //
-VOID
+static VOID
 MyFree (
   VOID       *Ptr,
   UINT8      File[],
diff --git a/BaseTools/Source/C/DevicePath/GNUmakefile b/BaseTools/Source/C/DevicePath/GNUmakefile
index 7ca08af966..b67861a3a7 100644
--- a/BaseTools/Source/C/DevicePath/GNUmakefile
+++ b/BaseTools/Source/C/DevicePath/GNUmakefile
@@ -7,7 +7,11 @@
 ARCH ?= IA32
 MAKEROOT ?= ..
 
-APPNAME = DevicePath
+ifeq ($(OS),Windows_NT)
+  APPNAME = DevicePath.exe
+else
+  APPNAME = DevicePath
+endif
 
 OBJECTS = DevicePath.o UefiDevicePathLib.o DevicePathFromText.o  DevicePathUtilities.o
 
diff --git a/BaseTools/Source/C/EfiRom/GNUmakefile b/BaseTools/Source/C/EfiRom/GNUmakefile
index 7220b2ae44..2d6b23db67 100644
--- a/BaseTools/Source/C/EfiRom/GNUmakefile
+++ b/BaseTools/Source/C/EfiRom/GNUmakefile
@@ -6,7 +6,11 @@
 #
 MAKEROOT ?= ..
 
-APPNAME = EfiRom
+ifeq ($(OS),Windows_NT)
+  APPNAME = EfiRom.exe
+else
+  APPNAME = EfiRom
+endif
 
 LIBS = -lCommon
 
diff --git a/BaseTools/Source/C/GNUmakefile b/BaseTools/Source/C/GNUmakefile
index 8c191e0c38..b4b90d017d 100644
--- a/BaseTools/Source/C/GNUmakefile
+++ b/BaseTools/Source/C/GNUmakefile
@@ -7,35 +7,47 @@
 #
 
 ifndef HOST_ARCH
-  #
-  # If HOST_ARCH is not defined, then we use 'uname -m' to attempt
-  # try to figure out the appropriate HOST_ARCH.
-  #
-  uname_m = $(shell uname -m)
-  $(info Attempting to detect HOST_ARCH from 'uname -m': $(uname_m))
-  ifneq (,$(strip $(filter $(uname_m), x86_64 amd64)))
-    HOST_ARCH=X64
+  ifeq ($(OS),Windows_NT)
+      set_pro = $(shell set pro)
+      $(info Attempting to detect HOST_ARCH from 'set pro': $(set_pro))
+      ifneq (,$(strip $(filter (x86) %AMD64, $(set_pro))))
+        HOST_ARCH=X64
+        $(info the HOST_ARCH is X64)
+      endif
+      ifeq ($(patsubst i%86,IA32,$(uname_m)),IA32)
+        HOST_ARCH=IA32
+        $(info the HOST_ARCH is IA32)
+      endif
+  else
+      #
+      # If HOST_ARCH is not defined, then we use 'uname -m' to attempt
+      # try to figure out the appropriate HOST_ARCH.
+      #
+      uname_m = $(shell uname -m)
+      $(info Attempting to detect HOST_ARCH from 'uname -m': $(uname_m))
+      ifneq (,$(strip $(filter $(uname_m), x86_64 amd64)))
+        HOST_ARCH=X64
+      endif
+      ifeq ($(patsubst i%86,IA32,$(uname_m)),IA32)
+        HOST_ARCH=IA32
+      endif
+      ifneq (,$(findstring aarch64,$(uname_m)))
+        HOST_ARCH=AARCH64
+      else ifneq (,$(findstring arm64,$(uname_m)))
+        HOST_ARCH=AARCH64
+      else ifneq (,$(findstring arm,$(uname_m)))
+        HOST_ARCH=ARM
+      endif
+      ifneq (,$(findstring riscv64,$(uname_m)))
+        HOST_ARCH=RISCV64
+      endif
+      ifndef HOST_ARCH
+        $(info Could not detected HOST_ARCH from uname results)
+        $(error HOST_ARCH is not defined!)
+      endif
+      $(info Detected HOST_ARCH of $(HOST_ARCH) using uname.)
+    endif
   endif
-  ifeq ($(patsubst i%86,IA32,$(uname_m)),IA32)
-    HOST_ARCH=IA32
-  endif
-  ifneq (,$(findstring aarch64,$(uname_m)))
-    HOST_ARCH=AARCH64
-  else ifneq (,$(findstring arm64,$(uname_m)))
-    HOST_ARCH=AARCH64
-  else ifneq (,$(findstring arm,$(uname_m)))
-    HOST_ARCH=ARM
-  endif
-  ifneq (,$(findstring riscv64,$(uname_m)))
-    HOST_ARCH=RISCV64
-  endif
-  ifndef HOST_ARCH
-    $(info Could not detected HOST_ARCH from uname results)
-    $(error HOST_ARCH is not defined!)
-  endif
-  $(info Detected HOST_ARCH of $(HOST_ARCH) using uname.)
-endif
-
 export HOST_ARCH
 
 MAKEROOT = .
@@ -66,9 +78,13 @@ SUBDIRS := $(LIBRARIES) $(APPLICATIONS)
 $(LIBRARIES): $(MAKEROOT)/libs
 $(APPLICATIONS): $(LIBRARIES) $(MAKEROOT)/bin $(VFRAUTOGEN)
 
+ifeq ($(OS),Windows_NT)
+  $(APPLICATIONS): $(BASE_TOOLS_PATH)\Bin\Win32
+endif
+
 .PHONY: outputdirs
 makerootdir:
-	-mkdir -p $(MAKEROOT)
+	-$(MKDIR) $(MAKEROOT)
 
 .PHONY: subdirs $(SUBDIRS)
 subdirs: $(SUBDIRS)
diff --git a/BaseTools/Source/C/GenCrc32/GNUmakefile b/BaseTools/Source/C/GenCrc32/GNUmakefile
index fe4575d5fc..a72a1c988a 100644
--- a/BaseTools/Source/C/GenCrc32/GNUmakefile
+++ b/BaseTools/Source/C/GenCrc32/GNUmakefile
@@ -6,7 +6,11 @@
 #
 MAKEROOT ?= ..
 
-APPNAME = GenCrc32
+ifeq ($(OS),Windows_NT)
+  APPNAME = GenCrc32.exe
+else
+  APPNAME = GenCrc32
+endif
 
 LIBS = -lCommon
 
diff --git a/BaseTools/Source/C/GenFfs/GNUmakefile b/BaseTools/Source/C/GenFfs/GNUmakefile
index 3d41a5855f..4099e74260 100644
--- a/BaseTools/Source/C/GenFfs/GNUmakefile
+++ b/BaseTools/Source/C/GenFfs/GNUmakefile
@@ -6,7 +6,11 @@
 #
 MAKEROOT ?= ..
 
-APPNAME = GenFfs
+ifeq ($(OS),Windows_NT)
+  APPNAME = GenFfs.exe
+else
+  APPNAME = GenFfs
+endif
 
 OBJECTS = GenFfs.o
 
diff --git a/BaseTools/Source/C/GenFv/GNUmakefile b/BaseTools/Source/C/GenFv/GNUmakefile
index 7c7b95ba1b..eb4e9722cc 100644
--- a/BaseTools/Source/C/GenFv/GNUmakefile
+++ b/BaseTools/Source/C/GenFv/GNUmakefile
@@ -6,7 +6,11 @@
 #
 MAKEROOT ?= ..
 
-APPNAME = GenFv
+ifeq ($(OS),Windows_NT)
+  APPNAME = GenFv.exe
+else
+  APPNAME = GenFv
+endif
 
 OBJECTS = GenFv.o GenFvInternalLib.o
 
diff --git a/BaseTools/Source/C/GenFw/GNUmakefile b/BaseTools/Source/C/GenFw/GNUmakefile
index 76cda7e7a3..ce0f3684ac 100644
--- a/BaseTools/Source/C/GenFw/GNUmakefile
+++ b/BaseTools/Source/C/GenFw/GNUmakefile
@@ -6,7 +6,11 @@
 #
 MAKEROOT ?= ..
 
-APPNAME = GenFw
+ifeq ($(OS),Windows_NT)
+  APPNAME = GenFw.exe
+else
+  APPNAME = GenFw
+endif
 
 OBJECTS = GenFw.o ElfConvert.o Elf32Convert.o Elf64Convert.o
 
diff --git a/BaseTools/Source/C/GenSec/GNUmakefile b/BaseTools/Source/C/GenSec/GNUmakefile
index 9f0844c1b8..f528ed6f91 100644
--- a/BaseTools/Source/C/GenSec/GNUmakefile
+++ b/BaseTools/Source/C/GenSec/GNUmakefile
@@ -6,7 +6,11 @@
 #
 MAKEROOT ?= ..
 
-APPNAME = GenSec
+ifeq ($(OS),Windows_NT)
+  APPNAME = GenSec.exe
+else
+  APPNAME = GenSec
+endif
 
 OBJECTS = GenSec.o
 
diff --git a/BaseTools/Source/C/LzmaCompress/GNUmakefile b/BaseTools/Source/C/LzmaCompress/GNUmakefile
index c837e77823..1c7d24545e 100644
--- a/BaseTools/Source/C/LzmaCompress/GNUmakefile
+++ b/BaseTools/Source/C/LzmaCompress/GNUmakefile
@@ -6,7 +6,11 @@
 #
 MAKEROOT ?= ..
 
-APPNAME = LzmaCompress
+ifeq ($(OS),Windows_NT)
+  APPNAME = LzmaCompress.exe
+else
+  APPNAME = LzmaCompress
+endif
 
 LIBS = -lCommon
 
diff --git a/BaseTools/Source/C/Makefiles/app.makefile b/BaseTools/Source/C/Makefiles/app.makefile
index 6a2a8f5e8a..e433f6cb33 100644
--- a/BaseTools/Source/C/Makefiles/app.makefile
+++ b/BaseTools/Source/C/Makefiles/app.makefile
@@ -9,13 +9,16 @@ MAKEROOT ?= ../..
 
 include $(MAKEROOT)/Makefiles/header.makefile
 
-APPLICATION = $(MAKEROOT)/bin/$(APPNAME)
+APPLICATION = $(MAKEROOT)$(SEP)bin$(SEP)$(APPNAME)
 
 .PHONY:all
 all: $(MAKEROOT)/bin $(APPLICATION)
 
 $(APPLICATION): $(OBJECTS)
 	$(LINKER) -o $(APPLICATION) $(BUILD_LFLAGS) $(OBJECTS) -L$(MAKEROOT)/libs $(LIBS)
+ifeq ($(OS),Windows_NT)
+	$(CP) $(APPLICATION) $(EDK_TOOLS_PATH)\Bin\Win32
+endif
 
 $(OBJECTS): $(MAKEROOT)/Include/Common/BuildVersion.h
 
diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile
index 0df728f327..e02f479476 100644
--- a/BaseTools/Source/C/Makefiles/header.makefile
+++ b/BaseTools/Source/C/Makefiles/header.makefile
@@ -8,6 +8,24 @@
 # Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
 # SPDX-License-Identifier: BSD-2-Clause-Patent
 
+ifeq ($(OS),Windows_NT)
+  SEP :=$(subst /,\,/)
+  EXE_EXT := .exe
+  MKDIR := mkdir
+  MV    := move /Y
+  RM    := del /F /S
+  CP    := copy /y
+else
+  SEP :=/
+  EXE_EXT :=
+  MKDIR := mkdir -p
+  MV    := mv -f
+  RM    := rm -f
+  CP    := cp -f
+  SED   := sed
+  TEST  := test
+endif
+
 ifndef HOST_ARCH
   #
   # If HOST_ARCH is not defined, then we use 'uname -m' to attempt
@@ -38,9 +56,12 @@ ifndef HOST_ARCH
   $(info Detected HOST_ARCH of $(HOST_ARCH) using uname.)
 endif
 
-CYGWIN:=$(findstring CYGWIN, $(shell uname -s))
-LINUX:=$(findstring Linux, $(shell uname -s))
-DARWIN:=$(findstring Darwin, $(shell uname -s))
+ifneq ($(OS),Windows_NT)
+  CYGWIN:=$(findstring CYGWIN, $(shell uname -s))
+  LINUX:=$(findstring Linux, $(shell uname -s))
+  DARWIN:=$(findstring Darwin, $(shell uname -s))
+endif
+
 ifeq ($(CXX), llvm)
 BUILD_CC ?= $(CLANG_BIN)clang
 BUILD_CXX ?= $(CLANG_BIN)clang++
@@ -74,32 +95,44 @@ else
 $(error Bad HOST_ARCH)
 endif
 
-INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKEROOT)/Include/ -I $(MAKEROOT)/Include/IndustryStandard -I $(MAKEROOT)/Common/ -I .. -I . $(ARCH_INCLUDE)
-BUILD_CPPFLAGS = $(INCLUDE)
+INCLUDES = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKEROOT)/Include/ -I $(MAKEROOT)/Include/IndustryStandard -I $(MAKEROOT)/Common/ -I .. -I . $(ARCH_INCLUDE) -I "$(INCLUDE)"
+BUILD_CPPFLAGS = $(INCLUDES)
 
 # keep EXTRA_OPTFLAGS last
 BUILD_OPTFLAGS = -O2 $(EXTRA_OPTFLAGS)
 
 ifeq ($(DARWIN),Darwin)
-# assume clang or clang compatible flags on OS X
-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror \
--Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -g
-else
-ifeq ($(CXX), llvm)
-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \
--fno-delete-null-pointer-checks -Wall -Werror \
--Wno-deprecated-declarations -Wno-self-assign \
--Wno-unused-result -nostdlib -g
+  # assume clang or clang compatible flags on OS X
+  BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror \
+  -Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -g
 else
-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \
--fno-delete-null-pointer-checks -Wall -Werror \
--Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict \
--Wno-unused-result -nostdlib -g
-endif
+  ifeq ($(CXX), llvm)
+    ifeq ($(OS),Windows_NT)
+      BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \
+      -fno-delete-null-pointer-checks -Wall -Werror \
+      -Wno-deprecated-declarations -Wno-self-assign \
+      -Wno-unused-result -nostdlib -Wno-unused-function -g -m32
+    else
+      BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \
+      -fno-delete-null-pointer-checks -Wall -Werror \
+      -Wno-deprecated-declarations -Wno-self-assign \
+      -Wno-unused-result -nostdlib -g
+    endif
+  else
+    BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \
+    -fno-delete-null-pointer-checks -Wall -Werror \
+    -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict \
+    -Wno-unused-result -nostdlib -g
+  endif
 endif
 ifeq ($(CXX), llvm)
-BUILD_LFLAGS =
-BUILD_CXXFLAGS = -Wno-deprecated-register -Wno-unused-result
+  ifeq ($(OS),Windows_NT)
+    BUILD_LFLAGS = -m32
+    BUILD_CXXFLAGS = -Wno-deprecated-register -Wno-unused-result -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -m32
+  else
+    BUILD_LFLAGS =
+    BUILD_CXXFLAGS = -Wno-deprecated-register -Wno-unused-result
+  endif
 else
 BUILD_LFLAGS =
 BUILD_CXXFLAGS = -Wno-unused-result
@@ -131,7 +164,12 @@ BUILD_LFLAGS += $(EXTRA_LDFLAGS)
 all:
 
 $(MAKEROOT)/libs:
-	mkdir $(MAKEROOT)/libs
+	$(MKDIR) $(MAKEROOT)$(SEP)libs
 
 $(MAKEROOT)/bin:
-	mkdir $(MAKEROOT)/bin
+	$(MKDIR) $(MAKEROOT)$(SEP)bin
+
+ifeq ($(OS),Windows_NT)
+  $(BASE_TOOLS_PATH)\Bin\Win32:
+		-$(MKDIR) $(BASE_TOOLS_PATH)\Bin\Win32
+endif
diff --git a/BaseTools/Source/C/Makefiles/lib.makefile b/BaseTools/Source/C/Makefiles/lib.makefile
index 2577c15380..28aaab5bed 100644
--- a/BaseTools/Source/C/Makefiles/lib.makefile
+++ b/BaseTools/Source/C/Makefiles/lib.makefile
@@ -7,7 +7,11 @@
 
 include $(MAKEROOT)/Makefiles/header.makefile
 
-LIBRARY = $(MAKEROOT)/libs/lib$(LIBNAME).a
+ifeq ($(OS),Windows_NT)
+  LIBRARY = $(MAKEROOT)/libs/$(LIBNAME).lib
+else
+  LIBRARY = $(MAKEROOT)/libs/lib$(LIBNAME).a
+endif
 
 all: $(MAKEROOT)/libs $(LIBRARY)
 
diff --git a/BaseTools/Source/C/Makefiles/ms.app b/BaseTools/Source/C/Makefiles/ms.app
index aecae37396..0dd0daf6f7 100644
--- a/BaseTools/Source/C/Makefiles/ms.app
+++ b/BaseTools/Source/C/Makefiles/ms.app
@@ -13,7 +13,7 @@ $(APPLICATION) : $(OBJECTS)
 	-@if not exist $(BIN_PATH) mkdir $(BIN_PATH)
 	$(LD) /nologo /debug /OPT:REF /OPT:ICF=10 /incremental:no /nodefaultlib:libc.lib /out:$@ $(LIBS) $**
 
-$(OBJECTS) : $(SOURCE_PATH)\Include\Common\BuildVersion.h
+#$(OBJECTS) : $(SOURCE_PATH)\Include\Common\BuildVersion.h
 
 .PHONY:clean
 .PHONY:cleanall
diff --git a/BaseTools/Source/C/Makefiles/ms.common b/BaseTools/Source/C/Makefiles/ms.common
index b2dbcf376c..ef58303189 100644
--- a/BaseTools/Source/C/Makefiles/ms.common
+++ b/BaseTools/Source/C/Makefiles/ms.common
@@ -60,3 +60,12 @@ INC = $(INC) -I . -I $(SOURCE_PATH)\Include -I $(ARCH_INCLUDE) -I $(SOURCE_PATH)
 CFLAGS = $(CFLAGS) /nologo /Zi /c /O2 /MT /W4 /WX /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE
 CPPFLAGS = $(CPPFLAGS) /EHsc /nologo /Zi /c /O2 /MT /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE
 
+!IF "$(CLANG_BUILD)"=="TRUE"
+CC = "$(CLANG_BIN)\clang-cl.exe"
+CXX = "$(CLANG_BIN)\clang-cl.exe"
+AR = "$(CLANG_BIN)\llvm-lib.exe"
+LD = "$(CLANG_BIN)\lld-link.exe"
+
+CFLAGS = $(CFLAGS) /nologo /Zi /c /O2 /MT /W4 /WX /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /w -m32
+CPPFLAGS = $(CPPFLAGS) /EHsc /nologo /Zi /c /O2 /MT /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /w -m32
+!ENDIF
diff --git a/BaseTools/Source/C/TianoCompress/GNUmakefile b/BaseTools/Source/C/TianoCompress/GNUmakefile
index d164d37b3d..07cb4b4119 100644
--- a/BaseTools/Source/C/TianoCompress/GNUmakefile
+++ b/BaseTools/Source/C/TianoCompress/GNUmakefile
@@ -6,7 +6,11 @@
 #
 MAKEROOT ?= ..
 
-APPNAME = TianoCompress
+ifeq ($(OS),Windows_NT)
+  APPNAME = TianoCompress.exe
+else
+  APPNAME = TianoCompress
+endif
 
 LIBS = -lCommon
 
diff --git a/BaseTools/Source/C/VfrCompile/GNUmakefile b/BaseTools/Source/C/VfrCompile/GNUmakefile
index fc329944b9..d663f50e84 100644
--- a/BaseTools/Source/C/VfrCompile/GNUmakefile
+++ b/BaseTools/Source/C/VfrCompile/GNUmakefile
@@ -7,7 +7,11 @@
 
 MAKEROOT ?= ..
 
-APPNAME = VfrCompile
+ifeq ($(OS),Windows_NT)
+  APPNAME = VfrCompile.exe
+else
+  APPNAME = VfrCompile
+endif
 
 LIBS = -lCommon
 
@@ -17,7 +21,11 @@ TOOL_INCLUDE = -I Pccts/h
 OBJECTS = AParser.o DLexerBase.o ATokenBuffer.o EfiVfrParser.o VfrLexer.o VfrSyntax.o \
           VfrFormPkg.o VfrError.o VfrUtilityLib.o VfrCompiler.o
 ifeq ($(CXX), llvm)
-VFR_CPPFLAGS = -Wno-deprecated-register -DPCCTS_USE_NAMESPACE_STD $(BUILD_CPPFLAGS)
+  ifeq ($(OS),Windows_NT)
+    VFR_CPPFLAGS = -Wno-deprecated-register -DPCCTS_USE_NAMESPACE_STD $(BUILD_CPPFLAGS) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -m32
+  else
+    VFR_CPPFLAGS = -Wno-deprecated-register -DPCCTS_USE_NAMESPACE_STD $(BUILD_CPPFLAGS)
+  endif
 else
 VFR_CPPFLAGS = -DPCCTS_USE_NAMESPACE_STD $(BUILD_CPPFLAGS)
 endif
@@ -25,7 +33,11 @@ endif
 VFR_CXXFLAGS = $(BUILD_OPTFLAGS)
 
 # keep EXTRA_LDFLAGS last
+ifeq ($(OS),Windows_NT)
+VFR_LFLAGS = $(EXTRA_LDFLAGS) -m32
+else
 VFR_LFLAGS = $(EXTRA_LDFLAGS)
+endif
 
 LINKER = $(BUILD_CXX)
 
@@ -35,13 +47,16 @@ MAKEROOT ?= ../..
 
 include $(MAKEROOT)/Makefiles/header.makefile
 
-APPLICATION = $(MAKEROOT)/bin/$(APPNAME)
+APPLICATION = $(MAKEROOT)$(SEP)bin$(SEP)$(APPNAME)
 
 .PHONY:all
 all: $(MAKEROOT)/bin $(APPLICATION)
 
 $(APPLICATION): $(OBJECTS)
 	$(LINKER) -o $(APPLICATION) $(VFR_LFLAGS) $(OBJECTS) -L$(MAKEROOT)/libs $(LIBS)
+ifeq ($(OS),Windows_NT)
+	$(CP) $(APPLICATION) $(EDK_TOOLS_PATH)\Bin\Win32
+endif
 
 VfrCompiler.o: ../Include/Common/BuildVersion.h
 
@@ -54,10 +69,18 @@ VfrLexer.cpp VfrLexer.h: Pccts/dlg/dlg VfrParser.dlg
 	Pccts/dlg/dlg -C2 -i -CC -cl VfrLexer -o . VfrParser.dlg
 
 Pccts/antlr/antlr:
+ifeq ($(OS),Windows_NT)
+	set BIN_DIR='.'&& $(MAKE) -C Pccts/antlr
+else
 	BIN_DIR='.' $(MAKE) -C Pccts/antlr
+endif
 
 Pccts/dlg/dlg:
+ifeq ($(OS),Windows_NT)
+	set BIN_DIR='.'&& $(MAKE) -C Pccts/dlg
+else
 	BIN_DIR='.' $(MAKE) -C Pccts/dlg
+endif
 
 ATokenBuffer.o: Pccts/h/ATokenBuffer.cpp
 	$(BUILD_CXX) -c $(VFR_CPPFLAGS) $(INC) $(VFR_CXXFLAGS) $? -o $@
diff --git a/BaseTools/Source/C/VfrCompile/Pccts/antlr/AntlrMS.mak b/BaseTools/Source/C/VfrCompile/Pccts/antlr/AntlrMS.mak
index b30a73bb74..51ccb446dc 100644
--- a/BaseTools/Source/C/VfrCompile/Pccts/antlr/AntlrMS.mak
+++ b/BaseTools/Source/C/VfrCompile/Pccts/antlr/AntlrMS.mak
@@ -17,7 +17,14 @@ SET=$(PCCTS_HOME)\support\set
 CC = cl
 CFLAGS = /nologo -I "." -I "$(PCCTS_H)" -I "$(SET)" -D "USER_ZZSYN" -D "PC" \
         -D "ZZLEXBUFSIZE=65536"  /D "LONGFILENAMES" /Zi /W3 -D__USE_PROTOS /wd4700 \
-         /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE 
+         /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE
+
+!IF "$(CLANG_BUILD)"=="TRUE"
+CC = "$(CLANG_BIN)\clang-cl.exe"
+CFLAGS = /nologo -I "." -I "$(PCCTS_H)" -I "$(SET)" -D "USER_ZZSYN" -D "PC" \
+        -D "ZZLEXBUFSIZE=65536"  /D "LONGFILENAMES" /Zi /W3 -D__USE_PROTOS /wd4700 \
+         /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE  /w -m32
+!ENDIF
 
 ANTLR_OBJS = antlr.obj scan.obj err.obj bits.obj build.obj fset2.obj \
             fset.obj gen.obj globals.obj hash.obj lex.obj main.obj \
diff --git a/BaseTools/Source/C/VfrCompile/Pccts/antlr/makefile b/BaseTools/Source/C/VfrCompile/Pccts/antlr/makefile
index 559b1c99f1..6751e06961 100644
--- a/BaseTools/Source/C/VfrCompile/Pccts/antlr/makefile
+++ b/BaseTools/Source/C/VfrCompile/Pccts/antlr/makefile
@@ -174,7 +174,14 @@ ANTLR=${BIN_DIR}/antlr
 DLG=${BIN_DIR}/dlg
 OBJ_EXT=o
 OUT_OBJ = -o
+
+ifeq ($(OS),Windows_NT)
+BUILD_CFLAGS= $(COPT) -I. -I$(SET) -I$(PCCTS_H) -DUSER_ZZSYN $(COTHER) -DZZLEXBUFSIZE=65536 \
+        -D__USE_PROTOS -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DPCCTS_USE_STDARG -m32
+else
 BUILD_CFLAGS= $(COPT) -I. -I$(SET) -I$(PCCTS_H) -DUSER_ZZSYN $(COTHER) -DZZLEXBUFSIZE=65536
+endif
+
 BUILD_CPPFLAGS=
 #
 # SGI Users, use this CFLAGS
diff --git a/BaseTools/Source/C/VfrCompile/Pccts/dlg/DlgMS.mak b/BaseTools/Source/C/VfrCompile/Pccts/dlg/DlgMS.mak
index 2714308d4f..fe9724ff96 100644
--- a/BaseTools/Source/C/VfrCompile/Pccts/dlg/DlgMS.mak
+++ b/BaseTools/Source/C/VfrCompile/Pccts/dlg/DlgMS.mak
@@ -17,7 +17,14 @@ SET=$(PCCTS_HOME)\support\set
 CC = cl
 CFLAGS = /nologo -I "." -I "$(PCCTS_H)" -I "$(SET)" -D "USER_ZZSYN" -D "PC" \
         -D "ZZLEXBUFSIZE=65536"  /D "LONGFILENAMES" /W3 /Zi \
-        /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE 
+        /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE
+
+!IF "$(CLANG_BUILD)"=="TRUE"
+CC = "$(CLANG_BIN)\clang-cl.exe"
+CFLAGS = /nologo -I "." -I "$(PCCTS_H)" -I "$(SET)" -D "USER_ZZSYN" -D "PC" \
+        -D "ZZLEXBUFSIZE=65536"  /D "LONGFILENAMES" /W3 /Zi \
+        /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D PCCTS_USE_STDARG /w -m32
+!ENDIF
 
 DLG_OBJS = dlg_p.obj dlg_a.obj main.obj err.obj support.obj \
            output.obj relabel.obj automata.obj
diff --git a/BaseTools/Source/C/VfrCompile/Pccts/dlg/makefile b/BaseTools/Source/C/VfrCompile/Pccts/dlg/makefile
index 5a3561edec..8e6616a5b4 100644
--- a/BaseTools/Source/C/VfrCompile/Pccts/dlg/makefile
+++ b/BaseTools/Source/C/VfrCompile/Pccts/dlg/makefile
@@ -122,7 +122,14 @@ endif
 COPT=-O
 ANTLR=${BIN_DIR}/antlr
 DLG=${BIN_DIR}/dlg
+
+ifeq ($(OS),Windows_NT)
+BUILD_CFLAGS= $(COPT) -I. -I$(SET) -I$(PCCTS_H) -DUSER_ZZSYN -DZZLEXBUFSIZE=65536 \
+        -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DPCCTS_USE_STDARG -m32
+else
 BUILD_CFLAGS= $(COPT) -I. -I$(SET) -I$(PCCTS_H) -DUSER_ZZSYN -DZZLEXBUFSIZE=65536
+endif
+
 BUILD_CPPFLAGS=
 OBJ_EXT=o
 OUT_OBJ = -o
diff --git a/BaseTools/Source/C/VolInfo/GNUmakefile b/BaseTools/Source/C/VolInfo/GNUmakefile
index 9795b28add..c80f1d5e51 100644
--- a/BaseTools/Source/C/VolInfo/GNUmakefile
+++ b/BaseTools/Source/C/VolInfo/GNUmakefile
@@ -6,7 +6,11 @@
 #
 MAKEROOT ?= ..
 
-APPNAME = VolInfo
+ifeq ($(OS),Windows_NT)
+  APPNAME = VolInfo.exe
+else
+  APPNAME = VolInfo
+endif
 
 OBJECTS = VolInfo.o
 
diff --git a/BaseTools/Tests/GNUmakefile b/BaseTools/Tests/GNUmakefile
index 1cb77f84b1..870f1d73a8 100644
--- a/BaseTools/Tests/GNUmakefile
+++ b/BaseTools/Tests/GNUmakefile
@@ -7,9 +7,14 @@
 
 all: test
 
-test:
-	@if command -v $(PYTHON_COMMAND) >/dev/null 1; then $(PYTHON_COMMAND) RunTests.py; else python RunTests.py; fi
-
-clean:
-	find . -name '*.pyc' -exec rm '{}' ';'
-
+ifeq ($(OS),Windows_NT)
+  test:
+		python RunTests.py
+  clean:
+		echo ToDo
+else
+  test:
+		@if command -v $(PYTHON_COMMAND) >/dev/null 1; then $(PYTHON_COMMAND) RunTests.py; else python RunTests.py; fi
+  clean:
+		find . -name '*.pyc' -exec rm '{}' ';'
+endif
\ No newline at end of file
diff --git a/BaseTools/Tests/TestTools.py b/BaseTools/Tests/TestTools.py
index 1099fd4eea..5cad2b0150 100644
--- a/BaseTools/Tests/TestTools.py
+++ b/BaseTools/Tests/TestTools.py
@@ -135,7 +135,7 @@ class BaseToolsTest(unittest.TestCase):
         return open(os.path.join(self.testDir, fileName), mode)
 
     def ReadTmpFile(self, fileName):
-        f = open(self.GetTmpFilePath(fileName), 'r')
+        f = open(self.GetTmpFilePath(fileName), 'r', encoding="utf8")
         data = f.read()
         f.close()
         return data
diff --git a/BaseTools/Tests/TianoCompress.py b/BaseTools/Tests/TianoCompress.py
index 685968b18f..2b592a9106 100644
--- a/BaseTools/Tests/TianoCompress.py
+++ b/BaseTools/Tests/TianoCompress.py
@@ -21,7 +21,10 @@ class Tests(TestTools.BaseToolsTest):
 
     def setUp(self):
         TestTools.BaseToolsTest.setUp(self)
-        self.toolName = 'TianoCompress'
+        if sys.platform in ('win32', 'win64'):
+            self.toolName = 'TianoCompress.exe'
+        else:
+            self.toolName = 'TianoCompress'
 
     def testHelp(self):
         result = self.RunTool('--help', logFile='help')
diff --git a/BaseTools/toolsetup.bat b/BaseTools/toolsetup.bat
index 58fd26a4b5..cacd41d3e0 100755
--- a/BaseTools/toolsetup.bat
+++ b/BaseTools/toolsetup.bat
@@ -72,6 +72,11 @@ if /I "%1"=="/?" goto Usage
     set VSTool=VS2012
     goto loop
   )
+  if /I "%1"=="clang" (
+    shift
+    set CLANG_BUILD=TRUE
+    goto loop
+  )
   if "%1"=="" goto setup_workspace
   if exist %1 (
     if not defined BASE_TOOLS_PATH (
@@ -195,6 +200,11 @@ if defined VS2019 (
 ) else if defined VS2012 (
   call %EDK_TOOLS_PATH%\set_vsprefix_envs.bat VS2012
   call %EDK_TOOLS_PATH%\get_vsvars.bat VS2012
+) else if defined CLANG_BUILD (
+    @if exist "C:\Program Files\LLVM\bin\clang.exe" (
+        @set "CLANG_BIN=C:\Program Files\LLVM\bin\"
+        @echo   Found LLVM, setting CLANG_BIN environment variable to C:\Program Files\LLVM\bin\
+    )
 ) else (
   call %EDK_TOOLS_PATH%\set_vsprefix_envs.bat
   call %EDK_TOOLS_PATH%\get_vsvars.bat
@@ -472,7 +482,7 @@ goto end
 
 :Usage
   @echo.
-  echo  Usage: "%0 [-h | -help | --help | /h | /help | /?] [ Rebuild | ForceRebuild ] [Reconfig] [base_tools_path [edk_tools_path]] [VS2019] [VS2017] [VS2015] [VS2013] [VS2012]"
+  echo  Usage: "%0 [-h | -help | --help | /h | /help | /?] [ Rebuild | ForceRebuild ] [Reconfig] [base_tools_path [edk_tools_path]] [VS2019] [VS2017] [VS2015] [VS2013] [VS2012] [clang]"
   @echo.
   @echo         base_tools_path   BaseTools project path, BASE_TOOLS_PATH will be set to this path.
   @echo         edk_tools_path    EDK_TOOLS_PATH will be set to this path.
@@ -486,6 +496,7 @@ goto end
   @echo         VS2015            Set the env for VS2015 build.
   @echo         VS2017            Set the env for VS2017 build.
   @echo         VS2019            Set the env for VS2019 build.
+  @echo         clang             Set the env for clang-cl build.
   @echo.
 
 :end
@@ -498,5 +509,6 @@ set VS2015=
 set VS2013=
 set VS2012=
 set VSTool=
+set CLANG_BUILD=
 popd
 
diff --git a/edksetup.bat b/edksetup.bat
index 7ad137bb3e..537d1f7733 100755
--- a/edksetup.bat
+++ b/edksetup.bat
@@ -150,11 +150,12 @@ if /I "%1"=="VS2017" shift
 if /I "%1"=="VS2015" shift
 if /I "%1"=="VS2013" shift
 if /I "%1"=="VS2012" shift
+if /I "%1"=="clang" shift
 if "%1"=="" goto end
 
 :Usage
   @echo.
-  @echo  Usage: "%0 [-h | -help | --help | /h | /help | /?] [Reconfig] [Rebuild] [ForceRebuild] [VS2019] [VS2017] [VS2015] [VS2013] [VS2012]"
+  @echo  Usage: "%0 [-h | -help | --help | /h | /help | /?] [Reconfig] [Rebuild] [ForceRebuild] [VS2019] [VS2017] [VS2015] [VS2013] [VS2012] [clang]"
   @echo.
   @echo         Reconfig       Reinstall target.txt, tools_def.txt and build_rule.txt.
   @echo         Rebuild        Perform incremental rebuild of BaseTools binaries.
@@ -164,6 +165,10 @@ if "%1"=="" goto end
   @echo         VS2015         Set the env for VS2015 build.
   @echo         VS2017         Set the env for VS2017 build.
   @echo         VS2019         Set the env for VS2019 build.
+  @echo         clang          Set the env for clang-cl build.
+  @echo.
+  @echo  Unix-like Usage: "gnumake.exe -C BaseTools CXX=llvm"
+  @echo         Use clang + gunmake build base tools in windows.
   @echo.
   @echo  Note that target.template, tools_def.template and build_rules.template
   @echo  will only be copied to target.txt, tools_def.txt and build_rule.txt
-- 
2.28.0.windows.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [BaseTools Patch 2/2] Readme: Update the readme to add project details
  2021-08-18 14:18 [BaseTools Patch 0/2] Add clang/gnumake build support in windows Steven Shi
  2021-08-18 14:18 ` [BaseTools Patch 1/2] BaseTools: add clang + gnu make " Steven Shi
@ 2021-08-18 14:18 ` Steven Shi
  2021-08-19 16:25 ` [BaseTools Patch 0/2] Add clang/gnumake build support in windows Michael D Kinney
  2 siblings, 0 replies; 5+ messages in thread
From: Steven Shi @ 2021-08-18 14:18 UTC (permalink / raw)
  To: devel; +Cc: michael.d.kinney, gaoliming, bob.c.feng, yuqi.chen

From: Alyssa <yuqi.chen@mail.utoronto.ca>

Add the backgroud introduction and build detail steps
in the readme.

Signed-off-by: Yuqi Chen <yuqi.chen@mail.utoronto.ca>
Cc: Liming Gao gaoliming@byosoft.com.cn
Cc: Yuwei Chen yuwei.chen@intel.com
Cc: Bob Feng bob.c.feng@intel.com
---
 ReadMe.rst | 553 +++++++++++++++++------------------------------------
 1 file changed, 171 insertions(+), 382 deletions(-)

diff --git a/ReadMe.rst b/ReadMe.rst
index 8f5db11281..361c8382eb 100644
--- a/ReadMe.rst
+++ b/ReadMe.rst
@@ -1,383 +1,172 @@
-==============
-EDK II Project
-==============
+Google Summer of Code 2021 project: Enable Clang/LLVM Build for Microsoft Windows
+
+Summary:
+Add clang + gnu make build support for Edk2 BaseTools in windows
+1.	Building .exes for the C tools in Edk2 BaseTools using LLVM/Clang in windows.
+2.	Switching from nmake to make for Edk2 BaseTools build in windows.
+
+Owner: tianocore
+
+timeline:
+2021/06 - 2021/07: building .exes for the C tools in BaseTools using LLVM/Clang
+2021/07 - 2021/08: Switching from nmake to make for LLVM/Clang based builds.
+
+links to related materials: 
+none
+
+Steps to use:
+*************************************************************************************************************
+In windows:
+-------------------------------------------------------------------------------------------------------------
+# Clang + make in windows command prompt:
+Setup:
+1.	Download and install LLVM 11 from https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe. After install, please verify the clang version is 11.0.0. as below.
+	C:\>"C:\Program Files\LLVM\bin\clang.exe" -v
+	clang version 11.0.0
+	Target: x86_64-pc-windows-msvc
+	Thread model: posix
+	InstalledDir: C:\Program Files\LLVM\bin
+
+2.	Download and install nasm and iasl:
+		Download nasm compiler http://www.nasm.us/, copy nasm.exe to C:\nasm\ directory.
+		Download iasl compiler https://acpica.org/downloads, copy iasl.exe to C:\ASL directory.
+
+3.	Download the latest version Python from https://www.python.org/downloads/ and install it
+
+4.	Download Visual Studio 2015 or 2017 or 2019 and install it, make sure nmake.exe, cl.exe, lib.exe and link.exe be ready.
+    The Visual Studio is required only because the Windows SDK Universal C runtime (UCRT) library depends on the MSVC. Please see the dependency description here: “When you install Visual C++, Visual Studio setup installs the subset of the Windows 10 SDK required to use the UCRT.” https://docs.microsoft.com/en-us/cpp/c-runtime-library/crt-library-features?view=msvc-160. 
+
+5.	In windows command prompt: (please replace %USERNAME% with username in your computer)
+	Can directly download the windows version gnumake binary from conan center. Below are the download steps:
+	C:\Users\%USERNAME%\edk2>C:\Python38\python.exe -m pip install conan
+	C:\Users\%USERNAME%\edk2>set PATH=%PATH%;C:\Python38\Scripts\
+	C:\Users\%USERNAME%\edk2>conan download make/4.2.1:0a420ff5c47119e668867cdb51baff0eca1fdb68
+	C:\Users\%USERNAME%\edk2>C:\Users\%USERNAME%\.conan\data\make\4.2.1\_\_\package\0a420ff5c47119e668867cdb51baff0eca1fdb68\bin\gnumake.exe --version
+	GNU Make 4.2.1
+	Built for Windows32
+	(please check the version)
+
+6.	In windows command prompt: (please replace %USERNAME% with username in your computer)
+	C:\Users\%USERNAME%>git clone https://github.com/tianocore/edk2.git edk2
+	C:\Users\%USERNAME%\edk2>git submodule update --init
+	C:\Users\%USERNAME%\edk2>git submodule update --recursive
+	C:\Users\%USERNAME%\edk2>git submodule sync --recursive
+
+To Use:
+	C:\Users\%USERNAME%\edk2>git clean -dfx (use this command if you have download it before, else please ignore thie command)
+	C:\Users\%USERNAME%\edk2>edksetup.bat
+	C:\Users\%USERNAME%\edk2>C:\Users\%USERNAME%\.conan\data\make\4.2.1\_\_\package\0a420ff5c47119e668867cdb51baff0eca1fdb68\bin\gnumake.exe -w -C BaseTools CXX=llvm
+-------------------------------------------------------------------------------------------------------------
+# Clang + nmake in windows command prompt:
+Setup:
+1.	Download and install LLVM 11 from https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe. After install, please verify the clang version is 11.0.0. as below.
+	C:\>"C:\Program Files\LLVM\bin\clang.exe" -v
+	clang version 11.0.0
+	Target: x86_64-pc-windows-msvc
+	Thread model: posix
+	InstalledDir: C:\Program Files\LLVM\bin
+
+2.	Download and install nasm and iasl:
+		Download nasm compiler http://www.nasm.us/, copy nasm.exe to C:\nasm\ directory.
+		Download iasl compiler https://acpica.org/downloads, copy iasl.exe to C:\ASL directory.
+
+3.	Download the latest version Python from https://www.python.org/downloads/ and install it
+
+4.	Download Visual Studio 2015 or 2017 or 2019 and install it, make sure nmake.exe, cl.exe, lib.exe and link.exe be ready.
+
+5.	In windows command prompt: (please replace %USERNAME% with username in your computer)
+	C:\Users\%USERNAME%>git clone https://github.com/tianocore/edk2.git edk2
+	C:\Users\%USERNAME%\edk2>git submodule update --init
+	C:\Users\%USERNAME%\edk2>git submodule update --recursive
+	C:\Users\%USERNAME%\edk2>git submodule sync --recursive
+
+To Use:
+	C:\Users\%USERNAME%\edk2>git clean -dfx (use this command if you have download it before, else please ignore thie command)
+	C:\Users\%USERNAME%\edk2>edksetup.bat ForceRebuild clang
+-------------------------------------------------------------------------------------------------------------
+# MSVC + nmake in windows command prompt:
+Setup:
+1.	Download and install LLVM 11 from https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe. After install, please verify the clang version is 11.0.0. as below.
+	C:\>"C:\Program Files\LLVM\bin\clang.exe" -v
+	clang version 11.0.0
+	Target: x86_64-pc-windows-msvc
+	Thread model: posix
+	InstalledDir: C:\Program Files\LLVM\bin
+
+2.	Download and install nasm and iasl:
+		Download nasm compiler http://www.nasm.us/, copy nasm.exe to C:\nasm\ directory.
+		Download iasl compiler https://acpica.org/downloads, copy iasl.exe to C:\ASL directory.
+
+3.	Download the latest version Python from https://www.python.org/downloads/ and install it
+
+4.	Download Visual Studio 2015 or 2017 or 2019 and install it, make sure nmake.exe, cl.exe, lib.exe and link.exe be ready.
+
+5.	In windows command prompt: (please replace %USERNAME% with username in your computer)
+	C:\Users\%USERNAME%>git clone https://github.com/tianocore/edk2.git edk2
+	C:\Users\%USERNAME%\edk2>git submodule update --init
+	C:\Users\%USERNAME%\edk2>git submodule update --recursive
+	C:\Users\%USERNAME%\edk2>git submodule sync --recursive
+
+To Use:
+	C:\Users\%USERNAME%\edk2>git clean -dfx (use this command if you have download it before, else please ignore thie command)
+	C:\Users\%USERNAME%\edk2>edksetup.bat ForceRebuild
+*************************************************************************************************************
+In Linux:
+-------------------------------------------------------------------------------------------------------------
+# GCC + make:
+Setup:
+1.	Download and install LLVM 11:
+		Create a folder called llvm and open it,
+		%username%:~/llvm$ wget https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz
+		%username%:~/llvm$ tar -xvf clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz
+		%username%:~/llvm$ ./clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04/bin/clang -v
+			clang version 11.0.0 (https://github.com/llvm/llvm-project.git 0160ad802e899c2922bc9b29564080c22eb0908c)
+			Target: x86_64-unknown-linux-gnu
+			Thread model: posix
+
+2.	Download and install nasm and iasl:
+		%username%:~/edk2-3$ sudo apt-get install build-essential git uuid-dev iasl nasm
+
+3.	Download the latest version Python from https://www.python.org/downloads/ and install it
+
+4.	Init:
+	%USERNAME%:~$ git clone https://github.com/tianocore/edk2.git edk2
+	%USERNAME%:~/edk2$ git submodule update --init
+	%USERNAME%:~/edk2$ git submodule update --recursive
+	%USERNAME%:~/edk2$ git submodule sync --recursive
+
+To Use:
+	%USERNAME%:~/edk2$ git clean -dfx	(use this command if you have download it before, else please ignore thie command)
+	%USERNAME%:~/edk2$ source edksetup.sh
+	%USERNAME%:~/edk2$ make -C BaseTools/ 
+-------------------------------------------------------------------------------------------------------------
+# Clang + make:
+Setup:
+1.	Download and install LLVM 11:
+		Create a folder called llvm and open it,
+		%username%:~/llvm$ wget https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz
+		%username%:~/llvm$ tar -xvf clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz
+		%username%:~/llvm$ ./clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04/bin/clang -v
+			clang version 11.0.0 (https://github.com/llvm/llvm-project.git 0160ad802e899c2922bc9b29564080c22eb0908c)
+			Target: x86_64-unknown-linux-gnu
+			Thread model: posix
+
+2.	Download and install nasm and iasl:
+		%username%:~/edk2-3$ sudo apt-get install build-essential git uuid-dev iasl nasm
+
+3.	Download the latest version Python from https://www.python.org/downloads/ and install it
+
+4.	Init:
+	%USERNAME%:~$ git clone https://github.com/tianocore/edk2.git edk2
+	%USERNAME%:~/edk2$ git submodule update --init
+	%USERNAME%:~/edk2$ git submodule update --recursive
+	%USERNAME%:~/edk2$ git submodule sync --recursive
+
+To Use:
+	Open file edk2
+	%USERNAME%:~/edk2$ git clean -dfx	(use this command if you have download it before, else please ignore thie command)
+	%USERNAME%:~/edk2$ export CLANG_BIN=~/llvm/clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04/bin/ 
+	%USERNAME%:~/edk2$ source edksetup.sh
+	%USERNAME%:~/edk2$ make -C BaseTools/ CXX=llvm
+	
 
-A modern, feature-rich, cross-platform firmware development
-environment for the UEFI and PI specifications from www.uefi.org.
-
-Core CI Build Status
---------------------
-
-============================= ================= =============== ===================
- Host Type & Toolchain        Build Status      Test Status     Code Coverage
-============================= ================= =============== ===================
-Windows_VS2019_               |WindowsCiBuild|  |WindowsCiTest| |WindowsCiCoverage|
-Ubuntu_GCC5_                  |UbuntuCiBuild|   |UbuntuCiTest|  |UbuntuCiCoverage|
-============================= ================= =============== ===================
-
-`More CI Build information <.pytool/Readme.md>`__
-
-Platform CI Build Status
-------------------------
-
-Microsoft Windows VS2019
-````````````````````````
-
-============================= ================= ============= ============= ==============
- Toolchain                    CONFIG            DEBUG         RELEASE       NOOPT
-============================= ================= ============= ============= ==============
-EmulatorPkg_Win_VS2019_       | IA32            |em32d|       |em32r|       |em32n|
-|                             | X64             |em64d|       |em64r|       |em64n|
-|                             | IA32 FULL       |em32fd|      |em32fr|      |em32fn|
-|                             | X64 FULL        |em64fd|      |em64fr|      |em64fn|
-OvmfPkg_Win_VS2019_           | IA32            |op32d|       |op32r|       |op32n|
-|                             | X64             |op64d|       |op64r|       |op64n|
-|                             | IA32 X64        |op3264d|     |op3264r|     |op3264n|
-|                             | IA32 X64 FULL   |op3264fd|    |op3264fr|    |op3264fn|
-============================= ================= ============= ============= ==============
-
-Ubuntu 18.04 GCC5
-`````````````````
-
-============================= ================= ============= ============= ==============
- Toolchain                    CONFIG            DEBUG         RELEASE       NOOPT
-============================= ================= ============= ============= ==============
-ArmVirtPkg_Ubuntu_GCC5_       | AARCH64         |avAArch64du| |avAArch64ru| |avAArch64nu|
-|                             | ARM             |avArmdu|     |avArmru|     |avArmnu|
-EmulatorPkg_Ubuntu_GCC5_      | IA32            |em32du|      |em32ru|      |em32nu|
-|                             | X64             |em64du|      |em64ru|      |em64nu|
-|                             | IA32 FULL       |em32fdu|     |em32fru|     |em32fnu|
-|                             | X64 FULL        |em64fdu|     |em64fru|     |em64fnu|
-OvmfPkg_Ubuntu_GCC5_          | IA32            |op32du|      |op32ru|      |op32nu|
-|                             | X64             |op64du|      |op64ru|      |op64nu|
-|                             | IA32 X64        |op3264du|    |op3264ru|    |op3264nu|
-|                             | IA32 X64 FULL   |op3264fdu|   |op3264fru|   |op3264fru|
-============================= ================= ============= ============= ==============
-
-|TCBZ_2668|_ - EmulatorPkg Ubuntu GCC5 Segfaults during execution.
-
-|TCBZ_2639|_ - EmulatorPkg Ubuntu GCC5 Segfaults during execution.
-
-`More ArmVirtPkg CI Build Information <ArmVirtPkg/PlatformCI/ReadMe.md>`__
-
-`More EmulatorPkg CI Build Information <EmulatorPkg/PlatformCI/ReadMe.md>`__
-
-`More OvmfPkg CI Build Information <OvmfPkg/PlatformCI/ReadMe.md>`__
-
-
-License Details
----------------
-
-The majority of the content in the EDK II open source project uses a
-`BSD-2-Clause Plus Patent License <License.txt>`__. The EDK II open
-source project contains the following components that are covered by additional
-licenses:
-
--  `BaseTools/Source/C/LzmaCompress <BaseTools/Source/C/LzmaCompress/LZMA-SDK-README.txt>`__
--  `BaseTools/Source/C/VfrCompile/Pccts <BaseTools/Source/C/VfrCompile/Pccts/RIGHTS>`__
--  `CryptoPkg\Library\BaseCryptLib\SysCall\inet_pton.c <CryptoPkg\Library\BaseCryptLib\SysCall\inet_pton.c>`__
--  `CryptoPkg\Library\Include\crypto\dso_conf.h <https://github.com/openssl/openssl/blob/e2e09d9fba1187f8d6aafaa34d4172f56f1ffb72/LICENSE>`__
--  `CryptoPkg\Library\Include\openssl\opensslconf.h <https://github.com/openssl/openssl/blob/e2e09d9fba1187f8d6aafaa34d4172f56f1ffb72/LICENSE>`__
--  `EmbeddedPkg/Library/FdtLib <EmbeddedPkg/Library/FdtLib/fdt.c>`__.  (EDK II uses BSD License)
--  `EmbeddedPkg/Include/fdt.h <EmbeddedPkg/Include/fdt.h>`__.  (EDK II uses BSD Licence)
--  `EmbeddedPkg/Include/libfdt.h <EmbeddedPkg/Include/libfdt.h>`__.  (EDK II uses BSD License)
--  `MdeModulePkg/Library/LzmaCustomDecompressLib <MdeModulePkg/Library/LzmaCustomDecompressLib/LZMA-SDK-README.txt>`__
--  `OvmfPkg <OvmfPkg/License.txt>`__
-
-The EDK II open source project uses content from upstream projects as git submodules
-that are covered by additional licenses.
-
--  `ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3 <https://github.com/ucb-bar/berkeley-softfloat-3/blob/b64af41c3276f97f0e181920400ee056b9c88037/COPYING.txt>`__
--  `BaseTools/Source/C/BrotliCompress/brotli <https://github.com/google/brotli/blob/666c3280cc11dc433c303d79a83d4ffbdd12cc8d/LICENSE>`__
--  `CryptoPkg/Library/OpensslLib/openssl <https://github.com/openssl/openssl/blob/e2e09d9fba1187f8d6aafaa34d4172f56f1ffb72/LICENSE>`__
--  `MdeModulePkg/Library/BrotliCustomDecompressLib/brotli <https://github.com/google/brotli/blob/666c3280cc11dc433c303d79a83d4ffbdd12cc8d/LICENSE>`__
--  `MdeModulePkg/Universal/RegularExpressionDxe/oniguruma <https://github.com/kkos/oniguruma/blob/abfc8ff81df4067f309032467785e06975678f0d/COPYING>`__
--  `UnitTestFrameworkPkg/Library/CmockaLib/cmocka <https://github.com/tianocore/edk2-cmocka/blob/f5e2cd77c88d9f792562888d2b70c5a396bfbf7a/COPYING>`__
--  `RedfishPkg/Library/JsonLib/jansson <https://github.com/akheron/jansson/blob/2882ead5bb90cf12a01b07b2c2361e24960fae02/LICENSE>`__
-
-The EDK II Project is composed of packages. The maintainers for each package
-are listed in `Maintainers.txt <Maintainers.txt>`__.
-
-Resources
----------
-
--  `TianoCore <http://www.tianocore.org>`__
--  `EDK
-   II <https://github.com/tianocore/tianocore.github.io/wiki/EDK-II>`__
--  `Getting Started with EDK
-   II <https://github.com/tianocore/tianocore.github.io/wiki/Getting-Started-with-EDK-II>`__
--  `Mailing
-   Lists <https://github.com/tianocore/tianocore.github.io/wiki/Mailing-Lists>`__
--  `TianoCore Bugzilla <https://bugzilla.tianocore.org>`__
--  `How To
-   Contribute <https://github.com/tianocore/tianocore.github.io/wiki/How-To-Contribute>`__
--  `Release
-   Planning <https://github.com/tianocore/tianocore.github.io/wiki/EDK-II-Release-Planning>`__
-
-Code Contributions
-------------------
-
-To make a contribution to a TianoCore project, follow these steps.
-
-#. Create a change description in the format specified below to
-    use in the source control commit log.
-#. Your commit message must include your ``Signed-off-by`` signature
-#. Submit your code to the TianoCore project using the process
-    that the project documents on its web page. If the process is
-    not documented, then submit the code on development email list
-    for the project.
-#. It is preferred that contributions are submitted using the same
-    copyright license as the base project. When that is not possible,
-    then contributions using the following licenses can be accepted:
-
--  BSD (2-clause): http://opensource.org/licenses/BSD-2-Clause
--  BSD (3-clause): http://opensource.org/licenses/BSD-3-Clause
--  MIT: http://opensource.org/licenses/MIT
--  Python-2.0: http://opensource.org/licenses/Python-2.0
--  Zlib: http://opensource.org/licenses/Zlib
-
-For documentation:
-
--  FreeBSD Documentation License
-    https://www.freebsd.org/copyright/freebsd-doc-license.html
-
-Contributions of code put into the public domain can also be accepted.
-
-Contributions using other licenses might be accepted, but further
-review will be required.
-
-Developer Certificate of Origin
--------------------------------
-
-Your change description should use the standard format for a
-commit message, and must include your ``Signed-off-by`` signature.
-
-In order to keep track of who did what, all patches contributed must
-include a statement that to the best of the contributor's knowledge
-they have the right to contribute it under the specified license.
-
-The test for this is as specified in the `Developer's Certificate of
-Origin (DCO) 1.1 <https://developercertificate.org/>`__. The contributor
-certifies compliance by adding a line saying
-
-Signed-off-by: Developer Name developer@example.org
-
-where ``Developer Name`` is the contributor's real name, and the email
-address is one the developer is reachable through at the time of
-contributing.
-
-::
-
-    Developer's Certificate of Origin 1.1
-
-    By making a contribution to this project, I certify that:
-
-    (a) The contribution was created in whole or in part by me and I
-        have the right to submit it under the open source license
-        indicated in the file; or
-
-    (b) The contribution is based upon previous work that, to the best
-        of my knowledge, is covered under an appropriate open source
-        license and I have the right under that license to submit that
-        work with modifications, whether created in whole or in part
-        by me, under the same open source license (unless I am
-        permitted to submit under a different license), as indicated
-        in the file; or
-
-    (c) The contribution was provided directly to me by some other
-        person who certified (a), (b) or (c) and I have not modified
-        it.
-
-    (d) I understand and agree that this project and the contribution
-        are public and that a record of the contribution (including all
-        personal information I submit with it, including my sign-off) is
-        maintained indefinitely and may be redistributed consistent with
-        this project or the open source license(s) involved.
-
-Sample Change Description / Commit Message
-------------------------------------------
-
-::
-
-    From: Contributor Name <contributor@example.com>
-    Subject: [Repository/Branch PATCH] Pkg-Module: Brief-single-line-summary
-
-    Full-commit-message
-
-    Signed-off-by: Contributor Name <contributor@example.com>
-
-Notes for sample patch email
-````````````````````````````
-
--  The first line of commit message is taken from the email's subject
-   line following ``[Repository/Branch PATCH]``. The remaining portion
-   of the commit message is the email's content.
--  ``git format-patch`` is one way to create this format
-
-Definitions for sample patch email
-``````````````````````````````````
-
--  ``Repository`` is the identifier of the repository the patch applies.
-    This identifier should only be provided for repositories other than
-    ``edk2``. For example ``edk2-BuildSpecification`` or ``staging``.
--  ``Branch`` is the identifier of the branch the patch applies. This
-    identifier should only be provided for branches other than
-   ``edk2/master``.
-    For example ``edk2/UDK2015``,
-   ``edk2-BuildSpecification/release/1.27``, or
-    ``staging/edk2-test``.
--  ``Module`` is a short identifier for the affected code or
-   documentation. For example ``MdePkg``, ``MdeModulePkg/UsbBusDxe``, ``Introduction``, or
-    ``EDK II INF File Format``.
--  ``Brief-single-line-summary`` is a short summary of the change.
--  The entire first line should be less than ~70 characters.
--  ``Full-commit-message`` a verbose multiple line comment describing
-    the change. Each line should be less than ~70 characters.
--  ``Signed-off-by`` is the contributor's signature identifying them
-    by their real/legal name and their email address.
-
-Submodules
-----------
-
-Submodule in EDK II is allowed but submodule chain should be avoided
-as possible as we can. Currently EDK II contains the following submodules
-
--  CryptoPkg/Library/OpensslLib/openssl
--  ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3
--  MdeModulePkg/Universal/RegularExpressionDxe/oniguruma
--  MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
--  BaseTools/Source/C/BrotliCompress/brotli
-
-ArmSoftFloatLib is actually required by OpensslLib. It's inevitable
-in openssl-1.1.1 (since stable201905) for floating point parameter
-conversion, but should be dropped once there's no such need in future
-release of openssl.
-
-To get a full, buildable EDK II repository, use following steps of git
-command
-
-.. code-block:: bash
-
-  git clone https://github.com/tianocore/edk2.git
-  cd edk2
-  git submodule update --init
-  cd ..
-
-If there's update for submodules, use following git commands to get
-the latest submodules code.
-
-.. code-block:: bash
-
-  cd edk2
-  git pull
-  git submodule update
-
-Note: When cloning submodule repos, '--recursive' option is not
-recommended. EDK II itself will not use any code/feature from
-submodules in above submodules. So using '--recursive' adds a
-dependency on being able to reach servers we do not actually want
-any code from, as well as needlessly downloading code we will not
-use.
-
-.. ===================================================================
-.. This is a bunch of directives to make the README file more readable
-.. ===================================================================
-
-.. CoreCI
-
-.. _Windows_VS2019: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=32&branchName=master
-.. |WindowsCiBuild| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/Windows%20VS2019%20CI?branchName=master
-.. |WindowsCiTest| image:: https://img.shields.io/azure-devops/tests/tianocore/edk2-ci/32.svg
-.. |WindowsCiCoverage| image:: https://img.shields.io/badge/coverage-coming_soon-blue
-
-.. _Ubuntu_GCC5: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=31&branchName=master
-.. |UbuntuCiBuild| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/Ubuntu%20GCC5%20CI?branchName=master
-.. |UbuntuCiTest| image:: https://img.shields.io/azure-devops/tests/tianocore/edk2-ci/31.svg
-.. |UbuntuCiCoverage| image:: https://img.shields.io/badge/coverage-coming_soon-blue
-
-.. ArmVirtPkg
-
-.. _ArmVirtPkg_Ubuntu_GCC5: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=46&branchName=master
-.. |avAArch64du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_ArmVirtPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_AARCH64_DEBUG
-.. |avAArch64ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_ArmVirtPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_AARCH64_RELEASE
-.. |avAArch64nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_ArmVirtPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_AARCH64_NOOPT
-
-.. |avArmdu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_ArmVirtPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_ARM_DEBUG
-.. |avArmru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_ArmVirtPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_ARM_RELEASE
-.. |avArmnu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_ArmVirtPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_ARM_NOOPT
-
-.. EmulatorPkg
-
-.. |TCBZ_2668| image:: https://img.shields.io/bugzilla/2668?baseUrl=https%3A%2F%2Fbugzilla.tianocore.org
-.. _TCBZ_2668: https://bugzilla.tianocore.org/show_bug.cgi?id=2668
-
-.. |TCBZ_2639| image:: https://img.shields.io/bugzilla/2639?baseUrl=https%3A%2F%2Fbugzilla.tianocore.org
-.. _TCBZ_2639: https://bugzilla.tianocore.org/show_bug.cgi?id=2639
-
-.. _EmulatorPkg_Win_VS2019:  https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=44&branchName=master
-.. _EmulatorPkg_Ubuntu_GCC5: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=43&branchName=master
-
-.. |em32d| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_DEBUG
-.. |em32du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_DEBUG
-.. |em32r| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_RELEASE
-.. |em32ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_RELEASE
-.. |em32n| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_NOOPT
-.. |em32nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_NOOPT
-
-.. |em32fd| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_FULL_DEBUG
-.. |em32fdu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_FULL_DEBUG
-.. |em32fr| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_FULL_RELEASE
-.. |em32fru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_FULL_RELEASE
-.. |em32fn| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_FULL_NOOPT
-.. |em32fnu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_FULL_NOOPT
-
-.. |em64d| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_DEBUG
-.. |em64du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_DEBUG
-.. |em64r| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_RELEASE
-.. |em64ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_RELEASE
-.. |em64n| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_NOOPT
-.. |em64nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_NOOPT
-
-.. |em64fd| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_DEBUG
-.. |em64fdu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_DEBUG
-.. |em64fr| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_RELEASE
-.. |em64fru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_RELEASE
-.. |em64fn| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_NOOPT
-.. |em64fnu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_NOOPT
-
-.. OvmfPkg
-
-.. |TCBZ_2661| image:: https://img.shields.io/bugzilla/2661?baseUrl=https%3A%2F%2Fbugzilla.tianocore.org
-.. _TCBZ_2661: https://bugzilla.tianocore.org/show_bug.cgi?id=2661
-
-.. _OvmfPkg_Win_VS2019:  https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=50&branchName=master
-.. _OvmfPkg_Ubuntu_GCC5: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=48&branchName=master
-
-.. |op32d| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_DEBUG
-.. |op32du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_DEBUG
-.. |op32r| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_RELEASE
-.. |op32ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_RELEASE
-.. |op32n| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_NOOPT
-.. |op32nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_NOOPT
-
-.. |op64d| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_DEBUG
-.. |op64du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_DEBUG
-.. |op64r| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_RELEASE
-.. |op64ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_RELEASE
-.. |op64n| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_NOOPT
-.. |op64nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_NOOPT
-
-
-.. |op3264d| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_DEBUG
-.. |op3264du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_DEBUG
-.. |op3264r| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_RELEASE
-.. |op3264ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_RELEASE
-.. |op3264n| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_NOOPT
-.. |op3264nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_NOOPT
-
-.. |op3264fd| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_FULL_DEBUG
-.. |op3264fdu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_FULL_DEBUG
-.. |op3264fr| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_FULL_RELEASE
-.. |op3264fru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_FULL_RELEASE
-.. |op3264fn| replace:: |TCBZ_2661|_
-.. |op3264fnu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_FULL_NOOPT
-- 
2.28.0.windows.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [BaseTools Patch 0/2] Add clang/gnumake build support in windows
  2021-08-18 14:18 [BaseTools Patch 0/2] Add clang/gnumake build support in windows Steven Shi
  2021-08-18 14:18 ` [BaseTools Patch 1/2] BaseTools: add clang + gnu make " Steven Shi
  2021-08-18 14:18 ` [BaseTools Patch 2/2] Readme: Update the readme to add project details Steven Shi
@ 2021-08-19 16:25 ` Michael D Kinney
  2021-08-20  9:27   ` Steven Shi
  2 siblings, 1 reply; 5+ messages in thread
From: Michael D Kinney @ 2021-08-19 16:25 UTC (permalink / raw)
  To: Shi, Steven, devel@edk2.groups.io, Kinney, Michael D
  Cc: gaoliming@byosoft.com.cn, Feng, Bob C, yuqi.chen@mail.utoronto.ca,
	Chen, Christine

Hi Steven,

Thank you for helping send the patches.

I think the request is to add the https://github.com/alyssachne/edk2/tree/2021-gsoc-llvm-gnumake-v3
branch to edk2-staging repository once the review of these 2 patches are complete.  Correct?

That branch is based on very recent edk2/master with 2 patches added to address CLANG compatibility issues.

The EDK II community needs to evaluate these changes and they would be moved from
edk2-staging to edk2/master after the next edk2-stable tag.

If you agree with the proposed patches, can you provide a Rb?

I would also be good if the current BaseToools maintainers/reviewers also provide
their feedback and Rb if they agree with the changes.

Thanks,

Mike

> -----Original Message-----
> From: Shi, Steven <steven.shi@intel.com>
> Sent: Wednesday, August 18, 2021 7:19 AM
> To: devel@edk2.groups.io
> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; gaoliming@byosoft.com.cn; Feng, Bob C <bob.c.feng@intel.com>;
> yuqi.chen@mail.utoronto.ca; Shi, Steven <steven.shi@intel.com>
> Subject: [BaseTools Patch 0/2] Add clang/gnumake build support in windows
> 
> Google Summer of Code 2021 project: Add clang + gnu make build support
> for Edk2 BaseTools in windows
> 
> Details of tool combinations and build steps:
> https://github.com/alyssachne/edk2/tree/2021-gsoc-llvm-gnumake-v3
> 
> Only plan to check-in to edk2-staging right now
> 
> Help to send this patch serial for Yuqi Chen <yuqi.chen@mail.utoronto.ca>,
> since she has git configure problem.
> 
> Alyssa (2):
>   BaseTools: add clang + gnu make build support in windows
>   Readme: Update the readme to add project details
> 
>  BaseTools/Source/C/BrotliCompress/GNUmakefile |   8 +-
>  BaseTools/Source/C/Common/CommonLib.h         |   9 +
>  BaseTools/Source/C/Common/MyAlloc.c           |   4 +-
>  BaseTools/Source/C/Common/MyAlloc.h           |   4 +-
>  BaseTools/Source/C/DevicePath/GNUmakefile     |   6 +-
>  BaseTools/Source/C/EfiRom/GNUmakefile         |   6 +-
>  BaseTools/Source/C/GNUmakefile                |  74 ++-
>  BaseTools/Source/C/GenCrc32/GNUmakefile       |   6 +-
>  BaseTools/Source/C/GenFfs/GNUmakefile         |   6 +-
>  BaseTools/Source/C/GenFv/GNUmakefile          |   6 +-
>  BaseTools/Source/C/GenFw/GNUmakefile          |   6 +-
>  BaseTools/Source/C/GenSec/GNUmakefile         |   6 +-
>  BaseTools/Source/C/LzmaCompress/GNUmakefile   |   6 +-
>  BaseTools/Source/C/Makefiles/app.makefile     |   5 +-
>  BaseTools/Source/C/Makefiles/header.makefile  |  84 ++-
>  BaseTools/Source/C/Makefiles/lib.makefile     |   6 +-
>  BaseTools/Source/C/Makefiles/ms.app           |   2 +-
>  BaseTools/Source/C/Makefiles/ms.common        |   9 +
>  BaseTools/Source/C/TianoCompress/GNUmakefile  |   6 +-
>  BaseTools/Source/C/VfrCompile/GNUmakefile     |  29 +-
>  .../C/VfrCompile/Pccts/antlr/AntlrMS.mak      |   9 +-
>  .../Source/C/VfrCompile/Pccts/antlr/makefile  |   7 +
>  .../Source/C/VfrCompile/Pccts/dlg/DlgMS.mak   |   9 +-
>  .../Source/C/VfrCompile/Pccts/dlg/makefile    |   7 +
>  BaseTools/Source/C/VolInfo/GNUmakefile        |   6 +-
>  BaseTools/Tests/GNUmakefile                   |  17 +-
>  BaseTools/Tests/TestTools.py                  |   2 +-
>  BaseTools/Tests/TianoCompress.py              |   5 +-
>  BaseTools/toolsetup.bat                       |  14 +-
>  ReadMe.rst                                    | 553 ++++++------------
>  edksetup.bat                                  |   7 +-
>  31 files changed, 457 insertions(+), 467 deletions(-)
> 
> --
> 2.28.0.windows.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [BaseTools Patch 0/2] Add clang/gnumake build support in windows
  2021-08-19 16:25 ` [BaseTools Patch 0/2] Add clang/gnumake build support in windows Michael D Kinney
@ 2021-08-20  9:27   ` Steven Shi
  0 siblings, 0 replies; 5+ messages in thread
From: Steven Shi @ 2021-08-20  9:27 UTC (permalink / raw)
  To: Kinney, Michael D, devel@edk2.groups.io
  Cc: gaoliming@byosoft.com.cn, Feng, Bob C, yuqi.chen@mail.utoronto.ca,
	Chen, Christine

Yes. I'm ok to add the proposed patches to edk2-staging repository.

Reviewed-by: Steven Shi <steven.shi@intel.com>


Thanks


> -----Original Message-----
> From: Kinney, Michael D <michael.d.kinney@intel.com>
> Sent: Friday, August 20, 2021 12:26 AM
> To: Shi, Steven <steven.shi@intel.com>; devel@edk2.groups.io; Kinney,
> Michael D <michael.d.kinney@intel.com>
> Cc: gaoliming@byosoft.com.cn; Feng, Bob C <bob.c.feng@intel.com>;
> yuqi.chen@mail.utoronto.ca; Chen, Christine <yuwei.chen@intel.com>
> Subject: RE: [BaseTools Patch 0/2] Add clang/gnumake build support in
> windows
> 
> Hi Steven,
> 
> Thank you for helping send the patches.
> 
> I think the request is to add the
> https://github.com/alyssachne/edk2/tree/2021-gsoc-llvm-gnumake-v3
> branch to edk2-staging repository once the review of these 2 patches are
> complete.  Correct?
> 
> That branch is based on very recent edk2/master with 2 patches added to
> address CLANG compatibility issues.
> 
> The EDK II community needs to evaluate these changes and they would be
> moved from
> edk2-staging to edk2/master after the next edk2-stable tag.
> 
> If you agree with the proposed patches, can you provide a Rb?
> 
> I would also be good if the current BaseToools maintainers/reviewers also
> provide
> their feedback and Rb if they agree with the changes.
> 
> Thanks,
> 
> Mike
> 
> > -----Original Message-----
> > From: Shi, Steven <steven.shi@intel.com>
> > Sent: Wednesday, August 18, 2021 7:19 AM
> > To: devel@edk2.groups.io
> > Cc: Kinney, Michael D <michael.d.kinney@intel.com>;
> gaoliming@byosoft.com.cn; Feng, Bob C <bob.c.feng@intel.com>;
> > yuqi.chen@mail.utoronto.ca; Shi, Steven <steven.shi@intel.com>
> > Subject: [BaseTools Patch 0/2] Add clang/gnumake build support in
> windows
> >
> > Google Summer of Code 2021 project: Add clang + gnu make build support
> > for Edk2 BaseTools in windows
> >
> > Details of tool combinations and build steps:
> > https://github.com/alyssachne/edk2/tree/2021-gsoc-llvm-gnumake-v3
> >
> > Only plan to check-in to edk2-staging right now
> >
> > Help to send this patch serial for Yuqi Chen <yuqi.chen@mail.utoronto.ca>,
> > since she has git configure problem.
> >
> > Alyssa (2):
> >   BaseTools: add clang + gnu make build support in windows
> >   Readme: Update the readme to add project details
> >
> >  BaseTools/Source/C/BrotliCompress/GNUmakefile |   8 +-
> >  BaseTools/Source/C/Common/CommonLib.h         |   9 +
> >  BaseTools/Source/C/Common/MyAlloc.c           |   4 +-
> >  BaseTools/Source/C/Common/MyAlloc.h           |   4 +-
> >  BaseTools/Source/C/DevicePath/GNUmakefile     |   6 +-
> >  BaseTools/Source/C/EfiRom/GNUmakefile         |   6 +-
> >  BaseTools/Source/C/GNUmakefile                |  74 ++-
> >  BaseTools/Source/C/GenCrc32/GNUmakefile       |   6 +-
> >  BaseTools/Source/C/GenFfs/GNUmakefile         |   6 +-
> >  BaseTools/Source/C/GenFv/GNUmakefile          |   6 +-
> >  BaseTools/Source/C/GenFw/GNUmakefile          |   6 +-
> >  BaseTools/Source/C/GenSec/GNUmakefile         |   6 +-
> >  BaseTools/Source/C/LzmaCompress/GNUmakefile   |   6 +-
> >  BaseTools/Source/C/Makefiles/app.makefile     |   5 +-
> >  BaseTools/Source/C/Makefiles/header.makefile  |  84 ++-
> >  BaseTools/Source/C/Makefiles/lib.makefile     |   6 +-
> >  BaseTools/Source/C/Makefiles/ms.app           |   2 +-
> >  BaseTools/Source/C/Makefiles/ms.common        |   9 +
> >  BaseTools/Source/C/TianoCompress/GNUmakefile  |   6 +-
> >  BaseTools/Source/C/VfrCompile/GNUmakefile     |  29 +-
> >  .../C/VfrCompile/Pccts/antlr/AntlrMS.mak      |   9 +-
> >  .../Source/C/VfrCompile/Pccts/antlr/makefile  |   7 +
> >  .../Source/C/VfrCompile/Pccts/dlg/DlgMS.mak   |   9 +-
> >  .../Source/C/VfrCompile/Pccts/dlg/makefile    |   7 +
> >  BaseTools/Source/C/VolInfo/GNUmakefile        |   6 +-
> >  BaseTools/Tests/GNUmakefile                   |  17 +-
> >  BaseTools/Tests/TestTools.py                  |   2 +-
> >  BaseTools/Tests/TianoCompress.py              |   5 +-
> >  BaseTools/toolsetup.bat                       |  14 +-
> >  ReadMe.rst                                    | 553 ++++++------------
> >  edksetup.bat                                  |   7 +-
> >  31 files changed, 457 insertions(+), 467 deletions(-)
> >
> > --
> > 2.28.0.windows.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-08-20  9:27 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-08-18 14:18 [BaseTools Patch 0/2] Add clang/gnumake build support in windows Steven Shi
2021-08-18 14:18 ` [BaseTools Patch 1/2] BaseTools: add clang + gnu make " Steven Shi
2021-08-18 14:18 ` [BaseTools Patch 2/2] Readme: Update the readme to add project details Steven Shi
2021-08-19 16:25 ` [BaseTools Patch 0/2] Add clang/gnumake build support in windows Michael D Kinney
2021-08-20  9:27   ` Steven Shi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox