summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Jones <pjones@redhat.com>2021-08-02 13:09:28 -0400
committerPeter Jones <pjones@redhat.com>2021-09-07 17:05:04 -0400
commit116a8310ab93d803fa51f9ba9f3d6d0cb691e2bf (patch)
treed4119e4f7bdea652cd7fdaa47bd1ffb01dbd42a5
parent3f7050da2b5fa0548394c6f88cff14d2df00ff34 (diff)
downloadefi-boot-shim-116a8310ab93d803fa51f9ba9f3d6d0cb691e2bf.tar.gz
efi-boot-shim-116a8310ab93d803fa51f9ba9f3d6d0cb691e2bf.zip
More minor improvements to support for COMPILER=clang
A couple of places snuck in where building with COMPILER=clang didn't work right; this makes them work again. Signed-off-by: Peter Jones <pjones@redhat.com>
-rw-r--r--Make.defaults7
-rw-r--r--Makefile19
-rw-r--r--include/test.mk14
-rw-r--r--shim.h4
4 files changed, 37 insertions, 7 deletions
diff --git a/Make.defaults b/Make.defaults
index 1b929a71..d041f0d5 100644
--- a/Make.defaults
+++ b/Make.defaults
@@ -52,7 +52,11 @@ override EFI_INCLUDES := $(EFI_INCLUDES)
EFI_CRT_OBJS = $(LOCAL_EFI_PATH)/crt0-efi-$(ARCH_GNUEFI).o
EFI_LDS = $(TOPDIR)/elf_$(ARCH)_efi.lds
-CLANG_BUGS = $(if $(findstring gcc,$(CC)),-maccumulate-outgoing-args,)
+CLANG_WARNINGS = -Wno-pointer-bool-conversion \
+ -Wno-unknown-attributes
+
+CLANG_BUGS = $(if $(findstring gcc,$(CC)),-maccumulate-outgoing-args,) \
+ $(if $(findstring clang,$(CC)),$(CLANG_WARNINGS))
COMMIT_ID ?= $(shell if [ -e .git ] ; then git log -1 --pretty=format:%H ; elif [ -f commit ]; then cat commit ; else echo master; fi)
@@ -131,6 +135,7 @@ $(call update-variable,WERRFLAGS)
CFLAGS = $(FEATUREFLAGS) \
$(OPTIMIZATIONS) \
$(WARNFLAGS) \
+ $(if $(findstring clang,$(CC)),$(CLANG_WARNINGS)) \
$(ARCH_CFLAGS) \
$(WERRFLAGS) \
$(INCLUDES) \
diff --git a/Makefile b/Makefile
index 48db1af6..f4aad593 100644
--- a/Makefile
+++ b/Makefile
@@ -153,7 +153,10 @@ gnu-efi/$(ARCH_GNUEFI)/gnuefi/libgnuefi.a gnu-efi/$(ARCH_GNUEFI)/lib/libefi.a: C
gnu-efi/$(ARCH_GNUEFI)/gnuefi/libgnuefi.a gnu-efi/$(ARCH_GNUEFI)/lib/libefi.a:
mkdir -p gnu-efi/lib gnu-efi/gnuefi
$(MAKE) -C gnu-efi \
- ARCH=$(ARCH_GNUEFI) TOPDIR=$(TOPDIR)/gnu-efi \
+ COMPILER="$(COMPILER)" \
+ CC="$(CC)" \
+ ARCH=$(ARCH_GNUEFI) \
+ TOPDIR=$(TOPDIR)/gnu-efi \
-f $(TOPDIR)/gnu-efi/Makefile \
lib gnuefi inc
@@ -285,7 +288,13 @@ else
endif
test :
- @make -f $(TOPDIR)/include/test.mk EFI_INCLUDES="$(EFI_INCLUDES)" ARCH_DEFINES="$(ARCH_DEFINES)" all
+ @make -f $(TOPDIR)/include/test.mk \
+ COMPILER="$(COMPILER)" \
+ CROSS_COMPILE="$(CROSS_COMPILE)" \
+ CLANG_WARNINGS="$(CLANG_WARNINGS)" \
+ ARCH_DEFINES="$(ARCH_DEFINES)" \
+ EFI_INCLUDES="$(EFI_INCLUDES)" \
+ all
$(patsubst %.c,%,$(wildcard test-*.c)) :
@make -f $(TOPDIR)/include/test.mk EFI_INCLUDES="$(EFI_INCLUDES)" ARCH_DEFINES="$(ARCH_DEFINES)" $@
@@ -298,7 +307,11 @@ clean-test-objs:
clean-gnu-efi:
@if [ -d gnu-efi ] ; then \
$(MAKE) -C gnu-efi \
- ARCH=$(ARCH_GNUEFI) TOPDIR=$(TOPDIR)/gnu-efi \
+ CC="$(CC)" \
+ HOSTCC="$(HOSTCC)" \
+ COMPILER="$(COMPILER)" \
+ ARCH=$(ARCH_GNUEFI) \
+ TOPDIR=$(TOPDIR)/gnu-efi \
-f $(TOPDIR)/gnu-efi/Makefile \
clean ; \
fi
diff --git a/include/test.mk b/include/test.mk
index 68230b20..b99283f3 100644
--- a/include/test.mk
+++ b/include/test.mk
@@ -27,10 +27,11 @@ CFLAGS = $(OPTIMIZATIONS) -std=gnu11 \
-fno-eliminate-unused-debug-symbols \
-gpubnames \
-grecord-gcc-switches \
+ $(if $(findstring clang,$(CC)),-Wno-unknown-warning-option) \
$(DEFAULT_WARNFLAGS) \
-Wsign-compare \
-Wno-deprecated-declarations \
- -Wno-unused-but-set-variable \
+ $(if $(findstring gcc,$(CC)),-Wno-unused-but-set-variable) \
-Wno-unused-variable \
-Wno-pointer-sign \
$(DEFAULT_WERRFLAGS) \
@@ -43,11 +44,18 @@ CFLAGS = $(OPTIMIZATIONS) -std=gnu11 \
"-DDEFAULT_DEBUG_PRINT_STATE=$(DEBUG_PRINTS)"
libefi-test.a :
- $(MAKE) -C gnu-efi ARCH=$(ARCH_GNUEFI) TOPDIR=$(TOPDIR)/gnu-efi \
+ $(MAKE) -C gnu-efi \
+ COMPILER="$(COMPILER)" \
+ CC="$(CC)" \
+ ARCH=$(ARCH_GNUEFI) \
+ TOPDIR=$(TOPDIR)/gnu-efi \
-f $(TOPDIR)/gnu-efi/Makefile \
clean lib
mv gnu-efi/$(ARCH)/lib/libefi.a $@
- $(MAKE) -C gnu-efi ARCH=$(ARCH_GNUEFI) TOPDIR=$(TOPDIR)/gnu-efi \
+ $(MAKE) -C gnu-efi \
+ COMPILER="$(COMPILER)" \
+ ARCH=$(ARCH_GNUEFI) \
+ TOPDIR=$(TOPDIR)/gnu-efi \
-f $(TOPDIR)/gnu-efi/Makefile \
clean
diff --git a/shim.h b/shim.h
index 94b48bcc..d54fc6e9 100644
--- a/shim.h
+++ b/shim.h
@@ -27,6 +27,10 @@
#error On x86_64 you must have a compiler new enough to support __attribute__((__ms_abi__))
#endif
+#if CLANG_PREREQ(3, 4)
+#pragma GCC diagnostic ignored "-Wpointer-bool-conversion"
+#endif
+
#if !defined(GNU_EFI_USE_EXTERNAL_STDARG)
#define GNU_EFI_USE_EXTERNAL_STDARG
#endif