From 1db848b86b4beb944630fd8ae159d81900296a0e Mon Sep 17 00:00:00 2001 From: Volodymyr Shymanskyy Date: Mon, 9 Sep 2024 20:09:39 +0300 Subject: [PATCH] Cleanup --- Makefile | 5 +++-- buildall.py | 6 ++++-- runtime/libgcc-armv6m/addsf3.o | Bin 0 -> 9248 bytes runtime/libgcc-armv6m/fixsfsi.o | Bin 0 -> 3704 bytes runtime/libgcc-armv6m/floatsidf.o | Bin 0 -> 4888 bytes runtime/libgcc-armv6m/floatsisf.o | Bin 0 -> 4992 bytes runtime/libgcc-armv6m/mulsf3.o | Bin 0 -> 8264 bytes runtime/libgcc-armv6m/subsf3.o | Bin 0 -> 10004 bytes 8 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 runtime/libgcc-armv6m/addsf3.o create mode 100644 runtime/libgcc-armv6m/fixsfsi.o create mode 100644 runtime/libgcc-armv6m/floatsidf.o create mode 100644 runtime/libgcc-armv6m/floatsisf.o create mode 100644 runtime/libgcc-armv6m/mulsf3.o create mode 100644 runtime/libgcc-armv6m/subsf3.o diff --git a/Makefile b/Makefile index 3f50e87..283c6b2 100644 --- a/Makefile +++ b/Makefile @@ -36,11 +36,12 @@ CFLAGS += -Os -Iruntime -I$(BUILD) -Wno-unused-value -Wno-unused-function \ LIBGCC = $(realpath $(shell $(CROSS)gcc $(CFLAGS) --print-libgcc-file-name)) LIBM = $(realpath $(shell $(CROSS)gcc $(CFLAGS) --print-file-name=libm.a)) +$(info libgcc: $(LIBGCC)) +$(info libm: $(LIBM)) + #CLEAN_EXTRA += $(BUILD) $(BUILD)/wasm.c: $(WASM) - $(Q)echo "libgcc: $(LIBGCC)" - $(Q)echo "libm: $(LIBM)" $(Q)$(MKDIR) -p $(BUILD) $(ECHO) "W2C $<" $(Q)wasm2c -o $@ --no-debug-names --module-name="wasm" $< diff --git a/buildall.py b/buildall.py index 6404ff4..1d69007 100644 --- a/buildall.py +++ b/buildall.py @@ -1,10 +1,12 @@ +#!/usr/bin/env python3 + import sys import subprocess from tabulate import tabulate from concurrent.futures import ThreadPoolExecutor, as_completed targets = ["x86", "x64", "armv7m", "armv7emsp", "armv7emdp", "xtensa", "xtensawin"] # "armv6m", "rv32imc" -apps = ["assemblyscript", "cpp", "rust", "tinygo", "virgil", "wat", "zig", "coremark"] +apps = ["assemblyscript", "cpp", "rust", "tinygo", "zig", "virgil", "wat", "coremark"] # Initialize a dictionary of dictionaries to store results @@ -57,5 +59,5 @@ def build(target, app): print(tabulate(table, headers=targets, showindex=apps, tablefmt="simple_outline")) # Detect and report failure -if any(item != '🟢' for row in table for item in row): +if any(item != "🟢" for row in table for item in row): sys.exit(1) diff --git a/runtime/libgcc-armv6m/addsf3.o b/runtime/libgcc-armv6m/addsf3.o new file mode 100644 index 0000000000000000000000000000000000000000..03ce61e78c899125f3f6bea719119e29857e8334 GIT binary patch literal 9248 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%0Dh4&;3Zf0|-P%5aeOkMgG^iaZ$c(TO8kBh2 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 akzU1OjIbb!)gR~Bk+ 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