]> xenbits.xensource.com Git - ovmf.git/commitdiff
BaseTools: Allow users to specify compiler to use with make CC= CXX=
authorRebecca Cran <rebecca@quicinc.com>
Thu, 16 Feb 2023 15:40:46 +0000 (08:40 -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/LzmaCompress/GNUmakefile
BaseTools/Source/C/Makefiles/app.makefile
BaseTools/Source/C/Makefiles/footer.makefile
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
BaseTools/Source/Python/Workspace/DscBuildData.py

index 13b54ead65ac2d8a3ea8a28caed2109fe048ae21..3afc7fc0504ec200616dfca79e1a18bf2cbeeb28 100644 (file)
@@ -13,12 +13,12 @@ OBJECTS = DevicePath.o UefiDevicePathLib.o DevicePathFromText.o  DevicePathUtili
 \r
 include $(MAKEROOT)/Makefiles/app.makefile\r
 \r
-GCCVERSION = $(shell $(BUILD_CC) -dumpversion | awk -F'.' '{print $$1}')\r
+GCCVERSION = $(shell $(CC) -dumpversion | awk -F'.' '{print $$1}')\r
 ifneq ("$(GCCVERSION)", "5")\r
 ifneq ($(CXX), llvm)\r
 ifneq ($(DARWIN),Darwin)\r
 # gcc 12 trips over device path handling\r
-BUILD_CFLAGS += -Wno-error=stringop-overflow\r
+CFLAGS += -Wno-error=stringop-overflow\r
 endif\r
 endif\r
 endif\r
index c837e77823737d7541476be65faf89a33c2a42f5..a00ef4bc80617e85b9ab843d48a49c0bf4acc316 100644 (file)
@@ -24,4 +24,4 @@ OBJECTS = \
 \r
 include $(MAKEROOT)/Makefiles/app.makefile\r
 \r
-BUILD_CFLAGS += -D_7ZIP_ST\r
+CFLAGS += -D_7ZIP_ST\r
index 6a2a8f5e8a0eae8dc9539a4bce8b312e7faa5109..506343a6e0b427b31f3798973ee58194ae81a64c 100644 (file)
@@ -15,7 +15,7 @@ APPLICATION = $(MAKEROOT)/bin/$(APPNAME)
 all: $(MAKEROOT)/bin $(APPLICATION)\r
 \r
 $(APPLICATION): $(OBJECTS)\r
-       $(LINKER) -o $(APPLICATION) $(BUILD_LFLAGS) $(OBJECTS) -L$(MAKEROOT)/libs $(LIBS)\r
+       $(LINKER) -o $(APPLICATION) $(LDFLAGS) $(OBJECTS) -L$(MAKEROOT)/libs $(LIBS)\r
 \r
 $(OBJECTS): $(MAKEROOT)/Include/Common/BuildVersion.h\r
 \r
index 85c3374224f272668f2114def1c20a66590f36d8..7546da8cf5a06b22759348a7b9ac2940940ece82 100644 (file)
@@ -15,13 +15,13 @@ install: $(MAKEROOT)/libs-$(HOST_ARCH) $(LIBRARY)
        cp $(LIBRARY) $(MAKEROOT)/libs-$(HOST_ARCH)\r
 \r
 $(LIBRARY): $(OBJECTS)\r
-       $(BUILD_AR) crs $@ $^\r
+       $(AR) crs $@ $^\r
 \r
 %.o : %.c\r
-       $(BUILD_CC)  -c $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) $< -o $@\r
+       $(CC)  -c $(CPPFLAGS) $(CFLAGS) $< -o $@\r
 \r
 %.o : %.cpp\r
-       $(BUILD_CXX) -c $(BUILD_CPPFLAGS) $(BUILD_CXXFLAGS) $< -o $@\r
+       $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@\r
 \r
 .PHONY: clean\r
 clean:\r
