2 #=============================================================================
4 # This Makefile is part of TestFloat, Release 3, a package of programs for
5 # testing the correctness of floating-point arithmetic complying with the IEEE
6 # Standard for Floating-Point, by John R. Hauser.
8 # Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
9 # (Regents). All Rights Reserved. Redistribution and use in source and
10 # binary forms, with or without modification, are permitted provided that the
11 # following conditions are met:
13 # Redistributions of source code must retain the above copyright notice,
14 # this list of conditions, and the following two paragraphs of disclaimer.
15 # Redistributions in binary form must reproduce the above copyright notice,
16 # this list of conditions, and the following two paragraphs of disclaimer in
17 # the documentation and/or other materials provided with the distribution.
18 # Neither the name of the Regents nor the names of its contributors may be
19 # used to endorse or promote products derived from this software without
20 # specific prior written permission.
22 # IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
23 # SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
24 # ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
25 # REGENTS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 # REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED
28 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29 # PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
30 # HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
31 # MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
33 #=============================================================================
35 SOURCE_DIR
= ..
/..
/source
36 SUBJ_SOURCE_DIR
= $(SOURCE_DIR
)/subj-C
37 SOFTFLOAT_DIR
= ..
/..
/..
/berkeley-softfloat-3
38 SOFTFLOAT_INCLUDE_DIR
= $(SOFTFLOAT_DIR
)/source
/include
39 PLATFORM
= Linux-x86_64-GCC
42 $(SOFTFLOAT_INCLUDE_DIR
)/softfloat_types.h \
43 $(SOFTFLOAT_INCLUDE_DIR
)/softfloat.h
44 SOFTFLOAT_LIB
= $(SOFTFLOAT_DIR
)/build
/$(PLATFORM
)/softfloat
$(LIB
)
46 TESTFLOAT_OPTS
= -DEXTFLOAT80
-DFLOAT128
-DLONG_DOUBLE_IS_EXTFLOAT80
50 -I.
-I
$(SUBJ_SOURCE_DIR
) -I
$(SOURCE_DIR
) -I
$(SOFTFLOAT_INCLUDE_DIR
)
52 gcc
-c
-Werror-implicit-function-declaration
$(TESTFLOAT_OPTS
) \
53 $(C_INCLUDES
) -O2
-o
$@
54 COMPILE_SLOWFLOAT_C
= \
55 gcc
-c
-Werror-implicit-function-declaration
$(TESTFLOAT_OPTS
) \
56 $(C_INCLUDES
) -O3
-o
$@
80 genCases_extF80
$(OBJ
) \
84 writeCase_a_ui32
$(OBJ
) \
85 writeCase_a_ui64
$(OBJ
) \
86 writeCase_a_f32
$(OBJ
) \
87 writeCase_ab_f32
$(OBJ
) \
88 writeCase_abc_f32
$(OBJ
) \
89 writeCase_a_f64
$(OBJ
) \
90 writeCase_ab_f64
$(OBJ
) \
91 writeCase_abc_f64
$(OBJ
) \
92 writeCase_a_extF80M
$(OBJ
) \
93 writeCase_ab_extF80M
$(OBJ
) \
94 writeCase_abc_extF80M
$(OBJ
) \
95 writeCase_a_f128M
$(OBJ
) \
96 writeCase_ab_f128M
$(OBJ
) \
97 writeCase_abc_f128M
$(OBJ
) \
98 writeCase_z_bool
$(OBJ
) \
99 writeCase_z_ui32
$(OBJ
) \
100 writeCase_z_ui64
$(OBJ
) \
101 writeCase_z_f32
$(OBJ
) \
102 writeCase_z_f64
$(OBJ
) \
103 writeCase_z_extF80M
$(OBJ
) \
104 writeCase_z_f128M
$(OBJ
) \
107 test_a_ui32_z_f32
$(OBJ
) \
108 test_a_ui32_z_f64
$(OBJ
) \
109 test_a_ui32_z_extF80
$(OBJ
) \
110 test_a_ui32_z_f128
$(OBJ
) \
111 test_a_ui64_z_f32
$(OBJ
) \
112 test_a_ui64_z_f64
$(OBJ
) \
113 test_a_ui64_z_extF80
$(OBJ
) \
114 test_a_ui64_z_f128
$(OBJ
) \
115 test_a_i32_z_f32
$(OBJ
) \
116 test_a_i32_z_f64
$(OBJ
) \
117 test_a_i32_z_extF80
$(OBJ
) \
118 test_a_i32_z_f128
$(OBJ
) \
119 test_a_i64_z_f32
$(OBJ
) \
120 test_a_i64_z_f64
$(OBJ
) \
121 test_a_i64_z_extF80
$(OBJ
) \
122 test_a_i64_z_f128
$(OBJ
) \
123 test_a_f32_z_ui32_rx
$(OBJ
) \
124 test_a_f32_z_ui64_rx
$(OBJ
) \
125 test_a_f32_z_i32_rx
$(OBJ
) \
126 test_a_f32_z_i64_rx
$(OBJ
) \
127 test_a_f32_z_ui32_x
$(OBJ
) \
128 test_a_f32_z_ui64_x
$(OBJ
) \
129 test_a_f32_z_i32_x
$(OBJ
) \
130 test_a_f32_z_i64_x
$(OBJ
) \
131 test_a_f32_z_f64
$(OBJ
) \
132 test_a_f32_z_extF80
$(OBJ
) \
133 test_a_f32_z_f128
$(OBJ
) \
135 test_az_f32_rx
$(OBJ
) \
137 test_abcz_f32
$(OBJ
) \
138 test_ab_f32_z_bool
$(OBJ
) \
139 test_a_f64_z_ui32_rx
$(OBJ
) \
140 test_a_f64_z_ui64_rx
$(OBJ
) \
141 test_a_f64_z_i32_rx
$(OBJ
) \
142 test_a_f64_z_i64_rx
$(OBJ
) \
143 test_a_f64_z_ui32_x
$(OBJ
) \
144 test_a_f64_z_ui64_x
$(OBJ
) \
145 test_a_f64_z_i32_x
$(OBJ
) \
146 test_a_f64_z_i64_x
$(OBJ
) \
147 test_a_f64_z_f32
$(OBJ
) \
148 test_a_f64_z_extF80
$(OBJ
) \
149 test_a_f64_z_f128
$(OBJ
) \
151 test_az_f64_rx
$(OBJ
) \
153 test_abcz_f64
$(OBJ
) \
154 test_ab_f64_z_bool
$(OBJ
) \
155 test_a_extF80_z_ui32_rx
$(OBJ
) \
156 test_a_extF80_z_ui64_rx
$(OBJ
) \
157 test_a_extF80_z_i32_rx
$(OBJ
) \
158 test_a_extF80_z_i64_rx
$(OBJ
) \
159 test_a_extF80_z_ui32_x
$(OBJ
) \
160 test_a_extF80_z_ui64_x
$(OBJ
) \
161 test_a_extF80_z_i32_x
$(OBJ
) \
162 test_a_extF80_z_i64_x
$(OBJ
) \
163 test_a_extF80_z_f32
$(OBJ
) \
164 test_a_extF80_z_f64
$(OBJ
) \
165 test_a_extF80_z_f128
$(OBJ
) \
166 test_az_extF80
$(OBJ
) \
167 test_az_extF80_rx
$(OBJ
) \
168 test_abz_extF80
$(OBJ
) \
169 test_ab_extF80_z_bool
$(OBJ
) \
170 test_a_f128_z_ui32_rx
$(OBJ
) \
171 test_a_f128_z_ui64_rx
$(OBJ
) \
172 test_a_f128_z_i32_rx
$(OBJ
) \
173 test_a_f128_z_i64_rx
$(OBJ
) \
174 test_a_f128_z_ui32_x
$(OBJ
) \
175 test_a_f128_z_ui64_x
$(OBJ
) \
176 test_a_f128_z_i32_x
$(OBJ
) \
177 test_a_f128_z_i64_x
$(OBJ
) \
178 test_a_f128_z_f32
$(OBJ
) \
179 test_a_f128_z_f64
$(OBJ
) \
180 test_a_f128_z_extF80
$(OBJ
) \
182 test_az_f128_rx
$(OBJ
) \
183 test_abz_f128
$(OBJ
) \
184 test_abcz_f128
$(OBJ
) \
185 test_ab_f128_z_bool
$(OBJ
) \
190 functions_common
$(OBJ
) \
191 functionInfos
$(OBJ
) \
192 standardFunctionInfos
$(OBJ
) \
194 genCases_common
$(OBJ
) \
196 genCases_writeTestsTotal
$(OBJ
) \
197 verCases_common
$(OBJ
) \
198 verCases_writeFunctionName
$(OBJ
) \
202 testLoops_common
$(OBJ
) \
205 uint128
$(OBJ
): $(SOURCE_DIR
)/uint128.h
206 fail
$(OBJ
): $(SOURCE_DIR
)/fail.h
207 functions_common
$(OBJ
): $(SOFTFLOAT_H
) $(SOURCE_DIR
)/functions.h
208 functionInfos
$(OBJ
): $(SOURCE_DIR
)/functions.h
209 standardFunctionInfos
$(OBJ
): $(SOURCE_DIR
)/functions.h
210 random
$(OBJ
): $(SOURCE_DIR
)/random.h
211 genCases_common
$(OBJ
): $(SOURCE_DIR
)/fail.h
$(SOURCE_DIR
)/genCases.h
213 $(SOURCE_DIR
)/random.h
$(SOFTFLOAT_H
) $(SOURCE_DIR
)/genCases.h
214 genCases_f128
$(OBJ
): $(SOURCE_DIR
)/uint128.h
215 genCases_writeTestsTotal
$(OBJ
): $(SOURCE_DIR
)/genCases.h
216 verCases_common
$(OBJ
): $(SOURCE_DIR
)/verCases.h
217 verCases_writeFunctionName
$(OBJ
): $(SOURCE_DIR
)/verCases.h
218 readHex
$(OBJ
): $(SOURCE_DIR
)/readHex.h
219 writeHex
$(OBJ
): $(SOURCE_DIR
)/uint128.h
$(SOFTFLOAT_H
) $(SOURCE_DIR
)/writeHex.h
221 $(SOFTFLOAT_H
) $(SOURCE_DIR
)/writeHex.h
$(SOURCE_DIR
)/writeCase.h
222 testLoops_common
$(OBJ
): $(SOURCE_DIR
)/testLoops.h
224 $(SOURCE_DIR
)/uint128.h
$(SOFTFLOAT_H
) $(SOURCE_DIR
)/genCases.h \
225 $(SOURCE_DIR
)/verCases.h
$(SOURCE_DIR
)/writeCase.h
$(SOURCE_DIR
)/testLoops.h
226 $(OBJS_LIB
): %$(OBJ
): platform.h
$(SOURCE_DIR
)/%.c
227 $(COMPILE_C
) $(SOURCE_DIR
)/$*.c
228 testfloat
$(LIB
): $(OBJS_LIB
)
231 OBJS_TESTSOFTFLOAT
= slowfloat
$(OBJ
) testsoftfloat
$(OBJ
)
234 platform.h
$(SOURCE_DIR
)/uint128.h
$(SOFTFLOAT_H
) \
235 $(SOURCE_DIR
)/slowfloat.h
$(SOURCE_DIR
)/slowfloat.c
236 $(COMPILE_SLOWFLOAT_C
) $(SOURCE_DIR
)/slowfloat.c
237 testsoftfloat
$(OBJ
): \
238 platform.h
$(SOURCE_DIR
)/uint128.h
$(SOURCE_DIR
)/fail.h
$(SOFTFLOAT_H
) \
239 $(SOURCE_DIR
)/slowfloat.h
$(SOURCE_DIR
)/functions.h \
240 $(SOURCE_DIR
)/genCases.h
$(SOURCE_DIR
)/verCases.h
$(SOURCE_DIR
)/writeCase.h \
241 $(SOURCE_DIR
)/testLoops.h
$(SOURCE_DIR
)/testsoftfloat.c
242 $(COMPILE_C
) $(SOURCE_DIR
)/testsoftfloat.c
244 testsoftfloat
$(EXE
): $(OBJS_TESTSOFTFLOAT
) testfloat
$(LIB
) $(SOFTFLOAT_LIB
)
247 OBJS_TIMESOFTFLOAT
= timesoftfloat
$(OBJ
)
249 timesoftfloat
$(OBJ
): \
250 platform.h
$(SOURCE_DIR
)/uint128.h
$(SOURCE_DIR
)/fail.h
$(SOFTFLOAT_H
) \
251 $(SOURCE_DIR
)/functions.h
$(SOURCE_DIR
)/timesoftfloat.c
252 $(COMPILE_C
) $(SOURCE_DIR
)/timesoftfloat.c
254 timesoftfloat
$(EXE
): $(OBJS_TIMESOFTFLOAT
) testfloat
$(LIB
) $(SOFTFLOAT_LIB
)
257 OBJS_TESTFLOAT_GEN
= genLoops
$(OBJ
) testfloat_gen
$(OBJ
)
260 platform.h
$(SOURCE_DIR
)/uint128.h
$(SOURCE_DIR
)/fail.h
$(SOFTFLOAT_H
) \
261 $(SOURCE_DIR
)/genCases.h
$(SOURCE_DIR
)/writeHex.h
$(SOURCE_DIR
)/genLoops.h \
262 $(SOURCE_DIR
)/genLoops.c
263 $(COMPILE_C
) $(SOURCE_DIR
)/genLoops.c
264 testfloat_gen
$(OBJ
): \
265 $(SOURCE_DIR
)/fail.h
$(SOFTFLOAT_H
) $(SOURCE_DIR
)/functions.h \
266 $(SOURCE_DIR
)/genCases.h
$(SOURCE_DIR
)/genLoops.h \
267 $(SOURCE_DIR
)/testfloat_gen.c
268 $(COMPILE_C
) $(SOURCE_DIR
)/testfloat_gen.c
270 testfloat_gen
$(EXE
): $(OBJS_TESTFLOAT_GEN
) testfloat
$(LIB
) $(SOFTFLOAT_LIB
)
273 OBJS_TESTFLOAT_VER
= verLoops
$(OBJ
) testfloat_ver
$(OBJ
)
276 platform.h
$(SOURCE_DIR
)/uint128.h
$(SOURCE_DIR
)/fail.h
$(SOFTFLOAT_H
) \
277 $(SOURCE_DIR
)/readHex.h
$(SOURCE_DIR
)/verCases.h
$(SOURCE_DIR
)/writeCase.h \
278 $(SOURCE_DIR
)/verLoops.h
$(SOURCE_DIR
)/verLoops.c
279 $(COMPILE_C
) $(SOURCE_DIR
)/verLoops.c
280 testfloat_ver
$(OBJ
): \
281 platform.h
$(SOURCE_DIR
)/uint128.h
$(SOURCE_DIR
)/fail.h
$(SOFTFLOAT_H
) \
282 $(SOURCE_DIR
)/functions.h
$(SOURCE_DIR
)/verCases.h \
283 $(SOURCE_DIR
)/writeCase.h
$(SOURCE_DIR
)/verLoops.h \
284 $(SOURCE_DIR
)/testfloat_ver.c
285 $(COMPILE_C
) $(SOURCE_DIR
)/testfloat_ver.c
287 testfloat_ver
$(EXE
): $(OBJS_TESTFLOAT_VER
) testfloat
$(LIB
) $(SOFTFLOAT_LIB
)
290 OBJS_TESTFLOAT
= subjfloat
$(OBJ
) subjfloat_functions
$(OBJ
) testfloat
$(OBJ
)
293 platform.h
$(SOFTFLOAT_H
) $(SUBJ_SOURCE_DIR
)/subjfloat_config.h \
294 $(SOURCE_DIR
)/subjfloat.h
$(SUBJ_SOURCE_DIR
)/subjfloat.c
295 $(COMPILE_C
) $(SUBJ_SOURCE_DIR
)/subjfloat.c
296 subjfloat_functions
$(OBJ
): \
297 platform.h
$(SUBJ_SOURCE_DIR
)/subjfloat_config.h
$(SOURCE_DIR
)/subjfloat.h \
298 $(SOURCE_DIR
)/functions.h
$(SOURCE_DIR
)/subjfloat_functions.c
299 $(COMPILE_C
) $(SOURCE_DIR
)/subjfloat_functions.c
301 platform.h
$(SOURCE_DIR
)/uint128.h
$(SOURCE_DIR
)/fail.h
$(SOFTFLOAT_H
) \
302 $(SUBJ_SOURCE_DIR
)/subjfloat_config.h
$(SOURCE_DIR
)/subjfloat.h \
303 $(SOURCE_DIR
)/functions.h
$(SOURCE_DIR
)/genCases.h
$(SOURCE_DIR
)/verCases.h \
304 $(SOURCE_DIR
)/testLoops.h
$(SOURCE_DIR
)/testfloat.c
305 $(COMPILE_C
) $(SOURCE_DIR
)/testfloat.c
307 testfloat
$(EXE
): $(OBJS_TESTFLOAT
) testfloat
$(LIB
) $(SOFTFLOAT_LIB
)
312 $(DELETE
) $(OBJS_LIB
) testfloat
$(LIB
)
313 $(DELETE
) $(OBJS_TESTSOFTFLOAT
) testsoftfloat
$(EXE
)
314 $(DELETE
) $(OBJS_TIMESOFTFLOAT
) timesoftfloat
$(EXE
)
315 $(DELETE
) $(OBJS_TESTFLOAT_GEN
) testfloat_gen
$(EXE
)
316 $(DELETE
) $(OBJS_TESTFLOAT_VER
) testfloat_ver
$(EXE
)
317 $(DELETE
) $(OBJS_TESTFLOAT
) testfloat
$(EXE
)