# This file is used if not configured --with-avrlibc=no
#
# AVR-Libc comes with hand-optimized float routines.
# For historical reasons, these routines live in AVR-Libc
# and not in libgcc and use the same function names like libgcc.
# To get the best support, i.e. always use the routines from
# AVR-Libc, we remove these routines from libgcc.
#
# See also PR54461.
#
#
# Arithmetic:
#     __addsf3 __subsf3 __divsf3 __mulsf3 __negsf2
#
# Comparison:
#     __cmpsf2 __unordsf2
#     __eqsf2 __lesf2 __ltsf2 __nesf2 __gesf2 __gtsf2
#
# Conversion:
#     __fixsfdi __fixunssfdi __floatdisf __floatundisf
#     __fixsfsi __fixunssfsi __floatsisf __floatunsisf
#
#
# These functions are contained in modules:
#
# _addsub_sf.o:   __addsf3  __subsf3
# _mul_sf.o:      __mulsf3
# _div_sf.o:      __divsf3
# _negate_sf.o:   __negsf2
#
# _compare_sf.o:  __cmpsf2
# _unord_sf.o:    __unordsf2
# _eq_sf.o:       __eqsf2
# _ne_sf.o:       __nesf2
# _ge_sf.o:       __gesf2
# _gt_sf.o:       __gtsf2
# _le_sf.o:       __lesf2
# _lt_sf.o:       __ltsf2
#
# _fixsfdi.o:     __fixsfdi
# _fixunssfdi.o:  __fixunssfdi
# _fixunssfsi.o:  __fixunssfsi
# _floatdisf.o:   __floatdisf
# _floatundisf.o: __floatundisf
# _sf_to_si.o:    __fixsfsi
# _si_to_sf.o:    __floatsisf
# _usi_to_sf.o:   __floatunsisf


# SFmode
LIB2FUNCS_EXCLUDE += \
	_addsub_sf \
	_negate_sf \
	_mul_sf _div_sf \
	\
	_compare_sf \
	_unord_sf \
	_eq_sf _ne_sf \
	_gt_sf _ge_sf \
	_lt_sf _le_sf \
	\
	_si_to_sf  _sf_to_si \
	_usi_to_sf _sf_to_usi \
	_fixunssfsi _fixsfdi \
	_fixunssfdi \
	_floatdisf _floatundisf

ifeq (,$(WITH_LIBF7_MATH_SYMBOLS))

# No modules depend on __SIZEOF_LONG_DOUBLE__ or __SIZEOF_DOUBLE__
# which means we might have an opportunity to copy libgcc.a.
# WITH_LIBF7_MATH_SYMBOLS is set by libf7/t-libf7-math-symbols.

ifneq (,$(findstring avr,$(MULTISUBDIR)))

# We are not in the avr2 (default) subdir, hence copying will work.
# In default dir, copying won'twork because the default multilib is
# built after all the others.

ifneq (,$(findstring double,$(MULTISUBDIR)))

# We are in double{32|64}/libgcc or long-double{32|64}/libgcc:
# Just copy from the [long ]double=float multilib; we would remove any DFmode
# bits from this multilib variant, anyway, because the current assumption
# is that avr-libc hosts *all* the IEEE-double stuff.

LIB2FUNCS_EXCLUDE := %
LIB1ASMFUNCS :=
libgcc-objects :=
libgcov-objects :=
objects :=

t-copy-libgcc.dep: $(srcdir)/config/avr/t-copy-libgcc
	-rm -f libgcc.a
	-rm -f libgcov.a
	cp $< $@

libgcc.a libgcov.a libgcc_tm.h: t-copy-libgcc.dep

Makefile: t-copy-libgcc.dep

endif
endif
endif
