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