VirtualBox

source: vbox/trunk/src/libs/softfloat-3e/testfloat/build/Win32-MinGW/Makefile

Last change on this file was 94551, checked in by vboxsync, 3 years ago

libs/softfloat: Copied TestFloat-3e from vendor branch and to testfloat subdir. bugref:9898

  • Property svn:eol-style set to native
File size: 11.9 KB
Line 
1
2#=============================================================================
3#
4# This Makefile is part of TestFloat, Release 3e, 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.
7#
8# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
9# University of California. All rights reserved.
10#
11# Redistribution and use in source and binary forms, with or without
12# modification, are permitted provided that the following conditions are met:
13#
14# 1. Redistributions of source code must retain the above copyright notice,
15# this list of conditions, and the following disclaimer.
16#
17# 2. Redistributions in binary form must reproduce the above copyright
18# notice, this list of conditions, and the following disclaimer in the
19# documentation and/or other materials provided with the distribution.
20#
21# 3. Neither the name of the University nor the names of its contributors
22# may be used to endorse or promote products derived from this software
23# without specific prior written permission.
24#
25# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
26# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
27# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
28# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
29# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
30# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
32# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35#
36#=============================================================================
37
38SOURCE_DIR ?= ../../source
39SOFTFLOAT_DIR ?= ../../../SoftFloat-3e
40PLATFORM ?= Win32-MinGW
41
42SUBJ_SOURCE_DIR = $(SOURCE_DIR)/subj-C
43SOFTFLOAT_INCLUDE_DIR = $(SOFTFLOAT_DIR)/source/include
44
45SOFTFLOAT_H = \
46 $(SOFTFLOAT_INCLUDE_DIR)/softfloat_types.h \
47 $(SOFTFLOAT_INCLUDE_DIR)/softfloat.h
48SOFTFLOAT_LIB = $(SOFTFLOAT_DIR)/build/$(PLATFORM)/softfloat$(LIB)
49
50TESTFLOAT_OPTS ?= \
51 -DFLOAT16 -DFLOAT64 -DEXTFLOAT80 -DFLOAT128 -DFLOAT_ROUND_ODD \
52 -DLONG_DOUBLE_IS_EXTFLOAT80
53
54DELETE = rm -f
55C_INCLUDES = \
56 -I. -I$(SUBJ_SOURCE_DIR) -I$(SOURCE_DIR) -I$(SOFTFLOAT_INCLUDE_DIR)
57COMPILE_C = \
58 gcc -std=c99 -c -Werror-implicit-function-declaration $(TESTFLOAT_OPTS) \
59 $(C_INCLUDES) -O2 -o $@
60COMPILE_SLOWFLOAT_C = \
61 gcc -std=c99 -c -Werror-implicit-function-declaration $(TESTFLOAT_OPTS) \
62 $(C_INCLUDES) -O3 -o $@
63MAKELIB = ar crs $@
64LINK = gcc -o $@
65OTHER_LIBS = -lm
66
67OBJ = .o
68LIB = .a
69EXE = .exe
70
71.PHONY: all
72all: \
73 testsoftfloat$(EXE) \
74 timesoftfloat$(EXE) \
75 testfloat_gen$(EXE) \
76 testfloat_ver$(EXE) \
77 testfloat$(EXE) \
78
79OBJS_GENCASES = \
80 genCases_ui32$(OBJ) \
81 genCases_ui64$(OBJ) \
82 genCases_i32$(OBJ) \
83 genCases_i64$(OBJ) \
84 genCases_f16$(OBJ) \
85 genCases_f32$(OBJ) \
86 genCases_f64$(OBJ) \
87 genCases_extF80$(OBJ) \
88 genCases_f128$(OBJ) \
89
90OBJS_WRITECASE = \
91 writeCase_a_ui32$(OBJ) \
92 writeCase_a_ui64$(OBJ) \
93 writeCase_a_f16$(OBJ) \
94 writeCase_ab_f16$(OBJ) \
95 writeCase_abc_f16$(OBJ) \
96 writeCase_a_f32$(OBJ) \
97 writeCase_ab_f32$(OBJ) \
98 writeCase_abc_f32$(OBJ) \
99 writeCase_a_f64$(OBJ) \
100 writeCase_ab_f64$(OBJ) \
101 writeCase_abc_f64$(OBJ) \
102 writeCase_a_extF80M$(OBJ) \
103 writeCase_ab_extF80M$(OBJ) \
104 writeCase_a_f128M$(OBJ) \
105 writeCase_ab_f128M$(OBJ) \
106 writeCase_abc_f128M$(OBJ) \
107 writeCase_z_bool$(OBJ) \
108 writeCase_z_ui32$(OBJ) \
109 writeCase_z_ui64$(OBJ) \
110 writeCase_z_f16$(OBJ) \
111 writeCase_z_f32$(OBJ) \
112 writeCase_z_f64$(OBJ) \
113 writeCase_z_extF80M$(OBJ) \
114 writeCase_z_f128M$(OBJ) \
115
116OBJS_TEST = \
117 test_a_ui32_z_f16$(OBJ) \
118 test_a_ui32_z_f32$(OBJ) \
119 test_a_ui32_z_f64$(OBJ) \
120 test_a_ui32_z_extF80$(OBJ) \
121 test_a_ui32_z_f128$(OBJ) \
122 test_a_ui64_z_f16$(OBJ) \
123 test_a_ui64_z_f32$(OBJ) \
124 test_a_ui64_z_f64$(OBJ) \
125 test_a_ui64_z_extF80$(OBJ) \
126 test_a_ui64_z_f128$(OBJ) \
127 test_a_i32_z_f16$(OBJ) \
128 test_a_i32_z_f32$(OBJ) \
129 test_a_i32_z_f64$(OBJ) \
130 test_a_i32_z_extF80$(OBJ) \
131 test_a_i32_z_f128$(OBJ) \
132 test_a_i64_z_f16$(OBJ) \
133 test_a_i64_z_f32$(OBJ) \
134 test_a_i64_z_f64$(OBJ) \
135 test_a_i64_z_extF80$(OBJ) \
136 test_a_i64_z_f128$(OBJ) \
137 test_a_f16_z_ui32_rx$(OBJ) \
138 test_a_f16_z_ui64_rx$(OBJ) \
139 test_a_f16_z_i32_rx$(OBJ) \
140 test_a_f16_z_i64_rx$(OBJ) \
141 test_a_f16_z_ui32_x$(OBJ) \
142 test_a_f16_z_ui64_x$(OBJ) \
143 test_a_f16_z_i32_x$(OBJ) \
144 test_a_f16_z_i64_x$(OBJ) \
145 test_a_f16_z_f32$(OBJ) \
146 test_a_f16_z_f64$(OBJ) \
147 test_a_f16_z_extF80$(OBJ) \
148 test_a_f16_z_f128$(OBJ) \
149 test_az_f16$(OBJ) \
150 test_az_f16_rx$(OBJ) \
151 test_abz_f16$(OBJ) \
152 test_abcz_f16$(OBJ) \
153 test_ab_f16_z_bool$(OBJ) \
154 test_a_f32_z_ui32_rx$(OBJ) \
155 test_a_f32_z_ui64_rx$(OBJ) \
156 test_a_f32_z_i32_rx$(OBJ) \
157 test_a_f32_z_i64_rx$(OBJ) \
158 test_a_f32_z_ui32_x$(OBJ) \
159 test_a_f32_z_ui64_x$(OBJ) \
160 test_a_f32_z_i32_x$(OBJ) \
161 test_a_f32_z_i64_x$(OBJ) \
162 test_a_f32_z_f16$(OBJ) \
163 test_a_f32_z_f64$(OBJ) \
164 test_a_f32_z_extF80$(OBJ) \
165 test_a_f32_z_f128$(OBJ) \
166 test_az_f32$(OBJ) \
167 test_az_f32_rx$(OBJ) \
168 test_abz_f32$(OBJ) \
169 test_abcz_f32$(OBJ) \
170 test_ab_f32_z_bool$(OBJ) \
171 test_a_f64_z_ui32_rx$(OBJ) \
172 test_a_f64_z_ui64_rx$(OBJ) \
173 test_a_f64_z_i32_rx$(OBJ) \
174 test_a_f64_z_i64_rx$(OBJ) \
175 test_a_f64_z_ui32_x$(OBJ) \
176 test_a_f64_z_ui64_x$(OBJ) \
177 test_a_f64_z_i32_x$(OBJ) \
178 test_a_f64_z_i64_x$(OBJ) \
179 test_a_f64_z_f16$(OBJ) \
180 test_a_f64_z_f32$(OBJ) \
181 test_a_f64_z_extF80$(OBJ) \
182 test_a_f64_z_f128$(OBJ) \
183 test_az_f64$(OBJ) \
184 test_az_f64_rx$(OBJ) \
185 test_abz_f64$(OBJ) \
186 test_abcz_f64$(OBJ) \
187 test_ab_f64_z_bool$(OBJ) \
188 test_a_extF80_z_ui32_rx$(OBJ) \
189 test_a_extF80_z_ui64_rx$(OBJ) \
190 test_a_extF80_z_i32_rx$(OBJ) \
191 test_a_extF80_z_i64_rx$(OBJ) \
192 test_a_extF80_z_ui32_x$(OBJ) \
193 test_a_extF80_z_ui64_x$(OBJ) \
194 test_a_extF80_z_i32_x$(OBJ) \
195 test_a_extF80_z_i64_x$(OBJ) \
196 test_a_extF80_z_f16$(OBJ) \
197 test_a_extF80_z_f32$(OBJ) \
198 test_a_extF80_z_f64$(OBJ) \
199 test_a_extF80_z_f128$(OBJ) \
200 test_az_extF80$(OBJ) \
201 test_az_extF80_rx$(OBJ) \
202 test_abz_extF80$(OBJ) \
203 test_ab_extF80_z_bool$(OBJ) \
204 test_a_f128_z_ui32_rx$(OBJ) \
205 test_a_f128_z_ui64_rx$(OBJ) \
206 test_a_f128_z_i32_rx$(OBJ) \
207 test_a_f128_z_i64_rx$(OBJ) \
208 test_a_f128_z_ui32_x$(OBJ) \
209 test_a_f128_z_ui64_x$(OBJ) \
210 test_a_f128_z_i32_x$(OBJ) \
211 test_a_f128_z_i64_x$(OBJ) \
212 test_a_f128_z_f16$(OBJ) \
213 test_a_f128_z_f32$(OBJ) \
214 test_a_f128_z_f64$(OBJ) \
215 test_a_f128_z_extF80$(OBJ) \
216 test_az_f128$(OBJ) \
217 test_az_f128_rx$(OBJ) \
218 test_abz_f128$(OBJ) \
219 test_abcz_f128$(OBJ) \
220 test_ab_f128_z_bool$(OBJ) \
221
222OBJS_LIB = \
223 uint128_inline$(OBJ) \
224 uint128$(OBJ) \
225 fail$(OBJ) \
226 functions_common$(OBJ) \
227 functionInfos$(OBJ) \
228 standardFunctionInfos$(OBJ) \
229 random$(OBJ) \
230 genCases_common$(OBJ) \
231 $(OBJS_GENCASES) \
232 genCases_writeTestsTotal$(OBJ) \
233 verCases_inline$(OBJ) \
234 verCases_common$(OBJ) \
235 verCases_writeFunctionName$(OBJ) \
236 readHex$(OBJ) \
237 writeHex$(OBJ) \
238 $(OBJS_WRITECASE) \
239 testLoops_common$(OBJ) \
240 $(OBJS_TEST) \
241
242uint128$(OBJ): $(SOURCE_DIR)/uint128.h
243fail$(OBJ): $(SOURCE_DIR)/fail.h
244functions_common$(OBJ): $(SOFTFLOAT_H) $(SOURCE_DIR)/functions.h
245functionInfos$(OBJ): $(SOURCE_DIR)/functions.h
246standardFunctionInfos$(OBJ): $(SOURCE_DIR)/functions.h
247random$(OBJ): $(SOURCE_DIR)/random.h
248genCases_common$(OBJ): $(SOURCE_DIR)/fail.h $(SOURCE_DIR)/genCases.h
249$(OBJS_GENCASES): \
250 $(SOURCE_DIR)/random.h $(SOFTFLOAT_H) $(SOURCE_DIR)/genCases.h
251genCases_f128$(OBJ): $(SOURCE_DIR)/uint128.h
252genCases_writeTestsTotal$(OBJ): $(SOURCE_DIR)/genCases.h
253verCases_common$(OBJ): $(SOURCE_DIR)/verCases.h
254verCases_writeFunctionName$(OBJ): $(SOURCE_DIR)/verCases.h
255readHex$(OBJ): $(SOURCE_DIR)/readHex.h
256writeHex$(OBJ): $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) $(SOURCE_DIR)/writeHex.h
257$(OBJS_WRITECASE): \
258 $(SOFTFLOAT_H) $(SOURCE_DIR)/writeHex.h $(SOURCE_DIR)/writeCase.h
259testLoops_common$(OBJ): $(SOURCE_DIR)/testLoops.h
260$(OBJS_TEST): \
261 $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) $(SOURCE_DIR)/genCases.h \
262 $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h $(SOURCE_DIR)/testLoops.h
263$(OBJS_LIB): %$(OBJ): platform.h $(SOURCE_DIR)/%.c
264 $(COMPILE_C) $(SOURCE_DIR)/$*.c
265testfloat$(LIB): $(OBJS_LIB)
266 $(MAKELIB) $^
267
268OBJS_TESTSOFTFLOAT = slowfloat$(OBJ) testsoftfloat$(OBJ)
269
270slowfloat$(OBJ): \
271 platform.h $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) \
272 $(SOURCE_DIR)/slowfloat.h $(SOURCE_DIR)/slowfloat.c
273 $(COMPILE_SLOWFLOAT_C) $(SOURCE_DIR)/slowfloat.c
274testsoftfloat$(OBJ): \
275 platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
276 $(SOURCE_DIR)/slowfloat.h $(SOURCE_DIR)/functions.h \
277 $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h \
278 $(SOURCE_DIR)/testLoops.h $(SOURCE_DIR)/testsoftfloat.c
279 $(COMPILE_C) $(SOURCE_DIR)/testsoftfloat.c
280
281testsoftfloat$(EXE): $(OBJS_TESTSOFTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
282 $(LINK) $^ $(OTHER_LIBS)
283
284OBJS_TIMESOFTFLOAT = timesoftfloat$(OBJ)
285
286timesoftfloat$(OBJ): \
287 platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
288 $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/timesoftfloat.c
289 $(COMPILE_C) $(SOURCE_DIR)/timesoftfloat.c
290
291timesoftfloat$(EXE): $(OBJS_TIMESOFTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
292 $(LINK) $^ $(OTHER_LIBS)
293
294OBJS_TESTFLOAT_GEN = genLoops$(OBJ) testfloat_gen$(OBJ)
295
296genLoops$(OBJ): \
297 platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
298 $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/writeHex.h $(SOURCE_DIR)/genLoops.h \
299 $(SOURCE_DIR)/genLoops.c
300 $(COMPILE_C) $(SOURCE_DIR)/genLoops.c
301testfloat_gen$(OBJ): \
302 $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) $(SOURCE_DIR)/functions.h \
303 $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/genLoops.h \
304 $(SOURCE_DIR)/testfloat_gen.c
305 $(COMPILE_C) $(SOURCE_DIR)/testfloat_gen.c
306
307testfloat_gen$(EXE): $(OBJS_TESTFLOAT_GEN) testfloat$(LIB) $(SOFTFLOAT_LIB)
308 $(LINK) $^ $(OTHER_LIBS)
309
310OBJS_TESTFLOAT_VER = verLoops$(OBJ) testfloat_ver$(OBJ)
311
312verLoops$(OBJ): \
313 platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
314 $(SOURCE_DIR)/readHex.h $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h \
315 $(SOURCE_DIR)/verLoops.h $(SOURCE_DIR)/verLoops.c
316 $(COMPILE_C) $(SOURCE_DIR)/verLoops.c
317testfloat_ver$(OBJ): \
318 platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
319 $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/verCases.h \
320 $(SOURCE_DIR)/writeCase.h $(SOURCE_DIR)/verLoops.h \
321 $(SOURCE_DIR)/testfloat_ver.c
322 $(COMPILE_C) $(SOURCE_DIR)/testfloat_ver.c
323
324testfloat_ver$(EXE): $(OBJS_TESTFLOAT_VER) testfloat$(LIB) $(SOFTFLOAT_LIB)
325 $(LINK) $^ $(OTHER_LIBS)
326
327OBJS_TESTFLOAT = subjfloat$(OBJ) subjfloat_functions$(OBJ) testfloat$(OBJ)
328
329subjfloat$(OBJ): \
330 platform.h $(SOFTFLOAT_H) $(SUBJ_SOURCE_DIR)/subjfloat_config.h \
331 $(SOURCE_DIR)/subjfloat.h $(SUBJ_SOURCE_DIR)/subjfloat.c
332 $(COMPILE_C) $(SUBJ_SOURCE_DIR)/subjfloat.c
333subjfloat_functions$(OBJ): \
334 platform.h $(SUBJ_SOURCE_DIR)/subjfloat_config.h $(SOURCE_DIR)/subjfloat.h \
335 $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/subjfloat_functions.c
336 $(COMPILE_C) $(SOURCE_DIR)/subjfloat_functions.c
337testfloat$(OBJ): \
338 platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
339 $(SUBJ_SOURCE_DIR)/subjfloat_config.h $(SOURCE_DIR)/subjfloat.h \
340 $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/verCases.h \
341 $(SOURCE_DIR)/testLoops.h $(SOURCE_DIR)/testfloat.c
342 $(COMPILE_C) $(SOURCE_DIR)/testfloat.c
343
344testfloat$(EXE): $(OBJS_TESTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
345 $(LINK) $^ $(OTHER_LIBS)
346
347.PHONY: clean
348clean:
349 $(DELETE) $(OBJS_LIB) testfloat$(LIB)
350 $(DELETE) $(OBJS_TESTSOFTFLOAT) testsoftfloat$(EXE)
351 $(DELETE) $(OBJS_TIMESOFTFLOAT) timesoftfloat$(EXE)
352 $(DELETE) $(OBJS_TESTFLOAT_GEN) testfloat_gen$(EXE)
353 $(DELETE) $(OBJS_TESTFLOAT_VER) testfloat_ver$(EXE)
354 $(DELETE) $(OBJS_TESTFLOAT) testfloat$(EXE)
355
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette