From: Andrew Jones <andrew.jones@linux.dev>
To: kvm@vger.kernel.org, kvm-riscv@lists.infradead.org,
kvmarm@lists.linux.dev, linuxppc-dev@lists.ozlabs.org,
linux-s390@vger.kernel.org
Cc: pbonzini@redhat.com, thuth@redhat.com, lvivier@redhat.com,
frankja@linux.ibm.com, imbrenda@linux.ibm.com, nrb@linux.ibm.com,
atishp@rivosinc.com, cade.richard@berkeley.edu,
jamestiotio@gmail.com
Subject: [kvm-unit-tests PATCH v2 3/4] configure: Support cross compiling with clang
Date: Wed, 4 Sep 2024 12:50:24 +0200 [thread overview]
Message-ID: <20240904105020.1179006-9-andrew.jones@linux.dev> (raw)
In-Reply-To: <20240904105020.1179006-6-andrew.jones@linux.dev>
When a user specifies the compiler with --cc assume it's already
fully named, even if the user also specifies a cross-prefix. This
allows clang to be selected for the compiler, which doesn't use
prefixes, but also still provide a cross prefix for binutils. If
a user needs a prefix on the compiler that they specify with --cc,
then they'll just have to specify it with the prefix prepended.
Also ensure user provided cflags are used when testing the compiler,
since the flags may drastically change behavior, such as the --target
flag for clang.
With these changes it's possible to cross compile for riscv with
clang after configuring with
./configure --arch=riscv64 --cc=clang --cflags='--target=riscv64' \
--cross-prefix=riscv64-linux-gnu-
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Andrew Jones <andrew.jones@linux.dev>
---
configure | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/configure b/configure
index 27ae9cc89657..337af07374df 100755
--- a/configure
+++ b/configure
@@ -130,6 +130,7 @@ while [[ "$1" = -* ]]; do
;;
--cc)
cc="$arg"
+ cc_selected=yes
;;
--cflags)
cflags="$arg"
@@ -200,6 +201,10 @@ while [[ "$1" = -* ]]; do
esac
done
+if [ -z "$cc_selected" ] && [ "$cross_prefix" ]; then
+ cc="$cross_prefix$cc"
+fi
+
if [ -z "$efi" ] || [ "$efi" = "n" ]; then
[ "$efi_direct" = "y" ] && efi_direct=
fi
@@ -370,7 +375,7 @@ fi
cat << EOF > lib-test.c
__UINT32_TYPE__
EOF
-u32_long=$("$cross_prefix$cc" -E lib-test.c | grep -v '^#' | grep -q long && echo yes)
+u32_long=$("$cc" $cflags -E lib-test.c | grep -v '^#' | grep -q long && echo yes)
rm -f lib-test.c
# check if slash can be used for division
@@ -379,7 +384,7 @@ if [ "$arch" = "i386" ] || [ "$arch" = "x86_64" ]; then
foo:
movl (8 / 2), %eax
EOF
- wa_divide=$("$cross_prefix$cc" -c lib-test.S >/dev/null 2>&1 || echo yes)
+ wa_divide=$("$cc" $cflags -c lib-test.S >/dev/null 2>&1 || echo yes)
rm -f lib-test.{o,S}
fi
@@ -442,7 +447,7 @@ ARCH=$arch
ARCH_NAME=$arch_name
ARCH_LIBDIR=$arch_libdir
PROCESSOR=$processor
-CC=$cross_prefix$cc
+CC=$cc
CFLAGS=$cflags
LD=$cross_prefix$ld
OBJCOPY=$cross_prefix$objcopy
--
2.46.0
next prev parent reply other threads:[~2024-09-04 10:51 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-04 10:50 [kvm-unit-tests PATCH v2 0/4] Support cross compiling with clang Andrew Jones
2024-09-04 10:50 ` [kvm-unit-tests PATCH v2 1/4] riscv: Drop mstrict-align Andrew Jones
2024-09-11 0:08 ` Nicholas Piggin
2024-09-11 8:19 ` Andrew Jones
2024-09-04 10:50 ` [kvm-unit-tests PATCH v2 2/4] Makefile: Prepare for clang EFI builds Andrew Jones
2024-09-04 10:57 ` Thomas Huth
2024-09-11 0:21 ` Nicholas Piggin
2024-09-11 8:21 ` Andrew Jones
2024-09-04 10:50 ` Andrew Jones [this message]
2024-09-11 0:24 ` [kvm-unit-tests PATCH v2 3/4] configure: Support cross compiling with clang Nicholas Piggin
2024-09-11 8:24 ` Andrew Jones
2024-09-04 10:50 ` [kvm-unit-tests PATCH v2 4/4] riscv: gitlab-ci: Add clang build tests Andrew Jones
2024-09-11 0:26 ` Nicholas Piggin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240904105020.1179006-9-andrew.jones@linux.dev \
--to=andrew.jones@linux.dev \
--cc=atishp@rivosinc.com \
--cc=cade.richard@berkeley.edu \
--cc=frankja@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=jamestiotio@gmail.com \
--cc=kvm-riscv@lists.infradead.org \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-s390@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=lvivier@redhat.com \
--cc=nrb@linux.ibm.com \
--cc=pbonzini@redhat.com \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).