# Makefile - makefile for vw/src/libc/math
#
# Copyright (c) 1996-2005,2007-2010, 2013 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
# --------------------
# 02y,22may13,yjw  Add support for ARMARCH7M
# 02x,06jan11,jph  remove include mapping file not needed
# 02w,08nov10,jph  add mapping file
# 02v,26oct10,jph  remove version
# 02u,21sep10,sem  Add new IA cpus. Remove pentium2/3
# 02t,15jun10,m_h  Thumb2 Support
# 02s,08oct09,kkz  Adding version number
# 02r,23jul09,mze  removing PAD64
# 02q,19jun09,mze  replacing PAD64
# 02p,31mar09,jb   Adding PAD64 support
# 02r,29apr09,m_h  ARMARCH7 support
# 02q,18dec08,h_k  removed duplicated object list for OBJS_PPC85XX_e500v2.
# 02p,16dec08,dtr  Remove some math functions optimized in arch for e500v2.
# 02o,02sep08,pee  fixing obj selection.
# 02n,19aug08,mze  TOOL changes
# 02m,19nov07,dtr  Change tool name to e500v2diab.
# 02l,05nov07,dtr  Add support for ev2diab TOOL for 85XX.
# 02k,22feb07,pes  Add support for new MIPS lib structure.
# 02j,15sep05,mcm  Fix for SPR#101756
# 02i,06apr05,jb   Adding ARMARCH6
# 02h,13apr04,rec  PPC970 support
# 02g,10feb04,pch  PPC32 floating-point adjustments
# 02f,12dec02,pch  Add PPC32
# 02e,22apr03,dbt  Added SIMLINUX support.
# 02d,27mar02,to   disable build for ARM again
# 02c,18dec01,to   add ARMARCH5(_T) support
# 02b,06dec01,pfl  enabled build of support.o for all archs.
# 02a,23aug01,pch  Add PPC440
# 01m,24oct01,tam  updated for repackaging
# 01l,09oct01,jb   re-enabling gnu math lib for ARMARCH4/STRONGARM/XSCALE
# 01k,05sep01,hdn  added hyperbolic routines for I80X86 (spr 25654)
# 01k,23jul01,scm  change XScale name to conform to coding standards...
# 01j,23jul01,to   removed ARMARCH4, STRONGARM and XScale in favor of fplib
#                  from ARM ltd.
# 01j,16aug01,hdn  added PENTIUM2/3/4 support
# 01i,26oct00,s_m  renamed PPC405 cpu types
# 01h,12oct00,sm   added list of objects for PPC405 and PPC405F
# 01l,08feb01,roz  use libc math functions for mips32 and 64
# 01n,04may01,scm  add STRONGARM support...
# 01m,09oct00,dh   MCF5400 support (coldfire v4)
# 01l,14jul00,dra  use pow() for vr5400
# 01k,13jan00,yvp  adding OBJS_FR500 for Fujitsu FR-V (a.k.a Venus) family
# 01j,21mar00,dra  added ColdFire support.
# 01i,07sep99,myz  added CW4000_16 support.
# 01g,24apr98,ur   added M.CORE CPU1* support.
# 01i,20dec99,dra  Updated VR4100 support.
# 01h,19jan99,dra  added CW4000, CW4011, VR4100, VR5000 and VR5400 support.
# 01h,06jun99,dra  added SPARCV9 support.
# 01j,20mar01,zl   removed obsolete SH CPU types.
# 01i,20oct00,hk   changed OBJS_SH7750 empty to use optimized math library.
# 01h,03mar00,zl   merged SH support from T1
# 01k,06feb01,roz  add pow function for all mips32, mips64
# 01j,01feb01,roz  include pow for vr5400 only
# 01i,31jan01,sru  add fabs.o to MIPS32 and MIPS64 soft float libraries
# 01h,25jan01,mem  update MIPS entries.
# 01g,18aug98,tpr  added PowerPC EC 603 support.
# 01j,30jun98,cym  added SIMNT support.
# 01i,09apr98,hdn  added Pentium support.
# 01h,26mar97,cdp  added ARM7TDMI_T support.
# 01g,02dec96,cdp  added OBJS_ARM*.
# 01f,16dec96,kkk  added R4650 support.
# 01e,07dec96,tpr  reworked PPC403 and PPC860 rules.
# 01d,07dec96,tpr  added supporty.o to I960KB rule.
# 01c,03dec96,tpr  reworked I960 rules.
# 01b,16oct96,tam  modified OBJS_PPC603 and OBJS_PPC604.
# 01a,18jun96,yp   created from 02c of MakeSkel
#
# DESCRIPTION
# This file contains the makefile rules for building the portable
# ANSI C math routines.
#
# Each cpu architecture requires a specific list of these functions.
# In many cases, some subset of the ANSI functions are defined in the
# <arch>/math directories, so not all files in this directory are
# required.  Files from this directory should be specified to provide
# all functions which are not supplied in an architecture-specific form.
#
# Note: modf() is required by portions of the ANSI C I/O libraries
# and should therefore be included for all architectures.
#
#*/

