RFR: 8295033: hsdis configure error when cross-compiling with --with-binutils-src

Magnus Ihse Bursie ihse at openjdk.org
Tue Oct 11 11:40:14 UTC 2022


On Mon, 10 Oct 2022 06:32:09 GMT, Dingli Zhang <dzhang at 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



More information about the build-dev mailing list