index 4e88a4fbd86b4c50931ef1c0269aa1b96ee9fd0c..0fb315a25ace8afdb5fc5138bd2ba144862e223b 100644 (file)
@@ -45,19 +45,19 @@ CYGWIN:=$(findstring CYGWIN, $(shell uname -s))
 LINUX:=$(findstring Linux, $(shell uname -s))\r
 DARWIN:=$(findstring Darwin, $(shell uname -s))\r
 ifeq ($(CXX), llvm)\r
-BUILD_CC ?= $(CLANG_BIN)clang\r
-BUILD_CXX ?= $(CLANG_BIN)clang++\r
-BUILD_AS ?= $(CLANG_BIN)clang\r
-BUILD_AR ?= $(CLANG_BIN)llvm-ar\r
-BUILD_LD ?= $(CLANG_BIN)llvm-ld\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
-BUILD_CC ?= gcc\r
-BUILD_CXX ?= g++\r
-BUILD_AS ?= gcc\r
-BUILD_AR ?= ar\r
-BUILD_LD ?= ld\r
+CC ?= gcc\r
+CXX ?= g++\r
+AS ?= gcc\r
+AR ?= ar\r
+LD ?= ld\r
 endif\r
-LINKER ?= $(BUILD_CC)\r
+LINKER ?= $(CC)\r
 ifeq ($(HOST_ARCH), IA32)\r
 ARCH_INCLUDE = -I $(MAKEROOT)/Include/Ia32/\r
 \r
@@ -81,34 +81,34 @@ $(error Bad HOST_ARCH)
 endif\r
 \r
 INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKEROOT)/Include/ -I $(MAKEROOT)/Include/IndustryStandard -I $(MAKEROOT)/Common/ -I .. -I . $(ARCH_INCLUDE)\r
-BUILD_CPPFLAGS = $(INCLUDE)\r
+CPPFLAGS = $(INCLUDE)\r
 \r
 # keep EXTRA_OPTFLAGS last\r
 BUILD_OPTFLAGS = -O2 $(EXTRA_OPTFLAGS)\r
 \r
 ifeq ($(DARWIN),Darwin)\r
 # assume clang or clang compatible flags on OS X\r
-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror \\r
+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
-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \\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
 -Wno-unused-result -nostdlib -g\r
 else\r
-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \\r
+CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \\r
 -fno-delete-null-pointer-checks -Wall -Werror \\r
 -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict \\r
 -Wno-unused-result -nostdlib -g\r
 endif\r
 endif\r
 ifeq ($(CXX), llvm)\r
-BUILD_LFLAGS =\r
-BUILD_CXXFLAGS = -Wno-deprecated-register -Wno-unused-result\r
+LDFLAGS =\r
+CXXFLAGS = -Wno-deprecated-register -Wno-unused-result\r
 else\r
-BUILD_LFLAGS =\r
-BUILD_CXXFLAGS = -Wno-unused-result\r
+LDFLAGS =\r
+CXXFLAGS = -Wno-unused-result\r
 endif\r
 ifeq ($(HOST_ARCH), IA32)\r
 #\r
@@ -117,18 +117,18 @@ ifeq ($(HOST_ARCH), IA32)
 #  so only do this is uname -m returns i386.\r
 #\r
 ifeq ($(DARWIN),Darwin)\r
-  BUILD_CFLAGS   += -arch i386\r
-  BUILD_CPPFLAGS += -arch i386\r
-  BUILD_LFLAGS   += -arch i386\r
+  CFLAGS   += -arch i386\r
+  CPPFLAGS += -arch i386\r
+  LDFLAGS  += -arch i386\r
 endif\r
 endif\r
 \r
 # keep BUILD_OPTFLAGS last\r
-BUILD_CFLAGS   += $(BUILD_OPTFLAGS)\r
-BUILD_CXXFLAGS += $(BUILD_OPTFLAGS)\r
+CFLAGS   += $(BUILD_OPTFLAGS)\r
+CXXFLAGS += $(BUILD_OPTFLAGS)\r
 \r
 # keep EXTRA_LDFLAGS last\r
