Home | History | Annotate | Line # | Download | only in avr
      1 # This file is used if not configured --with-avrlibc=no
      2 #
      3 # AVR-Libc comes with hand-optimized float routines.
      4 # For historical reasons, these routines live in AVR-Libc
      5 # and not in libgcc and use the same function names like libgcc.
      6 # To get the best support, i.e. always use the routines from
      7 # AVR-Libc, we remove these routines from libgcc.
      8 #
      9 # See also PR54461.
     10 #
     11 #
     12 # Arithmetic:
     13 #     __addsf3 __subsf3 __divsf3 __mulsf3 __negsf2
     14 #
     15 # Comparison:
     16 #     __cmpsf2 __unordsf2
     17 #     __eqsf2 __lesf2 __ltsf2 __nesf2 __gesf2 __gtsf2
     18 #
     19 # Conversion:
     20 #     __fixsfdi __fixunssfdi __floatdisf __floatundisf
     21 #     __fixsfsi __fixunssfsi __floatsisf __floatunsisf
     22 #
     23 #
     24 # These functions are contained in modules:
     25 #
     26 # _addsub_sf.o:   __addsf3  __subsf3
     27 # _mul_sf.o:      __mulsf3
     28 # _div_sf.o:      __divsf3
     29 # _negate_sf.o:   __negsf2
     30 #
     31 # _compare_sf.o:  __cmpsf2
     32 # _unord_sf.o:    __unordsf2
     33 # _eq_sf.o:       __eqsf2
     34 # _ne_sf.o:       __nesf2
     35 # _ge_sf.o:       __gesf2
     36 # _gt_sf.o:       __gtsf2
     37 # _le_sf.o:       __lesf2
     38 # _lt_sf.o:       __ltsf2
     39 #
     40 # _fixsfdi.o:     __fixsfdi
     41 # _fixunssfdi.o:  __fixunssfdi
     42 # _fixunssfsi.o:  __fixunssfsi
     43 # _floatdisf.o:   __floatdisf
     44 # _floatundisf.o: __floatundisf
     45 # _sf_to_si.o:    __fixsfsi
     46 # _si_to_sf.o:    __floatsisf
     47 # _usi_to_sf.o:   __floatunsisf
     48 
     49 
     50 # SFmode
     51 LIB2FUNCS_EXCLUDE += \
     52 	_addsub_sf \
     53 	_negate_sf \
     54 	_mul_sf _div_sf \
     55 	\
     56 	_compare_sf \
     57 	_unord_sf \
     58 	_eq_sf _ne_sf \
     59 	_gt_sf _ge_sf \
     60 	_lt_sf _le_sf \
     61 	\
     62 	_si_to_sf  _sf_to_si \
     63 	_usi_to_sf _sf_to_usi \
     64 	_fixunssfsi _fixsfdi \
     65 	_fixunssfdi \
     66 	_floatdisf _floatundisf
     67 
     68 ifeq (,$(WITH_LIBF7_MATH_SYMBOLS))
     69 
     70 # No modules depend on __SIZEOF_LONG_DOUBLE__ or __SIZEOF_DOUBLE__
     71 # which means we might have an opportunity to copy libgcc.a.
     72 # WITH_LIBF7_MATH_SYMBOLS is set by libf7/t-libf7-math-symbols.
     73 
     74 ifneq (,$(findstring avr,$(MULTISUBDIR)))
     75 
     76 # We are not in the avr2 (default) subdir, hence copying will work.
     77 # In default dir, copying won'twork because the default multilib is
     78 # built after all the others.
     79 
     80 ifneq (,$(findstring double,$(MULTISUBDIR)))
     81 
     82 # We are in double{32|64}/libgcc or long-double{32|64}/libgcc:
     83 # Just copy from the [long ]double=float multilib; we would remove any DFmode
     84 # bits from this multilib variant, anyway, because the current assumption
     85 # is that avr-libc hosts *all* the IEEE-double stuff.
     86 
     87 LIB2FUNCS_EXCLUDE := %
     88 LIB1ASMFUNCS :=
     89 libgcc-objects :=
     90 libgcov-objects :=
     91 objects :=
     92 
     93 t-copy-libgcc.dep: $(srcdir)/config/avr/t-copy-libgcc
     94 	-rm -f libgcc.a
     95 	-rm -f libgcov.a
     96 	cp $< $@
     97 
     98 libgcc.a libgcov.a libgcc_tm.h: t-copy-libgcc.dep
     99 
    100 Makefile: t-copy-libgcc.dep
    101 
    102 endif
    103 endif
    104 endif
    105