2 #=============================================================================
4 # This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
5 # 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 SOURCE_DIR ?
= ..
/..
/source
38 SPECIALIZE_TYPE ?
= 8086
41 -DSOFTFLOAT_ROUND_ODD
-DINLINE_LEVEL
=5 -DSOFTFLOAT_FAST_DIV32TO16 \
42 -DSOFTFLOAT_FAST_DIV64TO32
45 C_INCLUDES
= -I.
-I
$(SOURCE_DIR
)/$(SPECIALIZE_TYPE
) -I
$(SOURCE_DIR
)/include
47 gcc
-c
-Werror-implicit-function-declaration
$(SOFTFLOAT_OPTS
) \
48 $(C_INCLUDES
) -O2
-o
$@
62 s_shortShiftLeft64To96M
$(OBJ
) \
63 s_shortShiftLeftM
$(OBJ
) \
65 s_shortShiftRightM
$(OBJ
) \
66 s_shortShiftRightJam64
$(OBJ
) \
67 s_shortShiftRightJamM
$(OBJ
) \
68 s_shiftRightJam32
$(OBJ
) \
69 s_shiftRightJam64
$(OBJ
) \
70 s_shiftRightJamM
$(OBJ
) \
72 s_countLeadingZeros8
$(OBJ
) \
73 s_countLeadingZeros16
$(OBJ
) \
74 s_countLeadingZeros32
$(OBJ
) \
75 s_countLeadingZeros64
$(OBJ
) \
78 s_addComplCarryM
$(OBJ
) \
83 s_mul128MTo256M
$(OBJ
) \
84 s_approxRecip_1Ks
$(OBJ
) \
85 s_approxRecip32_1
$(OBJ
) \
86 s_approxRecipSqrt_1Ks
$(OBJ
) \
87 s_approxRecipSqrt32_1
$(OBJ
) \
88 s_remStepMBy32
$(OBJ
) \
91 softfloat_raiseFlags
$(OBJ
) \
92 s_f16UIToCommonNaN
$(OBJ
) \
93 s_commonNaNToF16UI
$(OBJ
) \
94 s_propagateNaNF16UI
$(OBJ
) \
95 s_f32UIToCommonNaN
$(OBJ
) \
96 s_commonNaNToF32UI
$(OBJ
) \
97 s_propagateNaNF32UI
$(OBJ
) \
98 s_f64UIToCommonNaN
$(OBJ
) \
99 s_commonNaNToF64UI
$(OBJ
) \
100 s_propagateNaNF64UI
$(OBJ
) \
101 extF80M_isSignalingNaN
$(OBJ
) \
102 s_extF80MToCommonNaN
$(OBJ
) \
103 s_commonNaNToExtF80M
$(OBJ
) \
104 s_propagateNaNExtF80M
$(OBJ
) \
105 f128M_isSignalingNaN
$(OBJ
) \
106 s_f128MToCommonNaN
$(OBJ
) \
107 s_commonNaNToF128M
$(OBJ
) \
108 s_propagateNaNF128M
$(OBJ
) \
111 s_roundToUI32
$(OBJ
) \
112 s_roundMToUI64
$(OBJ
) \
114 s_roundMToI64
$(OBJ
) \
115 s_normSubnormalF16Sig
$(OBJ
) \
116 s_roundPackToF16
$(OBJ
) \
117 s_normRoundPackToF16
$(OBJ
) \
121 s_normSubnormalF32Sig
$(OBJ
) \
122 s_roundPackToF32
$(OBJ
) \
123 s_normRoundPackToF32
$(OBJ
) \
127 s_normSubnormalF64Sig
$(OBJ
) \
128 s_roundPackToF64
$(OBJ
) \
129 s_normRoundPackToF64
$(OBJ
) \
133 s_tryPropagateNaNExtF80M
$(OBJ
) \
134 s_invalidExtF80M
$(OBJ
) \
135 s_normExtF80SigM
$(OBJ
) \
136 s_roundPackMToExtF80M
$(OBJ
) \
137 s_normRoundPackMToExtF80M
$(OBJ
) \
139 s_compareNonnormExtF80M
$(OBJ
) \
141 s_tryPropagateNaNF128M
$(OBJ
) \
142 s_invalidF128M
$(OBJ
) \
143 s_shiftNormSigF128M
$(OBJ
) \
144 s_roundPackMToF128M
$(OBJ
) \
145 s_normRoundPackMToF128M
$(OBJ
) \
147 s_mulAddF128M
$(OBJ
) \
148 softfloat_state
$(OBJ
) \
152 ui32_to_extF80M
$(OBJ
) \
153 ui32_to_f128M
$(OBJ
) \
157 ui64_to_extF80M
$(OBJ
) \
158 ui64_to_f128M
$(OBJ
) \
162 i32_to_extF80M
$(OBJ
) \
167 i64_to_extF80M
$(OBJ
) \
173 f16_to_ui32_r_minMag
$(OBJ
) \
174 f16_to_ui64_r_minMag
$(OBJ
) \
175 f16_to_i32_r_minMag
$(OBJ
) \
176 f16_to_i64_r_minMag
$(OBJ
) \
179 f16_to_extF80M
$(OBJ
) \
181 f16_roundToInt
$(OBJ
) \
192 f16_eq_signaling
$(OBJ
) \
195 f16_isSignalingNaN
$(OBJ
) \
200 f32_to_ui32_r_minMag
$(OBJ
) \
201 f32_to_ui64_r_minMag
$(OBJ
) \
202 f32_to_i32_r_minMag
$(OBJ
) \
203 f32_to_i64_r_minMag
$(OBJ
) \
206 f32_to_extF80M
$(OBJ
) \
208 f32_roundToInt
$(OBJ
) \
219 f32_eq_signaling
$(OBJ
) \
222 f32_isSignalingNaN
$(OBJ
) \
227 f64_to_ui32_r_minMag
$(OBJ
) \
228 f64_to_ui64_r_minMag
$(OBJ
) \
229 f64_to_i32_r_minMag
$(OBJ
) \
230 f64_to_i64_r_minMag
$(OBJ
) \
233 f64_to_extF80M
$(OBJ
) \
235 f64_roundToInt
$(OBJ
) \
246 f64_eq_signaling
$(OBJ
) \
249 f64_isSignalingNaN
$(OBJ
) \
250 extF80M_to_ui32
$(OBJ
) \
251 extF80M_to_ui64
$(OBJ
) \
252 extF80M_to_i32
$(OBJ
) \
253 extF80M_to_i64
$(OBJ
) \
254 extF80M_to_ui32_r_minMag
$(OBJ
) \
255 extF80M_to_ui64_r_minMag
$(OBJ
) \
256 extF80M_to_i32_r_minMag
$(OBJ
) \
257 extF80M_to_i64_r_minMag
$(OBJ
) \
258 extF80M_to_f16
$(OBJ
) \
259 extF80M_to_f32
$(OBJ
) \
260 extF80M_to_f64
$(OBJ
) \
261 extF80M_to_f128M
$(OBJ
) \
262 extF80M_roundToInt
$(OBJ
) \
272 extF80M_eq_signaling
$(OBJ
) \
273 extF80M_le_quiet
$(OBJ
) \
274 extF80M_lt_quiet
$(OBJ
) \
275 f128M_to_ui32
$(OBJ
) \
276 f128M_to_ui64
$(OBJ
) \
279 f128M_to_ui32_r_minMag
$(OBJ
) \
280 f128M_to_ui64_r_minMag
$(OBJ
) \
281 f128M_to_i32_r_minMag
$(OBJ
) \
282 f128M_to_i64_r_minMag
$(OBJ
) \
286 f128M_to_extF80M
$(OBJ
) \
287 f128M_roundToInt
$(OBJ
) \
298 f128M_eq_signaling
$(OBJ
) \
299 f128M_le_quiet
$(OBJ
) \
300 f128M_lt_quiet
$(OBJ
) \
302 OBJS_ALL
= $(OBJS_PRIMITIVES
) $(OBJS_SPECIALIZE
) $(OBJS_OTHERS
)
305 $(OTHER_HEADERS
) platform.h
$(SOURCE_DIR
)/include/primitiveTypes.h \
306 $(SOURCE_DIR
)/include/primitives.h
307 $(OBJS_SPECIALIZE
) $(OBJS_OTHERS
): \
308 $(SOURCE_DIR
)/include/softfloat_types.h
$(SOURCE_DIR
)/include/internals.h \
309 $(SOURCE_DIR
)/$(SPECIALIZE_TYPE
)/specialize.h \
310 $(SOURCE_DIR
)/include/softfloat.h
312 $(OBJS_PRIMITIVES
) $(OBJS_OTHERS
): %$(OBJ
): $(SOURCE_DIR
)/%.c
313 $(COMPILE_C
) $(SOURCE_DIR
)/$*.c
315 $(OBJS_SPECIALIZE
): %$(OBJ
): $(SOURCE_DIR
)/$(SPECIALIZE_TYPE
)/%.c
316 $(COMPILE_C
) $(SOURCE_DIR
)/$(SPECIALIZE_TYPE
)/$*.c
318 softfloat
$(LIB
): $(OBJS_ALL
)
324 $(DELETE
) $(OBJS_ALL
) softfloat
$(LIB
)