1*1f21f64aSMarius Strobl# Copyright (c) 2010 by Peter Jeremy <[email protected]> 2*1f21f64aSMarius Strobl# All rights reserved. 3*1f21f64aSMarius Strobl# 4*1f21f64aSMarius Strobl# Redistribution and use in source and binary forms, with or without 5*1f21f64aSMarius Strobl# modification, are permitted provided that the following conditions 6*1f21f64aSMarius Strobl# are met: 7*1f21f64aSMarius Strobl# 1. Redistributions of source code must retain the above copyright 8*1f21f64aSMarius Strobl# notice, this list of conditions and the following disclaimer. 9*1f21f64aSMarius Strobl# 2. Redistributions in binary form must reproduce the above copyright 10*1f21f64aSMarius Strobl# notice, this list of conditions and the following disclaimer in the 11*1f21f64aSMarius Strobl# documentation and/or other materials provided with the distribution. 12*1f21f64aSMarius Strobl# 13*1f21f64aSMarius Strobl# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 14*1f21f64aSMarius Strobl# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 15*1f21f64aSMarius Strobl# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 16*1f21f64aSMarius Strobl# IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 17*1f21f64aSMarius Strobl# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 18*1f21f64aSMarius Strobl# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 19*1f21f64aSMarius Strobl# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 20*1f21f64aSMarius Strobl# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 21*1f21f64aSMarius Strobl# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 22*1f21f64aSMarius Strobl# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23*1f21f64aSMarius Strobl# 24*1f21f64aSMarius Strobl# $FreeBSD$ 25*1f21f64aSMarius Strobl 26*1f21f64aSMarius Strobl.PATH: ${.CURDIR}/../../../../lib/libc/softfloat/bits64 ${.CURDIR}/.. 27*1f21f64aSMarius Strobl 28*1f21f64aSMarius StroblLIBC_DIR= ${.CURDIR}/../../../../lib/libc 29*1f21f64aSMarius StroblEMUFLOAT_DIR= ${LIBC_DIR}/sparc64/fpu 30*1f21f64aSMarius Strobl 31*1f21f64aSMarius StroblLN= ln -sf 32*1f21f64aSMarius Strobl 33*1f21f64aSMarius Strobl# Common source files 34*1f21f64aSMarius StroblSRCS1= fail.c random.c softfloat.c testCases.c testLoops.c writeHex.c 35*1f21f64aSMarius Strobl 36*1f21f64aSMarius Strobl# Additional common sources to build testfloat/testemufloat 37*1f21f64aSMarius StroblSRCS2= testFunction.c testfloat.c 38*1f21f64aSMarius Strobl 39*1f21f64aSMarius Strobl# Additional sources to build testemufloat 40*1f21f64aSMarius StroblSRCS3= fpu.c fpu_add.c fpu_compare.c fpu_div.c fpu_emul.S fpu_explode.c \ 41*1f21f64aSMarius Strobl fpu_implode.c fpu_mul.c fpu_qp.c fpu_sqrt.c fpu_subr.c fpu_util.c 42*1f21f64aSMarius Strobl 43*1f21f64aSMarius Strobl# Additional sources to build testfloat 44*1f21f64aSMarius StroblSRCS4= systflags.c systfloat.S systmodes.c 45*1f21f64aSMarius Strobl 46*1f21f64aSMarius Strobl# Additional sources to build testsoftfloat 47*1f21f64aSMarius StroblSRCS5= slowfloat.c testsoftfloat.c 48*1f21f64aSMarius Strobl 49*1f21f64aSMarius StroblSRCS= ${SRCS1} ${SRCS2} ${SRCS3} ${SRCS4} ${SRCS5} 50*1f21f64aSMarius Strobl 51*1f21f64aSMarius StroblOBJ_TF= ${SRCS1:R:S/$/.o/g} ${SRCS2:R:S/$/.o/g} ${SRCS4:R:S/$/.o/g} 52*1f21f64aSMarius StroblOBJ_TEF= ${SRCS1:R:S/$/.o/g} ${SRCS2:R:S/$/.o/g} ${SRCS3:R:S/$/.o/g} 53*1f21f64aSMarius StroblOBJ_TSF= ${SRCS1:R:S/$/.o/g} ${SRCS5:R:S/$/.o/g} 54*1f21f64aSMarius Strobl 55*1f21f64aSMarius Stroblall: testfloat testemufloat testsoftfloat 56*1f21f64aSMarius Strobl 57*1f21f64aSMarius StroblCFLAGS+= -I. -I${.CURDIR} -I${.CURDIR}/.. -I${LIBC_DIR}/sparc64/fpu \ 58*1f21f64aSMarius Strobl -I${LIBC_DIR}/sparc64/sys -I${LIBC_DIR}/softfloat/bits64 \ 59*1f21f64aSMarius Strobl -I${LIBC_DIR}/softfloat 60*1f21f64aSMarius Strobl 61*1f21f64aSMarius StroblCLEANFILES+= fpu.c fpu_add.c fpu_compare.c fpu_div.c fpu_emu.h \ 62*1f21f64aSMarius Strobl fpu_explode.c fpu_implode.c fpu_mul.c fpu_qp.c fpu_sqrt.c fpu_subr.c \ 63*1f21f64aSMarius Strobl ${SRCS:R:S/$/.o/g} testfloat testemufloat testsoftfloat 64*1f21f64aSMarius Strobl 65*1f21f64aSMarius Strobltestsoftfloat: ${OBJ_TSF} 66*1f21f64aSMarius Strobl ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJ_TSF} 67*1f21f64aSMarius Strobl 68*1f21f64aSMarius Strobltestfloat: ${OBJ_TF} 69*1f21f64aSMarius Strobl ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJ_TF} 70*1f21f64aSMarius Strobl 71*1f21f64aSMarius Strobltestemufloat: ${OBJ_TEF} 72*1f21f64aSMarius Strobl ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJ_TEF} 73*1f21f64aSMarius Strobl 74*1f21f64aSMarius Stroblbeforedepend: fpu_emu.h 75*1f21f64aSMarius Strobl 76*1f21f64aSMarius Strobl# The emulator code needs to be built with a local fpu_reg.h instead of 77*1f21f64aSMarius Strobl# the one in ${EMUFLOAT_DIR}. Unfortunately, C preprocessor semantics 78*1f21f64aSMarius Strobl# means that a header file in the same directory as the source file 79*1f21f64aSMarius Strobl# overrides any alternative header file location. In order to include 80*1f21f64aSMarius Strobl# the wanted header file, create symlinks pointing to the real files 81*1f21f64aSMarius Strobl# and compile through the symlink. 82*1f21f64aSMarius Stroblfpu.c: ${EMUFLOAT_DIR}/fpu.c 83*1f21f64aSMarius Strobl ${LN} ${.ALLSRC} ${.TARGET} 84*1f21f64aSMarius Stroblfpu_add.c: ${EMUFLOAT_DIR}/fpu_add.c 85*1f21f64aSMarius Strobl ${LN} ${.ALLSRC} ${.TARGET} 86*1f21f64aSMarius Stroblfpu_compare.c: ${EMUFLOAT_DIR}/fpu_compare.c 87*1f21f64aSMarius Strobl ${LN} ${.ALLSRC} ${.TARGET} 88*1f21f64aSMarius Stroblfpu_div.c: ${EMUFLOAT_DIR}/fpu_div.c 89*1f21f64aSMarius Strobl ${LN} ${.ALLSRC} ${.TARGET} 90*1f21f64aSMarius Stroblfpu_emu.h: ${EMUFLOAT_DIR}/fpu_emu.h 91*1f21f64aSMarius Strobl ${LN} ${.ALLSRC} ${.TARGET} 92*1f21f64aSMarius Stroblfpu_explode.c: ${EMUFLOAT_DIR}/fpu_explode.c 93*1f21f64aSMarius Strobl ${LN} ${.ALLSRC} ${.TARGET} 94*1f21f64aSMarius Stroblfpu_implode.c: ${EMUFLOAT_DIR}/fpu_implode.c 95*1f21f64aSMarius Strobl ${LN} ${.ALLSRC} ${.TARGET} 96*1f21f64aSMarius Stroblfpu_mul.c: ${EMUFLOAT_DIR}/fpu_mul.c 97*1f21f64aSMarius Strobl ${LN} ${.ALLSRC} ${.TARGET} 98*1f21f64aSMarius Stroblfpu_qp.c: ${EMUFLOAT_DIR}/fpu_qp.c 99*1f21f64aSMarius Strobl ${LN} ${.ALLSRC} ${.TARGET} 100*1f21f64aSMarius Stroblfpu_sqrt.c: ${EMUFLOAT_DIR}/fpu_sqrt.c 101*1f21f64aSMarius Strobl ${LN} ${.ALLSRC} ${.TARGET} 102*1f21f64aSMarius Stroblfpu_subr.c: ${EMUFLOAT_DIR}/fpu_subr.c 103*1f21f64aSMarius Strobl ${LN} ${.ALLSRC} ${.TARGET} 104*1f21f64aSMarius Strobl 105*1f21f64aSMarius Strobl.include <bsd.prog.mk> 106