2 #=============================================================================
4 # This Makefile template is part of the SoftFloat IEEE Floating-Point
5 # Arithmetic Package, Release 3e, by John R. Hauser.
7 # Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
8 # University of California. All rights reserved.
10 # Redistribution and use in source and binary forms, with or without
11 # modification, are permitted provided that the following conditions are met:
13 # 1. Redistributions of source code must retain the above copyright notice,
14 # this list of conditions, and the following disclaimer.
16 # 2. Redistributions in binary form must reproduce the above copyright
17 # notice, this list of conditions, and the following disclaimer in the
18 # documentation and/or other materials provided with the distribution.
20 # 3. Neither the name of the University nor the names of its contributors
21 # may be used to endorse or promote products derived from this software
22 # without specific prior written permission.
24 # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
25 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
26 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
27 # DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
28 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
33 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 #=============================================================================
37 # Edit lines marked with `==>'. See "SoftFloat-source.html".
39 ==> SOURCE_DIR ?
= ..
/..
/source
40 ==> SPECIALIZE_TYPE ?
= 8086
42 ==> SOFTFLOAT_OPTS ?
= \
43 ==> -DSOFTFLOAT_ROUND_ODD
-DINLINE_LEVEL
=5 -DSOFTFLOAT_FAST_DIV32TO16 \
44 ==> -DSOFTFLOAT_FAST_DIV64TO32
47 ==> C_INCLUDES
= -I.
-I
$(SOURCE_DIR
)/$(SPECIALIZE_TYPE
) -I
$(SOURCE_DIR
)/include
49 ==> cc -c
-DSOFTFLOAT_FAST_INT64
$(SOFTFLOAT_OPTS
) $(C_INCLUDES
) -O2
-o
$@
50 ==> MAKELIB
= ar crs
$@
64 s_shortShiftLeft128
$(OBJ
) \
65 s_shortShiftRight128
$(OBJ
) \
66 s_shortShiftRightJam64
$(OBJ
) \
67 s_shortShiftRightJam64Extra
$(OBJ
) \
68 s_shortShiftRightJam128
$(OBJ
) \
69 s_shortShiftRightJam128Extra
$(OBJ
) \
70 s_shiftRightJam32
$(OBJ
) \
71 s_shiftRightJam64
$(OBJ
) \
72 s_shiftRightJam64Extra
$(OBJ
) \
73 s_shiftRightJam128
$(OBJ
) \
74 s_shiftRightJam128Extra
$(OBJ
) \
75 s_shiftRightJam256M
$(OBJ
) \
76 s_countLeadingZeros8
$(OBJ
) \
77 s_countLeadingZeros16
$(OBJ
) \
78 s_countLeadingZeros32
$(OBJ
) \
79 s_countLeadingZeros64
$(OBJ
) \
84 s_mul64ByShifted32To128
$(OBJ
) \
87 s_mul128To256M
$(OBJ
) \
88 s_approxRecip_1Ks
$(OBJ
) \
89 s_approxRecip32_1
$(OBJ
) \
90 s_approxRecipSqrt_1Ks
$(OBJ
) \
91 s_approxRecipSqrt32_1
$(OBJ
) \
94 softfloat_raiseFlags
$(OBJ
) \
95 s_f16UIToCommonNaN
$(OBJ
) \
96 s_commonNaNToF16UI
$(OBJ
) \
97 s_propagateNaNF16UI
$(OBJ
) \
98 s_f32UIToCommonNaN
$(OBJ
) \
99 s_commonNaNToF32UI
$(OBJ
) \
100 s_propagateNaNF32UI
$(OBJ
) \
101 s_f64UIToCommonNaN
$(OBJ
) \
102 s_commonNaNToF64UI
$(OBJ
) \
103 s_propagateNaNF64UI
$(OBJ
) \
104 extF80M_isSignalingNaN
$(OBJ
) \
105 s_extF80UIToCommonNaN
$(OBJ
) \
106 s_commonNaNToExtF80UI
$(OBJ
) \
107 s_propagateNaNExtF80UI
$(OBJ
) \
108 f128M_isSignalingNaN
$(OBJ
) \
109 s_f128UIToCommonNaN
$(OBJ
) \
110 s_commonNaNToF128UI
$(OBJ
) \
111 s_propagateNaNF128UI
$(OBJ
) \
114 s_roundToUI32
$(OBJ
) \
115 s_roundToUI64
$(OBJ
) \
118 s_normSubnormalF16Sig
$(OBJ
) \
119 s_roundPackToF16
$(OBJ
) \
120 s_normRoundPackToF16
$(OBJ
) \
124 s_normSubnormalF32Sig
$(OBJ
) \
125 s_roundPackToF32
$(OBJ
) \
126 s_normRoundPackToF32
$(OBJ
) \
130 s_normSubnormalF64Sig
$(OBJ
) \
131 s_roundPackToF64
$(OBJ
) \
132 s_normRoundPackToF64
$(OBJ
) \
136 s_normSubnormalExtF80Sig
$(OBJ
) \
137 s_roundPackToExtF80
$(OBJ
) \
138 s_normRoundPackToExtF80
$(OBJ
) \
139 s_addMagsExtF80
$(OBJ
) \
140 s_subMagsExtF80
$(OBJ
) \
141 s_normSubnormalF128Sig
$(OBJ
) \
142 s_roundPackToF128
$(OBJ
) \
143 s_normRoundPackToF128
$(OBJ
) \
144 s_addMagsF128
$(OBJ
) \
145 s_subMagsF128
$(OBJ
) \
147 softfloat_state
$(OBJ
) \
151 ui32_to_extF80
$(OBJ
) \
152 ui32_to_extF80M
$(OBJ
) \
154 ui32_to_f128M
$(OBJ
) \
158 ui64_to_extF80
$(OBJ
) \
159 ui64_to_extF80M
$(OBJ
) \
161 ui64_to_f128M
$(OBJ
) \
165 i32_to_extF80
$(OBJ
) \
166 i32_to_extF80M
$(OBJ
) \
172 i64_to_extF80
$(OBJ
) \
173 i64_to_extF80M
$(OBJ
) \
180 f16_to_ui32_r_minMag
$(OBJ
) \
181 f16_to_ui64_r_minMag
$(OBJ
) \
182 f16_to_i32_r_minMag
$(OBJ
) \
183 f16_to_i64_r_minMag
$(OBJ
) \
186 f16_to_extF80
$(OBJ
) \
187 f16_to_extF80M
$(OBJ
) \
190 f16_roundToInt
$(OBJ
) \
201 f16_eq_signaling
$(OBJ
) \
204 f16_isSignalingNaN
$(OBJ
) \
209 f32_to_ui32_r_minMag
$(OBJ
) \
210 f32_to_ui64_r_minMag
$(OBJ
) \
211 f32_to_i32_r_minMag
$(OBJ
) \
212 f32_to_i64_r_minMag
$(OBJ
) \
215 f32_to_extF80
$(OBJ
) \
216 f32_to_extF80M
$(OBJ
) \
219 f32_roundToInt
$(OBJ
) \
230 f32_eq_signaling
$(OBJ
) \
233 f32_isSignalingNaN
$(OBJ
) \
238 f64_to_ui32_r_minMag
$(OBJ
) \
239 f64_to_ui64_r_minMag
$(OBJ
) \
240 f64_to_i32_r_minMag
$(OBJ
) \
241 f64_to_i64_r_minMag
$(OBJ
) \
244 f64_to_extF80
$(OBJ
) \
245 f64_to_extF80M
$(OBJ
) \
248 f64_roundToInt
$(OBJ
) \
259 f64_eq_signaling
$(OBJ
) \
262 f64_isSignalingNaN
$(OBJ
) \
263 extF80_to_ui32
$(OBJ
) \
264 extF80_to_ui64
$(OBJ
) \
265 extF80_to_i32
$(OBJ
) \
266 extF80_to_i64
$(OBJ
) \
267 extF80_to_ui32_r_minMag
$(OBJ
) \
268 extF80_to_ui64_r_minMag
$(OBJ
) \
269 extF80_to_i32_r_minMag
$(OBJ
) \
270 extF80_to_i64_r_minMag
$(OBJ
) \
271 extF80_to_f16
$(OBJ
) \
272 extF80_to_f32
$(OBJ
) \
273 extF80_to_f64
$(OBJ
) \
274 extF80_to_f128
$(OBJ
) \
275 extF80_roundToInt
$(OBJ
) \
285 extF80_eq_signaling
$(OBJ
) \
286 extF80_le_quiet
$(OBJ
) \
287 extF80_lt_quiet
$(OBJ
) \
288 extF80_isSignalingNaN
$(OBJ
) \
289 extF80M_to_ui32
$(OBJ
) \
290 extF80M_to_ui64
$(OBJ
) \
291 extF80M_to_i32
$(OBJ
) \
292 extF80M_to_i64
$(OBJ
) \
293 extF80M_to_ui32_r_minMag
$(OBJ
) \
294 extF80M_to_ui64_r_minMag
$(OBJ
) \
295 extF80M_to_i32_r_minMag
$(OBJ
) \
296 extF80M_to_i64_r_minMag
$(OBJ
) \
297 extF80M_to_f16
$(OBJ
) \
298 extF80M_to_f32
$(OBJ
) \
299 extF80M_to_f64
$(OBJ
) \
300 extF80M_to_f128M
$(OBJ
) \
301 extF80M_roundToInt
$(OBJ
) \
311 extF80M_eq_signaling
$(OBJ
) \
312 extF80M_le_quiet
$(OBJ
) \
313 extF80M_lt_quiet
$(OBJ
) \
318 f128_to_ui32_r_minMag
$(OBJ
) \
319 f128_to_ui64_r_minMag
$(OBJ
) \
320 f128_to_i32_r_minMag
$(OBJ
) \
321 f128_to_i64_r_minMag
$(OBJ
) \
324 f128_to_extF80
$(OBJ
) \
326 f128_roundToInt
$(OBJ
) \
337 f128_eq_signaling
$(OBJ
) \
338 f128_le_quiet
$(OBJ
) \
339 f128_lt_quiet
$(OBJ
) \
340 f128_isSignalingNaN
$(OBJ
) \
341 f128M_to_ui32
$(OBJ
) \
342 f128M_to_ui64
$(OBJ
) \
345 f128M_to_ui32_r_minMag
$(OBJ
) \
346 f128M_to_ui64_r_minMag
$(OBJ
) \
347 f128M_to_i32_r_minMag
$(OBJ
) \
348 f128M_to_i64_r_minMag
$(OBJ
) \
351 f128M_to_extF80M
$(OBJ
) \
353 f128M_roundToInt
$(OBJ
) \
364 f128M_eq_signaling
$(OBJ
) \
365 f128M_le_quiet
$(OBJ
) \
366 f128M_lt_quiet
$(OBJ
) \
368 OBJS_ALL
= $(OBJS_PRIMITIVES
) $(OBJS_SPECIALIZE
) $(OBJS_OTHERS
)
371 $(OTHER_HEADERS
) platform.h
$(SOURCE_DIR
)/include/primitiveTypes.h \
372 $(SOURCE_DIR
)/include/primitives.h
373 $(OBJS_SPECIALIZE
) $(OBJS_OTHERS
): \
374 $(SOURCE_DIR
)/include/softfloat_types.h
$(SOURCE_DIR
)/include/internals.h \
375 $(SOURCE_DIR
)/$(SPECIALIZE_TYPE
)/specialize.h \
376 $(SOURCE_DIR
)/include/softfloat.h
378 $(OBJS_PRIMITIVES
) $(OBJS_OTHERS
): %$(OBJ
): $(SOURCE_DIR
)/%.c
379 $(COMPILE_C
) $(SOURCE_DIR
)/$*.c
381 $(OBJS_SPECIALIZE
): %$(OBJ
): $(SOURCE_DIR
)/$(SPECIALIZE_TYPE
)/%.c
382 $(COMPILE_C
) $(SOURCE_DIR
)/$(SPECIALIZE_TYPE
)/$*.c
384 softfloat
$(LIB
): $(OBJS_ALL
)
390 $(DELETE
) $(OBJS_ALL
) softfloat
$(LIB
)