From: "Nicholas Piggin" <npiggin@gmail.com>
To: "Andrew Jones" <andrew.jones@linux.dev>, <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: Re: [kvm-unit-tests PATCH v2 3/4] configure: Support cross compiling with clang
Date: Wed, 11 Sep 2024 10:24:34 +1000 [thread overview]
Message-ID: <D430ZV4FP2GE.3B7VE2I37RPXX@gmail.com> (raw)
In-Reply-To: <20240904105020.1179006-9-andrew.jones@linux.dev>
On Wed Sep 4, 2024 at 8:50 PM AEST, Andrew Jones wrote:
> 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.
Makes sense.
> 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.
Could be a separate patch but no big deal.
>
> 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-
Nice. Perhaps add a recipe to README?
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Thanks,
Nick
>
> 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
next prev parent reply other threads:[~2024-09-11 0:24 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 ` [kvm-unit-tests PATCH v2 3/4] configure: Support cross compiling with clang Andrew Jones
2024-09-11 0:24 ` Nicholas Piggin [this message]
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=D430ZV4FP2GE.3B7VE2I37RPXX@gmail.com \
--to=npiggin@gmail.com \
--cc=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).