On Mon, 10 Oct 2022 06:32:09 GMT, Dingli Zhang <dzh...@openjdk.org> wrote:

> I built hsdis with the following parameters from source code of binutils 
> while cross-compiling:
> 
> --with-hsdis=binutils \
> --with-binutils-src=/home/dingli/jdk-tools/binutils-2.38
> 
> 
> But configure will exit with the following error:
> 
> checking whether we are cross compiling... configure: error: in 
> `/home/dingli/jdk-tools/binutils-2.38-src':
> configure: error: cannot run C compiled programs.
> If you meant to cross compile, use `--host'.
> See `config.log' for more details
> configure: Automatic building of binutils failed on configure. Try building 
> it manually
> configure: error: Cannot continue
> configure exiting with result code 1
> 
> 
> The reason for the error is that binutils wants to be configured with --host 
> during cross-compilation. So we can determine if we are currently 
> cross-compiling and add the --host parameter to binutils_target:
> 
> diff --git a/make/autoconf/lib-hsdis.m4 b/make/autoconf/lib-hsdis.m4
> index d72bbf6df32..dddc1cf6a4d 100644
> --- a/make/autoconf/lib-hsdis.m4
> +++ b/make/autoconf/lib-hsdis.m4
> @@ -175,7 +175,11 @@ AC_DEFUN([LIB_BUILD_BINUTILS],
>        fi
>      else
>        binutils_cc="$CC $SYSROOT_CFLAGS"
> -      binutils_target=""
> +      if test "x$host" = "x$build"; then
> +        binutils_target=""
> +      else
> +        binutils_target="--host=$host"
> +      fi
>      fi
>      binutils_cflags="$binutils_cflags $MACHINE_FLAG $JVM_PICFLAG 
> $C_O_FLAG_NORM"
>  
> 
> 
> In the meantime, I removed some useless code about hsdis-demo because 
> hsdis-demo.c was removed in 
> [JDK-8275128](https://bugs.openjdk.org/browse/JDK-8275128) .
> 
> ## Testing:
> 
> - cross compile for RISC-V on x86_64

Ok, we already have an exported value for `$host`, which is 
`$OPENJDK_TARGET_AUTOCONF_NAME`. Also, `$conf_openjdk_target` is used in the 
wrapper configure script. It is probably leaking into the main generated 
autoconf script, but it is definitely not supposed to be used there. Instead, 
it should only be used to setup the `--host=` option to autoconf. So looking 
for `$host` is fine I suppose, but we should do it using the 
OPENJDK_TARGET_AUTOCONF_NAME variable.

-------------

PR: https://git.openjdk.org/jdk/pull/10628

Reply via email to