blob: cc124b3c574792234a0745b1ebfa25e0e37815ee [file] [log] [blame]
Patrick Williamsb48b7b42016-08-17 15:04:38 -05001Upstream-Status: Inappropriate [configuration]
2
3From 9aa4a416f05967320c1aa52bdccfe105a3bf3269 Mon Sep 17 00:00:00 2001
4From: Fabio Berton <fabio.berton@ossystems.com.br>
5Date: Thu, 4 Feb 2016 09:16:09 -0200
6Subject: [PATCH 2/2] Makefile for cross compile TestFloat
7
8Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
9---
10 TestFloat-3a/build/Linux-Cross-Compile/Makefile | 321 ++++++++++++++++++++++
11 TestFloat-3a/build/Linux-Cross-Compile/platform.h | 45 +++
12 2 files changed, 366 insertions(+)
13 create mode 100644 TestFloat-3a/build/Linux-Cross-Compile/Makefile
14 create mode 100644 TestFloat-3a/build/Linux-Cross-Compile/platform.h
15
16diff --git a/TestFloat-3a/build/Linux-Cross-Compile/Makefile b/TestFloat-3a/build/Linux-Cross-Compile/Makefile
17new file mode 100644
18index 0000000..a89326a
19--- /dev/null
20+++ b/TestFloat-3a/build/Linux-Cross-Compile/Makefile
21@@ -0,0 +1,321 @@
22+
23+#=============================================================================
24+#
25+# This Makefile is part of TestFloat, Release 3a, a package of programs for
26+# testing the correctness of floating-point arithmetic complying with the IEEE
27+# Standard for Floating-Point, by John R. Hauser.
28+#
29+# Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
30+# California. All rights reserved.
31+#
32+# Redistribution and use in source and binary forms, with or without
33+# modification, are permitted provided that the following conditions are met:
34+#
35+# 1. Redistributions of source code must retain the above copyright notice,
36+# this list of conditions, and the following disclaimer.
37+#
38+# 2. Redistributions in binary form must reproduce the above copyright
39+# notice, this list of conditions, and the following disclaimer in the
40+# documentation and/or other materials provided with the distribution.
41+#
42+# 3. Neither the name of the University nor the names of its contributors
43+# may be used to endorse or promote products derived from this software
44+# without specific prior written permission.
45+#
46+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
47+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
48+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
49+# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
50+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
51+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
52+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
53+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
54+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
55+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
56+#
57+#=============================================================================
58+
59+SOURCE_DIR = ../../source
60+SUBJ_SOURCE_DIR = $(SOURCE_DIR)/subj-C
61+SOFTFLOAT_DIR = ../../../SoftFloat-3a
62+SOFTFLOAT_INCLUDE_DIR = $(SOFTFLOAT_DIR)/source/include
63+PLATFORM = Linux-Cross-Compile
64+
65+SOFTFLOAT_H = \
66+ $(SOFTFLOAT_INCLUDE_DIR)/softfloat_types.h \
67+ $(SOFTFLOAT_INCLUDE_DIR)/softfloat.h
68+SOFTFLOAT_LIB = $(SOFTFLOAT_DIR)/build/$(PLATFORM)/softfloat$(LIB)
69+
70+TESTFLOAT_OPTS = -DEXTFLOAT80 -DFLOAT128 -DLONG_DOUBLE_IS_EXTFLOAT80 -fgnu89-inline
71+
72+DELETE = rm -f
73+C_INCLUDES = \
74+ -I. -I$(SUBJ_SOURCE_DIR) -I$(SOURCE_DIR) -I$(SOFTFLOAT_INCLUDE_DIR)
75+COMPILE_C = \
76+ ${CC} -c -Werror-implicit-function-declaration $(TESTFLOAT_OPTS) \
77+ $(C_INCLUDES) -O2 -o $@
78+COMPILE_SLOWFLOAT_C = \
79+ ${CC} -c -Werror-implicit-function-declaration $(TESTFLOAT_OPTS) \
80+ $(C_INCLUDES) -O3 -o $@
81+MAKELIB = ${AR} crs $@
82+LINK = ${CC} -o $@
83+OTHER_LIBS = -lm
84+
85+OBJ = .o
86+LIB = .a
87+EXE =
88+
89+.PHONY: all
90+all: \
91+ testsoftfloat$(EXE) \
92+ timesoftfloat$(EXE) \
93+ testfloat_gen$(EXE) \
94+ testfloat_ver$(EXE) \
95+ testfloat$(EXE) \
96+
97+OBJS_GENCASES = \
98+ genCases_ui32$(OBJ) \
99+ genCases_ui64$(OBJ) \
100+ genCases_i32$(OBJ) \
101+ genCases_i64$(OBJ) \
102+ genCases_f32$(OBJ) \
103+ genCases_f64$(OBJ) \
104+ genCases_extF80$(OBJ) \
105+ genCases_f128$(OBJ) \
106+
107+OBJS_WRITECASE = \
108+ writeCase_a_ui32$(OBJ) \
109+ writeCase_a_ui64$(OBJ) \
110+ writeCase_a_f32$(OBJ) \
111+ writeCase_ab_f32$(OBJ) \
112+ writeCase_abc_f32$(OBJ) \
113+ writeCase_a_f64$(OBJ) \
114+ writeCase_ab_f64$(OBJ) \
115+ writeCase_abc_f64$(OBJ) \
116+ writeCase_a_extF80M$(OBJ) \
117+ writeCase_ab_extF80M$(OBJ) \
118+ writeCase_abc_extF80M$(OBJ) \
119+ writeCase_a_f128M$(OBJ) \
120+ writeCase_ab_f128M$(OBJ) \
121+ writeCase_abc_f128M$(OBJ) \
122+ writeCase_z_bool$(OBJ) \
123+ writeCase_z_ui32$(OBJ) \
124+ writeCase_z_ui64$(OBJ) \
125+ writeCase_z_f32$(OBJ) \
126+ writeCase_z_f64$(OBJ) \
127+ writeCase_z_extF80M$(OBJ) \
128+ writeCase_z_f128M$(OBJ) \
129+
130+OBJS_TEST = \
131+ test_a_ui32_z_f32$(OBJ) \
132+ test_a_ui32_z_f64$(OBJ) \
133+ test_a_ui32_z_extF80$(OBJ) \
134+ test_a_ui32_z_f128$(OBJ) \
135+ test_a_ui64_z_f32$(OBJ) \
136+ test_a_ui64_z_f64$(OBJ) \
137+ test_a_ui64_z_extF80$(OBJ) \
138+ test_a_ui64_z_f128$(OBJ) \
139+ test_a_i32_z_f32$(OBJ) \
140+ test_a_i32_z_f64$(OBJ) \
141+ test_a_i32_z_extF80$(OBJ) \
142+ test_a_i32_z_f128$(OBJ) \
143+ test_a_i64_z_f32$(OBJ) \
144+ test_a_i64_z_f64$(OBJ) \
145+ test_a_i64_z_extF80$(OBJ) \
146+ test_a_i64_z_f128$(OBJ) \
147+ test_a_f32_z_ui32_rx$(OBJ) \
148+ test_a_f32_z_ui64_rx$(OBJ) \
149+ test_a_f32_z_i32_rx$(OBJ) \
150+ test_a_f32_z_i64_rx$(OBJ) \
151+ test_a_f32_z_ui32_x$(OBJ) \
152+ test_a_f32_z_ui64_x$(OBJ) \
153+ test_a_f32_z_i32_x$(OBJ) \
154+ test_a_f32_z_i64_x$(OBJ) \
155+ test_a_f32_z_f64$(OBJ) \
156+ test_a_f32_z_extF80$(OBJ) \
157+ test_a_f32_z_f128$(OBJ) \
158+ test_az_f32$(OBJ) \
159+ test_az_f32_rx$(OBJ) \
160+ test_abz_f32$(OBJ) \
161+ test_abcz_f32$(OBJ) \
162+ test_ab_f32_z_bool$(OBJ) \
163+ test_a_f64_z_ui32_rx$(OBJ) \
164+ test_a_f64_z_ui64_rx$(OBJ) \
165+ test_a_f64_z_i32_rx$(OBJ) \
166+ test_a_f64_z_i64_rx$(OBJ) \
167+ test_a_f64_z_ui32_x$(OBJ) \
168+ test_a_f64_z_ui64_x$(OBJ) \
169+ test_a_f64_z_i32_x$(OBJ) \
170+ test_a_f64_z_i64_x$(OBJ) \
171+ test_a_f64_z_f32$(OBJ) \
172+ test_a_f64_z_extF80$(OBJ) \
173+ test_a_f64_z_f128$(OBJ) \
174+ test_az_f64$(OBJ) \
175+ test_az_f64_rx$(OBJ) \
176+ test_abz_f64$(OBJ) \
177+ test_abcz_f64$(OBJ) \
178+ test_ab_f64_z_bool$(OBJ) \
179+ test_a_extF80_z_ui32_rx$(OBJ) \
180+ test_a_extF80_z_ui64_rx$(OBJ) \
181+ test_a_extF80_z_i32_rx$(OBJ) \
182+ test_a_extF80_z_i64_rx$(OBJ) \
183+ test_a_extF80_z_ui32_x$(OBJ) \
184+ test_a_extF80_z_ui64_x$(OBJ) \
185+ test_a_extF80_z_i32_x$(OBJ) \
186+ test_a_extF80_z_i64_x$(OBJ) \
187+ test_a_extF80_z_f32$(OBJ) \
188+ test_a_extF80_z_f64$(OBJ) \
189+ test_a_extF80_z_f128$(OBJ) \
190+ test_az_extF80$(OBJ) \
191+ test_az_extF80_rx$(OBJ) \
192+ test_abz_extF80$(OBJ) \
193+ test_ab_extF80_z_bool$(OBJ) \
194+ test_a_f128_z_ui32_rx$(OBJ) \
195+ test_a_f128_z_ui64_rx$(OBJ) \
196+ test_a_f128_z_i32_rx$(OBJ) \
197+ test_a_f128_z_i64_rx$(OBJ) \
198+ test_a_f128_z_ui32_x$(OBJ) \
199+ test_a_f128_z_ui64_x$(OBJ) \
200+ test_a_f128_z_i32_x$(OBJ) \
201+ test_a_f128_z_i64_x$(OBJ) \
202+ test_a_f128_z_f32$(OBJ) \
203+ test_a_f128_z_f64$(OBJ) \
204+ test_a_f128_z_extF80$(OBJ) \
205+ test_az_f128$(OBJ) \
206+ test_az_f128_rx$(OBJ) \
207+ test_abz_f128$(OBJ) \
208+ test_abcz_f128$(OBJ) \
209+ test_ab_f128_z_bool$(OBJ) \
210+
211+OBJS_LIB = \
212+ uint128$(OBJ) \
213+ fail$(OBJ) \
214+ functions_common$(OBJ) \
215+ functionInfos$(OBJ) \
216+ standardFunctionInfos$(OBJ) \
217+ random$(OBJ) \
218+ genCases_common$(OBJ) \
219+ $(OBJS_GENCASES) \
220+ genCases_writeTestsTotal$(OBJ) \
221+ verCases_common$(OBJ) \
222+ verCases_writeFunctionName$(OBJ) \
223+ readHex$(OBJ) \
224+ writeHex$(OBJ) \
225+ $(OBJS_WRITECASE) \
226+ testLoops_common$(OBJ) \
227+ $(OBJS_TEST) \
228+
229+uint128$(OBJ): $(SOURCE_DIR)/uint128.h
230+fail$(OBJ): $(SOURCE_DIR)/fail.h
231+functions_common$(OBJ): $(SOFTFLOAT_H) $(SOURCE_DIR)/functions.h
232+functionInfos$(OBJ): $(SOURCE_DIR)/functions.h
233+standardFunctionInfos$(OBJ): $(SOURCE_DIR)/functions.h
234+random$(OBJ): $(SOURCE_DIR)/random.h
235+genCases_common$(OBJ): $(SOURCE_DIR)/fail.h $(SOURCE_DIR)/genCases.h
236+$(OBJS_GENCASES): \
237+ $(SOURCE_DIR)/random.h $(SOFTFLOAT_H) $(SOURCE_DIR)/genCases.h
238+genCases_f128$(OBJ): $(SOURCE_DIR)/uint128.h
239+genCases_writeTestsTotal$(OBJ): $(SOURCE_DIR)/genCases.h
240+verCases_common$(OBJ): $(SOURCE_DIR)/verCases.h
241+verCases_writeFunctionName$(OBJ): $(SOURCE_DIR)/verCases.h
242+readHex$(OBJ): $(SOURCE_DIR)/readHex.h
243+writeHex$(OBJ): $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) $(SOURCE_DIR)/writeHex.h
244+$(OBJS_WRITECASE): \
245+ $(SOFTFLOAT_H) $(SOURCE_DIR)/writeHex.h $(SOURCE_DIR)/writeCase.h
246+testLoops_common$(OBJ): $(SOURCE_DIR)/testLoops.h
247+$(OBJS_TEST): \
248+ $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) $(SOURCE_DIR)/genCases.h \
249+ $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h $(SOURCE_DIR)/testLoops.h
250+$(OBJS_LIB): %$(OBJ): platform.h $(SOURCE_DIR)/%.c
251+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
252+testfloat$(LIB): $(OBJS_LIB)
253+ $(MAKELIB) $^
254+
255+OBJS_TESTSOFTFLOAT = slowfloat$(OBJ) testsoftfloat$(OBJ)
256+
257+slowfloat$(OBJ): \
258+ platform.h $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) \
259+ $(SOURCE_DIR)/slowfloat.h $(SOURCE_DIR)/slowfloat.c
260+ $(COMPILE_SLOWFLOAT_C) $(SOURCE_DIR)/slowfloat.c
261+testsoftfloat$(OBJ): \
262+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
263+ $(SOURCE_DIR)/slowfloat.h $(SOURCE_DIR)/functions.h \
264+ $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h \
265+ $(SOURCE_DIR)/testLoops.h $(SOURCE_DIR)/testsoftfloat.c
266+ $(COMPILE_C) $(SOURCE_DIR)/testsoftfloat.c
267+
268+testsoftfloat$(EXE): $(OBJS_TESTSOFTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
269+ $(LINK) $^ $(OTHER_LIBS)
270+
271+OBJS_TIMESOFTFLOAT = timesoftfloat$(OBJ)
272+
273+timesoftfloat$(OBJ): \
274+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
275+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/timesoftfloat.c
276+ $(COMPILE_C) $(SOURCE_DIR)/timesoftfloat.c
277+
278+timesoftfloat$(EXE): $(OBJS_TIMESOFTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
279+ $(LINK) $^ $(OTHER_LIBS)
280+
281+OBJS_TESTFLOAT_GEN = genLoops$(OBJ) testfloat_gen$(OBJ)
282+
283+genLoops$(OBJ): \
284+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
285+ $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/writeHex.h $(SOURCE_DIR)/genLoops.h \
286+ $(SOURCE_DIR)/genLoops.c
287+ $(COMPILE_C) $(SOURCE_DIR)/genLoops.c
288+testfloat_gen$(OBJ): \
289+ $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) $(SOURCE_DIR)/functions.h \
290+ $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/genLoops.h \
291+ $(SOURCE_DIR)/testfloat_gen.c
292+ $(COMPILE_C) $(SOURCE_DIR)/testfloat_gen.c
293+
294+testfloat_gen$(EXE): $(OBJS_TESTFLOAT_GEN) testfloat$(LIB) $(SOFTFLOAT_LIB)
295+ $(LINK) $^ $(OTHER_LIBS)
296+
297+OBJS_TESTFLOAT_VER = verLoops$(OBJ) testfloat_ver$(OBJ)
298+
299+verLoops$(OBJ): \
300+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
301+ $(SOURCE_DIR)/readHex.h $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h \
302+ $(SOURCE_DIR)/verLoops.h $(SOURCE_DIR)/verLoops.c
303+ $(COMPILE_C) $(SOURCE_DIR)/verLoops.c
304+testfloat_ver$(OBJ): \
305+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
306+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/verCases.h \
307+ $(SOURCE_DIR)/writeCase.h $(SOURCE_DIR)/verLoops.h \
308+ $(SOURCE_DIR)/testfloat_ver.c
309+ $(COMPILE_C) $(SOURCE_DIR)/testfloat_ver.c
310+
311+testfloat_ver$(EXE): $(OBJS_TESTFLOAT_VER) testfloat$(LIB) $(SOFTFLOAT_LIB)
312+ $(LINK) $^ $(OTHER_LIBS)
313+
314+OBJS_TESTFLOAT = subjfloat$(OBJ) subjfloat_functions$(OBJ) testfloat$(OBJ)
315+
316+subjfloat$(OBJ): \
317+ platform.h $(SOFTFLOAT_H) $(SUBJ_SOURCE_DIR)/subjfloat_config.h \
318+ $(SOURCE_DIR)/subjfloat.h $(SUBJ_SOURCE_DIR)/subjfloat.c
319+ $(COMPILE_C) $(SUBJ_SOURCE_DIR)/subjfloat.c
320+subjfloat_functions$(OBJ): \
321+ platform.h $(SUBJ_SOURCE_DIR)/subjfloat_config.h $(SOURCE_DIR)/subjfloat.h \
322+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/subjfloat_functions.c
323+ $(COMPILE_C) $(SOURCE_DIR)/subjfloat_functions.c
324+testfloat$(OBJ): \
325+ platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
326+ $(SUBJ_SOURCE_DIR)/subjfloat_config.h $(SOURCE_DIR)/subjfloat.h \
327+ $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/verCases.h \
328+ $(SOURCE_DIR)/testLoops.h $(SOURCE_DIR)/testfloat.c
329+ $(COMPILE_C) $(SOURCE_DIR)/testfloat.c
330+
331+testfloat$(EXE): $(OBJS_TESTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
332+ $(LINK) $^ $(OTHER_LIBS)
333+
334+.PHONY: clean
335+clean:
336+ $(DELETE) $(OBJS_LIB) testfloat$(LIB)
337+ $(DELETE) $(OBJS_TESTSOFTFLOAT) testsoftfloat$(EXE)
338+ $(DELETE) $(OBJS_TIMESOFTFLOAT) timesoftfloat$(EXE)
339+ $(DELETE) $(OBJS_TESTFLOAT_GEN) testfloat_gen$(EXE)
340+ $(DELETE) $(OBJS_TESTFLOAT_VER) testfloat_ver$(EXE)
341+ $(DELETE) $(OBJS_TESTFLOAT) testfloat$(EXE)
342+
343diff --git a/TestFloat-3a/build/Linux-Cross-Compile/platform.h b/TestFloat-3a/build/Linux-Cross-Compile/platform.h
344new file mode 100644
345index 0000000..09e63a0
346--- /dev/null
347+++ b/TestFloat-3a/build/Linux-Cross-Compile/platform.h
348@@ -0,0 +1,45 @@
349+
350+/*============================================================================
351+
352+This C header file is part of TestFloat, Release 3a, a package of programs for
353+testing the correctness of floating-point arithmetic complying with the IEEE
354+Standard for Floating-Point, by John R. Hauser.
355+
356+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
357+All rights reserved.
358+
359+Redistribution and use in source and binary forms, with or without
360+modification, are permitted provided that the following conditions are met:
361+
362+ 1. Redistributions of source code must retain the above copyright notice,
363+ this list of conditions, and the following disclaimer.
364+
365+ 2. Redistributions in binary form must reproduce the above copyright notice,
366+ this list of conditions, and the following disclaimer in the documentation
367+ and/or other materials provided with the distribution.
368+
369+ 3. Neither the name of the University nor the names of its contributors may
370+ be used to endorse or promote products derived from this software without
371+ specific prior written permission.
372+
373+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
374+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
375+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
376+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
377+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
378+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
379+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
380+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
381+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
382+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
383+
384+=============================================================================*/
385+
386+/*----------------------------------------------------------------------------
387+*----------------------------------------------------------------------------*/
388+#define LITTLEENDIAN 1
389+
390+/*----------------------------------------------------------------------------
391+*----------------------------------------------------------------------------*/
392+#define INLINE extern inline
393+
394--
3952.1.4
396