configure: When host-shared, pass --with-pic to in-tree lib configs.

If we are building PIC/PIE host executables, and we are building dependent
libs (e.g. GMP) in-tree those libs need to be configured to generate PIC code.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>

	* Makefile.def: Pass host_libs_picflag to host dependent library
	configures.
	* configure.ac (host_libs_picflag): New configure variable set to
	'--with-pic' when building 'host_shared'.
This commit is contained in:
Iain Sandoe 2023-08-07 13:07:11 +02:00 committed by Alan Modra
parent 6d80d4cf71
commit 947edb094e
2 changed files with 17 additions and 6 deletions

View File

@ -50,7 +50,7 @@ host_modules= { module= gcc; bootstrap=true;
extra_make_flags="$(EXTRA_GCC_FLAGS)"; };
host_modules= { module= gmp; lib_path=.libs; bootstrap=true;
// Work around in-tree gmp configure bug with missing flex.
extra_configure_flags='--disable-shared LEX="touch lex.yy.c"';
extra_configure_flags='--disable-shared LEX="touch lex.yy.c" @host_libs_picflag@';
extra_make_flags='AM_CFLAGS="-DNO_ASM"';
no_install= true;
// none-*-* disables asm optimizations, bootstrap-testing
@ -60,14 +60,14 @@ host_modules= { module= gmp; lib_path=.libs; bootstrap=true;
// different from host for target.
target="none-${host_vendor}-${host_os}"; };
host_modules= { module= mpfr; lib_path=src/.libs; bootstrap=true;
extra_configure_flags='--disable-shared @extra_mpfr_configure_flags@';
extra_configure_flags='--disable-shared @extra_mpfr_configure_flags@ @host_libs_picflag@';
extra_make_flags='AM_CFLAGS="-DNO_ASM"';
no_install= true; };
host_modules= { module= mpc; lib_path=src/.libs; bootstrap=true;
extra_configure_flags='--disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ --disable-maintainer-mode';
extra_configure_flags='--disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ @host_libs_picflag@ --disable-maintainer-mode';
no_install= true; };
host_modules= { module= isl; lib_path=.libs; bootstrap=true;
extra_configure_flags='--disable-shared @extra_isl_gmp_configure_flags@';
extra_configure_flags='--disable-shared @extra_isl_gmp_configure_flags@ @host_libs_picflag@';
extra_make_flags='V=1';
no_install= true; };
host_modules= { module= libelf; lib_path=.libs; bootstrap=true;
@ -76,6 +76,7 @@ host_modules= { module= libelf; lib_path=.libs; bootstrap=true;
host_modules= { module= gold; bootstrap=true; };
host_modules= { module= gprof; };
host_modules= { module= gprofng; };
// intl acts on 'host_shared' directly, and does not support --with-pic.
host_modules= { module= intl; bootstrap=true; };
host_modules= { module= tcl;
missing=mostlyclean; };
@ -111,7 +112,7 @@ host_modules= { module= libiberty-linker-plugin; bootstrap=true;
// We abuse missing to avoid installing anything for libiconv.
host_modules= { module= libiconv;
bootstrap=true;
extra_configure_flags='--disable-shared';
extra_configure_flags='--disable-shared @host_libs_picflag@';
no_install= true;
missing= pdf;
missing= html;
@ -126,7 +127,7 @@ host_modules= { module= sim; };
host_modules= { module= texinfo; no_install= true; };
host_modules= { module= zlib; no_install=true; no_check=true;
bootstrap=true;
extra_configure_flags='@extra_host_zlib_configure_flags@';};
extra_configure_flags='@extra_host_zlib_configure_flags@ @host_libs_picflag@';};
host_modules= { module= gnulib; };
host_modules= { module= gdbsupport; };
host_modules= { module= gdbserver; };

View File

@ -2006,8 +2006,18 @@ AC_ARG_ENABLE(host-shared,
x86_64-*-darwin* | aarch64-*-darwin*) host_shared=yes ;;
*) host_shared=no ;;
esac])
AC_SUBST(host_shared)
# If we are building PIC/PIE host executables, and we are building dependent
# libs (e.g. GMP) in-tree those libs need to be configured to generate PIC
# code.
host_libs_picflag=
if test "$host_shared" = "yes";then
host_libs_picflag='--with-pic'
fi
AC_SUBST(host_libs_picflag)
# By default, C and C++ are the only stage 1 languages.
stage1_languages=,c,