# Used except --with-libf7=no

avrsrc := $(srcdir)/config/avr

libf7 := $(avrsrc)/libf7

F7_PREFIX = __f7_

include $(libf7)/libf7-common.mk

LIBF7_DF_CONV +=  floatundidf floatdidf # floatunsidf floatsidf

# Wrappers like f7_lt_impl for f7_lt etc. because the latter is inline.
LIBF7_DF_CMP  += lt le gt ge ne eq unord

F7_C_PARTS += $(LIBF7_DF_CONV) $(LIBF7_DF_CMP)

# -mcall-prologues
CALL_PROLOGUES += $(LIBF7_DF_CONV)

# -Wno-missing-prototypes
NO_PROTO += $(LIBF7_DF_CONV)

F7F += le_impl lt_impl gt_impl ge_impl ne_impl eq_impl unord_impl


$(libf7)/f7-renames.h: $(libf7)/f7renames.sh $(libf7)/libf7-common.mk
	$< head $(F7_PREFIX) t-libf7    > $@
	$< c    $(F7_PREFIX) $(F7F)     >> $@
	$< cst  $(F7_PREFIX) $(F7F_cst) >> $@
	$< asm  $(F7_PREFIX) $(F7F_asm) >> $@
	$< tail $(F7_PREFIX)            >> $@

# The right-hand sides like g_ddd come from libf7-common.mk.
# The _m_ wraps are added by t-libf7-math

# __adddf3, ...
F7_ASM_WRAPS_g_ddd += $(g_ddd)

# __ltdf2, ...
F7_ASM_WRAPS_g_xdd_cmp += $(g_xdd_cmp)

# __floatsidf, ...
F7_ASM_WRAPS_g_dx += $(g_dx)

# __fixdfsi, ...
F7_ASM_WRAPS_g_xd += $(g_xd)

$(libf7)/f7-wraps.h: $(libf7)/f7wraps.sh \
		$(libf7)/libf7-common.mk $(libf7)/t-libf7-math
	$< header "WITH_LIBF7_MATH_FUNCTIONS=$(WITH_LIBF7_MATH_FUNCTIONS)" "WITH_LIBF7_MATH_SYMBOLS=$(WITH_LIBF7_MATH_SYMBOLS)" > $@
	$< ddd_libgcc     $(F7_ASM_WRAPS_g_ddd)      >> $@
	$< xdd_libgcc_cmp $(F7_ASM_WRAPS_g_xdd_cmp)  >> $@
	$< xd_libgcc      $(F7_ASM_WRAPS_g_xd)       >> $@
	$< dx_libgcc      $(F7_ASM_WRAPS_g_dx)       >> $@
	$< ddd_math       $(F7_ASM_WRAPS_m_ddd)      >> $@
	$< ddx_math       $(F7_ASM_WRAPS_m_ddx)      >> $@
	$< dd_math        $(F7_ASM_WRAPS_m_dd)       >> $@
	$< xd_math        $(F7_ASM_WRAPS_m_xd)       >> $@

F7_ASM_WRAPS += $(F7_ASM_WRAPS_g_xd)
F7_ASM_WRAPS += $(F7_ASM_WRAPS_g_dx)
F7_ASM_WRAPS += $(F7_ASM_WRAPS_g_ddd)
F7_ASM_WRAPS += $(F7_ASM_WRAPS_g_xdd_cmp)
F7_ASM_WRAPS += $(F7_ASM_WRAPS_m_ddd)
F7_ASM_WRAPS += $(F7_ASM_WRAPS_m_ddx)
F7_ASM_WRAPS += $(F7_ASM_WRAPS_m_dd)
F7_ASM_WRAPS += $(F7_ASM_WRAPS_m_xd)

F7_ASM_PARTS += $(patsubst %, D_%, $(F7_ASM_WRAPS))

# Options
F7_FLAGS   += -I $(libf7) -save-temps=obj

# t-avr::HOST_LIBGCC2_CFLAGS sets -mcall-prologues which will inhibits
# tail-call optimizations.  The user could get it with -mrelax, but we
# just switch it off here and then explicitly on again for the
# CALL_PROLOGUES modules.

F7_C_FLAGS +=   $(F7_FLAGS) \
		-dp -g0 \
		-mno-call-prologues \
		-fno-lto -Os \
		-fdata-sections -ffunction-sections \
		-fno-reorder-blocks \
		-fno-tree-loop-optimize \
		-fno-tree-loop-im -fno-move-loop-invariants

F7_ASM_FLAGS +=	$(F7_FLAGS) -g0

$(patsubst %, f7_c_%.o, $(CALL_PROLOGUES)) \
	: F7_C_FLAGS += -mcall-prologues

$(patsubst %, f7_c_%.o, $(STRICT_X)) \
	: F7_C_FLAGS += -mstrict-X

$(patsubst %, f7_c_%.o, $(NO_PROTO)) \
	: F7_C_FLAGS += -Wno-missing-prototypes

# Depends will be worked out by the libgcc build system.

F7_C_OBJECTS   = $(patsubst %, f7_c_%$(objext),   $(F7_C_PARTS))
F7_ASM_OBJECTS = $(patsubst %, f7_asm_%$(objext), $(F7_ASM_PARTS))

$(F7_ASM_OBJECTS) $(F7_C_OBJECTS) : $(libf7)/t-libf7
$(F7_ASM_OBJECTS) $(F7_C_OBJECTS) : $(libf7)/t-libf7-math
$(F7_ASM_OBJECTS) $(F7_C_OBJECTS) : $(libf7)/t-libf7-math-symbols

.PHONY: log_vars

all: log_vars

log_vars:
	$(info # libf7: WITH_LIBF7_MATH_FUNCTIONS = $(WITH_LIBF7_MATH_FUNCTIONS))
	$(info # libf7: WITH_LIBF7_MATH_SYMBOLS = $(WITH_LIBF7_MATH_SYMBOLS))
	$(info # libf7: F7_C_PARTS = $(F7_C_PARTS))
	$(info # libf7: F7_C_OBJECTS = $(F7_C_OBJECTS))
	$(info # libf7: F7_ASM_PARTS = $(F7_ASM_PARTS))
	$(info # libf7: F7_ASM_OBJECTS = $(F7_ASM_OBJECTS))

# Build the libf7 C objects and add them to libgcc.a.

f7_parts := $(F7_C_PARTS)

iter-items  := $(f7_parts)
iter-labels := $(f7_parts)

-include $(patsubst %,$(libf7)/libf7-c-object.mk,$(iter-items))

ifeq (,$(findstring avrtiny,$(MULTIDIR)))
libgcc-objects += $(patsubst %,f7_c_%$(objext),$(F7_C_PARTS))
endif

# Build the libf7 ASM objects and add them to libgcc.a.

f7_parts := $(F7_ASM_PARTS)

iter-items  := $(f7_parts)
iter-labels := $(f7_parts)

-include $(patsubst %,$(libf7)/libf7-asm-object.mk,$(iter-items))

ifeq (,$(findstring avrtiny,$(MULTIDIR)))
libgcc-objects += $(patsubst %,f7_asm_%$(objext),$(F7_ASM_PARTS))
endif

.PHONY: clean-f7

clean: clean-f7

clean-f7:
	rm -f $(wildcard f7_*.i f7_*.s f7_*.o)

# Get rid if any DFmode remains.

LIB2FUNCS_EXCLUDE +=	\
	_sf_to_df	\
	_fixdfdi	\
	_fixunsdfsi	\
	_floatundidf	\
	_fixunsdfdi	\
	_floatdidf	\
	_powidf2
