mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-26 11:47:31 +00:00
97d40d3d4a
us up to version 2.17.50.20070703, at the last GPLv2 commit. Amongst others, this added upstream support for some FreeBSD-specific things that we previously had to manually hack in, such as the OSABI label support, and so on. There are also quite a number of new files, some for cpu's (e.g. SPU) that we may or may not be interested in, but those can be cleaned up later on, if needed.
913 lines
25 KiB
Plaintext
913 lines
25 KiB
Plaintext
# Configure fragment invoked in the post-target section for subdirs
|
|
# wanting multilib support.
|
|
#
|
|
# Copyright (C) 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
|
|
# Free Software Foundation, Inc.
|
|
#
|
|
# This file is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
# Boston, MA 02110-1301, USA.
|
|
#
|
|
# As a special exception to the GNU General Public License, if you
|
|
# distribute this file as part of a program that contains a
|
|
# configuration script generated by Autoconf, you may include it under
|
|
# the same distribution terms that you use for the rest of that program.
|
|
#
|
|
# Please report bugs to <gcc-bugs@gnu.org>
|
|
# and send patches to <gcc-patches@gnu.org>.
|
|
|
|
# It is advisable to support a few --enable/--disable options to let the
|
|
# user select which libraries s/he really wants.
|
|
#
|
|
# Subdirectories wishing to use multilib should put the following lines
|
|
# in the "post-target" section of configure.in.
|
|
#
|
|
# if [ "${srcdir}" = "." ] ; then
|
|
# if [ "${with_target_subdir}" != "." ] ; then
|
|
# . ${with_multisrctop}../../config-ml.in
|
|
# else
|
|
# . ${with_multisrctop}../config-ml.in
|
|
# fi
|
|
# else
|
|
# . ${srcdir}/../config-ml.in
|
|
# fi
|
|
#
|
|
#
|
|
# Things are complicated because 6 separate cases must be handled:
|
|
# 2 (native, cross) x 3 (absolute-path, relative-not-dot, dot) = 6.
|
|
#
|
|
# srcdir=. is special. It must handle make programs that don't handle VPATH.
|
|
# To implement this, a symlink tree is built for each library and for each
|
|
# multilib subdir.
|
|
#
|
|
# The build tree is layed out as
|
|
#
|
|
# ./
|
|
# newlib
|
|
# m68020/
|
|
# newlib
|
|
# m68881/
|
|
# newlib
|
|
#
|
|
# The nice feature about this arrangement is that inter-library references
|
|
# in the build tree work without having to care where you are. Note that
|
|
# inter-library references also work in the source tree because symlink trees
|
|
# are built when srcdir=.
|
|
#
|
|
# Unfortunately, trying to access the libraries in the build tree requires
|
|
# the user to manually choose which library to use as GCC won't be able to
|
|
# find the right one. This is viewed as the lesser of two evils.
|
|
#
|
|
# Configure variables:
|
|
# ${with_target_subdir} = "." for native, or ${target_alias} for cross.
|
|
# Set by top level Makefile.
|
|
# ${with_multisrctop} = how many levels of multilibs there are in the source
|
|
# tree. It exists to handle the case of configuring in the source tree:
|
|
# ${srcdir} is not constant.
|
|
# ${with_multisubdir} = name of multilib subdirectory (eg: m68020/m68881).
|
|
#
|
|
# Makefile variables:
|
|
# MULTISRCTOP = number of multilib levels in source tree (+1 if cross)
|
|
# (FIXME: note that this is different than ${with_multisrctop}. Check out.).
|
|
# MULTIBUILDTOP = number of multilib levels in build tree
|
|
# MULTIDIRS = list of multilib subdirs (eg: m68000 m68020 ...)
|
|
# (only defined in each library's main Makefile).
|
|
# MULTISUBDIR = installed subdirectory name with leading '/' (eg: /m68000)
|
|
# (only defined in each multilib subdir).
|
|
|
|
# FIXME: Multilib is currently disabled by default for everything other than
|
|
# newlib. It is up to each target to turn on multilib support for the other
|
|
# libraries as desired.
|
|
|
|
# Autoconf incoming variables:
|
|
# srcdir, host, ac_configure_args
|
|
#
|
|
# We *could* figure srcdir and host out, but we'd have to do work that
|
|
# our caller has already done to figure them out and requiring these two
|
|
# seems reasonable.
|
|
# Note that `host' in this case is GCC's `target'. Target libraries are
|
|
# configured for a particular host.
|
|
|
|
Makefile=${ac_file-Makefile}
|
|
ml_config_shell=${CONFIG_SHELL-/bin/sh}
|
|
ml_realsrcdir=${srcdir}
|
|
|
|
# Scan all the arguments and set all the ones we need.
|
|
|
|
ml_verbose=--verbose
|
|
for option in ${ac_configure_args}
|
|
do
|
|
# strip single quotes surrounding individual options
|
|
case $option in
|
|
\'*\') eval option=$option ;;
|
|
esac
|
|
|
|
case $option in
|
|
--*) ;;
|
|
-*) option=-$option ;;
|
|
esac
|
|
|
|
case $option in
|
|
--*=*)
|
|
optarg=`echo $option | sed -e 's/^[^=]*=//'`
|
|
;;
|
|
esac
|
|
|
|
case $option in
|
|
--disable-*)
|
|
enableopt=`echo ${option} | sed 's:^--disable-:enable_:;s:-:_:g'`
|
|
eval $enableopt=no
|
|
;;
|
|
--enable-*)
|
|
case "$option" in
|
|
*=*) ;;
|
|
*) optarg=yes ;;
|
|
esac
|
|
enableopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
|
|
eval $enableopt="$optarg"
|
|
;;
|
|
--norecursion | --no-recursion)
|
|
ml_norecursion=yes
|
|
;;
|
|
--silent | --sil* | --quiet | --q*)
|
|
ml_verbose=--silent
|
|
;;
|
|
--verbose | --v | --verb*)
|
|
ml_verbose=--verbose
|
|
;;
|
|
--with-*)
|
|
case "$option" in
|
|
*=*) ;;
|
|
*) optarg=yes ;;
|
|
esac
|
|
withopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
|
|
eval $withopt="$optarg"
|
|
;;
|
|
--without-*)
|
|
withopt=`echo ${option} | sed 's:^--::;s:out::;s:-:_:g'`
|
|
eval $withopt=no
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Only do this if --enable-multilib.
|
|
if [ "${enable_multilib}" = yes ]; then
|
|
|
|
# Compute whether this is the library's top level directory
|
|
# (ie: not a multilib subdirectory, and not a subdirectory like newlib/src).
|
|
# ${with_multisubdir} tells us we're in the right branch, but we could be
|
|
# in a subdir of that.
|
|
# ??? The previous version could void this test by separating the process into
|
|
# two files: one that only the library's toplevel configure.in ran (to
|
|
# configure the multilib subdirs), and another that all configure.in's ran to
|
|
# update the Makefile. It seemed reasonable to collapse all multilib support
|
|
# into one file, but it does leave us with having to perform this test.
|
|
ml_toplevel_p=no
|
|
if [ -z "${with_multisubdir}" ]; then
|
|
if [ "${srcdir}" = "." ]; then
|
|
# Use ${ml_realsrcdir} instead of ${srcdir} here to account for ${subdir}.
|
|
# ${with_target_subdir} = "." for native, otherwise target alias.
|
|
if [ "${with_target_subdir}" = "." ]; then
|
|
if [ -f ${ml_realsrcdir}/../config-ml.in ]; then
|
|
ml_toplevel_p=yes
|
|
fi
|
|
else
|
|
if [ -f ${ml_realsrcdir}/../../config-ml.in ]; then
|
|
ml_toplevel_p=yes
|
|
fi
|
|
fi
|
|
else
|
|
# Use ${ml_realsrcdir} instead of ${srcdir} here to account for ${subdir}.
|
|
if [ -f ${ml_realsrcdir}/../config-ml.in ]; then
|
|
ml_toplevel_p=yes
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# If this is the library's top level directory, set multidirs to the
|
|
# multilib subdirs to support. This lives at the top because we need
|
|
# `multidirs' set right away.
|
|
|
|
if [ "${ml_toplevel_p}" = yes ]; then
|
|
|
|
multidirs=
|
|
for i in `${CC-gcc} --print-multi-lib 2>/dev/null`; do
|
|
dir=`echo $i | sed -e 's/;.*$//'`
|
|
if [ "${dir}" = "." ]; then
|
|
true
|
|
else
|
|
if [ -z "${multidirs}" ]; then
|
|
multidirs="${dir}"
|
|
else
|
|
multidirs="${multidirs} ${dir}"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# Target libraries are configured for the host they run on, so we check
|
|
# $host here, not $target.
|
|
|
|
case "${host}" in
|
|
arc-*-elf*)
|
|
if [ x$enable_biendian != xyes ]
|
|
then
|
|
old_multidirs=${multidirs}
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "${x}" in
|
|
*be*) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
;;
|
|
arm-*-*)
|
|
if [ x"$enable_fpu" = xno ]
|
|
then
|
|
old_multidirs=${multidirs}
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "${x}" in
|
|
*fpu*) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
if [ x"$enable_26bit" = xno ]
|
|
then
|
|
old_multidirs=${multidirs}
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "${x}" in
|
|
*26bit*) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
if [ x"$enable_underscore" = xno ]
|
|
then
|
|
old_multidirs=${multidirs}
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "${x}" in
|
|
*under*) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
if [ x"$enable_interwork" = xno ]
|
|
then
|
|
old_multidirs=${multidirs}
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "${x}" in
|
|
*interwork*) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
if [ x$enable_biendian = xno ]
|
|
then
|
|
old_multidirs="${multidirs}"
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "$x" in
|
|
*le* ) : ;;
|
|
*be* ) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
if [ x"$enable_nofmult" = xno ]
|
|
then
|
|
old_multidirs="${multidirs}"
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "$x" in
|
|
*nofmult* ) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
;;
|
|
m68*-*-*)
|
|
if [ x$enable_softfloat = xno ]
|
|
then
|
|
old_multidirs="${multidirs}"
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "$x" in
|
|
*soft-float* ) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
if [ x$enable_m68881 = xno ]
|
|
then
|
|
old_multidirs="${multidirs}"
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "$x" in
|
|
*m68881* ) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
if [ x$enable_m68000 = xno ]
|
|
then
|
|
old_multidirs="${multidirs}"
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "$x" in
|
|
*m68000* ) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
if [ x$enable_m68020 = xno ]
|
|
then
|
|
old_multidirs="${multidirs}"
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "$x" in
|
|
*m68020* ) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
;;
|
|
mips*-*-*)
|
|
if [ x$enable_single_float = xno ]
|
|
then
|
|
old_multidirs="${multidirs}"
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "$x" in
|
|
*single* ) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
if [ x$enable_biendian = xno ]
|
|
then
|
|
old_multidirs="${multidirs}"
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "$x" in
|
|
*el* ) : ;;
|
|
*eb* ) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
if [ x$enable_softfloat = xno ]
|
|
then
|
|
old_multidirs="${multidirs}"
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "$x" in
|
|
*soft-float* ) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
case " $multidirs " in
|
|
*" mabi=64 "*)
|
|
# We will not be able to create libraries with -mabi=64 if
|
|
# we cannot even link a trivial program. It usually
|
|
# indicates the 64bit libraries are missing.
|
|
if echo 'main() {}' > conftest.c &&
|
|
${CC-gcc} -mabi=64 conftest.c -o conftest; then
|
|
:
|
|
else
|
|
echo Could not link program with -mabi=64, disabling it.
|
|
old_multidirs="${multidirs}"
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "$x" in
|
|
*mabi=64* ) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
rm -f conftest.c conftest
|
|
;;
|
|
esac
|
|
;;
|
|
powerpc*-*-* | rs6000*-*-*)
|
|
if [ x$enable_aix64 = xno ]
|
|
then
|
|
old_multidirs="${multidirs}"
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "$x" in
|
|
*ppc64* ) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
if [ x$enable_pthread = xno ]
|
|
then
|
|
old_multidirs="${multidirs}"
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "$x" in
|
|
*pthread* ) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
if [ x$enable_softfloat = xno ]
|
|
then
|
|
old_multidirs="${multidirs}"
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "$x" in
|
|
*soft-float* ) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
if [ x$enable_powercpu = xno ]
|
|
then
|
|
old_multidirs="${multidirs}"
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "$x" in
|
|
power | */power | */power/* ) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
if [ x$enable_powerpccpu = xno ]
|
|
then
|
|
old_multidirs="${multidirs}"
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "$x" in
|
|
*powerpc* ) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
if [ x$enable_powerpcos = xno ]
|
|
then
|
|
old_multidirs="${multidirs}"
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "$x" in
|
|
*mcall-linux* | *mcall-solaris* ) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
if [ x$enable_biendian = xno ]
|
|
then
|
|
old_multidirs="${multidirs}"
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "$x" in
|
|
*mlittle* | *mbig* ) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
if [ x$enable_sysv = xno ]
|
|
then
|
|
old_multidirs="${multidirs}"
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "$x" in
|
|
*mcall-sysv* ) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
;;
|
|
sparc*-*-*)
|
|
case " $multidirs " in
|
|
*" m64 "*)
|
|
# We will not be able to create libraries with -m64 if
|
|
# we cannot even link a trivial program. It usually
|
|
# indicates the 64bit libraries are missing.
|
|
if echo 'main() {}' > conftest.c &&
|
|
${CC-gcc} -m64 conftest.c -o conftest; then
|
|
:
|
|
else
|
|
echo Could not link program with -m64, disabling it.
|
|
old_multidirs="${multidirs}"
|
|
multidirs=""
|
|
for x in ${old_multidirs}; do
|
|
case "$x" in
|
|
*m64* ) : ;;
|
|
*) multidirs="${multidirs} ${x}" ;;
|
|
esac
|
|
done
|
|
fi
|
|
rm -f conftest.c conftest
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
# Remove extraneous blanks from multidirs.
|
|
# Tests like `if [ -n "$multidirs" ]' require it.
|
|
multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'`
|
|
|
|
# Add code to library's top level makefile to handle building the multilib
|
|
# subdirs.
|
|
|
|
cat > Multi.tem <<\EOF
|
|
|
|
PWD_COMMAND=$${PWDCMD-pwd}
|
|
|
|
# FIXME: There should be an @-sign in front of the `if'.
|
|
# Leave out until this is tested a bit more.
|
|
multi-do:
|
|
if [ -z "$(MULTIDIRS)" ]; then \
|
|
true; \
|
|
else \
|
|
rootpre=`${PWD_COMMAND}`/; export rootpre; \
|
|
srcrootpre=`cd $(srcdir); ${PWD_COMMAND}`/; export srcrootpre; \
|
|
lib=`echo $${rootpre} | sed -e 's,^.*/\([^/][^/]*\)/$$,\1,'`; \
|
|
compiler="$(CC)"; \
|
|
for i in `$${compiler} --print-multi-lib 2>/dev/null`; do \
|
|
dir=`echo $$i | sed -e 's/;.*$$//'`; \
|
|
if [ "$${dir}" = "." ]; then \
|
|
true; \
|
|
else \
|
|
if [ -d ../$${dir}/$${lib} ]; then \
|
|
flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
|
|
if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) \
|
|
CFLAGS="$(CFLAGS) $${flags}" \
|
|
CCASFLAGS="$(CCASFLAGS) $${flags}" \
|
|
FCFLAGS="$(FCFLAGS) $${flags}" \
|
|
FFLAGS="$(FFLAGS) $${flags}" \
|
|
ADAFLAGS="$(ADAFLAGS) $${flags}" \
|
|
prefix="$(prefix)" \
|
|
exec_prefix="$(exec_prefix)" \
|
|
GCJFLAGS="$(GCJFLAGS) $${flags}" \
|
|
CXXFLAGS="$(CXXFLAGS) $${flags}" \
|
|
LIBCFLAGS="$(LIBCFLAGS) $${flags}" \
|
|
LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \
|
|
LDFLAGS="$(LDFLAGS) $${flags}" \
|
|
MULTIFLAGS="$${flags}" \
|
|
DESTDIR="$(DESTDIR)" \
|
|
INSTALL="$(INSTALL)" \
|
|
INSTALL_DATA="$(INSTALL_DATA)" \
|
|
INSTALL_PROGRAM="$(INSTALL_PROGRAM)" \
|
|
INSTALL_SCRIPT="$(INSTALL_SCRIPT)" \
|
|
$(DO)); then \
|
|
true; \
|
|
else \
|
|
exit 1; \
|
|
fi; \
|
|
else true; \
|
|
fi; \
|
|
fi; \
|
|
done; \
|
|
fi
|
|
|
|
# FIXME: There should be an @-sign in front of the `if'.
|
|
# Leave out until this is tested a bit more.
|
|
multi-clean:
|
|
if [ -z "$(MULTIDIRS)" ]; then \
|
|
true; \
|
|
else \
|
|
lib=`${PWD_COMMAND} | sed -e 's,^.*/\([^/][^/]*\)$$,\1,'`; \
|
|
for dir in Makefile $(MULTIDIRS); do \
|
|
if [ -f ../$${dir}/$${lib}/Makefile ]; then \
|
|
if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) $(DO)); \
|
|
then true; \
|
|
else exit 1; \
|
|
fi; \
|
|
else true; \
|
|
fi; \
|
|
done; \
|
|
fi
|
|
EOF
|
|
|
|
cat ${Makefile} Multi.tem > Makefile.tem
|
|
rm -f ${Makefile} Multi.tem
|
|
mv Makefile.tem ${Makefile}
|
|
|
|
fi # ${ml_toplevel_p} = yes
|
|
|
|
if [ "${ml_verbose}" = --verbose ]; then
|
|
echo "Adding multilib support to Makefile in ${ml_realsrcdir}"
|
|
if [ "${ml_toplevel_p}" = yes ]; then
|
|
echo "multidirs=${multidirs}"
|
|
fi
|
|
echo "with_multisubdir=${with_multisubdir}"
|
|
fi
|
|
|
|
if [ "${srcdir}" = "." ]; then
|
|
if [ "${with_target_subdir}" != "." ]; then
|
|
ml_srcdotdot="../"
|
|
else
|
|
ml_srcdotdot=""
|
|
fi
|
|
else
|
|
ml_srcdotdot=""
|
|
fi
|
|
|
|
if [ -z "${with_multisubdir}" ]; then
|
|
ml_subdir=
|
|
ml_builddotdot=
|
|
: # ml_srcdotdot= # already set
|
|
else
|
|
ml_subdir="/${with_multisubdir}"
|
|
# The '[^/][^/]*' appears that way to work around a SunOS sed bug.
|
|
ml_builddotdot=`echo ${with_multisubdir} | sed -e 's:[^/][^/]*:..:g'`/
|
|
if [ "$srcdir" = "." ]; then
|
|
ml_srcdotdot=${ml_srcdotdot}${ml_builddotdot}
|
|
else
|
|
: # ml_srcdotdot= # already set
|
|
fi
|
|
fi
|
|
|
|
if [ "${ml_toplevel_p}" = yes ]; then
|
|
ml_do='$(MAKE)'
|
|
ml_clean='$(MAKE)'
|
|
else
|
|
ml_do=true
|
|
ml_clean=true
|
|
fi
|
|
|
|
# TOP is used by newlib and should not be used elsewhere for this purpose.
|
|
# MULTI{SRC,BUILD}TOP are the proper ones to use. MULTISRCTOP is empty
|
|
# when srcdir != builddir. MULTIBUILDTOP is always some number of ../'s.
|
|
# FIXME: newlib needs to be updated to use MULTI{SRC,BUILD}TOP so we can
|
|
# delete TOP. Newlib may wish to continue to use TOP for its own purposes
|
|
# of course.
|
|
# MULTIDIRS is non-empty for the cpu top level Makefile (eg: newlib/Makefile)
|
|
# and lists the subdirectories to recurse into.
|
|
# MULTISUBDIR is non-empty in each cpu subdirectory's Makefile
|
|
# (eg: newlib/h8300h/Makefile) and is the installed subdirectory name with
|
|
# a leading '/'.
|
|
# MULTIDO is used for targets like all, install, and check where
|
|
# $(FLAGS_TO_PASS) augmented with the subdir's compiler option is needed.
|
|
# MULTICLEAN is used for the *clean targets.
|
|
#
|
|
# ??? It is possible to merge MULTIDO and MULTICLEAN into one. They are
|
|
# currently kept separate because we don't want the *clean targets to require
|
|
# the existence of the compiler (which MULTIDO currently requires) and
|
|
# therefore we'd have to record the directory options as well as names
|
|
# (currently we just record the names and use --print-multi-lib to get the
|
|
# options).
|
|
|
|
sed -e "s:^TOP[ ]*=[ ]*\([./]*\)[ ]*$:TOP = ${ml_builddotdot}\1:" \
|
|
-e "s:^MULTISRCTOP[ ]*=.*$:MULTISRCTOP = ${ml_srcdotdot}:" \
|
|
-e "s:^MULTIBUILDTOP[ ]*=.*$:MULTIBUILDTOP = ${ml_builddotdot}:" \
|
|
-e "s:^MULTIDIRS[ ]*=.*$:MULTIDIRS = ${multidirs}:" \
|
|
-e "s:^MULTISUBDIR[ ]*=.*$:MULTISUBDIR = ${ml_subdir}:" \
|
|
-e "s:^MULTIDO[ ]*=.*$:MULTIDO = $ml_do:" \
|
|
-e "s:^MULTICLEAN[ ]*=.*$:MULTICLEAN = $ml_clean:" \
|
|
${Makefile} > Makefile.tem
|
|
rm -f ${Makefile}
|
|
mv Makefile.tem ${Makefile}
|
|
|
|
# If this is the library's top level, configure each multilib subdir.
|
|
# This is done at the end because this is the loop that runs configure
|
|
# in each multilib subdir and it seemed reasonable to finish updating the
|
|
# Makefile before going on to configure the subdirs.
|
|
|
|
if [ "${ml_toplevel_p}" = yes ]; then
|
|
|
|
# We must freshly configure each subdirectory. This bit of code is
|
|
# actually partially stolen from the main configure script. FIXME.
|
|
|
|
if [ -n "${multidirs}" ] && [ -z "${ml_norecursion}" ]; then
|
|
|
|
if [ "${ml_verbose}" = --verbose ]; then
|
|
echo "Running configure in multilib subdirs ${multidirs}"
|
|
echo "pwd: `${PWDCMD-pwd}`"
|
|
fi
|
|
|
|
ml_origdir=`${PWDCMD-pwd}`
|
|
ml_libdir=`echo $ml_origdir | sed -e 's,^.*/,,'`
|
|
# cd to top-level-build-dir/${with_target_subdir}
|
|
cd ..
|
|
|
|
for ml_dir in ${multidirs}; do
|
|
|
|
if [ "${ml_verbose}" = --verbose ]; then
|
|
echo "Running configure in multilib subdir ${ml_dir}"
|
|
echo "pwd: `${PWDCMD-pwd}`"
|
|
fi
|
|
|
|
if [ -d ${ml_dir} ]; then true; else
|
|
# ``mkdir -p ${ml_dir}'' See also mkinstalldirs.
|
|
pathcomp=""
|
|
for d in `echo ":${ml_dir}" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`; do
|
|
pathcomp="$pathcomp$d"
|
|
case "$pathcomp" in
|
|
-* ) pathcomp=./$pathcomp ;;
|
|
esac
|
|
if test ! -d "$pathcomp"; then
|
|
echo "mkdir $pathcomp" 1>&2
|
|
mkdir "$pathcomp" > /dev/null 2>&1 || lasterr=$?
|
|
fi
|
|
if test ! -d "$pathcomp"; then
|
|
exit $lasterr
|
|
fi
|
|
pathcomp="$pathcomp/"
|
|
done
|
|
fi
|
|
if [ -d ${ml_dir}/${ml_libdir} ]; then true; else mkdir ${ml_dir}/${ml_libdir}; fi
|
|
|
|
# Eg: if ${ml_dir} = m68000/m68881, dotdot = ../../
|
|
dotdot=../`echo ${ml_dir} | sed -e 's|[^/]||g' -e 's|/|../|g'`
|
|
|
|
case ${srcdir} in
|
|
".")
|
|
echo Building symlink tree in `${PWDCMD-pwd}`/${ml_dir}/${ml_libdir}
|
|
if [ "${with_target_subdir}" != "." ]; then
|
|
ml_unsubdir="../"
|
|
else
|
|
ml_unsubdir=""
|
|
fi
|
|
(cd ${ml_dir}/${ml_libdir};
|
|
../${dotdot}${ml_unsubdir}symlink-tree ../${dotdot}${ml_unsubdir}${ml_libdir} "")
|
|
if [ -f ${ml_dir}/${ml_libdir}/Makefile ]; then
|
|
if [ x"${MAKE}" = x ]; then
|
|
(cd ${ml_dir}/${ml_libdir}; make distclean)
|
|
else
|
|
(cd ${ml_dir}/${ml_libdir}; ${MAKE} distclean)
|
|
fi
|
|
fi
|
|
ml_newsrcdir="."
|
|
ml_srcdiroption=
|
|
multisrctop=${dotdot}
|
|
;;
|
|
*)
|
|
case "${srcdir}" in
|
|
/* | [A-Za-z]:[\\/]* ) # absolute path
|
|
ml_newsrcdir=${srcdir}
|
|
;;
|
|
*) # otherwise relative
|
|
ml_newsrcdir=${dotdot}${srcdir}
|
|
;;
|
|
esac
|
|
ml_srcdiroption="-srcdir=${ml_newsrcdir}"
|
|
multisrctop=
|
|
;;
|
|
esac
|
|
|
|
case "${progname}" in
|
|
/* | [A-Za-z]:[\\/]* ) ml_recprog=${progname} ;;
|
|
*) ml_recprog=${dotdot}${progname} ;;
|
|
esac
|
|
|
|
# FIXME: POPDIR=${PWD=`pwd`} doesn't work here.
|
|
ML_POPDIR=`${PWDCMD-pwd}`
|
|
cd ${ml_dir}/${ml_libdir}
|
|
|
|
if [ -f ${ml_newsrcdir}/configure ]; then
|
|
ml_recprog="${ml_newsrcdir}/configure"
|
|
fi
|
|
|
|
# find compiler flag corresponding to ${ml_dir}
|
|
for i in `${CC-gcc} --print-multi-lib 2>/dev/null`; do
|
|
dir=`echo $i | sed -e 's/;.*$//'`
|
|
if [ "${dir}" = "${ml_dir}" ]; then
|
|
flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`
|
|
break
|
|
fi
|
|
done
|
|
ml_config_env='CC="${CC_}$flags" CXX="${CXX_}$flags" F77="${F77_}$flags" GCJ="${GCJ_}$flags" GFORTRAN="${GFORTRAN_}$flags"'
|
|
|
|
if [ "${with_target_subdir}" = "." ]; then
|
|
CC_=$CC' '
|
|
CXX_=$CXX' '
|
|
F77_=$F77' '
|
|
GCJ_=$GCJ' '
|
|
GFORTRAN_=$GFORTRAN' '
|
|
else
|
|
# Create a regular expression that matches any string as long
|
|
# as ML_POPDIR.
|
|
popdir_rx=`echo ${ML_POPDIR} | sed 's,.,.,g'`
|
|
CC_=
|
|
for arg in ${CC}; do
|
|
case $arg in
|
|
-[BIL]"${ML_POPDIR}"/*)
|
|
CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\1/p"`' ' ;;
|
|
"${ML_POPDIR}"/*)
|
|
CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
|
|
*)
|
|
CC_="${CC_}${arg} " ;;
|
|
esac
|
|
done
|
|
|
|
CXX_=
|
|
for arg in ${CXX}; do
|
|
case $arg in
|
|
-[BIL]"${ML_POPDIR}"/*)
|
|
CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
|
|
"${ML_POPDIR}"/*)
|
|
CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
|
|
*)
|
|
CXX_="${CXX_}${arg} " ;;
|
|
esac
|
|
done
|
|
|
|
F77_=
|
|
for arg in ${F77}; do
|
|
case $arg in
|
|
-[BIL]"${ML_POPDIR}"/*)
|
|
F77_="${F77_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
|
|
"${ML_POPDIR}"/*)
|
|
F77_="${F77_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
|
|
*)
|
|
F77_="${F77_}${arg} " ;;
|
|
esac
|
|
done
|
|
|
|
GCJ_=
|
|
for arg in ${GCJ}; do
|
|
case $arg in
|
|
-[BIL]"${ML_POPDIR}"/*)
|
|
GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
|
|
"${ML_POPDIR}"/*)
|
|
GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
|
|
*)
|
|
GCJ_="${GCJ_}${arg} " ;;
|
|
esac
|
|
done
|
|
|
|
GFORTRAN_=
|
|
for arg in ${GFORTRAN}; do
|
|
case $arg in
|
|
-[BIL]"${ML_POPDIR}"/*)
|
|
GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
|
|
"${ML_POPDIR}"/*)
|
|
GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
|
|
*)
|
|
GFORTRAN_="${GFORTRAN_}${arg} " ;;
|
|
esac
|
|
done
|
|
|
|
if test "x${LD_LIBRARY_PATH+set}" = xset; then
|
|
LD_LIBRARY_PATH_=
|
|
for arg in `echo "$LD_LIBRARY_PATH" | tr ':' ' '`; do
|
|
case "$arg" in
|
|
"${ML_POPDIR}"/*)
|
|
arg=`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`
|
|
;;
|
|
esac
|
|
if test "x$LD_LIBRARY_PATH_" != x; then
|
|
LD_LIBRARY_PATH_=$LD_LIBRARY_PATH_:$arg
|
|
else
|
|
LD_LIBRARY_PATH_=$arg
|
|
fi
|
|
done
|
|
ml_config_env="$ml_config_env LD_LIBRARY_PATH=$LD_LIBRARY_PATH_"
|
|
fi
|
|
|
|
if test "x${SHLIB_PATH+set}" = xset; then
|
|
SHLIB_PATH_=
|
|
for arg in `echo "$SHLIB_PATH" | tr ':' ' '`; do
|
|
case "$arg" in
|
|
"${ML_POPDIR}"/*)
|
|
arg=`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`
|
|
;;
|
|
esac
|
|
if test "x$SHLIB_PATH_" != x; then
|
|
SHLIB_PATH_=$SHLIB_PATH_:$arg
|
|
else
|
|
SHLIB_PATH_=$arg
|
|
fi
|
|
done
|
|
ml_config_env="$ml_config_env SHLIB_PATH=$SHLIB_PATH_"
|
|
fi
|
|
fi
|
|
|
|
if eval ${ml_config_env} ${ml_config_shell} ${ml_recprog} \
|
|
--with-multisubdir=${ml_dir} --with-multisrctop=${multisrctop} \
|
|
${ac_configure_args} ${ml_config_env} ${ml_srcdiroption} ; then
|
|
true
|
|
else
|
|
exit 1
|
|
fi
|
|
|
|
cd ${ML_POPDIR}
|
|
|
|
done
|
|
|
|
cd ${ml_origdir}
|
|
fi
|
|
|
|
fi # ${ml_toplevel_p} = yes
|
|
fi # ${enable_multilib} = yes
|