-BUILD_LFLAGS += $(EXTRA_LDFLAGS)\r
+LDFLAGS += $(EXTRA_LDFLAGS)\r
 \r
 .PHONY: all\r
 .PHONY: install\r
index fc329944b992cd94ec07bd1718e6d5f80846659a..e227b10791b230bec2c49ca3227f646af651ff13 100644 (file)
@@ -17,9 +17,9 @@ TOOL_INCLUDE = -I Pccts/h
 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
-VFR_CPPFLAGS = -Wno-deprecated-register -DPCCTS_USE_NAMESPACE_STD $(BUILD_CPPFLAGS)\r
+VFR_CPPFLAGS = -Wno-deprecated-register -std=c++14 -DPCCTS_USE_NAMESPACE_STD $(CPPFLAGS)\r
 else\r
-VFR_CPPFLAGS = -DPCCTS_USE_NAMESPACE_STD $(BUILD_CPPFLAGS)\r
+VFR_CPPFLAGS = -DPCCTS_USE_NAMESPACE_STD $(CPPFLAGS)\r
 endif\r
 # keep BUILD_OPTFLAGS last\r
 VFR_CXXFLAGS = $(BUILD_OPTFLAGS)\r
@@ -27,7 +27,7 @@ VFR_CXXFLAGS = $(BUILD_OPTFLAGS)
 # keep EXTRA_LDFLAGS last\r
 VFR_LFLAGS = $(EXTRA_LDFLAGS)\r
 \r
-LINKER = $(BUILD_CXX)\r
+LINKER = $(CXX)\r
 \r
 EXTRA_CLEAN_OBJECTS = EfiVfrParser.cpp EfiVfrParser.h VfrParser.dlg VfrTokens.h VfrLexer.cpp VfrLexer.h VfrSyntax.cpp tokens.h\r
 \r
@@ -60,16 +60,16 @@ Pccts/dlg/dlg:
        BIN_DIR='.' $(MAKE) -C Pccts/dlg\r
 \r
 ATokenBuffer.o: Pccts/h/ATokenBuffer.cpp\r
-       $(BUILD_CXX) -c $(VFR_CPPFLAGS) $(INC) $(VFR_CXXFLAGS) $? -o $@\r
+       $(CXX) -c $(VFR_CPPFLAGS) $(INC) $(VFR_CXXFLAGS) $? -o $@\r
 \r
 DLexerBase.o: Pccts/h/DLexerBase.cpp\r
-       $(BUILD_CXX) -c $(VFR_CPPFLAGS) $(INC) $(VFR_CXXFLAGS) $? -o $@\r
+       $(CXX) -c $(VFR_CPPFLAGS) $(INC) $(VFR_CXXFLAGS) $? -o $@\r
 \r
 AParser.o: Pccts/h/AParser.cpp\r
-       $(BUILD_CXX) -c $(VFR_CPPFLAGS) $(INC) $(VFR_CXXFLAGS) $? -o $@\r
+       $(CXX) -c $(VFR_CPPFLAGS) $(INC) $(VFR_CXXFLAGS) $? -o $@\r
 \r
 VfrSyntax.o: VfrSyntax.cpp\r
-       $(BUILD_CXX) -c $(VFR_CPPFLAGS) $(INC) $(VFR_CXXFLAGS) $? -o $@\r
+       $(CXX) -c $(VFR_CPPFLAGS) $(INC) $(VFR_CXXFLAGS) $? -o $@\r
 \r
 clean: localClean\r
 \r
index 559b1c99f1efb4f407751225f7a1f451be1e45d9..3bd9b6b1df88565d49b972c7be2abc3dfe1a3b83 100644 (file)
@@ -157,7 +157,7 @@ PCCTS_H=../h
 #      $(DLG) -C2 parser.dlg scan.c\r
 #\r
 #set.$(OBJ_EXT): $(SET)/set.c\r
