This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Bug in mklibgcc.in ?


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"

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]