summaryrefslogtreecommitdiff
path: root/vere/ext/softfloat/build.zig
blob: ef61936f5971523e902506e360f173e1db4248aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
const std = @import("std");

pub fn build(b: *std.Build) void {
    const target = b.standardTargetOptions(.{});
    const optimize = b.standardOptimizeOption(.{});
    const t = target.result;

    const lib = b.addStaticLibrary(.{
        .name = "softfloat",
        .target = target,
        .optimize = optimize,
    });

    const dep_c = b.dependency("softfloat", .{
        .target = target,
        .optimize = optimize,
    });

    lib.addIncludePath(dep_c.path("source/include"));

    const flags = .{
        "-fno-sanitize=all",
        "-g",
        "-O2",
    };

    if (t.cpu.arch.isAARCH64()) {
        lib.addIncludePath(dep_c.path("source/ARM-VFPv2"));
        lib.addIncludePath(dep_c.path("build/Linux-ARM-VFPv2-GCC"));
        lib.addCSourceFiles(.{
            .root = dep_c.path(""),
            .files = &.{
                "source/s_compare96M.c",
                "source/s_compare128M.c",
                "source/s_shortShiftLeft64To96M.c",
                "source/s_shortShiftLeftM.c",
                "source/s_shiftLeftM.c",
                "source/s_shortShiftRightM.c",
                "source/s_shortShiftRightJam64.c",
                "source/s_shortShiftRightJamM.c",
                "source/s_shiftRightJam32.c",
                "source/s_shiftRightJam64.c",
                "source/s_shiftRightJamM.c",
                "source/s_shiftRightM.c",
                "source/s_countLeadingZeros8.c",
                "source/s_countLeadingZeros16.c",
                "source/s_countLeadingZeros32.c",
                "source/s_countLeadingZeros64.c",
                "source/s_addM.c",
                "source/s_addCarryM.c",
                "source/s_addComplCarryM.c",
                "source/s_negXM.c",
                "source/s_sub1XM.c",
                "source/s_subM.c",
                "source/s_mul64To128M.c",
                "source/s_mul128MTo256M.c",
                "source/s_approxRecip_1Ks.c",
                "source/s_approxRecip32_1.c",
                "source/s_approxRecipSqrt_1Ks.c",
                "source/s_approxRecipSqrt32_1.c",
                "source/s_remStepMBy32.c",
                "source/ARM-VFPv2/softfloat_raiseFlags.c",
                "source/ARM-VFPv2/s_f16UIToCommonNaN.c",
                "source/ARM-VFPv2/s_commonNaNToF16UI.c",
                "source/ARM-VFPv2/s_propagateNaNF16UI.c",
                "source/ARM-VFPv2/s_f32UIToCommonNaN.c",
                "source/ARM-VFPv2/s_commonNaNToF32UI.c",
                "source/ARM-VFPv2/s_propagateNaNF32UI.c",
                "source/ARM-VFPv2/s_f64UIToCommonNaN.c",
                "source/ARM-VFPv2/s_commonNaNToF64UI.c",
                "source/ARM-VFPv2/s_propagateNaNF64UI.c",
                "source/ARM-VFPv2/extF80M_isSignalingNaN.c",
                "source/ARM-VFPv2/s_extF80MToCommonNaN.c",
                "source/ARM-VFPv2/s_commonNaNToExtF80M.c",
                "source/ARM-VFPv2/s_propagateNaNExtF80M.c",
                "source/ARM-VFPv2/f128M_isSignalingNaN.c",
                "source/ARM-VFPv2/s_f128MToCommonNaN.c",
                "source/ARM-VFPv2/s_commonNaNToF128M.c",
                "source/ARM-VFPv2/s_propagateNaNF128M.c",
                "source/s_roundToUI32.c",
                "source/s_roundMToUI64.c",
                "source/s_roundToI32.c",
                "source/s_roundMToI64.c",
                "source/s_normSubnormalF16Sig.c",
                "source/s_roundPackToF16.c",
                "source/s_normRoundPackToF16.c",
                "source/s_addMagsF16.c",
                "source/s_subMagsF16.c",
                "source/s_mulAddF16.c",
                "source/s_normSubnormalF32Sig.c",
                "source/s_roundPackToF32.c",
                "source/s_normRoundPackToF32.c",
                "source/s_addMagsF32.c",
                "source/s_subMagsF32.c",
                "source/s_mulAddF32.c",
                "source/s_normSubnormalF64Sig.c",
                "source/s_roundPackToF64.c",
                "source/s_normRoundPackToF64.c",
                "source/s_addMagsF64.c",
                "source/s_subMagsF64.c",
                "source/s_mulAddF64.c",
                "source/s_tryPropagateNaNExtF80M.c",
                "source/s_invalidExtF80M.c",
                "source/s_normExtF80SigM.c",
                "source/s_roundPackMToExtF80M.c",
                "source/s_normRoundPackMToExtF80M.c",
                "source/s_addExtF80M.c",
                "source/s_compareNonnormExtF80M.c",
                "source/s_isNaNF128M.c",
                "source/s_tryPropagateNaNF128M.c",
                "source/s_invalidF128M.c",
                "source/s_shiftNormSigF128M.c",
                "source/s_roundPackMToF128M.c",
                "source/s_normRoundPackMToF128M.c",
                "source/s_addF128M.c",
                "source/s_mulAddF128M.c",
                "source/softfloat_state.c",
                "source/ui32_to_f16.c",
                "source/ui32_to_f32.c",
                "source/ui32_to_f64.c",
                "source/ui32_to_extF80M.c",
                "source/ui32_to_f128M.c",
                "source/ui64_to_f16.c",
                "source/ui64_to_f32.c",
                "source/ui64_to_f64.c",
                "source/ui64_to_extF80M.c",
                "source/ui64_to_f128M.c",
                "source/i32_to_f16.c",
                "source/i32_to_f32.c",
                "source/i32_to_f64.c",
                "source/i32_to_extF80M.c",
                "source/i32_to_f128M.c",
                "source/i64_to_f16.c",
                "source/i64_to_f32.c",
                "source/i64_to_f64.c",
                "source/i64_to_extF80M.c",
                "source/i64_to_f128M.c",
                "source/f16_to_ui32.c",
                "source/f16_to_ui64.c",
                "source/f16_to_i32.c",
                "source/f16_to_i64.c",
                "source/f16_to_ui32_r_minMag.c",
                "source/f16_to_ui64_r_minMag.c",
                "source/f16_to_i32_r_minMag.c",
                "source/f16_to_i64_r_minMag.c",
                "source/f16_to_f32.c",
                "source/f16_to_f64.c",
                "source/f16_to_extF80M.c",
                "source/f16_to_f128M.c",
                "source/f16_roundToInt.c",
                "source/f16_add.c",
                "source/f16_sub.c",
                "source/f16_mul.c",
                "source/f16_mulAdd.c",
                "source/f16_div.c",
                "source/f16_rem.c",
                "source/f16_sqrt.c",
                "source/f16_eq.c",
                "source/f16_le.c",
                "source/f16_lt.c",
                "source/f16_eq_signaling.c",
                "source/f16_le_quiet.c",
                "source/f16_lt_quiet.c",
                "source/f16_isSignalingNaN.c",
                "source/f32_to_ui32.c",
                "source/f32_to_ui64.c",
                "source/f32_to_i32.c",
                "source/f32_to_i64.c",
                "source/f32_to_ui32_r_minMag.c",
                "source/f32_to_ui64_r_minMag.c",
                "source/f32_to_i32_r_minMag.c",
                "source/f32_to_i64_r_minMag.c",
                "source/f32_to_f16.c",
                "source/f32_to_f64.c",
                "source/f32_to_extF80M.c",
                "source/f32_to_f128M.c",
                "source/f32_roundToInt.c",
                "source/f32_add.c",
                "source/f32_sub.c",
                "source/f32_mul.c",
                "source/f32_mulAdd.c",
                "source/f32_div.c",
                "source/f32_rem.c",
                "source/f32_sqrt.c",
                "source/f32_eq.c",
                "source/f32_le.c",
                "source/f32_lt.c",
                "source/f32_eq_signaling.c",
                "source/f32_le_quiet.c",
                "source/f32_lt_quiet.c",
                "source/f32_isSignalingNaN.c",
                "source/f64_to_ui32.c",
                "source/f64_to_ui64.c",
                "source/f64_to_i32.c",
                "source/f64_to_i64.c",
                "source/f64_to_ui32_r_minMag.c",
                "source/f64_to_ui64_r_minMag.c",
                "source/f64_to_i32_r_minMag.c",
                "source/f64_to_i64_r_minMag.c",
                "source/f64_to_f16.c",
                "source/f64_to_f32.c",
                "source/f64_to_extF80M.c",
                "source/f64_to_f128M.c",
                "source/f64_roundToInt.c",
                "source/f64_add.c",
                "source/f64_sub.c",
                "source/f64_mul.c",
                "source/f64_mulAdd.c",
                "source/f64_div.c",
                "source/f64_rem.c",
                "source/f64_sqrt.c",
                "source/f64_eq.c",
                "source/f64_le.c",
                "source/f64_lt.c",
                "source/f64_eq_signaling.c",
                "source/f64_le_quiet.c",
                "source/f64_lt_quiet.c",
                "source/f64_isSignalingNaN.c",
                "source/extF80M_to_ui32.c",
                "source/extF80M_to_ui64.c",
                "source/extF80M_to_i32.c",
                "source/extF80M_to_i64.c",
                "source/extF80M_to_ui32_r_minMag.c",
                "source/extF80M_to_ui64_r_minMag.c",
                "source/extF80M_to_i32_r_minMag.c",
                "source/extF80M_to_i64_r_minMag.c",
                "source/extF80M_to_f16.c",
                "source/extF80M_to_f32.c",
                "source/extF80M_to_f64.c",
                "source/extF80M_to_f128M.c",
                "source/extF80M_roundToInt.c",
                "source/extF80M_add.c",
                "source/extF80M_sub.c",
                "source/extF80M_mul.c",
                "source/extF80M_div.c",
                "source/extF80M_rem.c",
                "source/extF80M_sqrt.c",
                "source/extF80M_eq.c",
                "source/extF80M_le.c",
                "source/extF80M_lt.c",
                "source/extF80M_eq_signaling.c",
                "source/extF80M_le_quiet.c",
                "source/extF80M_lt_quiet.c",
                "source/f128M_to_ui32.c",
                "source/f128M_to_ui64.c",
                "source/f128M_to_i32.c",
                "source/f128M_to_i64.c",
                "source/f128M_to_ui32_r_minMag.c",
                "source/f128M_to_ui64_r_minMag.c",
                "source/f128M_to_i32_r_minMag.c",
                "source/f128M_to_i64_r_minMag.c",
                "source/f128M_to_f16.c",
                "source/f128M_to_f32.c",
                "source/f128M_to_f64.c",
                "source/f128M_to_extF80M.c",
                "source/f128M_roundToInt.c",
                "source/f128M_add.c",
                "source/f128M_sub.c",
                "source/f128M_mul.c",
                "source/f128M_mulAdd.c",
                "source/f128M_div.c",
                "source/f128M_rem.c",
                "source/f128M_sqrt.c",
                "source/f128M_eq.c",
                "source/f128M_le.c",
                "source/f128M_lt.c",
                "source/f128M_eq_signaling.c",
                "source/f128M_le_quiet.c",
                "source/f128M_lt_quiet.c",
            },
            .flags = &flags,
        });
        lib.installHeader(dep_c.path("build/Linux-ARM-VFPv2-GCC/platform.h"), "platform.h");
    }
    if (t.cpu.arch.isX86()) {
        lib.addIncludePath(dep_c.path("source/8086-SSE"));
        lib.addIncludePath(dep_c.path("build/Linux-x86_64-GCC"));

        lib.root_module.addCMacro("SOFTFLOAT_FAST_INT64", "");
        lib.root_module.addCMacro("SOFTFLOAT_FAST_DIV32TO16", "");
        lib.root_module.addCMacro("SOFTFLOAT_FAST_DIV64TO32", "");

        lib.addCSourceFiles(.{
            .root = dep_c.path(""),
            .files = &.{
                "source/s_eq128.c",
                "source/s_le128.c",
                "source/s_lt128.c",
                "source/s_shortShiftLeft128.c",
                "source/s_shortShiftRight128.c",
                "source/s_shortShiftRightJam64.c",
                "source/s_shortShiftRightJam64Extra.c",
                "source/s_shortShiftRightJam128.c",
                "source/s_shortShiftRightJam128Extra.c",
                "source/s_shiftRightJam32.c",
                "source/s_shiftRightJam64.c",
                "source/s_shiftRightJam64Extra.c",
                "source/s_shiftRightJam128.c",
                "source/s_shiftRightJam128Extra.c",
                "source/s_shiftRightJam256M.c",
                "source/s_countLeadingZeros8.c",
                "source/s_countLeadingZeros16.c",
                "source/s_countLeadingZeros32.c",
                "source/s_countLeadingZeros64.c",
                "source/s_add128.c",
                "source/s_add256M.c",
                "source/s_sub128.c",
                "source/s_sub256M.c",
                "source/s_mul64ByShifted32To128.c",
                "source/s_mul64To128.c",
                "source/s_mul128By32.c",
                "source/s_mul128To256M.c",
                "source/s_approxRecip_1Ks.c",
                "source/s_approxRecip32_1.c",
                "source/s_approxRecipSqrt_1Ks.c",
                "source/s_approxRecipSqrt32_1.c",
                "source/8086-SSE/softfloat_raiseFlags.c",
                "source/8086-SSE/s_f16UIToCommonNaN.c",
                "source/8086-SSE/s_commonNaNToF16UI.c",
                "source/8086-SSE/s_propagateNaNF16UI.c",
                "source/8086-SSE/s_f32UIToCommonNaN.c",
                "source/8086-SSE/s_commonNaNToF32UI.c",
                "source/8086-SSE/s_propagateNaNF32UI.c",
                "source/8086-SSE/s_f64UIToCommonNaN.c",
                "source/8086-SSE/s_commonNaNToF64UI.c",
                "source/8086-SSE/s_propagateNaNF64UI.c",
                "source/8086-SSE/extF80M_isSignalingNaN.c",
                "source/8086-SSE/s_extF80UIToCommonNaN.c",
                "source/8086-SSE/s_commonNaNToExtF80UI.c",
                "source/8086-SSE/s_propagateNaNExtF80UI.c",
                "source/8086-SSE/f128M_isSignalingNaN.c",
                "source/8086-SSE/s_f128UIToCommonNaN.c",
                "source/8086-SSE/s_commonNaNToF128UI.c",
                "source/8086-SSE/s_propagateNaNF128UI.c",
                "source/s_roundToUI32.c",
                "source/s_roundToUI64.c",
                "source/s_roundToI32.c",
                "source/s_roundToI64.c",
                "source/s_normSubnormalF16Sig.c",
                "source/s_roundPackToF16.c",
                "source/s_normRoundPackToF16.c",
                "source/s_addMagsF16.c",
                "source/s_subMagsF16.c",
                "source/s_mulAddF16.c",
                "source/s_normSubnormalF32Sig.c",
                "source/s_roundPackToF32.c",
                "source/s_normRoundPackToF32.c",
                "source/s_addMagsF32.c",
                "source/s_subMagsF32.c",
                "source/s_mulAddF32.c",
                "source/s_normSubnormalF64Sig.c",
                "source/s_roundPackToF64.c",
                "source/s_normRoundPackToF64.c",
                "source/s_addMagsF64.c",
                "source/s_subMagsF64.c",
                "source/s_mulAddF64.c",
                "source/s_normSubnormalExtF80Sig.c",
                "source/s_roundPackToExtF80.c",
                "source/s_normRoundPackToExtF80.c",
                "source/s_addMagsExtF80.c",
                "source/s_subMagsExtF80.c",
                "source/s_normSubnormalF128Sig.c",
                "source/s_roundPackToF128.c",
                "source/s_normRoundPackToF128.c",
                "source/s_addMagsF128.c",
                "source/s_subMagsF128.c",
                "source/s_mulAddF128.c",
                "source/softfloat_state.c",
                "source/ui32_to_f16.c",
                "source/ui32_to_f32.c",
                "source/ui32_to_f64.c",
                "source/ui32_to_extF80.c",
                "source/ui32_to_extF80M.c",
                "source/ui32_to_f128.c",
                "source/ui32_to_f128M.c",
                "source/ui64_to_f16.c",
                "source/ui64_to_f32.c",
                "source/ui64_to_f64.c",
                "source/ui64_to_extF80.c",
                "source/ui64_to_extF80M.c",
                "source/ui64_to_f128.c",
                "source/ui64_to_f128M.c",
                "source/i32_to_f16.c",
                "source/i32_to_f32.c",
                "source/i32_to_f64.c",
                "source/i32_to_extF80.c",
                "source/i32_to_extF80M.c",
                "source/i32_to_f128.c",
                "source/i32_to_f128M.c",
                "source/i64_to_f16.c",
                "source/i64_to_f32.c",
                "source/i64_to_f64.c",
                "source/i64_to_extF80.c",
                "source/i64_to_extF80M.c",
                "source/i64_to_f128.c",
                "source/i64_to_f128M.c",
                "source/f16_to_ui32.c",
                "source/f16_to_ui64.c",
                "source/f16_to_i32.c",
                "source/f16_to_i64.c",
                "source/f16_to_ui32_r_minMag.c",
                "source/f16_to_ui64_r_minMag.c",
                "source/f16_to_i32_r_minMag.c",
                "source/f16_to_i64_r_minMag.c",
                "source/f16_to_f32.c",
                "source/f16_to_f64.c",
                "source/f16_to_extF80.c",
                "source/f16_to_extF80M.c",
                "source/f16_to_f128.c",
                "source/f16_to_f128M.c",
                "source/f16_roundToInt.c",
                "source/f16_add.c",
                "source/f16_sub.c",
                "source/f16_mul.c",
                "source/f16_mulAdd.c",
                "source/f16_div.c",
                "source/f16_rem.c",
                "source/f16_sqrt.c",
                "source/f16_eq.c",
                "source/f16_le.c",
                "source/f16_lt.c",
                "source/f16_eq_signaling.c",
                "source/f16_le_quiet.c",
                "source/f16_lt_quiet.c",
                "source/f16_isSignalingNaN.c",
                "source/f32_to_ui32.c",
                "source/f32_to_ui64.c",
                "source/f32_to_i32.c",
                "source/f32_to_i64.c",
                "source/f32_to_ui32_r_minMag.c",
                "source/f32_to_ui64_r_minMag.c",
                "source/f32_to_i32_r_minMag.c",
                "source/f32_to_i64_r_minMag.c",
                "source/f32_to_f16.c",
                "source/f32_to_f64.c",
                "source/f32_to_extF80.c",
                "source/f32_to_extF80M.c",
                "source/f32_to_f128.c",
                "source/f32_to_f128M.c",
                "source/f32_roundToInt.c",
                "source/f32_add.c",
                "source/f32_sub.c",
                "source/f32_mul.c",
                "source/f32_mulAdd.c",
                "source/f32_div.c",
                "source/f32_rem.c",
                "source/f32_sqrt.c",
                "source/f32_eq.c",
                "source/f32_le.c",
                "source/f32_lt.c",
                "source/f32_eq_signaling.c",
                "source/f32_le_quiet.c",
                "source/f32_lt_quiet.c",
                "source/f32_isSignalingNaN.c",
                "source/f64_to_ui32.c",
                "source/f64_to_ui64.c",
                "source/f64_to_i32.c",
                "source/f64_to_i64.c",
                "source/f64_to_ui32_r_minMag.c",
                "source/f64_to_ui64_r_minMag.c",
                "source/f64_to_i32_r_minMag.c",
                "source/f64_to_i64_r_minMag.c",
                "source/f64_to_f16.c",
                "source/f64_to_f32.c",
                "source/f64_to_extF80.c",
                "source/f64_to_extF80M.c",
                "source/f64_to_f128.c",
                "source/f64_to_f128M.c",
                "source/f64_roundToInt.c",
                "source/f64_add.c",
                "source/f64_sub.c",
                "source/f64_mul.c",
                "source/f64_mulAdd.c",
                "source/f64_div.c",
                "source/f64_rem.c",
                "source/f64_sqrt.c",
                "source/f64_eq.c",
                "source/f64_le.c",
                "source/f64_lt.c",
                "source/f64_eq_signaling.c",
                "source/f64_le_quiet.c",
                "source/f64_lt_quiet.c",
                "source/f64_isSignalingNaN.c",
                "source/extF80_to_ui32.c",
                "source/extF80_to_ui64.c",
                "source/extF80_to_i32.c",
                "source/extF80_to_i64.c",
                "source/extF80_to_ui32_r_minMag.c",
                "source/extF80_to_ui64_r_minMag.c",
                "source/extF80_to_i32_r_minMag.c",
                "source/extF80_to_i64_r_minMag.c",
                "source/extF80_to_f16.c",
                "source/extF80_to_f32.c",
                "source/extF80_to_f64.c",
                "source/extF80_to_f128.c",
                "source/extF80_roundToInt.c",
                "source/extF80_add.c",
                "source/extF80_sub.c",
                "source/extF80_mul.c",
                "source/extF80_div.c",
                "source/extF80_rem.c",
                "source/extF80_sqrt.c",
                "source/extF80_eq.c",
                "source/extF80_le.c",
                "source/extF80_lt.c",
                "source/extF80_eq_signaling.c",
                "source/extF80_le_quiet.c",
                "source/extF80_lt_quiet.c",
                "source/extF80_isSignalingNaN.c",
                "source/extF80M_to_ui32.c",
                "source/extF80M_to_ui64.c",
                "source/extF80M_to_i32.c",
                "source/extF80M_to_i64.c",
                "source/extF80M_to_ui32_r_minMag.c",
                "source/extF80M_to_ui64_r_minMag.c",
                "source/extF80M_to_i32_r_minMag.c",
                "source/extF80M_to_i64_r_minMag.c",
                "source/extF80M_to_f16.c",
                "source/extF80M_to_f32.c",
                "source/extF80M_to_f64.c",
                "source/extF80M_to_f128M.c",
                "source/extF80M_roundToInt.c",
                "source/extF80M_add.c",
                "source/extF80M_sub.c",
                "source/extF80M_mul.c",
                "source/extF80M_div.c",
                "source/extF80M_rem.c",
                "source/extF80M_sqrt.c",
                "source/extF80M_eq.c",
                "source/extF80M_le.c",
                "source/extF80M_lt.c",
                "source/extF80M_eq_signaling.c",
                "source/extF80M_le_quiet.c",
                "source/extF80M_lt_quiet.c",
                "source/f128_to_ui32.c",
                "source/f128_to_ui64.c",
                "source/f128_to_i32.c",
                "source/f128_to_i64.c",
                "source/f128_to_ui32_r_minMag.c",
                "source/f128_to_ui64_r_minMag.c",
                "source/f128_to_i32_r_minMag.c",
                "source/f128_to_i64_r_minMag.c",
                "source/f128_to_f16.c",
                "source/f128_to_f32.c",
                "source/f128_to_extF80.c",
                "source/f128_to_f64.c",
                "source/f128_roundToInt.c",
                "source/f128_add.c",
                "source/f128_sub.c",
                "source/f128_mul.c",
                "source/f128_mulAdd.c",
                "source/f128_div.c",
                "source/f128_rem.c",
                "source/f128_sqrt.c",
                "source/f128_eq.c",
                "source/f128_le.c",
                "source/f128_lt.c",
                "source/f128_eq_signaling.c",
                "source/f128_le_quiet.c",
                "source/f128_lt_quiet.c",
                "source/f128_isSignalingNaN.c",
                "source/f128M_to_ui32.c",
                "source/f128M_to_ui64.c",
                "source/f128M_to_i32.c",
                "source/f128M_to_i64.c",
                "source/f128M_to_ui32_r_minMag.c",
                "source/f128M_to_ui64_r_minMag.c",
                "source/f128M_to_i32_r_minMag.c",
                "source/f128M_to_i64_r_minMag.c",
                "source/f128M_to_f16.c",
                "source/f128M_to_f32.c",
                "source/f128M_to_extF80M.c",
                "source/f128M_to_f64.c",
                "source/f128M_roundToInt.c",
                "source/f128M_add.c",
                "source/f128M_sub.c",
                "source/f128M_mul.c",
                "source/f128M_mulAdd.c",
                "source/f128M_div.c",
                "source/f128M_rem.c",
                "source/f128M_sqrt.c",
                "source/f128M_eq.c",
                "source/f128M_le.c",
                "source/f128M_lt.c",
                "source/f128M_eq_signaling.c",
                "source/f128M_le_quiet.c",
                "source/f128M_lt_quiet.c",
            },
            .flags = &flags,
        });
        lib.installHeader(dep_c.path("build/Linux-x86_64-GCC/platform.h"), "platform.h");
    }

    lib.root_module.addCMacro("SOFTFLOAT_ROUND_ODD", "");
    lib.root_module.addCMacro("INLINE_LEVEL", "5");

    if (t.cpu.arch.isX86()) {
        lib.root_module.addCMacro("SOFTFLOAT_FAST_INT64", "");
        lib.root_module.addCMacro("SOFTFLOAT_FAST_DIV32TO16", "");
        lib.root_module.addCMacro("SOFTFLOAT_FAST_DIV64TO32", "");
    }

    lib.installHeadersDirectory(dep_c.path("source/include"), "", .{
        .include_extensions = &.{".h"},
    });

    lib.linkLibC();

    b.installArtifact(lib);
}