# Build float tests
NAME	= FLOATTEST

#
# Compilers
#
AS	= m68k-elf-as
CC      = m68k-elf-gcc
AR	= m68k-elf-ar

LB1SF68 = _double.o \
	_float.o \
	_floatex.o \
	_eqdf2.o \
	_nedf2.o \
	_gtdf2.o \
	_gedf2.o \
	_ltdf2.o \
	_ledf2.o \
	_eqsf2.o \
	_nesf2.o \
	_gtsf2.o \
	_gesf2.o \
	_ltsf2.o \
	_lesf2.o \
	xfgnulib.o \
	fpgnulib.o

#
# Flags
#
AFLAGS = -m5200

CFLAGS = -m5200 -mhwdiv -O3

LDFLAGS = -m5200 -mhwdiv -Tsbc5206elite.ld -Wl,-Map=$(basename $@).map

#
# Rules
#
double.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_double -D__adddf3=addtst -D__subdf3=subtst \
	-D__muldf3=multst -D__divdf3=divtst -D__negdf2=negtst -D__cmpdf2=cmptst \
	-D_fpCCR=fpCCRtst -D_exception_handler=_ex_hnd -c -x assembler-with-cpp $< -o $@

xfgnu.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_extended -D__addxf3=addtst -D__subxf3=subtst \
	-D__mulxf3=multst -D__divxf3=divtst -D__negxf2=negtst -D__cmpxf2=cmptst \
	-D__eqxf2=eqxftst -D__nexf2=nexftst -D__gtxf2=gtxftst -D__gexf2=gexftst \
	-D__ltxf2=ltxftst -D__lexf2=lexftst -D__extenddfxf2=extenddfxf \
	-D__truncxfdf2=truncxfdf -D__extendsfxf2=extendsfxf \
	-D__truncxfsf2=truncxfsf -D__floatsixf=floatsixf -D__fixxfsi=fixxfsi \
	-D_fpCCR=fpCCRtst -D_exception_handler=_ex_hnd -c -x assembler-with-cpp $< -o $@

fpgnu.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_cvt -D__floatsidf=floatsidf -D__floatsisf=floatsisf \
	-D__extendsfdf2=extendsfdf -D__truncdfsf2=truncdfsf -D__fixdfsi=fixdfsi \
	-D__fixsfsi=fixsfsi \
	-D_fpCCR=fpCCRtst -D_exception_handler=_ex_hnd -c -x assembler-with-cpp $< -o $@

float.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_float -D__addsf3=addstst -D__subsf3=substst \
	-D__mulsf3=mulstst -D__divsf3=divstst -D__negsf2=negstst -D__cmpsf2=cmpstst \
	-D_fpCCR=fpCCRtst -D_exception_handler=_ex_hnd -c -x assembler-with-cpp $< -o $@

floatex.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_floatex -D_fpCCR=fpCCRtst -D__clear_sticky_bit=clr_stky_bit \
	-DFPTRAP=14 -D_exception_handler=_ex_hnd -c -x assembler-with-cpp $< -o $@

rnd.o:	rnd.c
	$(CC) $(CFLAGS) -Wall $< -c -o $@

rtest.o: rtest.c
	$(CC) $(CFLAGS) -Wall $< -c -o $@

otest.o: otest.c
	$(CC) $(CFLAGS) -Wall $< -c -o $@

rtest.s19: rtest.o rnd.o
	$(CC) $(LDFLAGS) -Wl,-L. -Wl,--whole-archive -lftst -Wl,--no-whole-archive \
	-o $@ $^

otest.s19: otest.o rnd.o
	$(CC) $(LDFLAGS) -Wl,-L. -Wl,--whole-archive -lftst -Wl,--no-whole-archive \
	-o $@ $^

libftst.a: ${LB1SF68}
	$(AR) -ru $@ $^

_double.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_double -DFPTRAP=14 -c -x assembler-with-cpp $< -o $@

_float.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_float -DFPTRAP=14 -c -x assembler-with-cpp $< -o $@

_floatex.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_floatex -c -x assembler-with-cpp $< -o $@

_eqdf2.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_eqdf2 -c -x assembler-with-cpp $< -o $@

_nedf2.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_nedf2 -c -x assembler-with-cpp $< -o $@

_gtdf2.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_gtdf2 -c -x assembler-with-cpp $< -o $@

_gedf2.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_gedf2 -c -x assembler-with-cpp $< -o $@

_ltdf2.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_ltdf2 -c -x assembler-with-cpp $< -o $@

_ledf2.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_ledf2 -c -x assembler-with-cpp $< -o $@

_eqsf2.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_eqsf2 -c -x assembler-with-cpp $< -o $@

_nesf2.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_nesf2 -c -x assembler-with-cpp $< -o $@

_gtsf2.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_gtsf2 -c -x assembler-with-cpp $< -o $@

_gesf2.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_gesf2 -c -x assembler-with-cpp $< -o $@

_ltsf2.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_ltsf2 -c -x assembler-with-cpp $< -o $@

_lesf2.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_lesf2 -c -x assembler-with-cpp $< -o $@

xfgnulib.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_extended -c -x assembler-with-cpp $< -o $@

fpgnulib.o: lb1sf68.asm
	$(CC) $(AFLAGS) -DL_cvt -c -x assembler-with-cpp $< -o $@

