All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nicholas Piggin <npiggin@gmail.com>
To: kvm-riscv@lists.infradead.org
Subject: [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



WARNING: multiple messages have this Message-ID (diff)
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


  reply	other threads:[~2024-09-11  0:24 UTC|newest]

Thread overview: 26+ 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 ` Andrew Jones
2024-09-04 10:50 ` [kvm-unit-tests PATCH v2 1/4] riscv: Drop mstrict-align Andrew Jones
2024-09-04 10:50   ` Andrew Jones
2024-09-11  0:08   ` Nicholas Piggin
2024-09-11  0:08     ` Nicholas Piggin
2024-09-11  8:19     ` Andrew Jones
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:50   ` Andrew Jones
2024-09-04 10:57   ` Thomas Huth
2024-09-04 10:57     ` Thomas Huth
2024-09-11  0:21   ` Nicholas Piggin
2024-09-11  0:21     ` Nicholas Piggin
2024-09-11  8:21     ` Andrew Jones
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-04 10:50   ` Andrew Jones
2024-09-11  0:24   ` Nicholas Piggin [this message]
2024-09-11  0:24     ` Nicholas Piggin
2024-09-11  8:24     ` Andrew Jones
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-04 10:50   ` Andrew Jones
2024-09-11  0:26   ` Nicholas Piggin
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=kvm-riscv@lists.infradead.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.