]> xenbits.xensource.com Git - ovmf.git/commitdiff
BaseTools: Allow users to build with clang using CC=clang CXX=clang++
authorRebecca Cran <rebecca@quicinc.com>
Thu, 16 Feb 2023 16:34:32 +0000 (09:34 -0700)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Wed, 5 Apr 2023 15:44:48 +0000 (15:44 +0000)
In https://bugzilla.tianocore.org/show_bug.cgi?id=2842 clang support was
added by having users specify "make CXX=llvm" when building BaseTools.

The Makefile then sees that and sets CC=$(CLANG_BIN)clang and
CXX=$(CLANG_BIN)clang++. That requires that the executables 'clang' and
'clang++' exist and for example aren't named 'clang-17' and
'clang++-17'. Also, it's an unusual way of specifying the compiler,
since many users will expect to be able to override CC and CXX on the
make command line.

Rework the BaseTools Makefiles removing the 'BUILD_' prefix (BUILD_CC
and BUILD_CXX) and using the standard name 'LDFLAGS' instead of
'LFLAGS'. This allows clang to be used by running
'make -C BaseTools CC=clang CXX=clang++'.

Signed-off-by: Rebecca Cran <rebecca@quicinc.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
BaseTools/Source/C/DevicePath/GNUmakefile
BaseTools/Source/C/Makefiles/header.makefile
BaseTools/Source/C/VfrCompile/GNUmakefile
BaseTools/Source/C/VfrCompile/Pccts/antlr/makefile
BaseTools/Source/C/VfrCompile/Pccts/dlg/makefile

index 3afc7fc0504ec200616dfca79e1a18bf2cbeeb28..f61b1b2f171d7bc7fda697debf0f24333044ac85 100644 (file)
@@ -14,8 +14,9 @@ OBJECTS = DevicePath.o UefiDevicePathLib.o DevicePathFromText.o  DevicePathUtili
 include $(MAKEROOT)/Makefiles/app.makefile\r
 \r
 GCCVERSION = $(shell $(CC) -dumpversion | awk -F'.' '{print $$1}')\r
+CLANG := $(shell $(CC) --version | grep clang)\r
 ifneq ("$(GCCVERSION)", "5")\r
-ifneq ($(CXX), llvm)\r
+ifeq ($(CLANG),)\r
 ifneq ($(DARWIN),Darwin)\r
 # gcc 12 trips over device path handling\r
 CFLAGS += -Wno-error=stringop-overflow\r
index 0fb315a25ace8afdb5fc5138bd2ba144862e223b..bcc2791998b0f929d08e3ac5347d38b3351067c0 100644 (file)
@@ -44,18 +44,19 @@ endif
 CYGWIN:=$(findstring CYGWIN, $(shell uname -s))\r
 LINUX:=$(findstring Linux, $(shell uname -s))\r
 DARWIN:=$(findstring Darwin, $(shell uname -s))\r
-ifeq ($(CXX), llvm)\r
+CLANG:=$(shell $(CC) --version | grep clang)\r
+ifneq ($(CLANG),)\r
 CC ?= $(CLANG_BIN)clang\r
 CXX ?= $(CLANG_BIN)clang++\r
 AS ?= $(CLANG_BIN)clang\r
 AR ?= $(CLANG_BIN)llvm-ar\r
 LD ?= $(CLANG_BIN)llvm-ld\r
-else\r
-CC ?= gcc\r
-CXX ?= g++\r
-AS ?= gcc\r
-AR ?= ar\r
-LD ?= ld\r
+else ifeq ($(origin CC),default)\r
+CC = gcc\r
+CXX = g++\r
+AS = gcc\r
+AR = ar\r
+LD = ld\r
 endif\r
 LINKER ?= $(CC)\r
 ifeq ($(HOST_ARCH), IA32)\r
@@ -91,7 +92,7 @@ ifeq ($(DARWIN),Darwin)
 CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror \\r
 -Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -g\r
 else\r
-ifeq ($(CXX), llvm)\r
+ifneq ($(CLANG),)\r
 CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \\r
 -fno-delete-null-pointer-checks -Wall -Werror \\r
 -Wno-deprecated-declarations -Wno-self-assign \\r
@@ -103,7 +104,7 @@ CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \
 -Wno-unused-result -nostdlib -g\r
 endif\r
 endif\r
-ifeq ($(CXX), llvm)\r
+ifneq ($(CLANG),)\r
 LDFLAGS =\r
 CXXFLAGS = -Wno-deprecated-register -Wno-unused-result\r
 else\r
index e227b10791b230bec2c49ca3227f646af651ff13..7d5976649dba1d0375c712af04f510faf59a06f8 100644 (file)
@@ -16,7 +16,8 @@ TOOL_INCLUDE = -I Pccts/h
 #OBJECTS = VfrSyntax.o VfrServices.o DLGLexer.o EfiVfrParser.o ATokenBuffer.o DLexerBase.o AParser.o\r
 OBJECTS = AParser.o DLexerBase.o ATokenBuffer.o EfiVfrParser.o VfrLexer.o VfrSyntax.o \\r
           VfrFormPkg.o VfrError.o VfrUtilityLib.o VfrCompiler.o\r
-ifeq ($(CXX), llvm)\r
+CLANG:=$(shell $(CC) --version | grep clang)\r
+ifneq ($(CLANG),)\r
 VFR_CPPFLAGS = -Wno-deprecated-register -std=c++14 -DPCCTS_USE_NAMESPACE_STD $(CPPFLAGS)\r
 else\r
 VFR_CPPFLAGS = -DPCCTS_USE_NAMESPACE_STD $(CPPFLAGS)\r
index 3bd9b6b1df88565d49b972c7be2abc3dfe1a3b83..42b603571fab6c7d39298287bf43682bf2d73d1d 100644 (file)
@@ -164,10 +164,10 @@ PCCTS_H=../h
 #\r
 #   UNIX  (default)\r
 #\r
-ifeq ($(CXX), llvm)\r
+ifneq ($(CLANG),)\r
 CC?=$(CLANG_BIN)clang\r
-else\r
-CC?=gcc\r
+else ifeq ($(origin CC),default)\r
+CC=gcc\r
 endif\r
 COPT=-O\r
 ANTLR=${BIN_DIR}/antlr\r
index 61366185c1fbf1e489e856942c40d489ef03e305..e45ac98e04dc9cf47bace979135f2df0e40c23a5 100644 (file)
@@ -114,10 +114,11 @@ PCCTS_H=../h
 #\r
 #   UNIX\r
 #\r
-ifeq ($(CXX), llvm)\r
-BUILD_CC?=$(CLANG_BIN)clang\r
-else\r
-BUILD_CC?=cc\r
+CLANG:=$(shell $(CC) --version | grep clang)\r
+ifneq ($(CLANG),)\r
+CC?=$(CLANG_BIN)clang\r
+else ifeq ($(origin CC),default)\r
+CC=gcc\r
 endif\r
 COPT=-O\r
 ANTLR=${BIN_DIR}/antlr\r