-#      $(BUILD_CC) $(BUILD_CFLAGS) -c $(OUT_OBJ)set.$(OBJ_EXT) $(SET)/set.c\r
+#      $(CC) $(CFLAGS) -c $(OUT_OBJ)set.$(OBJ_EXT) $(SET)/set.c\r
 \r
 \r
 \r
@@ -165,17 +165,17 @@ PCCTS_H=../h
 #   UNIX  (default)\r
 #\r
 ifeq ($(CXX), llvm)\r
-BUILD_CC?=$(CLANG_BIN)clang\r
+CC?=$(CLANG_BIN)clang\r
 else\r
-BUILD_CC?=gcc\r
+CC?=gcc\r
 endif\r
 COPT=-O\r
 ANTLR=${BIN_DIR}/antlr\r
 DLG=${BIN_DIR}/dlg\r
 OBJ_EXT=o\r
 OUT_OBJ = -o\r
-BUILD_CFLAGS= $(COPT) -I. -I$(SET) -I$(PCCTS_H) -DUSER_ZZSYN $(COTHER) -DZZLEXBUFSIZE=65536\r
-BUILD_CPPFLAGS=\r
+CFLAGS= $(COPT) -I. -I$(SET) -I$(PCCTS_H) -DUSER_ZZSYN $(COTHER) -DZZLEXBUFSIZE=65536\r
+CPPFLAGS=\r
 #\r
 # SGI Users, use this CFLAGS\r
 #\r
@@ -184,7 +184,7 @@ OBJ=antlr.o scan.o err.o bits.o build.o fset2.o fset.o gen.o  \
         globals.o hash.o lex.o main.o misc.o set.o pred.o egman.o mrhoist.o fcache.o\r
 \r
 $(BIN_DIR)/antlr : $(OBJ) $(SRC)\r
-               $(BUILD_CC) $(BUILD_CFLAGS) -o $(BIN_DIR)/antlr $(OBJ)\r
+               $(CC) $(CFLAGS) -o $(BIN_DIR)/antlr $(OBJ)\r
 \r
 # what files does PCCTS generate (both ANTLR and DLG)\r
 PCCTS_GEN=antlr.c scan.c err.c tokens.h mode.h parser.dlg stdpccts.h remap.h\r
@@ -207,10 +207,10 @@ scan.o : scan.c mode.h tokens.h
 #      $(DLG) -C2 parser.dlg scan.c\r
 \r
 set.o : $(SET)/set.c\r
-       $(BUILD_CC) $(BUILD_CFLAGS) -c -o set.o $(SET)/set.c\r
+       $(CC) $(CFLAGS) -c -o set.o $(SET)/set.c\r
 \r
 %.o : %.c \r
-       $(BUILD_CC) -c $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $< -o $@\r
+       $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@\r
 \r
 #\r
 # ****** These next targets are common to UNIX and PC world ********\r
index 5a3561edecd472f979f7f829695f01a656c163cd..61366185c1fbf1e489e856942c40d489ef03e305 100644 (file)
@@ -35,7 +35,7 @@ PCCTS_H=../h
 #\r
 #$(LIBS: = +^\r
 #)\r
-#$(DEF_FILE) $(LFLAGS) ;\r
+#$(DEF_FILE) $(LDFLAGS) ;\r
 #<<\r
 #        bind $@ c:\os2\doscalls.lib\r
 #        copy *.exe ..\bin\r
@@ -59,7 +59,7 @@ PCCTS_H=../h
 #$@ /Tde /c\r
 #\r
 #$(LIBS)\r
-#$(DEF_FILE) $(LFLAGS) ;\r
+#$(DEF_FILE) $(LDFLAGS) ;\r
 #|\r
 #        copy *.exe ..\bin\r
 #\r
@@ -83,7 +83,7 @@ PCCTS_H=../h
 #\r
 #$(LIBS: = +^\r
 #)\r
