kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [kvm-unit-tests PATCH] Makefile: do not use "libgcc" for clang
@ 2021-03-09  4:52 Bill Wendling
  2021-04-27 21:15 ` Bill Wendling
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Bill Wendling @ 2021-03-09  4:52 UTC (permalink / raw)
  To: kvm, pbonzini; +Cc: jmattson, Bill Wendling

The -nostdlib flag disables the driver from adding libclang_rt.*.a
during linking. Adding a specific library to the command line then
causes the linker to report unresolved symbols, because the libraries
that resolve those symbols aren't automatically added. Turns out clang
doesn't need to specify that library.

Signed-off-by: Bill Wendling <morbo@google.com>
---
 Makefile            | 6 ++++++
 arm/Makefile.common | 2 ++
 x86/Makefile.common | 2 ++
 3 files changed, 10 insertions(+)

diff --git a/Makefile b/Makefile
index e0828fe..61a1276 100644
--- a/Makefile
+++ b/Makefile
@@ -22,10 +22,16 @@ DESTDIR := $(PREFIX)/share/kvm-unit-tests/
 cc-option = $(shell if $(CC) -Werror $(1) -S -o /dev/null -xc /dev/null \
               > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
 
+# cc-name
+# Expands to either gcc or clang
+cc-name = $(shell $(CC) -v 2>&1 | grep -q "clang version" && echo clang || echo gcc)
+
 #make sure env CFLAGS variable is not used
 CFLAGS =
 
+ifneq ($(cc-name),clang)
 libgcc := $(shell $(CC) --print-libgcc-file-name)
+endif
 
 libcflat := lib/libcflat.a
 cflatobjs := \
diff --git a/arm/Makefile.common b/arm/Makefile.common
index a123e85..94922aa 100644
--- a/arm/Makefile.common
+++ b/arm/Makefile.common
@@ -58,7 +58,9 @@ OBJDIRS += lib/arm
 libeabi = lib/arm/libeabi.a
 eabiobjs = lib/arm/eabi_compat.o
 
+ifneq ($(cc-name),clang)
 libgcc := $(shell $(CC) $(machine) --print-libgcc-file-name)
+endif
 
 FLATLIBS = $(libcflat) $(LIBFDT_archive) $(libgcc) $(libeabi)
 %.elf: LDFLAGS = -nostdlib $(arch_LDFLAGS)
diff --git a/x86/Makefile.common b/x86/Makefile.common
index 55f7f28..a96b236 100644
--- a/x86/Makefile.common
+++ b/x86/Makefile.common
@@ -37,7 +37,9 @@ COMMON_CFLAGS += -O1
 # stack.o relies on frame pointers.
 KEEP_FRAME_POINTER := y
 
+ifneq ($(cc-name),clang)
 libgcc := $(shell $(CC) -m$(bits) --print-libgcc-file-name)
+endif
 
 # We want to keep intermediate file: %.elf and %.o 
 .PRECIOUS: %.elf %.o
-- 
2.30.1.766.gb4fecdf3b7-goog


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

end of thread, other threads:[~2021-05-05 12:31 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-09  4:52 [kvm-unit-tests PATCH] Makefile: do not use "libgcc" for clang Bill Wendling
2021-04-27 21:15 ` Bill Wendling
2021-05-04 17:07 ` Jim Mattson
2021-05-05 12:31 ` Paolo Bonzini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).