[gnu.gcc.bug] suggest that TARGET_DEFAULT set CPP_SPEC and STARTFILE_SPEC in tm-sun3.h

eggert@SM.UNISYS.COM (Paul Eggert) (09/22/88)

In building GCC 1.28 for a Sun-3/50 without a floating point unit, I found it
difficult to figure out exactly how to change CPP_SPEC and STARTFILE_SPEC.  The
machine-dependent definitions for CPP_SPEC and STARTFILE_SPEC can be determined
automatically from TARGET_DEFAULT, and it will make it much easier for us
novices with cheap Sun-3s if there's only one definition to change.  Here are
changes for tm-sun3.h that deduce CPP_SPEC and STARTFILE_SPEC automatically
from TARGET_DEFAULT's value.

(I suppose that another possibility would be to have a tm-sun3-50.h file.)

(Better yet, why not make soft-float the default on Suns?  This would encourage
users to switch from Sun's C compiler, because soft-float is Sun's default and
it would be one less incompatibility for users to worry about.)

===================================================================
RCS file: RCS/tm-sun3.h,v
retrieving revision 1.28
diff -c2 -r1.28 tm-sun3.h
*** /tmp/,RCSt1a08911	Wed Sep 21 11:38:56 1988
--- tm-sun3.h	Wed Sep 21 09:48:53 1988
***************
*** 9,14 ****
--- 9,21 ----
     Also inform the program which CPU this is for.  */
  
+ #if TARGET_DEFAULT & 0102
+ /* m68881 or mfpa is the default */
  #define CPP_SPEC "%{!msoft-float:-D__HAVE_FPU__}\
  %{m68000:-Dmc68010}%{mc68000:-Dmc68010}%{!mc68000:%{!m68000:-Dmc68020}}"
+ #else
+ /* msoft-float is the default */
+ #define CPP_SPEC "%{m68881:-D__HAVE_FPU__}%{mfpa:-D__HAVE_FPU__}\
+ %{m68000:-Dmc68010}%{mc68000:-Dmc68010}%{!mc68000:%{!m68000:-Dmc68020}}"
+ #endif
  
  /* -m68000 requires special flags to the assembler.  */
***************
*** 24,37 ****
     This is necessary (tr: Sun does it) for both the m68881 and the fpa
     routines.
-    Note that includes knowledge of the default specs for gcc, ie. no
-    args translates to the same effect as -m68881
     I'm not sure what would happen below if people gave contradictory
     arguments (eg. -msoft-float -mfpa) */
    
  #define STARTFILE_SPEC  \
    "%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}\
!    %{mfpa:Wcrt1.o%s} %{!mfpa:%{m68881:Mcrt1.o%s}} \
!    %{!mfpa:%{msoft-float:Fcrt1.o%s}} \
!    %{!mfpa:%{!m68881:%{!msoft-float:Mcrt1.o%s}}}"
  
  /* Every structure or union's size must be a multiple of 2 bytes.  */
--- 31,61 ----
     This is necessary (tr: Sun does it) for both the m68881 and the fpa
     routines.
     I'm not sure what would happen below if people gave contradictory
     arguments (eg. -msoft-float -mfpa) */
    
+ #if TARGET_DEFAULT & 0100
+ /* mfpa is the default */
  #define STARTFILE_SPEC  \
    "%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}\
!    %{m68881:Mcrt1.o%s} \
!    %{msoft-float:Fcrt1.o%s} \
!    %{!m68881:%{!msoft-float:Wcrt1.o%s}}"
! #else
! #if TARGET_DEFAULT & 2
! /* m68881 is the default */
! #define STARTFILE_SPEC  \
!   "%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}\
!    %{mfpa:Wcrt1.o%s} \
!    %{msoft-float:Fcrt1.o%s} \
!    %{!mfpa:%{!msoft-float:Mcrt1.o%s}}"
! #else
! /* msoft-float is the default */
! #define STARTFILE_SPEC  \
!   "%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}\
!    %{m68881:Mcrt1.o%s} \
!    %{mfpa:Wcrt1.o%s} \
!    %{!m68881:%{!mfpa:Fcrt1.o%s}}"
! #endif
! #endif
  
  /* Every structure or union's size must be a multiple of 2 bytes.  */