-#$(DEF_FILE) $(LFLAGS) ;\r
+#$(DEF_FILE) $(LDFLAGS) ;\r
 #<<\r
 #        copy *.exe ..\bin\r
 #\r
@@ -122,15 +122,15 @@ endif
 COPT=-O\r
 ANTLR=${BIN_DIR}/antlr\r
 DLG=${BIN_DIR}/dlg\r
-BUILD_CFLAGS= $(COPT) -I. -I$(SET) -I$(PCCTS_H) -DUSER_ZZSYN -DZZLEXBUFSIZE=65536\r
-BUILD_CPPFLAGS=\r
+CFLAGS= $(COPT) -I. -I$(SET) -I$(PCCTS_H) -DUSER_ZZSYN -DZZLEXBUFSIZE=65536\r
+CPPFLAGS=\r
 OBJ_EXT=o\r
 OUT_OBJ = -o\r
 OBJ = dlg_p.o dlg_a.o main.o err.o set.o support.o output.o \\r
         relabel.o automata.o\r
 \r
 $(BIN_DIR)/dlg : $(OBJ) $(SRC)\r
-               $(BUILD_CC) $(BUILD_CFLAGS) -o $(BIN_DIR)/dlg $(OBJ)\r
+               $(CC) $(CFLAGS) -o $(BIN_DIR)/dlg $(OBJ)\r
 \r
 SRC = dlg_p.c dlg_a.c main.c err.c $(SET)/set.c support.c output.c \\r
         relabel.c automata.c\r
@@ -142,19 +142,19 @@ SRC = dlg_p.c dlg_a.c main.c err.c $(SET)/set.c support.c output.c \
 #      $(DLG) -C2 parser.dlg dlg_a.c\r
 \r
 dlg_p.$(OBJ_EXT) : dlg_p.c dlg.h tokens.h mode.h\r
-       $(BUILD_CC) $(BUILD_CFLAGS) -c dlg_p.c\r
+       $(CC) $(CFLAGS) -c dlg_p.c\r
 \r
 dlg_a.$(OBJ_EXT) : dlg_a.c dlg.h tokens.h mode.h\r
-       $(BUILD_CC) $(BUILD_CFLAGS) -c dlg_a.c\r
+       $(CC) $(CFLAGS) -c dlg_a.c\r
 \r
 main.$(OBJ_EXT) : main.c dlg.h\r
-       $(BUILD_CC) $(BUILD_CFLAGS) -c main.c\r
+       $(CC) $(CFLAGS) -c main.c\r
 \r
 set.$(OBJ_EXT) : $(SET)/set.c\r
-       $(BUILD_CC) -c $(BUILD_CFLAGS) $(SET)/set.c\r
+       $(CC) -c $(CFLAGS) $(SET)/set.c\r
 \r
 %.o : %.c \r
-       $(BUILD_CC) -c $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $< -o $@\r
+       $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@\r
 \r
 lint:\r
        lint *.c\r
index 73c6ee40061b941ae078df34750efbb3f9737897..8fd949dc50b640ef9257672068abe5a070cafdc1 100644 (file)
@@ -89,7 +89,7 @@ PcdMakefileHeader = '''
 '''\r
 \r
 WindowsCFLAGS = 'CFLAGS = $(CFLAGS) /wd4200 /wd4034 /wd4101 '\r
-LinuxCFLAGS = 'BUILD_CFLAGS += -Wno-pointer-to-int-cast -Wno-unused-variable '\r
+LinuxCFLAGS = 'CFLAGS += -Wno-pointer-to-int-cast -Wno-unused-variable '\r
 PcdMakefileEnd = '''\r
 !INCLUDE $(BASE_TOOLS_PATH)\Source\C\Makefiles\ms.common\r
 !INCLUDE $(BASE_TOOLS_PATH)\Source\C\Makefiles\ms.app\r