# Makefile - makefile for target/src/math
#
# Copyright (c) 1996-2005, 2007-2010, 2013, 2014, 2018 Wind River Systems, Inc.
#
# The right to copy, distribute, modify or otherwise make use
# of this software may be licensed only pursuant to the terms
# of an applicable Wind River license agreement.
#
# modification history
# --------------------
# 03f,28nov17,mst  Fix for CSO-31359 - PENTIUM4 first decimal digit overflows 
#                  to ":" in dtoa() conversion
# 03e,07aug14,mcm  Fix for VXW6-81137; floating point processing for printf has
#                  inaccuracies; using BSD functionality
# 03d,22apr13,yjw  ARMARCH7M support
# 03c,21sep10,sem  Add new IA cpus. Remove pentium2/3
# 03b,06sep10,fan  added floatFuncBind.o for LP64 mode.
# 03a,15jun10,m_h  Thumb-2 Support
# 02z,23jul09,mze  removing PAD64
# 02y,19jun09,mze  replacing PAD64
# 02x,29may09,cww  Removed fppLib and fppShow
# 02w,31mar09,jb   Adding PAD64 support
# 02w,03mar09,m_h  Add support for ARMARCH7
# 02v,30sep08,gls  removed build of fioLib.o if _WRS_CONFIG_FORMATTED_OUT is
#                  undefined (Defect #136485)
# 02u,19sep08,dtr  Tool e500v2 should use WRS_SPE_SUPPORT. WIND00134979
# 02t,19aug08,mze  TOOL changes
# 02s,02apr07,pes  Correct make warnings about Extraneous text after 'else'
#                  and 'endif' directives.
# 02r,12mar07,pes  Update for MIPS library restructure.
# 02q,22feb07,pes  Add support for new MIPS lib structure.
# 02p,27sep05,kk   make fioBaseLib.c build the way as as fioLib.c. (SPR# 112910)
# 02o,15sep05,mcm  Fix for SPR#103295 - adding fioLib.c etc. to DOC_FILES
# 02n,02aug05,rhe  Break up for scailability
# 02m,07apr05,jb   Adding ARMARCH6
# 02l,28oct04,to   removed non-PAL support.
# 02k,13apr04,rec  PPC970 support
# 02j,04aug04,scm  coprocessor support modifications for ARM.
# 02i,21apr04,h_k  SH coprocessor support modifications.
# 02h,13apr04,zmm  Pentium coprocessor support modifications.
# 02g,17mar04,pes  Added PAL support for MIPS.
# 02f,22mar04,mil  Added -D_WRS_SPE_SUPPORT for fioLib.c for PPC32 sf$(TOOL).
# 02e,13feb04,pch  PPC32 floating point adjustments
# 02d,19nov03,c_c  Do not rely on VX_CPU_FAMILY setting.
# 02c,19aug03,dbt  Added PAL support for VxSim.
# 02b,12dec02,pch  Add PPC32; move FP files from src/os
# 02a,22apr03,dbt  Added SIMLINUX support.
# 01z,18dec01,to   add ARMARCH5(_T) support
# 01y,29nov01,dee  add Coldfire libraries
# 01x,23aug01,pch  Add PPC440
# 01w,29oct01,sn   moved contents of target/src/gnu/libm here
# 01v,12oct01,tam  added repackaging support
# 01u,02oct01,sn   added cabs/hypot support for arches that lacked it
# 01t,23jul01,scm  change XScale name to conform to coding standards...
# 01s,04may01,scm  add STRONGARM support
# 01r,26oct00,s_m  renamed PPC405 cpu types
# 01q,06jul00,alp  Added PPC405 Support
# 01p,11dec00,scm  replace references to ARMSA2 with XScale
# 01o,31aug00,scm  add sa2 support...
# 01n,20jan99,cdp  removed support for old ARM libraries.
# 01m,13nov98,cdp  added generic ARMARCH3/4/4_T support.
# 01l,20mar01,zl   removed obsolete SH CPU types.
# 01k,03mar00,zl   merged SH support from T1
# 01j,28dec00,zmm  add support for MIPS32sfgnu
# 01i,27dec00,roz  add support for MIPS64gnu
# 01h,18aug98,tpr  added PowerPC EC 603 support.
# 01g,09apr98,hdn  added support for Pentium.
# 01f,07apr97,tpr  removed cabs.o cbrt.o rint.o for the I960.
# 01e,26mar97,cdp  added ARM7TDMI_T support.
# 01d,04mar97,kkk  added R4650 support
# 01c,03dec96,cdp  added OBJS_ARM*.
# 01b,26nov96,pr   added SIMSPARCSOLARIS support
# 01a,18jun96,yp   created from 02c of MakeSkel
#
# DESCRIPTION
# This file contains the makefile rules for building the non-ANSI portable
# math routines.
#
# Not all modules are used in all architectures.
#
#*/

TGT_DIR=$(WIND_BASE)/target

LIB_BASE_NAME   = fp

DOC_FILES= 	fioBaseLib.c fioLib.c

include $(TGT_DIR)/h/make/defs.library

ifeq ($(VX_CPU_FAMILY),mips)
ifeq  ($(BUILD_FP_PREFIX),sf)
OBJS_RINT		= rint.o
else
OBJS_RINT		=
endif
endif