TGT_DIR=$(WIND_BASE)/target

DOC_FILES=	ansiMath.c

## ansiMath.c includes the following files
#	asincos.c atan.c atan2.c ceil.c
#	cosh.c exp.c fabs.c floor.c fmod.c frexp.c ldexp.c log.c
#	log10.c modf.c pow.c sincos.c sinh.c sqrt.c tan.c tanh.c

LIB_BASE_NAME   = fp

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

OBJS_MIN=	frexp.o ldexp.o modf.o
OBJS_CPU32      = $(OBJS_MIN)
OBJS_I960CA     = ceil.o floor.o
OBJS_I960HX     = $(OBJS_I960CA)
OBJS_I960JX	= $(OBJS_I960CA)
OBJS_I960KA     = $(OBJS_I960CA)
OBJS_I960KB     = support.o
OBJS_MC68000    = $(OBJS_MIN)
OBJS_MC68010    = $(OBJS_MIN)
OBJS_MC68020    = $(OBJS_MIN) support.o
OBJS_MC68040    = $(OBJS_MIN) fmod.o pow.o support.o log__L.o exp__E.o
OBJS_MC68LC040  = $(OBJS_MIN) fmod.o pow.o support.o log__L.o exp__E.o
OBJS_MC68060    = $(OBJS_MIN) fmod.o pow.o support.o log__L.o exp__E.o
OBJS_MCF5200	= $(OBJS_MIN) acosh.o asincos.o asinh.o atan.o atan2.o \
		  atanh.o ceil.o cosh.o exp.o exp__E.o expm1.o floor.o \
		  fmod.o log.o log10.o log1p.o log__L.o pow.o sincos.o \
		  sinh.o sqrt.o support.o tan.o tanh.o fabs.o
OBJS_MCF5400	= $(OBJS_MIN) acosh.o asincos.o asinh.o atan.o atan2.o \
		  atanh.o ceil.o cosh.o exp.o exp__E.o expm1.o floor.o \
		  fmod.o log.o log10.o log1p.o log__L.o pow.o sincos.o \
		  sinh.o sqrt.o support.o tan.o tanh.o fabs.o
OBJS_MIPSI2	= $(OBJS_MIN) acosh.o asincos.o asinh.o atan.o atan2.o \
		  atanh.o ceil.o cosh.o exp.o exp__E.o expm1.o fabs.o floor.o \
		  fmod.o log.o log10.o log1p.o log__L.o pow.o sincos.o \
		  sinh.o sqrt.o support.o tan.o tanh.o
OBJS_MIPSI32	= $(OBJS_MIN) acosh.o asincos.o asinh.o atan.o atan2.o \
		  atanh.o ceil.o cosh.o exp.o exp__E.o expm1.o fabs.o floor.o \
		  fmod.o log.o log10.o log1p.o log__L.o pow.o sincos.o \
		  sinh.o sqrt.o support.o tan.o tanh.o
