* config-com.multi: New file.
authorDavid Edelsohn <dje.gcc@gmail.com>
Fri, 21 Jul 1995 17:42:32 +0000 (17:42 +0000)
committerDavid Edelsohn <dje.gcc@gmail.com>
Fri, 21 Jul 1995 17:42:32 +0000 (17:42 +0000)
* config-pos.multi: New file.

.Sanitize
ChangeLog
config-com.multi [new file with mode: 0644]
config-pos.multi [new file with mode: 0644]

index 3cd8e7aa261747f3ccdfca5fc75538bc852dc322..9639fd15962582ef12865aed3157abbcb01928a4 100644 (file)
--- a/.Sanitize
+++ b/.Sanitize
@@ -109,6 +109,8 @@ ChangeLog
 Makefile.in
 README
 config
+config-com.multi
+config-pos.multi
 config.guess
 config.sub
 configure
index 3462d3970a57c1272ea7cf12c7afe11e994d7cdc..7150b8e1fe9a9d2a54ef7709f83d53aa6f769110 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+Fri Jul 21 10:41:12 1995  Doug Evans  <dje@canuck.cygnus.com>
+
+       * config-com.multi: New file.
+       * config-pos.multi: New file.
+
+Wed Jul 19 00:37:27 1995  Jeffrey A. Law  <law@rtl.cygnus.com>
+
+       * COPYING.NEWLIB: Add HP free copyright to list.
+
+Tue Jul 18 10:58:51 1995  Michael Meissner  <meissner@tiktok.cygnus.com>
+
+       * config.sub: Recognize -eabi* for the system, not just -eabi.
+
+Mon Jul  3 13:44:51 1995  Steve Chamberlain  <sac@slash.cygnus.com>
+
+       * Makfile.in (DLLTOOL_FOR_TARGET): New name, pass it down.
+       * config.sub, configure.in (win32): New target and host.
+
 Wed Jun 28 23:57:08 1995  Steve Chamberlain  <sac@slash.cygnus.com>
 
        * configure.in: Add i386-pe configuration.
