Thu Oct 26 10:23:14 1995 steve chamberlain <sac@slash.cygnus.com>
[deliverable/binutils-gdb.git] / cfg-ml-pos.in
index c0798a38c35ff7c6821d581e76e4c8dae0abd647..34030986d42deef9c01ec9bbc927e5c627cf0ac9 100644 (file)
@@ -12,51 +12,51 @@ 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:" \
+  # The '[^/][^/]*' appears that way to work around a SunOS sed bug.
+  dotdot=`echo ${with_multisubdir} | sed -e 's:[^/][^/]*:..:g'`
+  # TOP is used by newlib and should not be used elsewhere for this purpose.
+  # MULTITOP is the proper one to use.
+  # FIXME: newlib needs to be updated to use MULTITOP so we can delete TOP.
+  # Newlib may wish to continue to use TOP for its own purposes of course.
+  sed -e "s:^TOP[      ]*=[    ]*\([./]*\)[    ]*$:TOP = ${dotdot}/\1:" \
+      -e "s:^MULTITOP[         ]*=.*$:MULTITOP = ${dotdot}:" \
        ${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.
+# 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).
 
-cat > Multi.tem <<EOF
-MULTIDIRS = ${multidirs}
-MULTISUBDIR = ${multisubdir}
-EOF
-cat Multi.tem ${Makefile} > Makefile.tem
-rm -f Multi.tem ${Makefile}
+sed -e "s:^MULTIDIRS[  ]*=.*$:MULTIDIRS = ${multidirs}:" \
+    -e "s:^MULTISUBDIR[        ]*=.*$:MULTISUBDIR = ${multisubdir}:" \
+    -e 's:^MULTIDO[    ]*=.*$:MULTIDO = $(MAKE):' \
+    -e 's:^MULTICLEAN[         ]*=.*$:MULTICLEAN = $(MAKE):' \
+       ${Makefile} > Makefile.tem
+rm -f ${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}
+# ??? May wish to add a check to avoid appending this to Makefiles that
+# don't need it.  It's not necessary, but is cleaner.
 
-       cat > Multi.tem <<\EOF
+cat > Multi.tem <<\EOF
 
-# FIXME: We use --print-multi-lib but the others don't.  Standardize.
-all-multi:
+# 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 \
@@ -75,7 +75,7 @@ all-multi:
                                CXXFLAGS="$(CXXFLAGS) $${flags}" \
                                LIBCFLAGS="$(LIBCFLAGS) $${flags}" \
                                LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \
-                               all); then \
+                               $(DO)); then \
                  true; \
                else \
                  exit 1; \
@@ -86,28 +86,26 @@ all-multi:
          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
+# 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 \
+         for dir in Makefile $(MULTIDIRS); do \
+           if [ -f ./$$dir/Makefile ]; then \
+             if (cd ./$$dir; $(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
+cat ${Makefile} Multi.tem > Makefile.tem
+rm -f ${Makefile} Multi.tem
+mv Makefile.tem ${Makefile}
 
 fi # "${enable_multilib}" = yes
This page took 0.024219 seconds and 4 git commands to generate.