makefile revision 1.1 1 1.1 christos # /****************************************************************
2 1.1 christos # Copyright (C) 1998, 2000 by Lucent Technologies
3 1.1 christos # All Rights Reserved
4 1.1 christos #
5 1.1 christos # Permission to use, copy, modify, and distribute this software and
6 1.1 christos # its documentation for any purpose and without fee is hereby
7 1.1 christos # granted, provided that the above copyright notice appear in all
8 1.1 christos # copies and that both that the copyright notice and this
9 1.1 christos # permission notice and warranty disclaimer appear in supporting
10 1.1 christos # documentation, and that the name of Lucent or any of its entities
11 1.1 christos # not be used in advertising or publicity pertaining to
12 1.1 christos # distribution of the software without specific, written prior
13 1.1 christos # permission.
14 1.1 christos #
15 1.1 christos # LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
16 1.1 christos # INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
17 1.1 christos # IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
18 1.1 christos # SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
19 1.1 christos # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
20 1.1 christos # IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
21 1.1 christos # ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
22 1.1 christos # THIS SOFTWARE.
23 1.1 christos #
24 1.1 christos # ****************************************************************/
25 1.1 christos
26 1.1 christos .SUFFIXES: .c .o
27 1.1 christos CC = cc
28 1.1 christos CFLAGS = -g -I..
29 1.1 christos A = ../gdtoa.a
30 1.1 christos L = -lm
31 1.1 christos L1 =
32 1.1 christos #use "L1=-lm" when compiled with -DHonor_FLTP_ROUNDS or -DUSE_LOCALE
33 1.1 christos INFFIX = | sed 's/[Ii][Nn][Ff][intyINTY]*/Infinity/g'
34 1.1 christos
35 1.1 christos .c.o:
36 1.1 christos $(CC) -c $(CFLAGS) $*.c
37 1.1 christos
38 1.1 christos all: dt dItest ddtest dtest ftest Qtest xLtest xtest ddtestsi dItestsi tests
39 1.1 christos
40 1.1 christos dt = dt.o $A
41 1.1 christos dt: $(dt)
42 1.1 christos $(CC) -o dt $(dt) $L
43 1.1 christos
44 1.1 christos dItest = dItest.o getround.o $A
45 1.1 christos dItest: $(dItest)
46 1.1 christos $(CC) -o dItest $(dItest) $(L1)
47 1.1 christos
48 1.1 christos ddtest = ddtest.o getround.o $A
49 1.1 christos ddtest: $(ddtest)
50 1.1 christos $(CC) -o ddtest $(ddtest) $L
51 1.1 christos
52 1.1 christos dtest = dtest.o getround.o $A
53 1.1 christos dtest: $(dtest)
54 1.1 christos $(CC) -o dtest $(dtest) $L
55 1.1 christos
56 1.1 christos ftest = ftest.o getround.o $A
57 1.1 christos ftest: $(ftest)
58 1.1 christos $(CC) -o ftest $(ftest) $(L1)
59 1.1 christos
60 1.1 christos Qtest = Qtest.o getround.o $A
61 1.1 christos Qtest: $(Qtest)
62 1.1 christos $(CC) -o Qtest $(Qtest) $(L1)
63 1.1 christos
64 1.1 christos xtest = xtest.o getround.o $A
65 1.1 christos xtest: $(xtest)
66 1.1 christos $(CC) -o xtest $(xtest) $(L1)
67 1.1 christos
68 1.1 christos xLtest = xLtest.o getround.o $A
69 1.1 christos xLtest: $(xLtest)
70 1.1 christos $(CC) -o xLtest $(xLtest) $(L1)
71 1.1 christos
72 1.1 christos strtopddSI.o: strtopddSI.c ../strtopdd.c
73 1.1 christos
74 1.1 christos strtorddSI.o: strtorddSI.c ../strtordd.c
75 1.1 christos
76 1.1 christos strtodISI.o: strtodISI.c ../strtodI.c
77 1.1 christos
78 1.1 christos strtoIddSI.o: strtoIddSI.c ../strtoIdd.c
79 1.1 christos
80 1.1 christos strtoIdSI.o: strtoIdSI.c ../strtoId.c
81 1.1 christos
82 1.1 christos ddtestsi = ddtest.o strtopddSI.o strtorddSI.o strtoIddSI.o getround.o $A
83 1.1 christos ddtestsi: $(ddtestsi)
84 1.1 christos $(CC) -o ddtestsi $(ddtestsi) $L
85 1.1 christos
86 1.1 christos dItestsi = dItest.o strtodISI.o strtoIdSI.o getround.o $A
87 1.1 christos dItestsi: $(dItestsi)
88 1.1 christos $(CC) -o dItestsi $(dItestsi) $(L1)
89 1.1 christos
90 1.1 christos strtodt = strtodt.o $A
91 1.1 christos strtodt: $(strtodt)
92 1.1 christos $(CC) -o strtodt $(strtodt) $L
93 1.1 christos
94 1.1 christos pftest = pftest.o $A
95 1.1 christos pftest: ../Printf $(pftest)
96 1.1 christos $(CC) -o pftest $(pftest) $L
97 1.1 christos
98 1.1 christos ## On Intel (and Intel-like) systems using extended-precision registers
99 1.1 christos ## for double-precision (C type double) computations that sometimes suffer
100 1.1 christos ## double rounding errors, the test below involving strtodt generally shows
101 1.1 christos ## five lines of unexpected results. Variant strtodtnrp uses ../strtodrnp.c
102 1.1 christos ## (which does all computations in integer arithmetic) and should show no
103 1.1 christos ## unexpected results.
104 1.1 christos
105 1.1 christos strtodtnrp = strtodt.o ../strtodnrp.c $A
106 1.1 christos strtodtnrp: $(strtodtnrp)
107 1.1 christos $(CC) -o strtodtnrp $(strtodtnrp)
108 1.1 christos
109 1.1 christos # xQtest generates cp commands that depend on sizeof(long double).
110 1.1 christos # See the source for details. If you know better, create Q.out,
111 1.1 christos # x.out and xL.out by copying the relevant *.ou0 or *.ou1 files
112 1.1 christos # to the corresponding .out files. In short, the *.ou0 files are
113 1.1 christos # for long double == double; x.ou1 and xL.ou1 are for
114 1.1 christos # long double == extended (a la 80x87 and MC680x0), and Q.ou1 is
115 1.1 christos # for long double == quad.
116 1.1 christos
117 1.1 christos Q.out x.out xL.out:
118 1.1 christos $(CC) -o xQtest xQtest.c
119 1.1 christos ./xQtest | sh
120 1.1 christos rm -f xQtest xQtest.o
121 1.1 christos
122 1.1 christos ## The rmdir below will fail if any test results differ.
123 1.1 christos
124 1.1 christos tests: Q.out x.out xL.out dt dItest ddtest dtest ftest Qtest xLtest xtest ddtestsi dItestsi strtodt strtodtnrp
125 1.1 christos mkdir bad
126 1.1 christos cat testnos testnos1 | ./dt $(INFFIX) >zap 2>&1
127 1.1 christos cmp dtst.out zap || mv zap bad/dtst.out
128 1.1 christos ./dItest <testnos $(INFFIX) >zap 2>&1
129 1.1 christos cmp dI.out zap || mv zap bad/dI.out
130 1.1 christos ./dItestsi <testnos $(INFFIX) >zap 2>&1
131 1.1 christos cmp dIsi.out zap || mv zap bad/dIsi.out
132 1.1 christos ./ddtestsi <testnos $(INFFIX) >zap 2>&1
133 1.1 christos cmp ddsi.out zap || mv zap bad/ddsi.out
134 1.1 christos for i in dd d f x xL Q; do cat testnos rtestnos | \
135 1.1 christos ./"$$i"test $(INFFIX) >zap 2>&1;\
136 1.1 christos cmp $$i.out zap || mv zap bad/$$i.out; done
137 1.1 christos ./strtodt testnos3 >bad/strtodt.out && rm bad/strtodt.out || \
138 1.1 christos cat bad/strtodt.out
139 1.1 christos ./strtodtnrp testnos3 >bad/strtodtnrp.out && rm bad/strtodtnrp.out || \
140 1.1 christos cat bad/strtodtnrp.out
141 1.1 christos rmdir bad 2>/dev/null || \
142 1.1 christos (cd bad; for i in *; do cmp -s $$i ../obad/$$i && rm $$i;done; cd ..; rmdir bad)
143 1.1 christos touch tests
144 1.1 christos
145 1.1 christos # To test Printf in ../gdtoa.a, "make pf_test" and perhaps "make pf_testLq"
146 1.1 christos # (if both long double and quad are desired and available).
147 1.1 christos
148 1.1 christos pf_test: pftest
149 1.1 christos ./pftest <pftestnos >zap
150 1.1 christos cmp pftest.out zap && rm zap
151 1.1 christos
152 1.1 christos pf_testLq: pftest
153 1.1 christos ./pftest <pfLqtestnos >zap
154 1.1 christos cmp pftestLq.out zap && rm zap
155 1.1 christos
156 1.1 christos xs0 = README Q.ou0 Q.ou1 Qtest.c d.out dI.out dIsi.out dItest.c dd.out\
157 1.1 christos ddsi.out ddtest.c dt.c dtest.c dtst.out f.out ftest.c\
158 1.1 christos getround.c makefile pfLqtestnos pftest.c pftestQ.out\
159 1.1 christos pftestx.out pftestLq.out pftestnos rtestnos strtoIdSI.c\
160 1.1 christos strtoIddSI.c strtodISI.c strtodt.c strtopddSI.c strtorddSI.c\
161 1.1 christos testnos testnos1 testnos3 x.ou0 x.ou1 xL.ou0 xL.ou1 xLtest.c\
162 1.1 christos xQtest.c xtest.c
163 1.1 christos
164 1.1 christos # invoke "make -r xsum.out"
165 1.1 christos xsum.out: xsum0.out $(xs0)
166 1.1 christos xsum $(xs0) >xsum1.out
167 1.1 christos cmp xsum0.out xsum1.out && mv xsum1.out xsum.out || diff xsum[01].out
168 1.1 christos
169 1.1 christos clean:
170 1.1 christos rm -f *.[ao] dt *test *testsi pftest.out strtodt strtodtnrp xsum.out\
171 1.1 christos xsum1.out tests zap x.out xL.out Q.out
172 1.1 christos rm -rf bad
173