diff --git a/config-com.multi b/config-com.multi
new file mode 100644 (file)
index 0000000..bd075ce
--- /dev/null
@@ -0,0 +1,209 @@
+# Configure fragment invoked in the common section for subdirs
+# wanting multilib support.
+#
+# The common section was chosen because xiberty clobbers $srcdir in the
+# common section of its configure.in.
+#
+# The intent is to keep as much of this in one place as possible (and out
+# of each subdirectory, eg: newlib, libio, etc.) until the right way to do
+# this (ha ha) is decided upon.
+#
+# This is where a target selects what multilib directories to build.
+# It is advisable to support a few --enable/--disable options to let the
+# user select which libraries s/he really wants.
+#
+# 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.
+#
+# FIXME: It would be better if we could use the --print-multi-lib switch to
+# gcc to get the list of directories to build, but at this point the compiler
+# has not been built.
+
+# Only do this if --enable-multilib.
+# And only if at the top level, not a multilib subdirectory.
+
+if [ "${enable_multilib}" = yes -a -z "${with_multisubdir}" ]; then
+
+# Doing this in the common section means ${target} isn't set yet, so compute
+# a copy here.  This is a bit kludgey, but again the current (short term) goal
+# is to be as unobtrusive (sp?) to the rest of the sources as possible.
+
+if result=`${config_shell} ${configsub} ${target_alias}` ; then
+    true
+else
+    echo "Unrecognized target system name ${target_alias}." 1>&2
+    exit 1
+fi
+target_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'`
+target_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`
+target_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`
+target=${target_cpu}-${target_vendor}-${target_os}
+
+# FIXME: Perhaps we can do something like the following instead.
+# Fetch from gcc the multilib directories to use if we can.
+# if [ -f ${srcdir}/../gcc/genmultilib -a -f ../gcc/Makefile ]; then
+#   options=`grep "^MULTILIB_OPTIONS" ../gcc/Makefile | sed -e 's/^.*=//'`
+#   multidirs=`${srcdir}/../gcc/genmultilib "$options" | \
+#      sed -e 's/^#define.*//' -e 's/^[.].*//' -e 's/".*//' -e 's/ .*//'`
+# else
+#   multidirs=""
+# fi
+
+case "${target}" in
+# start-sanitize-arc
+arc-sbp-elf*)
+       if [ x$enable_biendian = xyes ]
+       then
+               multidirs="be host graphics audio be/host be/graphics be/audio"
+       else
+               multidirs="host graphics audio"
+       fi
+       ;;
+arc-*-*)
+       multidirs="be"
+       ;;
+# end-sanitize-arc
+hppa*-*-*)
+       multidirs="soft-float"
+       ;;
+m68*-*-*)
+       multidirs="m68000 m68020 m68881 msoft-float m68000/m68881 m68000/msoft-float m68020/m68881 m68020/msoft-float"
+       ;;
+i960-*-*)
+       multidirs=float
+       ;;
+sparclite-*-* | sparclitefrw*-*-*)
+       multidirs="mfpu msoft-float mflat mno-flat mfpu/mflat mfpu/mno-flat msoft-float/mflat msoft-float/mno-flat"
+       ;;
+sparc-*-* | sparcfrw*-*-*)
+       multidirs="soft v8 soft/v8"
+       ;;
+z8k-*-*)
+       multidirs="z8001"
+       ;;
+h8300-*-*)
+       multidirs=h8300h
+       ;;
+h8500-*-*)
+       multidirs="mbig msmall mcompact mmedium"
+       ;;
+sh-*-*)
+       multidirs="ml"
+       ;;
+mips*-*-*)
+       # Note that not all of these will be built for a particular
+       # target; what is build depends upon the output gcc
+       # --print-multi-lib.  We configure them all, to make our life
+       # simpler here.  If somebody cares about configuration
+       # efficiency, they will need to switch off on the various
+       # targets to configure just the directories needed for that
+       # target.
+       # 
+       # In the long run, it would be better to configure based on
+       # the output of gcc --print-multi-lib, but, to do that, we
+       # would have to build gcc before configuring newlib.
+       #
+       # Default to including the single-float directories.
+       if [ x$enable_single_float = x ]; then
+         enable_single_float=yes
+       fi
+       if [ x$enable_single_float = xyes ]; then
+         multidirs="soft-float single el eb mips1 mips3 soft-float/el soft-float/eb soft-float/mips1 soft-float/mips3 soft-float/el/mips1 soft-float/el/mips3 soft-float/eb/mips1 soft-float/eb/mips3 single/el single/eb single/mips1 single/mips3 single/el/mips1 single/el/mips3 single/eb/mips1 single/eb/mips3 el/mips1 el/mips3 eb/mips1 eb/mips3"
+       else
+         multidirs="soft-float el eb mips1 mips3 soft-float/el soft-float/eb soft-float/mips1 soft-float/mips3 soft-float/el/mips1 soft-float/el/mips3 soft-float/eb/mips1 soft-float/eb/mips3 el/mips1 el/mips3 eb/mips1 eb/mips3"
+       fi
+       ;;
+powerpc-*-eabiaix*)
+       multidirs="soft-float relocatable little-endian call-sysv little-endian/call-sysv relocatable/little-endian relocatable/call-sysv relocatable/little-endian/call-sysv soft-float/relocatable soft-float/little-endian soft-float/call-sysv soft-float/little-endian/call-sysv soft-float/relocatable/little-endian soft-float/relocatable/call-sysv soft-float/relocatable/little-endian/call-sysv";;
+       ;;
+powerpc-*-eabi* | powerpc-*-elf* | powerpc-*-sysv4*)
+       multidirs="soft-float relocatable little-endian call-aix little-endian/call-aix relocatable/little-endian relocatable/call-aix relocatable/little-endian/call-aix soft-float/relocatable soft-float/little-endian soft-float/call-aix soft-float/little-endian/call-aix soft-float/relocatable/little-endian soft-float/relocatable/call-aix soft-float/relocatable/little-endian/call-aix";;
+       ;;
+powerpcle-*-eabi* | powerpcle-*-elf* | powerpcle-*-sysv4*)
+       multidirs="soft-float relocatable big-endian call-aix big-endian/call-aix relocatable/big-endian relocatable/call-aix relocatable/big-endian/call-aix soft-float/relocatable soft-float/big-endian soft-float/call-aix soft-float/big-endian/call-aix soft-float/relocatable/big-endian soft-float/relocatable/call-aix soft-float/relocatable/big-endian/call-aix";;
+       ;;
+*)
+       multidirs=
+       ;;
+esac
+
+# We must freshly configure each subdirectory.  This bit of code is
+# actually partially stolen from the main configure script.  FIXME.
+
+if [ -n "${multidirs}" ] && [ -z "${norecursion}" ]; then
+  for dir in ${multidirs}; do
+
+    if [ -d ${dir} ]; then true; else mkdir ${dir}; fi
+
+    dotdot=../`echo ${dir} | sed -e 's|[^/]||g' -e 's|/|../|g'`
+
+    case ${srcdir} in
+    ".")
+      echo Building symlink tree in `pwd`/${dir}
+      rm -f tmpconfig
+      cat >tmpconfig <<\EOF
+#!/bin/sh
+for f in `ls -a $1`; do
+  if [ -d $1$f ]; then
+    found=
+    for i in $2; do
+      if [ "$f" = "$i" ]; then
+       found=yes
+      fi
+    done
+    if [ -z "${found}" ]; then
+      if [ -d $f ]; then true; else mkdir $f; fi
+      (cd $f; ../$0 ../$1$f/ "$2")
+    fi
+  else
+    rm -f $f
+    ln -s $1$f .
+  fi
+done
+EOF
+      chmod +x tmpconfig
+      (cd ${dir};
+       ${dotdot}tmpconfig ${dotdot} ". .. CVS tmpconfig ${multidirs}")
+      rm -f tmpconfig
+      srcdiroption=
+      ;;
+    *)
+      case "${srcdir}" in
+      /*) # absolute path
+        newsrcdir=${srcdir}/${configdir}
+        ;;
+      *) # otherwise relative
+        newsrcdir=${dotdot}${srcdir}/${configdir}
+        ;;
+      esac
+      srcdiroption="-srcdir=${newsrcdir}"
+      ;;
+    esac
+
+    case "${progname}" in
+    /*)     recprog=${progname} ;;
+    *)      recprog=${dotdot}${progname} ;;
+    esac
+
+    POPDIR=${PWD=`pwd`}
+    cd ${dir}
+    if eval ${config_shell} ${recprog} ${verbose} \
+       --with-multisubdir=${dir} \
+       ${buildopt} --host=${host_alias} --target=${target_alias} \
+        ${prefixoption} ${tmpdiroption} ${exec_prefixoption} \
+        ${srcdiroption} ${program_prefixoption} ${program_suffixoption} \
+       ${program_transform_nameoption} ${site_option} ${withoptions} \
+       ${withoutoptions} ${enableoptions} ${disableoptions} \
+       ${cache_file_option} ${removing} ${other_options} ${redirect} ; then
+      true
+    else
+      exit 1
+    fi
+
+    cd ${POPDIR}
+
+  done
+fi
+
+fi # ${enable_multilib = yes -a -z ${with_multisubdir}
diff --git a/config-pos.multi b/config-pos.multi
new file mode 100644 (file)
index 0000000..c0798a3
--- /dev/null
@@ -0,0 +1,113 @@
+# Configure fragment invoked in the post-target section for subdirs
+# wanting multilib support.
+# The intent is to keep as much of this in one place as possible (and out
+# of each subdirectory, eg: newlib, libio, etc.) until the right way to do
+# this (ha ha) is decided upon.
+
+# Only do this if --enable-multilib.
+
+if [ "${enable_multilib}" = yes ]; then
+
+if [ -z "${with_multisubdir}" ]; then
+  multisubdir=
+else
+  multisubdir="/${with_multisubdir}"
+  # FIXME: following line needs testing in multilevel dir (eg: m68k).
+  dotdot=`echo ${multisubdir} | sed -e 's:/[^/]*:../:g'`
+  sed -e "s:^TOP[      ]*=[    ]*\([./]*\)[    ]*$:TOP = ${dotdot}\1:" \
+      -e "s:^MULTITOP[         ]*=[    ]*\([./]*\)[    ]*$:MULTITOP = ${dotdot}\1:" \
+       ${Makefile} > Makefile.tem
+  rm -f ${Makefile}
+  mv Makefile.tem ${Makefile}
+fi
+
+# 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 trailing '/'.
+# XXX_MULTI is a set of helpers for all, install, etc.
+# Makefile.in is free to override them since these are prepended to the top.
+
+cat > Multi.tem <<EOF
+MULTIDIRS = ${multidirs}
+MULTISUBDIR = ${multisubdir}
+EOF
+cat Multi.tem ${Makefile} > Makefile.tem
+rm -f Multi.tem ${Makefile}
+mv Makefile.tem ${Makefile}
+
+# Add default definitions for all, install, clean, etc.
+# if the Makefile uses them.
+
+if grep ALL_MULTI ${Makefile} >/dev/null 2>/dev/null
+then
+       cat > Multi.tem <<EOF
+ALL_MULTI = all-multi
+INSTALL_MULTI = install-multi
+MOSTLYCLEAN_MULTI = mostlyclean-multi
+CLEAN_MULTI = clean-multi
+DISTCLEAN_MULTI = distclean-multi
+EOF
+
+       cat Multi.tem ${Makefile} > Makefile.tem
+       rm -f Multi.tem ${Makefile}
+       mv Makefile.tem ${Makefile}
+
+       cat > Multi.tem <<\EOF
+
+# FIXME: We use --print-multi-lib but the others don't.  Standardize.
+all-multi:
+       if [ -z "$(MULTIDIRS)" ]; then \
+         true; \
+       else \
+         rootpre=`pwd`/; export rootpre; \
+         srcrootpre=`cd $(srcdir); pwd`/; export srcrootpre; \
+         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} ]; then \
+               flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
+               if (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) \
+                               CFLAGS="$(CFLAGS) $${flags}" \
+                               CXXFLAGS="$(CXXFLAGS) $${flags}" \
+                               LIBCFLAGS="$(LIBCFLAGS) $${flags}" \
+                               LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \
+                               all); then \
+                 true; \
+               else \
+                 exit 1; \
+               fi; \
+             else true; \
+             fi; \
+           fi; \
+         done; \
+       fi
+
+install-multi mostlyclean-multi clean-multi distclean-multi realclean-multi:
+       if [ -n "$(MULTIDIRS)" ]; then \
+         rootpre=`pwd`/; export rootpre; \
+         srcrootpre=`cd $(srcdir); pwd`/; export srcrootpre; \
+         $(MAKE) DO=`echo $@ | sed -e 's/-multi$$//'` DODIRS="$(MULTIDIRS)" $(FLAGS_TO_PASS) multi_subdir_do; \
+       else true; fi
+
+multi_subdir_do:
+       for i in $(DODIRS); do \
+               if [ -f ./$$i/Makefile ] ; then \
+                       if (cd ./$$i; $(MAKE) $(FLAGS_TO_PASS) $(DO)) ; \
+                       then true ; \
+                       else exit 1 ; \
+                       fi ; \
+               else true; \
+               fi ; \
+       done
+EOF
+
+       cat ${Makefile} Multi.tem > Makefile.tem
+       rm -f ${Makefile} Multi.tem
+       mv Makefile.tem ${Makefile}
+fi
+
+fi # "${enable_multilib}" = yes