This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Bug in mklibgcc.in ?
- To: Denis Chertykov <denisc at overta dot ru>
- Subject: Re: Bug in mklibgcc.in ?
- From: Richard Henderson <rth at cygnus dot com>
- Date: Wed, 10 May 2000 16:39:39 -0700
- Cc: gcc at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- References: <200005090753.LAA02368@tigris.overta.ru>
On Tue, May 09, 2000 at 11:53:12AM +0400, Denis Chertykov wrote:
> Is highlighted fragment right ($(srcdir)/config/fp-bit.c) ?
> Why path to fp-bit.c has a hard encoded part `config/fp-bit.c' ?
>
> Few targets (avr, arm, ...) uses something like:
>
> fp-bit.c: $(srcdir)/config/fp-bit.c
> echo '#define FLOAT' > fp-bit.c
> echo '#ifndef __ARMEB__' >> fp-bit.c
> echo '#define FLOAT_BIT_ORDER_MISMATCH' >> fp-bit.c
> echo '#endif' >> fp-bit.c
> cat $(srcdir)/config/fp-bit.c >> fp-bit.c
Oh bother. I was just looking at e.g. ppc that only has
the #define FLOAT. I've reverted this "optimization".
At the same time I removed the use of shell functions.
The 4.3bsd discussion can end now.
r~
* Makefile.in (libgcc.a, stmp-multilib): Depend on FPBIT and DPBIT.
* mklibgcc.in: Rewrite to not use functions. Don't shortcut
dependancies on FPBIT and DPBIT.
Index: Makefile.in
===================================================================
RCS file: /cvs/gcc/egcs/gcc/Makefile.in,v
retrieving revision 1.444
diff -c -p -d -r1.444 Makefile.in
*** Makefile.in 2000/05/09 19:55:46 1.444
--- Makefile.in 2000/05/10 23:16:37
*************** libgcc.mk: config.status Makefile mklibg
*** 972,978 ****
$(SHELL) mklibgcc > tmp-libgcc.mk
$(SHELL) $(srcdir)/move-if-change tmp-libgcc.mk libgcc.mk
! libgcc.a: libgcc2.ready libgcc.mk
$(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \
AR_FOR_TARGET="$(AR_FOR_TARGET)" \
--- 972,978 ----
$(SHELL) mklibgcc > tmp-libgcc.mk
$(SHELL) $(srcdir)/move-if-change tmp-libgcc.mk libgcc.mk
! libgcc.a: libgcc2.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)" \
*************** s-mlib: $(srcdir)/genmultilib Makefile
*** 1003,1009 ****
touch s-mlib
# Build multiple copies of libgcc.a, one for each target switch.
! stmp-multilib: libgcc2.ready libgcc.mk
$(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \
AR_FOR_TARGET="$(AR_FOR_TARGET)" \
--- 1003,1009 ----
touch s-mlib
# Build multiple copies of libgcc.a, one for each target switch.
! stmp-multilib: libgcc2.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)" \
Index: mklibgcc.in
===================================================================
RCS file: /cvs/gcc/egcs/gcc/mklibgcc.in,v
retrieving revision 1.3
diff -c -p -d -r1.3 mklibgcc.in
*** mklibgcc.in 2000/05/03 23:56:03 1.3
--- mklibgcc.in 2000/05/10 23:16:37
*************** EOF
*** 47,103 ****
fi
! #
! # Utility functions
! #
!
! emit_gcc_compile() {
! dst=$1; shift
! src=$1; shift
! flags=$*
!
! echo ' $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES)' \
! $flags -c $src -o $dst
! }
!
! emit_oldcc_compile() {
! dst=$1; shift
! src=$1; shift
! flags=$*
!
! if [ -z "@NO_MINUS_C_MINUS_O@" ]; then
! echo ' $(OLDCC) -DIN_LIBGCC1 $(CCLIBFLAGS) $(INCLUDES)' \
! $flags -c $src -o $dst
! else
! echo ' $(OLDCC) -DIN_LIBGCC1 $(CCLIBFLAGS) $(INCLUDES)'
! $flags -c $src
! tmp=`echo $src | sed -e 's/[.]c$/'${objext}/ -e 's,.*/,,'`
! echo " mv $tmp $dst"
! fi
! }
!
! emit_make_compile() {
! dst=$1; shift
! tgt=$1; shift
! tmp="";
! if [ "$1" = "T=t" ]; then
! tmp="T=t"; tgt="t$tgt"; shift
! fi
! flags=$*
! echo ' $(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)"' \\
! echo ' AR_FOR_TARGET="$(AR_FOR_TARGET)"' \\
! echo ' AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)"' \\
! echo ' AR_EXTRACT_FOR_TARGET="$(AR_EXTRACT_FOR_TARGET)"' \\
! echo ' AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)"' \\
! echo ' CC="$(CC)" CFLAGS="$(CFLAGS)"' \\
! echo ' HOST_PREFIX="$(HOST_PREFIX)"' \\
! echo ' HOST_PREFIX_1="$(HOST_PREFIX_1)"' \\
! echo ' LANGUAGES="$(LANGUAGES)"' \\
! echo ' LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)' $flags '" ' \\
! echo ' MULTILIB_CFLAGS="'$flags'"' $tmp $tgt
! echo " mv ${tgt} ${dst}"
! }
# Dependancies for libgcc1.c
libgcc1_c_dep='$(srcdir)/libgcc1.c $(CONFIG_H)'
--- 47,65 ----
fi
! # Build lines.
! gcc_compile='$(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES)'
! oldcc_compile='$(OLDCC) -DIN_LIBGCC1 $(CCLIBFLAGS) $(INCLUDES)'
! make_compile='$(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
! AR_FOR_TARGET="$(AR_FOR_TARGET)" \
! AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)" \
! AR_EXTRACT_FOR_TARGET="$(AR_EXTRACT_FOR_TARGET)" \
! AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \
! CC="$(CC)" CFLAGS="$(CFLAGS)" \
! HOST_PREFIX="$(HOST_PREFIX)" \
! HOST_PREFIX_1="$(HOST_PREFIX_1)" \
! LANGUAGES="$(LANGUAGES)"'
# Dependancies for libgcc1.c
libgcc1_c_dep='$(srcdir)/libgcc1.c $(CONFIG_H)'
*************** libgcc1_c_dep='$(srcdir)/libgcc1.c $(CON
*** 106,112 ****
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='$(srcdir)/config/fp-bit.c config.status tsystem.h'
#
# Build libgcc1 components.
--- 68,74 ----
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.
*************** case X"$LIBGCC1" in
*** 130,137 ****
out="libgcc/${dir}/${name}${objext}"
echo ${out}: '$(srcdir)/config/$(LIB1ASMSRC)'
! emit_gcc_compile $out '$(srcdir)/config/$(LIB1ASMSRC)' \
! $flags -DL$name -xassembler-with-cpp
done
libgcc1_objs="$libgcc1_objs ${name}${objext}"
done
--- 92,99 ----
out="libgcc/${dir}/${name}${objext}"
echo ${out}: '$(srcdir)/config/$(LIB1ASMSRC)'
! echo " $gcc_compile" $flags -DL$name -xassembler-with-cpp \
! -c '$(srcdir)/config/$(LIB1ASMSRC)' -o $out
done
libgcc1_objs="$libgcc1_objs ${name}${objext}"
done
*************** case X"$LIBGCC1" in
*** 142,148 ****
out="libgcc/${name}${objext}"
echo $out: $libgcc1_c_dep
! emit_oldcc_compile $out '$(srcdir)/libgcc1.c' -DL${name}
libgcc1_objs="$libgcc1_objs ${name}${objext}"
done
--- 104,117 ----
out="libgcc/${name}${objext}"
echo $out: $libgcc1_c_dep
! if [ -z "@NO_MINUS_C_MINUS_O@" ]; then
! echo " $oldcc_compile" $flags -c $src -o $dst
! else
! echo " $oldcc_compile" $flags -c $src
! tmp=`echo $src | sed -e 's/[.]c$/'${objext}/ -e 's,.*/,,'`
! echo " mv $tmp $dst"
! fi
!
libgcc1_objs="$libgcc1_objs ${name}${objext}"
done
*************** case X"$LIBGCC1" in
*** 155,161 ****
echo " cp $file ${name}.s"
file=${name}.s
fi
! emit_oldcc_compile $out $file
libgcc1_objs="$libgcc1_objs ${name}${objext}"
done
;;
--- 124,138 ----
echo " cp $file ${name}.s"
file=${name}.s
fi
!
! if [ -z "@NO_MINUS_C_MINUS_O@" ]; then
! echo " $oldcc_compile" -c $file -o $out
! else
! echo " $oldcc_compile" -c $file
! tmp=`echo $src | sed -e 's/[.][cs]$/'${objext}/ -e 's,.*/,,'`
! echo " mv $tmp $dst"
! fi
!
libgcc1_objs="$libgcc1_objs ${name}${objext}"
done
;;
*************** for name in $LIB2FUNCS; do
*** 178,185 ****
out="libgcc/${dir}/${name}${objext}"
echo $out: $libgcc2_c_dep
! emit_gcc_compile $out '$(srcdir)/libgcc2.c' '$(MAYBE_USE_COLLECT2)' \
! $flags -DL$name
done
libgcc2_objs="$libgcc2_objs ${name}${objext}"
done
--- 155,162 ----
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
libgcc2_objs="$libgcc2_objs ${name}${objext}"
done
*************** for name in $LIB2FUNCS_EH; do
*** 191,198 ****
out="libgcc/${dir}/${name}${objext}"
echo $out: $libgcc2_c_dep
! emit_gcc_compile $out '$(srcdir)/libgcc2.c' '$(MAYBE_USE_COLLECT2)' \
! -fexceptions $flags -DL$name
done
libgcc2_objs="$libgcc2_objs ${name}${objext}"
done
--- 168,175 ----
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
libgcc2_objs="$libgcc2_objs ${name}${objext}"
done
*************** if [ "$FPBIT" ]; then
*** 204,212 ****
flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
out="libgcc/${dir}/${name}${objext}"
! echo $out: $fpbit_c_dep
! emit_gcc_compile $out '$(srcdir)/config/fp-bit.c' \
! -DFLOAT -DFINE_GRAINED_LIBRARIES $flags -DL$name
done
libgcc2_objs="$libgcc2_objs ${name}${objext}"
done
--- 181,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
libgcc2_objs="$libgcc2_objs ${name}${objext}"
done
*************** if [ "$DPBIT" ]; then
*** 219,227 ****
flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
out="libgcc/${dir}/${name}${objext}"
! echo $out: $fpbit_c_dep
! emit_gcc_compile $out '$(srcdir)/config/fp-bit.c' \
! -DFINE_GRAINED_LIBRARIES $flags -DL$name
done
libgcc2_objs="$libgcc2_objs ${name}${objext}"
done
--- 196,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
libgcc2_objs="$libgcc2_objs ${name}${objext}"
done
*************** for file in $LIB2ADD; do
*** 245,251 ****
# target file. This because ./$f is used as a temporary in
# each case before being moved to libgcc/$dir/.
echo $out: $lastout
! emit_make_compile $out $f $flags
lastout="$out"
done
--- 222,231 ----
# target file. This because ./$f is used as a temporary in
# each case before being moved to libgcc/$dir/.
echo $out: $lastout
! echo " $make_compile" \\
! echo ' LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)' $flags '" ' \\
! echo ' MULTILIB_CFLAGS="'$flags'"' $f
! echo " mv $f $out"
lastout="$out"
done
*************** for file in $LIB2ADD; do
*** 262,268 ****
fi
echo $out: $file
! emit_gcc_compile $out $file $flags
done
libgcc2_objs="$libgcc2_objs ${oname}${objext}"
fi
--- 242,248 ----
fi
echo $out: $file
! echo " $gcc_compile" $flags -c $file -o $out
done
libgcc2_objs="$libgcc2_objs ${oname}${objext}"
fi
*************** for f in $EXTRA_MULTILIB_PARTS; do
*** 319,325 ****
# target file. This because ./$f is used as a temporary in
# each case before being moved to libgcc/$dir/.
echo $out: $lastout
! emit_make_compile $out $f T=t $flags
all="$all $out"
lastout="$out"
--- 299,308 ----
# target file. This because ./$f is used as a temporary in
# each case before being moved to libgcc/$dir/.
echo $out: $lastout
! echo " $make_compile" \\
! echo ' LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)' $flags '" ' \\
! echo ' MULTILIB_CFLAGS="'$flags'"' T=t t$f
! echo " mv t$f $out"
all="$all $out"
lastout="$out"