OBJS_MIPSI32R2	= $(OBJS_MIN) acosh.o asincos.o asinh.o atan.o atan2.o \
		  atanh.o ceil.o cosh.o exp.o exp__E.o expm1.o fabs.o floor.o \
		  fmod.o log.o log10.o log1p.o log__L.o pow.o sincos.o \
		  sinh.o sqrt.o support.o tan.o tanh.o
OBJS_MIPSI3	= $(OBJS_MIN) acosh.o asincos.o asinh.o atan.o atan2.o \
		  atanh.o ceil.o cosh.o exp.o exp__E.o expm1.o fabs.o floor.o \
		  fmod.o log.o log10.o log1p.o log__L.o pow.o sincos.o \
		  sinh.o sqrt.o support.o tan.o tanh.o
OBJS_MIPSI64	= $(OBJS_MIN) acosh.o asincos.o asinh.o atan.o atan2.o \
		  atanh.o ceil.o cosh.o exp.o exp__E.o expm1.o fabs.o floor.o \
		  fmod.o log.o log10.o log1p.o log__L.o pow.o sincos.o \
		  sinh.o sqrt.o support.o tan.o tanh.o
OBJS_MIPSI64R2	= $(OBJS_MIN) acosh.o asincos.o asinh.o atan.o atan2.o \
		  atanh.o ceil.o cosh.o exp.o exp__E.o expm1.o fabs.o floor.o \
		  fmod.o log.o log10.o log1p.o log__L.o pow.o sincos.o \
		  sinh.o sqrt.o support.o tan.o tanh.o
OBJS_SPARC      = $(OBJS_MIN) acosh.o asincos.o asinh.o atan.o atan2.o \
		  atanh.o ceil.o cosh.o exp.o exp__E.o expm1.o floor.o \
		  fmod.o log.o log10.o log1p.o log__L.o pow.o sincos.o \
		  sinh.o sqrt.o support.o tan.o tanh.o
OBJS_SPARClite  = acosh.o asinh.o atanh.o exp__E.o expm1.o log1p.o log__L.o \
                  support.o
OBJS_ULTRASPARC = $(OBJS_MIN) acosh.o asincos.o asinh.o atan.o atan2.o \
		  atanh.o ceil.o cosh.o exp.o exp__E.o expm1.o floor.o \
		  fmod.o log.o log10.o log1p.o log__L.o pow.o sincos.o \
		  sinh.o sqrt.o support.o tan.o tanh.o
OBJS_SIMSPARCSOLARIS    = $(OBJS_MIN) acosh.o asincos.o asinh.o atan.o atan2.o \
                  atanh.o ceil.o cosh.o exp.o exp__E.o expm1.o fabs.o floor.o \
                  fmod.o log.o log10.o log1p.o log__L.o pow.o sincos.o \
                  sinh.o sqrt.o support.o tan.o tanh.o
OBJS_SIMNT	= $(OBJS_SIMSPARCSOLARIS)
OBJS_SIMLINUX	= $(OBJS_SIMSPARCSOLARIS)
OBJS_I80386     = $(OBJS_MIN) cosh.o sinh.o tanh.o support.o expm1.o \
		  exp__E.o exp.o
OBJS_I80486     = $(OBJS_MIN) cosh.o sinh.o tanh.o support.o expm1.o \
		  exp__E.o exp.o
OBJS_PENTIUM    = $(OBJS_MIN) cosh.o sinh.o tanh.o support.o expm1.o \
		  exp__E.o exp.o
OBJS_PENTIUM4   = $(OBJS_MIN) cosh.o sinh.o tanh.o support.o expm1.o \
		  exp__E.o exp.o
OBJS_CORE2      = $(OBJS_MIN) cosh.o sinh.o tanh.o support.o expm1.o \
		  exp__E.o exp.o
OBJS_X86_64     = $(OBJS_MIN) cosh.o sinh.o tanh.o support.o expm1.o \
		  exp__E.o exp.
OBJS_ATOM       = $(OBJS_MIN) cosh.o sinh.o tanh.o support.o expm1.o \
		  exp__E.o exp.o
OBJS_CORE       = $(OBJS_MIN) cosh.o sinh.o tanh.o support.o expm1.o \
		  exp__E.o exp.o