OBJS_MIPSI3		= fpType.o cabs.o
OBJS_MIPSI2             = fpType.o cabs.o $OBJS_RINT
OBJS_MIPSI32            = fpType.o cabs.o $OBJS_RINT
OBJS_MIPSI32R2          = fpType.o cabs.o $OBJS_RINT
OBJS_MIPSI64		= fpType.o cabs.o $OBJS_RINT
OBJS_MIPSI64R2 		= fpType.o cabs.o $OBJS_RINT

OBJS_I960KA		= fpType.o cabs.o
OBJS_I960KB		= fpType.o cabs.o
OBJS_I960CA		= fpType.o cabs.o
OBJS_I960JX		= fpType.o cabs.o
OBJS_I960HX		= fpType.o cabs.o

OBJS_MC68000		= fpType.o
OBJS_MC68010		= fpType.o
OBJS_MC68020		= fpType.o
OBJS_MC68040		= fpType.o
OBJS_MC68LC040		= fpType.o
OBJS_MC68060		= fpType.o
OBJS_CPU32		= fpType.o

OBJS_R3000		= fpType.o
OBJS_R4000		= fpType.o
OBJS_R4650		= fpType.o
OBJS_R4000_64		= fpType.o

OBJS_SPARC		= fpType.o cabs.o cbrt.o rint.o
OBJS_SPARClite		= fpType.o cabs.o cbrt.o rint.o
OBJS_SIMLINUX		= fpType.o cabs.o cbrt.o rint.o
OBJS_SIMNT		= fpType.o cabs.o cbrt.o rint.o
OBJS_SIMSPARCSOLARIS    = fpType.o cabs.o cbrt.o rint.o

OBJS_G100		= fpType.o
OBJS_G200		= fpType.o

OBJS_I80386		= fpType.o
OBJS_I80486		= fpType.o
OBJS_PENTIUM		= fpType.o
OBJS_PENTIUM4		= fpType.o
OBJS_CORE2		= fpType.o
OBJS_X86_64		= fpType.o
OBJS_ATOM		= fpType.o
OBJS_CORE		= fpType.o
OBJS_NEHALEM		= fpType.o

OBJS_AM29030		= fpType.o
OBJS_AM29200		= fpType.o

OBJS_PPC32		= fpType.o cabs.o
OBJS_PPC603		= $(OBJS_PPC32)
OBJS_PPC604		= $(OBJS_PPC32)
OBJS_PPC970		= $(OBJS_PPC32)

OBJS_ARMARCH4		= fpType.o cabs.o
OBJS_ARMARCH4_T		= fpType.o cabs.o
OBJS_ARMARCH5		= fpType.o cabs.o
OBJS_ARMARCH5_T		= fpType.o cabs.o
OBJS_ARMARCH6		= fpType.o cabs.o
OBJS_ARMARCH6_T		= fpType.o cabs.o
OBJS_ARMARCH7		= fpType.o cabs.o
OBJS_ARMARCH7_T2	= fpType.o cabs.o
OBJS_ARMARCH7M    	= fpType.o cabs.o
OBJS_STRONGARM		= fpType.o cabs.o
OBJS_XSCALE		= fpType.o cabs.o

OBJS_SH7000		= fpType.o cabs.o
OBJS_SH7600		= fpType.o cabs.o
OBJS_SH7700		= fpType.o cabs.o
OBJS_SH7750		= fpType.o cabs.o

OBJS_MCF5200		= fpType.o
OBJS_MCF5400		= fpType.o

OBJS			= $(OBJS_$(CPU)) e_fmod.o e_pow.o e_remainder.o \
			  e_sqrt.o s_rint.o s_scalbn.o fioBaseLib.o floatLib.o \
			  bsd_cvt.o mprec.o dtoa.o floatFuncBind.o

ifdef _WRS_CONFIG_FORMATTED_OUT
OBJS += fioLib.o
endif

include $(TGT_DIR)/h/make/rules.library

# These must be after the inclusion of rules.library to
# overwrite/add to the CFLAGS.

#PPC604 has _WRS_ALTIVEC_SUPPORT defined in ppc604.h so not needed
#ifeq ($(CPU),PPC604)
#CFLAGS_fioLib.o = -D_WRS_ALTIVEC_SUPPORT
#CFLAGS_fioBaseLib.o = -D_WRS_ALTIVEC_SUPPORT
#endif

ifeq ($(CPU),PPC85XX)
CFLAGS_fioLib.o = -D_WRS_SPE_SUPPORT
CFLAGS_fioBaseLib.o = -D_WRS_SPE_SUPPORT
endif

ifeq ($(CPU),PPC32)
ifeq ($(_WRS_CONFIG_FP),e500v2)
CFLAGS_fioLib.o = -D_WRS_SPE_SUPPORT
CFLAGS_fioBaseLib.o = -D_WRS_SPE_SUPPORT
endif
ifeq ($(_WRS_CONFIG_FP),hard)
CFLAGS_fioLib.o = $(OPTION_ALTIVEC_C)
CFLAGS_fioBaseLib.o = $(OPTION_ALTIVEC_C)
endif
ifeq ($(_WRS_CONFIG_FP),soft)
CFLAGS_fioLib.o = -D_WRS_SPE_SUPPORT
CFLAGS_fioBaseLib.o = -D_WRS_SPE_SUPPORT
endif
endif

ifeq ($(CPU),PENTIUM4)
CFLAGS_dtoa.o = -DCheck_FLT_ROUNDS -O1
endif

