summaryrefslogtreecommitdiff
path: root/vere/ext/softfloat
diff options
context:
space:
mode:
authorpolwex <polwex@sortug.com>2025-10-05 21:56:51 +0700
committerpolwex <polwex@sortug.com>2025-10-05 21:56:51 +0700
commitfcedfddf00b3f994e4f4e40332ac7fc192c63244 (patch)
tree51d38e62c7bdfcc5f9a5e9435fe820c93cfc9a3d /vere/ext/softfloat
claude is gud
Diffstat (limited to 'vere/ext/softfloat')
-rw-r--r--vere/ext/softfloat/build.zig610
-rw-r--r--vere/ext/softfloat/build.zig.zon14
2 files changed, 624 insertions, 0 deletions
diff --git a/vere/ext/softfloat/build.zig b/vere/ext/softfloat/build.zig
new file mode 100644
index 0000000..ef61936
--- /dev/null
+++ b/vere/ext/softfloat/build.zig
@@ -0,0 +1,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);
+}
diff --git a/vere/ext/softfloat/build.zig.zon b/vere/ext/softfloat/build.zig.zon
new file mode 100644
index 0000000..e77bfa2
--- /dev/null
+++ b/vere/ext/softfloat/build.zig.zon
@@ -0,0 +1,14 @@
+.{
+ .name = .softfloat,
+ .version = "0.0.1",
+ .fingerprint = 0x51bec629e47146bb,
+ .dependencies = .{
+ .softfloat = .{
+ .url = "https://github.com/ucb-bar/berkeley-softfloat-3/archive/5c06db33fc1e2130f67c045327b0ec949032df1d.tar.gz",
+ .hash = "N-V-__8AAJjNHACk0uvy2j8WATPrbK9KmbnnuYeYIN6PO9nl",
+ },
+ },
+ .paths = .{
+ "",
+ },
+}