This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
another libgcc makeury patch
- To: gcc-patches at gcc dot gnu dot org
- Subject: another libgcc makeury patch
- From: Jason Merrill <jason at cygnus dot com>
- Date: Mon, 5 Jun 2000 21:55:38 -0400
This patch makes libgcc dependencies more sensible. Changing one of
the C++ runtime sources will cause the C++ runtime code to be rebuilt,
but not libgcc2.c, and vice versa. It also removes libgcc.ready,
which no longer serves a purpose.
2000-06-05 Jason Merrill <jason@casey.soma.redhat.com>
* Makefile.in (libgcc.ready): Lose.
(libgcc.mk): Just use mv, not move-if-change.
(LIBGCC_DEPS): New macro.
(libgcc.a): Use it.
(stmp-multilib): Likewise.
* mklibgcc.in (stmp-dirs): New target. Make everything depend on
it rather than the directories themselves.
(LIB2ADD): Depend on the list file rather than 'force'.
Index: Makefile.in
===================================================================
RCS file: /cvs/gcc/egcs/gcc/Makefile.in,v
retrieving revision 1.461
diff -c -p -r1.461 Makefile.in
*** Makefile.in 2000/06/05 06:37:17 1.461
--- Makefile.in 2000/06/06 01:40:57
*************** xlimits.h: glimits.h limitx.h limity.h
*** 941,956 ****
#
# Build libgcc.a.
- # Compiling libgcc.a requires making sure that cc1, etc. have been compiled.
- # But recompiling cc1 should not force recompilation of libgcc.a.
- # If you want to force recompilation, delete libgcc.a.
- libgcc.ready: $(GCC_PASSES) $(LANGUAGES) stmp-int-hdrs $(STMP_FIXPROTO)
- -if [ -f libgcc.ready ] ; then \
- true; \
- else \
- touch libgcc.ready; \
- fi
-
LIB2ADD = $(LIB2ADDEH) $(LIB2FUNCS_EXTRA) $(LANG_LIB2FUNCS)
libgcc.mk: config.status Makefile mklibgcc $(LIB2ADD) xgcc$(exeext)
--- 941,946 ----
*************** libgcc.mk: config.status Makefile mklibg
*** 970,978 ****
MULTILIBS=`$(GCC_FOR_TARGET) --print-multi-lib` \
EXTRA_MULTILIB_PARTS='$(EXTRA_MULTILIB_PARTS)' \
$(SHELL) mklibgcc > tmp-libgcc.mk
! $(SHELL) $(srcdir)/move-if-change tmp-libgcc.mk libgcc.mk
! libgcc.a: libgcc.ready libgcc.mk $(FPBIT) $(DPBIT) $(LIB2ADD)
$(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \
AR_FOR_TARGET="$(AR_FOR_TARGET)" \
--- 960,974 ----
MULTILIBS=`$(GCC_FOR_TARGET) --print-multi-lib` \
EXTRA_MULTILIB_PARTS='$(EXTRA_MULTILIB_PARTS)' \
$(SHELL) mklibgcc > tmp-libgcc.mk
! mv tmp-libgcc.mk libgcc.mk
!
! # All the things that might cause us to want to recompile bits of libgcc.
! LIBGCC_DEPS = $(GCC_PASSES) $(LANGUAGES) stmp-int-hdrs $(STMP_FIXPROTO) \
! libgcc.mk $(srcdir)/libgcc1.c $(srcdir)/libgcc2.c $(CONFIG_H) \
! $(MACHMODE_H) longlong.h frame.h gbl-ctors.h config.status \
! stmp-int-hdrs tsystem.h $(FPBIT) $(DPBIT) $(LIB2ADD)
! libgcc.a: $(LIBGCC_DEPS)
$(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \
AR_FOR_TARGET="$(AR_FOR_TARGET)" \
*************** s-mlib: $(srcdir)/genmultilib Makefile
*** 1003,1009 ****
touch s-mlib
# Build multiple copies of libgcc.a, one for each target switch.
! stmp-multilib: libgcc.ready libgcc.mk $(FPBIT) $(DPBIT)
$(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \
AR_FOR_TARGET="$(AR_FOR_TARGET)" \
--- 999,1005 ----
touch s-mlib
# Build multiple copies of libgcc.a, one for each target switch.
! stmp-multilib: $(LIBGCC_DEPS)
$(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \
AR_FOR_TARGET="$(AR_FOR_TARGET)" \
*************** mostlyclean: $(INTL_MOSTLYCLEAN) lang.mo
*** 2137,2143 ****
# that don't exist in the distribution.
INTL_CLEAN = intl.clean
clean: mostlyclean $(INTL_CLEAN) lang.clean
! -rm -f libgcc.a libgcc.ready
-rm -f *.dvi
-rm -f */*.dvi
-if [ -f md.pre-cpp ]; then \
--- 2133,2139 ----
# that don't exist in the distribution.
INTL_CLEAN = intl.clean
clean: mostlyclean $(INTL_CLEAN) lang.clean
! -rm -f libgcc.a
-rm -f *.dvi
-rm -f */*.dvi
-if [ -f md.pre-cpp ]; then \
Index: mklibgcc.in
===================================================================
RCS file: /cvs/gcc/egcs/gcc/mklibgcc.in,v
retrieving revision 1.12
diff -c -p -r1.12 mklibgcc.in
*** mklibgcc.in 2000/06/03 01:39:51 1.12
--- mklibgcc.in 2000/06/06 01:40:57
*************** make_compile='$(MAKE) GCC_FOR_TARGET="$(
*** 65,77 ****
LANGUAGES="$(LANGUAGES)"'
# Dependancies for libgcc1.c
! libgcc1_c_dep='$(srcdir)/libgcc1.c $(CONFIG_H)'
# Dependancies for libgcc2.c
! libgcc2_c_dep='$(srcdir)/libgcc2.c $(CONFIG_H) $(MACHMODE_H) longlong.h frame.h gbl-ctors.h config.status stmp-int-hdrs tsystem.h'
# Dependancies for fp-bit.c
! fpbit_c_dep='config.status tsystem.h'
#
# Build libgcc1 components.
--- 65,77 ----
LANGUAGES="$(LANGUAGES)"'
# Dependancies for libgcc1.c
! libgcc1_c_dep='stmp-dirs $(srcdir)/libgcc1.c $(CONFIG_H)'
# Dependancies for libgcc2.c
! libgcc2_c_dep='stmp-dirs $(srcdir)/libgcc2.c $(CONFIG_H) $(MACHMODE_H) longlong.h frame.h gbl-ctors.h config.status stmp-int-hdrs tsystem.h'
# Dependancies for fp-bit.c
! fpbit_c_dep='stmp-dirs config.status tsystem.h'
#
# Build libgcc1 components.
*************** case X"$LIBGCC1" in
*** 94,105 ****
flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
out="libgcc/${dir}/${name}${objext}"
! if [ $dir = . ]; then
! libgccdir="libgcc"
! else
! libgccdir="libgcc/${dir}"
! fi
! echo ${out}: ${libgccdir} '$(srcdir)/config/$(LIB1ASMSRC)'
echo " $gcc_compile" $flags -DL$name -xassembler-with-cpp \
-c '$(srcdir)/config/$(LIB1ASMSRC)' -o $out
done
--- 94,100 ----
flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
out="libgcc/${dir}/${name}${objext}"
! echo ${out}: stmp-dirs '$(srcdir)/config/$(LIB1ASMSRC)'
echo " $gcc_compile" $flags -DL$name -xassembler-with-cpp \
-c '$(srcdir)/config/$(LIB1ASMSRC)' -o $out
done
*************** for name in $LIB2FUNCS; do
*** 161,172 ****
flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
out="libgcc/${dir}/${name}${objext}"
! if [ $dir = . ]; then
! libgccdir="libgcc"
! else
! libgccdir="libgcc/${dir}"
! fi
! echo $out: $libgccdir $libgcc2_c_dep
echo " $gcc_compile" '$(MAYBE_USE_COLLECT2)' $flags -DL$name \
-c '$(srcdir)/libgcc2.c' -o $out
done
--- 156,162 ----
flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
out="libgcc/${dir}/${name}${objext}"
! echo $out: $libgcc2_c_dep
echo " $gcc_compile" '$(MAYBE_USE_COLLECT2)' $flags -DL$name \
-c '$(srcdir)/libgcc2.c' -o $out
done
*************** for name in $LIB2FUNCS_EH; do
*** 179,190 ****
flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
out="libgcc/${dir}/${name}${objext}"
! if [ $dir = . ]; then
! libgccdir="libgcc"
! else
! libgccdir="libgcc/${dir}"
! fi
! echo $out: $libgccdir $libgcc2_c_dep
echo " $gcc_compile" '$(MAYBE_USE_COLLECT2)' -fexceptions \
$flags -DL$name -c '$(srcdir)/libgcc2.c' -o $out
done
--- 169,175 ----
flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
out="libgcc/${dir}/${name}${objext}"
! echo $out: $libgcc2_c_dep
echo " $gcc_compile" '$(MAYBE_USE_COLLECT2)' -fexceptions \
$flags -DL$name -c '$(srcdir)/libgcc2.c' -o $out
done
*************** if [ "$FPBIT" ]; then
*** 198,209 ****
flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
out="libgcc/${dir}/${name}${objext}"
! if [ $dir = . ]; then
! libgccdir="libgcc"
! else
! libgccdir="libgcc/${dir}"
! fi
! echo $out: $libgccdir $FPBIT $fpbit_c_dep
echo " $gcc_compile" -DFINE_GRAINED_LIBRARIES $flags -DL$name \
-c $FPBIT -o $out
done
--- 183,189 ----
flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
out="libgcc/${dir}/${name}${objext}"
! echo $out: $FPBIT $fpbit_c_dep
echo " $gcc_compile" -DFINE_GRAINED_LIBRARIES $flags -DL$name \
-c $FPBIT -o $out
done
*************** if [ "$DPBIT" ]; then
*** 218,229 ****
flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
out="libgcc/${dir}/${name}${objext}"
! if [ $dir = . ]; then
! libgccdir="libgcc"
! else
! libgccdir="libgcc/${dir}"
! fi
! echo $out: $libgccdir $DPBIT $fpbit_c_dep
echo " $gcc_compile" -DFINE_GRAINED_LIBRARIES $flags -DL$name \
-c $DPBIT -o $out
done
--- 198,204 ----
flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
out="libgcc/${dir}/${name}${objext}"
! echo $out: $DPBIT $fpbit_c_dep
echo " $gcc_compile" -DFINE_GRAINED_LIBRARIES $flags -DL$name \
-c $DPBIT -o $out
done
*************** for file in $LIB2ADD; do
*** 239,245 ****
fprime=`cat $file`
for f in $fprime; do
! lastout="force"
for ml in $MULTILIBS; do
dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
--- 214,220 ----
fprime=`cat $file`
for f in $fprime; do
! lastout="stmp-dirs $file"
for ml in $MULTILIBS; do
dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
*************** for file in $LIB2ADD; do
*** 268,279 ****
flags="$flags -xassembler-with-cpp"
fi
! if [ $dir = . ]; then
! libgccdir="libgcc"
! else
! libgccdir="libgcc/${dir}"
! fi
! echo $out: $libgccdir $file
echo " $gcc_compile" $flags -c $file -o $out
done
libgcc2_objs="$libgcc2_objs ${oname}${objext}"
--- 243,249 ----
flags="$flags -xassembler-with-cpp"
fi
! echo $out: stmp-dirs $file
echo " $gcc_compile" $flags -c $file -o $out
done
libgcc2_objs="$libgcc2_objs ${oname}${objext}"
*************** for ml in $MULTILIBS; do
*** 305,325 ****
done
echo ""
! all="libgcc"
- echo "libgcc:; -mkdir libgcc"
for ml in $MULTILIBS; do
dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
if [ $dir != . ]; then
! echo "libgcc/${dir}: libgcc; -mkdir libgcc/${dir}"
! echo "${dir}:; -mkdir ${dir}"
! all="$all ${dir} libgcc/${dir}"
fi
all="$all ${dir}/libgcc.a"
done
for f in $EXTRA_MULTILIB_PARTS; do
! lastout="force"
for ml in $MULTILIBS; do
dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
--- 275,299 ----
done
echo ""
! all=stmp-dirs
! dirs=libgcc
for ml in $MULTILIBS; do
dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
if [ $dir != . ]; then
! dirs="$dirs ${dir} libgcc/${dir}"
fi
all="$all ${dir}/libgcc.a"
done
+ echo 'stmp-dirs: force'
+ echo ' for d in '"$dirs"'; do \'
+ echo ' if [ -d $$d ]; then true; else mkdir $$d; fi \'
+ echo ' done'
+ echo ' if [ -f stmp-dirs ]; then true; else touch stmp-dirs; fi'
+
for f in $EXTRA_MULTILIB_PARTS; do
! lastout="stmp-dirs force"
for ml in $MULTILIBS; do
dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;