OBJS_NEHALEM    = $(OBJS_MIN) cosh.o sinh.o tanh.o support.o expm1.o \
		  exp__E.o exp.o                  
OBJS_AM29030    = acosh.o asinh.o exp__E.o expm1.o log1p.o log__L.o support.o
OBJS_AM29200    = $(OBJS_AM29030)

OBJS_PPC32SF	= support.o
OBJS_PPC32HF	= $(OBJS_MIN) acosh.o asincos.o asinh.o atanh.o ceil.o cosh.o \
		  exp__E.o expm1.o floor.o fmod.o log1p.o log__L.o sinh.o \
		  $(OBJS_PPC32SF) tan.o tanh.o fabs.o
OBJS_PPC405F	= $(OBJS_PPC32HF) sqrt.o atan2.o exp.o atan.o sincos.o log.o \
		  log10.o pow.o
OBJS_PPC603	= $(OBJS_PPC32HF)
OBJS_PPC604	= $(OBJS_PPC32HF)
OBJS_PPC970	= $(OBJS_PPC32HF)

OBJS_PPC85XX_e500v2  = $(OBJS_MIN)  ceil.o exp__E.o expm1.o floor.o fabs.o\
		  fmod.o  log1p.o log__L.o support.o asincos.o asinh.o cosh.o \
                  sinh.o tan.o tanh.o

ifeq  ($(_WRS_CONFIG_FP),soft)
    OBJS_PPC32	= $(OBJS_PPC32SF)
else
    ifeq  ($(_WRS_CONFIG_FP),e500v2)
    OBJS_PPC32  = $(OBJS_PPC85XX_e500v2)
    else
    OBJS_PPC32	= $(OBJS_PPC32HF)
  endif
endif

OBJS_MCORE10	= acosh.o asincos.o asinh.o atan.o atan2.o \
		  atanh.o ceil.o cosh.o exp.o exp__E.o expm1.o fabs.o \
		  floor.o fmod.o frexp.o ldexp.o log.o log10.o log1p.o \
		  log__L.o modf.o pow.o sincos.o sinh.o sqrt.o support.o \
		  tan.o tanh.o
OBJS_MCORE15	= $(OBJS_MCORE10)

OBJS_ARM	= $(OBJS_MIN) acosh.o asincos.o asinh.o atan.o atan2.o \
		  atanh.o ceil.o cosh.o exp.o exp__E.o expm1.o floor.o \
		  fmod.o log.o log10.o log1p.o log__L.o pow.o sincos.o \
		  sinh.o sqrt.o support.o tan.o tanh.o fabs.o
OBJS_ARMARCH4	=
OBJS_ARMARCH4_T	= $(OBJS_ARM)
OBJS_ARMARCH5	=
OBJS_ARMARCH5_T	= $(OBJS_ARM)
OBJS_ARMARCH6	=
OBJS_ARMARCH6_T	= $(OBJS_ARM)
OBJS_ARMARCH7	=
OBJS_ARMARCH7_T2 = $(OBJS_ARM)
OBJS_ARMARCH7M = $(OBJS_ARM)
OBJS_STRONGARM	=
OBJS_XSCALE	=

OBJS_FRV	= acosh.o asincos.o asinh.o atan.o atan2.o atanh.o ceil.o \
		  cosh.o exp.o exp__E.o expm1.o floor.o fabs.o floor.o    \
		  fmod.o frexp.o ldexp.o log.o log10.o log1p.o log__L.o   \
		  modf.o pow.o sincos.o sinh.o sqrt.o support.o tan.o tanh.o
OBJS_FR500	= $(OBJS_FRV)

OBJS_SH7000     = support.o
OBJS_SH7600     = $(OBJS_SH7000) 
OBJS_SH7700     = $(OBJS_SH7000) 
OBJS_SH7750     = $(OBJS_SH7000) 

OBJS=   $(OBJS_$(CPU))

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

DOC_BOOK	= Standard_C_and_C++_Libraries
DOC_CHAPTER	= VxWorks_Native_C_Libraries
DOC_DIR=$(DOCS_ROOT)/$(DOC_CCPLUS_LIB)

