From 5a432df1dce9b2d53bcfadf733acfd54bf3ed30a Mon Sep 17 00:00:00 2001 From: Laytan Laats Date: Thu, 5 Sep 2024 18:00:35 +0200 Subject: [PATCH] wasm: support more vendor libraries Adds support for: - box2d - cgltf - stb image - stb rect pack --- core/bytes/bytes.odin | 4 +- core/mem/allocators.odin | 78 + core/os/os_js.odin | 89 +- core/strings/strings.odin | 14 +- vendor/box2d/box2d.odin | 22 +- vendor/box2d/box2d_wasm.odin | 4 + vendor/box2d/build_box2d.sh | 2 + vendor/box2d/lib/box2d_wasm.o | Bin 0 -> 433031 bytes vendor/box2d/lib/box2d_wasm_simd.o | Bin 0 -> 405135 bytes vendor/box2d/wasm.Makefile | 32 + vendor/cgltf/cgltf.odin | 5 + vendor/cgltf/cgltf_wasm.odin | 4 + vendor/cgltf/lib/cgltf_wasm.o | Bin 0 -> 112327 bytes vendor/cgltf/src/Makefile | 4 + vendor/libc/README.md | 12 + vendor/libc/assert.odin | 15 + vendor/libc/include/assert.h | 16 + vendor/libc/include/math.h | 21 + vendor/libc/include/stdio.h | 47 + vendor/libc/include/stdlib.h | 19 + vendor/libc/include/string.h | 21 + vendor/libc/libc.odin | 25 + vendor/libc/math.odin | 100 + vendor/libc/stdio.odin | 106 + vendor/libc/stdlib.odin | 119 ++ vendor/libc/string.odin | 111 + vendor/stb/image/stb_image.odin | 57 +- vendor/stb/image/stb_image_resize.odin | 5 + vendor/stb/image/stb_image_wasm.odin | 4 + vendor/stb/image/stb_image_write.odin | 22 +- vendor/stb/lib/stb_image_resize_wasm.o | Bin 0 -> 27646 bytes vendor/stb/lib/stb_image_wasm.o | Bin 0 -> 78144 bytes vendor/stb/lib/stb_image_write_wasm.o | Bin 0 -> 24259 bytes vendor/stb/lib/stb_rect_pack_wasm.o | Bin 0 -> 3683 bytes vendor/stb/lib/stb_sprintf_wasm.o | Bin 0 -> 13793 bytes vendor/stb/lib/stb_truetype_wasm.o | Bin 41425 -> 49666 bytes vendor/stb/rect_pack/stb_rect_pack.odin | 5 + vendor/stb/rect_pack/stb_rect_pack_wasm.odin | 4 + vendor/stb/sprintf/stb_sprintf.odin | 37 + vendor/stb/src/Makefile | 14 +- vendor/stb/src/stb_sprintf.c | 2 + vendor/stb/src/stb_sprintf.h | 1906 ++++++++++++++++++ vendor/stb/src/stb_truetype_wasm.c | 46 - vendor/stb/truetype/stb_truetype.odin | 7 +- vendor/stb/truetype/stb_truetype_wasm.odin | 80 +- 45 files changed, 2828 insertions(+), 231 deletions(-) create mode 100644 vendor/box2d/box2d_wasm.odin create mode 100755 vendor/box2d/lib/box2d_wasm.o create mode 100755 vendor/box2d/lib/box2d_wasm_simd.o create mode 100644 vendor/box2d/wasm.Makefile create mode 100644 vendor/cgltf/cgltf_wasm.odin create mode 100644 vendor/cgltf/lib/cgltf_wasm.o create mode 100644 vendor/libc/README.md create mode 100644 vendor/libc/assert.odin create mode 100644 vendor/libc/include/assert.h create mode 100644 vendor/libc/include/math.h create mode 100644 vendor/libc/include/stdio.h create mode 100644 vendor/libc/include/stdlib.h create mode 100644 vendor/libc/include/string.h create mode 100644 vendor/libc/libc.odin create mode 100644 vendor/libc/math.odin create mode 100644 vendor/libc/stdio.odin create mode 100644 vendor/libc/stdlib.odin create mode 100644 vendor/libc/string.odin create mode 100644 vendor/stb/image/stb_image_wasm.odin create mode 100644 vendor/stb/lib/stb_image_resize_wasm.o create mode 100644 vendor/stb/lib/stb_image_wasm.o create mode 100644 vendor/stb/lib/stb_image_write_wasm.o create mode 100644 vendor/stb/lib/stb_rect_pack_wasm.o create mode 100644 vendor/stb/lib/stb_sprintf_wasm.o create mode 100644 vendor/stb/rect_pack/stb_rect_pack_wasm.odin create mode 100644 vendor/stb/sprintf/stb_sprintf.odin create mode 100644 vendor/stb/src/stb_sprintf.c create mode 100644 vendor/stb/src/stb_sprintf.h delete mode 100644 vendor/stb/src/stb_truetype_wasm.c diff --git a/core/bytes/bytes.odin b/core/bytes/bytes.odin index 45eb4430703..c0d25bcce42 100644 --- a/core/bytes/bytes.odin +++ b/core/bytes/bytes.odin @@ -334,7 +334,7 @@ Inputs: Returns: - index: The index of the byte `c`, or -1 if it was not found. */ -index_byte :: proc(s: []byte, c: byte) -> (index: int) #no_bounds_check { +index_byte :: proc "contextless" (s: []byte, c: byte) -> (index: int) #no_bounds_check { i, l := 0, len(s) // Guard against small strings. On modern systems, it is ALWAYS @@ -469,7 +469,7 @@ Inputs: Returns: - index: The index of the byte `c`, or -1 if it was not found. */ -last_index_byte :: proc(s: []byte, c: byte) -> int #no_bounds_check { +last_index_byte :: proc "contextless" (s: []byte, c: byte) -> int #no_bounds_check { i := len(s) // Guard against small strings. On modern systems, it is ALWAYS diff --git a/core/mem/allocators.odin b/core/mem/allocators.odin index a5b93ad056e..cbed5fbe373 100644 --- a/core/mem/allocators.odin +++ b/core/mem/allocators.odin @@ -1137,3 +1137,81 @@ buddy_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode, return nil, nil } + +// An allocator that keeps track of allocation sizes and passes it along to resizes. +// This is useful if you are using a library that needs an equivalent of `realloc` but want to use +// the Odin allocator interface. +// +// You want to wrap your allocator into this one if you are trying to use any allocator that relies +// on the old size to work. +// +// The overhead of this allocator is an extra max(alignment, size_of(Header)) bytes allocated for each allocation, these bytes are +// used to store the size and original pointer. +Compat_Allocator :: struct { + parent: Allocator, +} + +compat_allocator_init :: proc(rra: ^Compat_Allocator, allocator := context.allocator) { + rra.parent = allocator +} + +compat_allocator :: proc(rra: ^Compat_Allocator) -> Allocator { + return Allocator{ + data = rra, + procedure = compat_allocator_proc, + } +} + +compat_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode, + size, alignment: int, + old_memory: rawptr, old_size: int, + location := #caller_location) -> (data: []byte, err: Allocator_Error) { + size, old_size := size, old_size + + Header :: struct { + size: int, + ptr: rawptr, + } + + rra := (^Compat_Allocator)(allocator_data) + switch mode { + case .Alloc, .Alloc_Non_Zeroed: + a := max(alignment, size_of(Header)) + size += a + assert(size >= 0, "overflow") + + allocation := rra.parent.procedure(rra.parent.data, mode, size, alignment, old_memory, old_size, location) or_return + #no_bounds_check data = allocation[a:] + + ([^]Header)(raw_data(data))[-1] = { + size = size, + ptr = raw_data(allocation), + } + return + + case .Free: + header := ([^]Header)(old_memory)[-1] + return rra.parent.procedure(rra.parent.data, mode, size, alignment, header.ptr, header.size, location) + + case .Resize, .Resize_Non_Zeroed: + header := ([^]Header)(old_memory)[-1] + + a := max(alignment, size_of(header)) + size += a + assert(size >= 0, "overflow") + + allocation := rra.parent.procedure(rra.parent.data, mode, size, alignment, header.ptr, header.size, location) or_return + #no_bounds_check data = allocation[a:] + + ([^]Header)(raw_data(data))[-1] = { + size = size, + ptr = raw_data(allocation), + } + return + + case .Free_All, .Query_Info, .Query_Features: + return rra.parent.procedure(rra.parent.data, mode, size, alignment, old_memory, old_size, location) + + case: unreachable() + } +} diff --git a/core/os/os_js.odin b/core/os/os_js.odin index eb434c7278a..02821c3e352 100644 --- a/core/os/os_js.odin +++ b/core/os/os_js.odin @@ -3,33 +3,38 @@ package os import "base:runtime" +foreign import "odin_env" + @(require_results) is_path_separator :: proc(c: byte) -> bool { return c == '/' || c == '\\' } +Handle :: distinct u32 + +stdout: Handle = 1 +stderr: Handle = 2 + @(require_results) open :: proc(path: string, mode: int = O_RDONLY, perm: int = 0) -> (Handle, Error) { unimplemented("core:os procedure not supported on JS target") } close :: proc(fd: Handle) -> Error { - unimplemented("core:os procedure not supported on JS target") + return nil } flush :: proc(fd: Handle) -> (err: Error) { - unimplemented("core:os procedure not supported on JS target") + return nil } - - write :: proc(fd: Handle, data: []byte) -> (int, Error) { - unimplemented("core:os procedure not supported on JS target") -} - -@(private="file") -read_console :: proc(handle: Handle, b: []byte) -> (n: int, err: Error) { - unimplemented("core:os procedure not supported on JS target") + foreign odin_env { + @(link_name="write") + _write :: proc "contextless" (fd: Handle, p: []byte) --- + } + _write(fd, data) + return len(data), nil } read :: proc(fd: Handle, data: []byte) -> (int, Error) { @@ -45,19 +50,6 @@ file_size :: proc(fd: Handle) -> (i64, Error) { unimplemented("core:os procedure not supported on JS target") } - -@(private) -MAX_RW :: 1<<30 - -@(private) -pread :: proc(fd: Handle, data: []byte, offset: i64) -> (int, Error) { - unimplemented("core:os procedure not supported on JS target") -} -@(private) -pwrite :: proc(fd: Handle, data: []byte, offset: i64) -> (int, Error) { - unimplemented("core:os procedure not supported on JS target") -} - read_at :: proc(fd: Handle, data: []byte, offset: i64) -> (n: int, err: Error) { unimplemented("core:os procedure not supported on JS target") } @@ -65,16 +57,6 @@ write_at :: proc(fd: Handle, data: []byte, offset: i64) -> (n: int, err: Error) unimplemented("core:os procedure not supported on JS target") } -stdout: Handle = 1 -stderr: Handle = 2 - -@(require_results) -get_std_handle :: proc "contextless" (h: uint) -> Handle { - context = runtime.default_context() - unimplemented("core:os procedure not supported on JS target") -} - - @(require_results) exists :: proc(path: string) -> bool { unimplemented("core:os procedure not supported on JS target") @@ -90,9 +72,6 @@ is_dir :: proc(path: string) -> bool { unimplemented("core:os procedure not supported on JS target") } -// NOTE(tetra): GetCurrentDirectory is not thread safe with SetCurrentDirectory and GetFullPathName -//@private cwd_lock := win32.SRWLOCK{} // zero is initialized - @(require_results) get_current_directory :: proc(allocator := context.allocator) -> string { unimplemented("core:os procedure not supported on JS target") @@ -118,18 +97,6 @@ remove_directory :: proc(path: string) -> (err: Error) { } - -@(private, require_results) -is_abs :: proc(path: string) -> bool { - unimplemented("core:os procedure not supported on JS target") -} - -@(private, require_results) -fix_long_path :: proc(path: string) -> string { - unimplemented("core:os procedure not supported on JS target") -} - - link :: proc(old_name, new_name: string) -> (err: Error) { unimplemented("core:os procedure not supported on JS target") } @@ -169,7 +136,6 @@ read_dir :: proc(fd: Handle, n: int, allocator := context.allocator) -> (fi: []F unimplemented("core:os procedure not supported on JS target") } -Handle :: distinct uintptr File_Time :: distinct u64 _Platform_Error :: enum i32 { @@ -254,12 +220,7 @@ WSAECONNRESET :: Platform_Error.WSAECONNRESET ERROR_FILE_IS_PIPE :: General_Error.File_Is_Pipe ERROR_FILE_IS_NOT_DIR :: General_Error.Not_Dir -// "Argv" arguments converted to Odin strings -args := _alloc_command_line_arguments() - - - - +args: []string @(require_results) last_write_time :: proc(fd: Handle) -> (File_Time, Error) { @@ -279,26 +240,14 @@ get_page_size :: proc() -> int { @(private, require_results) _processor_core_count :: proc() -> int { - unimplemented("core:os procedure not supported on JS target") + return 1 } exit :: proc "contextless" (code: int) -> ! { - context = runtime.default_context() - unimplemented("core:os procedure not supported on JS target") + unimplemented_contextless("core:os procedure not supported on JS target") } - - @(require_results) current_thread_id :: proc "contextless" () -> int { - context = runtime.default_context() - unimplemented("core:os procedure not supported on JS target") + return 0 } - - - -@(require_results) -_alloc_command_line_arguments :: proc() -> []string { - return nil -} - diff --git a/core/strings/strings.odin b/core/strings/strings.odin index b69c4a0e07e..dbc84f8b73b 100644 --- a/core/strings/strings.odin +++ b/core/strings/strings.odin @@ -93,7 +93,7 @@ Inputs: Returns: - res: A string created from the null-terminated byte pointer and length */ -string_from_null_terminated_ptr :: proc(ptr: [^]byte, len: int) -> (res: string) { +string_from_null_terminated_ptr :: proc "contextless" (ptr: [^]byte, len: int) -> (res: string) { s := string(ptr[:len]) s = truncate_to_byte(s, 0) return s @@ -139,7 +139,7 @@ NOTE: Failure to find the byte results in returning the entire string. Returns: - res: The truncated string */ -truncate_to_byte :: proc(str: string, b: byte) -> (res: string) { +truncate_to_byte :: proc "contextless" (str: string, b: byte) -> (res: string) { n := index_byte(str, b) if n < 0 { n = len(str) @@ -261,7 +261,7 @@ Inputs: Returns: - result: `-1` if `lhs` comes first, `1` if `rhs` comes first, or `0` if they are equal */ -compare :: proc(lhs, rhs: string) -> (result: int) { +compare :: proc "contextless" (lhs, rhs: string) -> (result: int) { return mem.compare(transmute([]byte)lhs, transmute([]byte)rhs) } /* @@ -1447,7 +1447,7 @@ Output: -1 */ -index_byte :: proc(s: string, c: byte) -> (res: int) { +index_byte :: proc "contextless" (s: string, c: byte) -> (res: int) { return #force_inline bytes.index_byte(transmute([]u8)s, c) } /* @@ -1482,7 +1482,7 @@ Output: -1 */ -last_index_byte :: proc(s: string, c: byte) -> (res: int) { +last_index_byte :: proc "contextless" (s: string, c: byte) -> (res: int) { return #force_inline bytes.last_index_byte(transmute([]u8)s, c) } /* @@ -1576,8 +1576,8 @@ Output: -1 */ -index :: proc(s, substr: string) -> (res: int) { - hash_str_rabin_karp :: proc(s: string) -> (hash: u32 = 0, pow: u32 = 1) { +index :: proc "contextless" (s, substr: string) -> (res: int) { + hash_str_rabin_karp :: proc "contextless" (s: string) -> (hash: u32 = 0, pow: u32 = 1) { for i := 0; i < len(s); i += 1 { hash = hash*PRIME_RABIN_KARP + u32(s[i]) } diff --git a/vendor/box2d/box2d.odin b/vendor/box2d/box2d.odin index 081e0861b34..edadc348981 100644 --- a/vendor/box2d/box2d.odin +++ b/vendor/box2d/box2d.odin @@ -3,7 +3,11 @@ package vendor_box2d import "base:intrinsics" import "core:c" -@(private) VECTOR_EXT :: "avx2" when #config(VENDOR_BOX2D_ENABLE_AVX2, intrinsics.has_target_feature("avx2")) else "sse2" +when ODIN_ARCH == .amd64 { + @(private) VECTOR_EXT :: "avx2" when #config(VENDOR_BOX2D_ENABLE_AVX2, intrinsics.has_target_feature("avx2")) else "sse2" +} else { + @(private) VECTOR_EXT :: "_simd" when #config(VENDOR_BOX2D_ENABLE_SIMD128, intrinsics.has_target_feature("simd128")) else "" +} when ODIN_OS == .Windows { @(private) LIB_PATH :: "lib/box2d_windows_amd64_" + VECTOR_EXT + ".lib" @@ -13,6 +17,8 @@ when ODIN_OS == .Windows { @(private) LIB_PATH :: "lib/box2d_darwin_amd64_" + VECTOR_EXT + ".a" } else when ODIN_ARCH == .amd64 { @(private) LIB_PATH :: "lib/box2d_other_amd64_" + VECTOR_EXT + ".a" +} else when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 { + @(private) LIB_PATH :: "lib/box2d_wasm" + VECTOR_EXT + ".o" } else { @(private) LIB_PATH :: "lib/box2d_other.a" } @@ -21,8 +27,16 @@ when !#exists(LIB_PATH) { #panic("Could not find the compiled box2d libraries at \"" + LIB_PATH + "\", they can be compiled by running the `build.sh` script at `" + ODIN_ROOT + "vendor/box2d/build_box2d.sh\"`") } -foreign import lib { - LIB_PATH, +when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 { + when VECTOR_EXT == "_simd" { + foreign import lib "lib/box2d_wasm_simd.o" + } else { + foreign import lib "lib/box2d_wasm.o" + } +} else { + foreign import lib { + LIB_PATH, + } } @@ -1520,4 +1534,4 @@ IsValid :: proc{ Joint_IsValid, IsValidRay, -} \ No newline at end of file +} diff --git a/vendor/box2d/box2d_wasm.odin b/vendor/box2d/box2d_wasm.odin new file mode 100644 index 00000000000..eab369a0de6 --- /dev/null +++ b/vendor/box2d/box2d_wasm.odin @@ -0,0 +1,4 @@ +//+build wasm32, wasm64p32 +package vendor_box2d + +@(require) import _ "vendor:libc" diff --git a/vendor/box2d/build_box2d.sh b/vendor/box2d/build_box2d.sh index 4fa64faa075..9513d31130d 100755 --- a/vendor/box2d/build_box2d.sh +++ b/vendor/box2d/build_box2d.sh @@ -68,5 +68,7 @@ esac cd .. +make -f wasm.Makefile + rm -rf v3.0.0.tar.gz rm -rf box2d-3.0.0 diff --git a/vendor/box2d/lib/box2d_wasm.o b/vendor/box2d/lib/box2d_wasm.o new file mode 100755 index 0000000000000000000000000000000000000000..15d71c5a141c1667db29fedc403421da7946346c GIT binary patch literal 433031 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 literal 0 HcmV?d00001 diff --git a/vendor/box2d/lib/box2d_wasm_simd.o b/vendor/box2d/lib/box2d_wasm_simd.o new file mode 100755 index 0000000000000000000000000000000000000000..568900bd982f488dadb09abd2068e1bc1eaa870b GIT binary patch literal 405135 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
    l)9jQ7;?A0Fj^)RniiX1@}&k=L&Z85(*fEfus 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

    3#-fWtlU(;`eg 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 S+VgSZQ+6-@j{V&8ul@&oWZ1_5 literal 0 HcmV?d00001 diff --git a/vendor/box2d/wasm.Makefile b/vendor/box2d/wasm.Makefile new file mode 100644 index 00000000000..929b61aea37 --- /dev/null +++ b/vendor/box2d/wasm.Makefile @@ -0,0 +1,32 @@ +# Custom Makefile to build box2d for Odin's WASM targets. +# I tried to make a cmake toolchain file for this / use cmake but this is far easier. +# NOTE: We are pretending to be emscripten to box2d so it takes WASM code paths, but we don't actually use emscripten. + +# CC = $(shell brew --prefix llvm)/bin/clang +# LD = $(shell brew --prefix llvm)/bin/wasm-ld + +VERSION = 3.0.0 +SRCS = $(wildcard box2d-$(VERSION)/src/*.c) +OBJS_SIMD = $(SRCS:.c=_simd.o) +OBJS = $(SRCS:.c=.o) +SYSROOT = $(shell odin root)/vendor/libc +CFLAGS = -Ibox2d-$(VERSION)/include -Ibox2d-$(VERSION)/Extern/simde --target=wasm32 -D__EMSCRIPTEN__ -DNDEBUG -O3 --sysroot=$(SYSROOT) + +all: lib/box2d_wasm.o lib/box2d_wasm_simd.o clean + +%.o: %.c + $(CC) -c $(CFLAGS) $< -o $@ + +%_simd.o: %.c + $(CC) -c $(CFLAGS) -msimd128 $< -o $@ + +lib/box2d_wasm.o: $(OBJS) + $(LD) -r -o lib/box2d_wasm.o $(OBJS) + +lib/box2d_wasm_simd.o: $(OBJS_SIMD) + $(LD) -r -o lib/box2d_wasm_simd.o $(OBJS_SIMD) + +clean: + rm -rf $(OBJS) $(OBJS_SIMD) + +.PHONY: clean diff --git a/vendor/cgltf/cgltf.odin b/vendor/cgltf/cgltf.odin index f4518360df0..a24c36d647e 100644 --- a/vendor/cgltf/cgltf.odin +++ b/vendor/cgltf/cgltf.odin @@ -5,6 +5,7 @@ LIB :: ( "lib/cgltf.lib" when ODIN_OS == .Windows else "lib/cgltf.a" when ODIN_OS == .Linux else "lib/darwin/cgltf.a" when ODIN_OS == .Darwin + else "lib/cgltf_wasm.o" when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 else "" ) @@ -13,7 +14,11 @@ when LIB != "" { // Windows library is shipped with the compiler, so a Windows specific message should not be needed. #panic("Could not find the compiled cgltf library, it can be compiled by running `make -C \"" + ODIN_ROOT + "vendor/cgltf/src\"`") } +} +when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 { + foreign import lib "lib/cgltf_wasm.o" +} else when LIB != "" { foreign import lib { LIB } } else { foreign import lib "system:cgltf" diff --git a/vendor/cgltf/cgltf_wasm.odin b/vendor/cgltf/cgltf_wasm.odin new file mode 100644 index 00000000000..f2da86a2cd7 --- /dev/null +++ b/vendor/cgltf/cgltf_wasm.odin @@ -0,0 +1,4 @@ +//+build wasm32, wasm64p32 +package cgltf + +@(require) import _ "vendor:libc" diff --git a/vendor/cgltf/lib/cgltf_wasm.o b/vendor/cgltf/lib/cgltf_wasm.o new file mode 100644 index 0000000000000000000000000000000000000000..54346d176c8e8c1335d00f418d7f554fe690e3f0 GIT binary patch literal 112327 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 ! { + context = g_ctx + loc := runtime.Source_Code_Location{ + file_path = string(file), + line = line, + column = 0, + procedure = string(func), + } + context.assertion_failure_proc("runtime assertion", string(expr), loc) +} diff --git a/vendor/libc/include/assert.h b/vendor/libc/include/assert.h new file mode 100644 index 00000000000..a6fb6c696e6 --- /dev/null +++ b/vendor/libc/include/assert.h @@ -0,0 +1,16 @@ +#ifdef NDEBUG +#define assert(e) ((void)0) +#else + +#ifdef __FILE_NAME__ +#define __ASSERT_FILE_NAME __FILE_NAME__ +#else /* __FILE_NAME__ */ +#define __ASSERT_FILE_NAME __FILE__ +#endif /* __FILE_NAME__ */ + +void __odin_libc_assert_fail(const char *, const char *, int, const char *); + +#define assert(e) \ + (__builtin_expect(!(e), 0) ? __odin_libc_assert_fail(__func__, __ASSERT_FILE_NAME, __LINE__, #e) : (void)0) + +#endif /* NDEBUG */ diff --git a/vendor/libc/include/math.h b/vendor/libc/include/math.h new file mode 100644 index 00000000000..3f60d698fcb --- /dev/null +++ b/vendor/libc/include/math.h @@ -0,0 +1,21 @@ +#include + +float sqrtf(float); +float cosf(float); +float sinf(float); +float atan2f(float, float); +bool isnan(float); +bool isinf(float); +double floor(double x); +double ceil(double x); +double sqrt(double x); +double pow(double x, double y); +double fmod(double x, double y); +double cos(double x); +double acos(double x); +double fabs(double x); +int abs(int); +double ldexp(double, int); +double exp(double); +float log(float); +float sin(float); diff --git a/vendor/libc/include/stdio.h b/vendor/libc/include/stdio.h new file mode 100644 index 00000000000..807437f3c6b --- /dev/null +++ b/vendor/libc/include/stdio.h @@ -0,0 +1,47 @@ +#include +#include + +#pragma once + +typedef struct {} FILE; + +#define SEEK_SET 0 +#define SEEK_CUR 1 +#define SEEK_END 2 + +#define stdout ((FILE *)2) +#define stderr ((FILE *)3) + +FILE *fopen(const char *, char *); +int fclose(FILE *); +int fseek(FILE *, long, int); +long ftell(FILE *); +size_t fread(void *, size_t, size_t, FILE *); +size_t fwrite(const void *, size_t, size_t, FILE *); + +int vfprintf(FILE *, const char *, va_list); +int vsnprintf(char *, size_t, const char *, va_list); + +static inline int snprintf(char *buf, size_t size, const char *fmt, ...) { + va_list args; + va_start(args, fmt); + int result = vsnprintf(buf, size, fmt, args); + va_end(args); + return result; +} + +static inline int fprintf(FILE *f, const char *fmt, ...) { + va_list args; + va_start(args, fmt); + int result = vfprintf(f, fmt, args); + va_end(args); + return result; +} + +static inline int printf(const char *fmt, ...) { + va_list args; + va_start(args, fmt); + int result = vfprintf(stdout, fmt, args); + va_end(args); + return result; +} diff --git a/vendor/libc/include/stdlib.h b/vendor/libc/include/stdlib.h new file mode 100644 index 00000000000..22cfc528b1d --- /dev/null +++ b/vendor/libc/include/stdlib.h @@ -0,0 +1,19 @@ +#include + +void *malloc(size_t size); + +void *aligned_alloc(size_t alignment, size_t size); + +void free(void *); + +void *realloc(void *, size_t); + +void qsort(void* base, size_t num, size_t size, int (*compare)(const void*, const void*)); + +int atoi(const char *); +long atol(const char *); +long long atoll(const char *); + +double atof(const char *); + +long strtol(const char *, char **, int); diff --git a/vendor/libc/include/string.h b/vendor/libc/include/string.h new file mode 100644 index 00000000000..4571f945464 --- /dev/null +++ b/vendor/libc/include/string.h @@ -0,0 +1,21 @@ +#include + +void *memcpy(void *, const void *, size_t); +void *memset(void *, int, size_t); +void *memmove(void *, void *, size_t); +int memcmp(const void *, const void *, size_t); + +unsigned long strlen(const char *str); + +char *strchr(const char *, int); +char *strrchr(const char *, int); + +char *strncpy(char *, const char *, size_t); +char *strcpy(char *, const char *); + +size_t strcspn(const char *, const char *); + +int strcmp(const char *, const char *); +int strncmp(const char *, const char *, size_t); + +char *strstr(const char *, const char *); diff --git a/vendor/libc/libc.odin b/vendor/libc/libc.odin new file mode 100644 index 00000000000..00d68710931 --- /dev/null +++ b/vendor/libc/libc.odin @@ -0,0 +1,25 @@ +package odin_libc + +import "base:runtime" + +import "core:mem" + +@(private) +g_ctx: runtime.Context +@(private) +g_allocator: mem.Compat_Allocator + +@(init) +init_context :: proc() { + g_ctx = context + + // Wrapping the allocator with the mem.Compat_Allocator so we can + // mimic the realloc semantics. + mem.compat_allocator_init(&g_allocator, g_ctx.allocator) + g_ctx.allocator = mem.compat_allocator(&g_allocator) +} + +// NOTE: the allocator must respect an `old_size` of `-1` on resizes! +set_context :: proc(ctx := context) { + g_ctx = ctx +} diff --git a/vendor/libc/math.odin b/vendor/libc/math.odin new file mode 100644 index 00000000000..59f42dd6787 --- /dev/null +++ b/vendor/libc/math.odin @@ -0,0 +1,100 @@ +package odin_libc + +import "base:builtin" + +import "core:math" + +@(require, linkage="strong", link_name="sqrtf") +sqrtf :: proc "c" (v: f32) -> f32 { + return math.sqrt(v) +} + +@(require, linkage="strong", link_name="cosf") +cosf :: proc "c" (v: f32) -> f32 { + return math.cos(v) +} + +@(require, linkage="strong", link_name="sinf") +sinf :: proc "c" (v: f32) -> f32 { + return math.sin(v) +} + +@(require, linkage="strong", link_name="atan2f") +atan2f :: proc "c" (v: f32, v2: f32) -> f32 { + return math.atan2(v, v2) +} + +@(require, linkage="strong", link_name="isnan") +isnan :: proc "c" (v: f32) -> bool { + return math.is_nan(v) +} + +@(require, linkage="strong", link_name="isinf") +isinf :: proc "c" (v: f32) -> bool { + return math.is_inf(v) +} + +@(require, linkage="strong", link_name="sqrt") +sqrt :: proc "c" (x: f64) -> f64 { + return math.sqrt(x) +} + +@(require, linkage="strong", link_name="floor") +floor :: proc "c" (x: f64) -> f64 { + return math.floor(x) +} + +@(require, linkage="strong", link_name="ceil") +ceil :: proc "c" (x: f64) -> f64 { + return math.ceil(x) +} + +@(require, linkage="strong", link_name="pow") +pow :: proc "c" (x, y: f64) -> f64 { + return math.pow(x, y) +} + +@(require, linkage="strong", link_name="fmod") +fmod :: proc "c" (x, y: f64) -> f64 { + return math.mod(x, y) +} + +@(require, linkage="strong", link_name="cos") +cos :: proc "c" (x: f64) -> f64 { + return math.cos(x) +} + +@(require, linkage="strong", link_name="acos") +acos :: proc "c" (x: f64) -> f64 { + return math.acos(x) +} + +@(require, linkage="strong", link_name="fabs") +fabs :: proc "c" (x: f64) -> f64 { + return math.abs(x) +} + +@(require, linkage="strong", link_name="abs") +abs :: proc "c" (x: i32) -> i32 { + return builtin.abs(x) +} + +@(require, linkage="strong", link_name="ldexp") +ldexp :: proc "c" (x: f64, y: i32) -> f64{ + return math.ldexp(x, int(y)) +} + +@(require, linkage="strong", link_name="exp") +exp :: proc "c" (x: f64) -> f64 { + return math.exp(x) +} + +@(require, linkage="strong", link_name="log") +log :: proc "c" (x: f32) -> f32 { + return math.ln(x) +} + +@(require, linkage="strong", link_name="sin") +sin :: proc "c" (x: f32) -> f32 { + return math.sin(x) +} diff --git a/vendor/libc/stdio.odin b/vendor/libc/stdio.odin new file mode 100644 index 00000000000..10b95b96b83 --- /dev/null +++ b/vendor/libc/stdio.odin @@ -0,0 +1,106 @@ +package odin_libc + +import "core:c" +import "core:io" +import "core:os" + +import stb "vendor:stb/sprintf" + +FILE :: uintptr + +@(require, linkage="strong", link_name="fopen") +fopen :: proc "c" (path: cstring, mode: cstring) -> FILE { + context = g_ctx + unimplemented("odin_libc.fopen") +} + +@(require, linkage="strong", link_name="fseek") +fseek :: proc "c" (file: FILE, offset: c.long, whence: i32) -> i32 { + context = g_ctx + handle := os.Handle(file-1) + _, err := os.seek(handle, i64(offset), int(whence)) + if err != nil { + return -1 + } + return 0 +} + +@(require, linkage="strong", link_name="ftell") +ftell :: proc "c" (file: FILE) -> c.long { + context = g_ctx + handle := os.Handle(file-1) + off, err := os.seek(handle, 0, os.SEEK_CUR) + if err != nil { + return -1 + } + return c.long(off) +} + +@(require, linkage="strong", link_name="fclose") +fclose :: proc "c" (file: FILE) -> i32 { + context = g_ctx + handle := os.Handle(file-1) + if os.close(handle) != nil { + return -1 + } + return 0 +} + +@(require, linkage="strong", link_name="fread") +fread :: proc "c" (buffer: [^]byte, size: uint, count: uint, file: FILE) -> uint { + context = g_ctx + handle := os.Handle(file-1) + n, _ := os.read(handle, buffer[:min(size, count)]) + return uint(max(0, n)) +} + +@(require, linkage="strong", link_name="fwrite") +fwrite :: proc "c" (buffer: [^]byte, size: uint, count: uint, file: FILE) -> uint { + context = g_ctx + handle := os.Handle(file-1) + n, _ := os.write(handle, buffer[:min(size, count)]) + return uint(max(0, n)) +} + +@(require, linkage="strong", link_name="vsnprintf") +vsnprintf :: proc "c" (buf: [^]byte, count: uint, fmt: cstring, args: ^c.va_list) -> i32 { + i32_count := i32(count) + assert_contextless(i32_count >= 0) + return stb.vsnprintf(buf, i32_count, fmt, args) +} + +@(require, linkage="strong", link_name="vfprintf") +vfprintf :: proc "c" (file: FILE, fmt: cstring, args: ^c.va_list) -> i32 { + context = g_ctx + + handle := os.Handle(file-1) + + MAX_STACK :: 4096 + + buf: []byte + stack_buf: [MAX_STACK]byte = --- + { + n := stb.vsnprintf(&stack_buf[0], MAX_STACK, fmt, args) + if n <= 0 { + return n + } + + if n >= MAX_STACK { + buf = make([]byte, n) + n2 := stb.vsnprintf(raw_data(buf), i32(len(buf)), fmt, args) + assert(n == n2) + } else { + buf = stack_buf[:n] + } + } + defer if len(buf) > MAX_STACK { + delete(buf) + } + + _, err := io.write_full(os.stream_from_handle(handle), buf) + if err != nil { + return -1 + } + + return i32(len(buf)) +} diff --git a/vendor/libc/stdlib.odin b/vendor/libc/stdlib.odin new file mode 100644 index 00000000000..f898de619d5 --- /dev/null +++ b/vendor/libc/stdlib.odin @@ -0,0 +1,119 @@ +package odin_libc + +import "base:runtime" + +import "core:c" +import "core:slice" +import "core:sort" +import "core:strconv" +import "core:strings" + +@(require, linkage="strong", link_name="malloc") +malloc :: proc "c" (size: uint) -> rawptr { + context = g_ctx + ptr, err := runtime.mem_alloc_non_zeroed(int(size)) + assert(err == nil, "allocation failure") + return raw_data(ptr) +} + +@(require, linkage="strong", link_name="aligned_alloc") +aligned_alloc :: proc "c" (alignment: uint, size: uint) -> rawptr { + context = g_ctx + ptr, err := runtime.mem_alloc_non_zeroed(int(size), int(alignment)) + assert(err == nil, "allocation failure") + return raw_data(ptr) +} + +@(require, linkage="strong", link_name="free") +free :: proc "c" (ptr: rawptr) { + context = g_ctx + runtime.mem_free(ptr) +} + +@(require, linkage="strong", link_name="realloc") +realloc :: proc "c" (ptr: rawptr, new_size: uint) -> rawptr { + context = g_ctx + // -1 for the old_size, assumed to be wrapped with the mem.Compat_Allocator to get the right size. + // Note that realloc does not actually care about alignment and is allowed to just align it to something + // else than the original allocation. + ptr, err := runtime.non_zero_mem_resize(ptr, -1, int(new_size)) + assert(err != nil, "realloc failure") + return raw_data(ptr) +} + +@(require, linkage="strong", link_name="qsort") +qsort :: proc "c" (base: rawptr, num: uint, size: uint, cmp: proc "c" (a, b: rawptr) -> i32) { + context = g_ctx + + Inputs :: struct { + base: rawptr, + num: uint, + size: uint, + cmp: proc "c" (a, b: rawptr) -> i32, + } + + sort.sort({ + collection = &Inputs{base, num, size, cmp}, + len = proc(it: sort.Interface) -> int { + inputs := (^Inputs)(it.collection) + return int(inputs.num) + }, + less = proc(it: sort.Interface, i, j: int) -> bool { + inputs := (^Inputs)(it.collection) + a := rawptr(uintptr(inputs.base) + (uintptr(i) * uintptr(inputs.size))) + b := rawptr(uintptr(inputs.base) + (uintptr(j) * uintptr(inputs.size))) + return inputs.cmp(a, b) < 0 + }, + swap = proc(it: sort.Interface, i, j: int) { + inputs := (^Inputs)(it.collection) + + a := rawptr(uintptr(inputs.base) + (uintptr(i) * uintptr(inputs.size))) + b := rawptr(uintptr(inputs.base) + (uintptr(j) * uintptr(inputs.size))) + + slice.ptr_swap_non_overlapping(a, b, int(inputs.size)) + }, + }) +} + +@(require, linkage="strong", link_name="atoi") +atoi :: proc "c" (str: cstring) -> i32 { + return i32(atoll(str)) +} + +@(require, linkage="strong", link_name="atol") +atol :: proc "c" (str: cstring) -> c.long { + return c.long(atoll(str)) +} + +@(require, linkage="strong", link_name="atoll") +atoll :: proc "c" (str: cstring) -> c.longlong { + context = g_ctx + + sstr := string(str) + sstr = strings.trim_left_space(sstr) + i, _ := strconv.parse_i64_of_base(sstr, 10) + return c.longlong(i) +} + +@(require, linkage="strong", link_name="atof") +atof :: proc "c" (str: cstring) -> f64 { + context = g_ctx + + sstr := string(str) + sstr = strings.trim_left_space(sstr) + f, _ := strconv.parse_f64(sstr) + return f +} + +@(require, linkage="strong", link_name="strtol") +strtol :: proc "c" (str: cstring, str_end: ^cstring, base: i32) -> c.long { + context = g_ctx + + sstr := string(str) + sstr = strings.trim_left_space(sstr) + + n: int + i, _ := strconv.parse_i64_of_base(sstr, int(base), &n) + str_end ^= cstring(raw_data(sstr)[n:]) + return c.long(clamp(i, i64(min(c.long)), i64(max(c.long)))) +} diff --git a/vendor/libc/string.odin b/vendor/libc/string.odin new file mode 100644 index 00000000000..1ab0803da37 --- /dev/null +++ b/vendor/libc/string.odin @@ -0,0 +1,111 @@ +package odin_libc + +import "base:intrinsics" + +import "core:c" +import "core:strings" +import "core:mem" + +// NOTE: already defined by Odin. +// void *memcpy(void *, const void *, size_t); +// void *memset(void *, int, size_t); + +@(require, linkage="strong", link_name="memcmp") +memcmp :: proc "c" (lhs: [^]byte, rhs: [^]byte, count: uint) -> i32 { + icount := int(count) + assert_contextless(icount >= 0) + return i32(mem.compare(lhs[:icount], rhs[:icount])) +} + +@(require, linkage="strong", link_name="strlen") +strlen :: proc "c" (str: cstring) -> c.ulong { + return c.ulong(len(str)) +} + +@(require, linkage="strong", link_name="strchr") +strchr :: proc "c" (str: cstring, ch: i32) -> cstring { + bch := u8(ch) + sstr := string(str) + if bch == 0 { + return cstring(raw_data(sstr)[len(sstr):]) + } + + idx := strings.index_byte(sstr, bch) + if idx < 0 { + return nil + } + + return cstring(raw_data(sstr)[idx:]) +} + +@(require, linkage="strong", link_name="strrchr") +strrchr :: proc "c" (str: cstring, ch: i32) -> cstring { + bch := u8(ch) + sstr := string(str) + if bch == 0 { + return cstring(raw_data(sstr)[len(sstr):]) + } + + idx := strings.last_index_byte(sstr, bch) + if idx < 0 { + return nil + } + + return cstring(raw_data(sstr)[idx:]) +} + +@(require, linkage="strong", link_name="strncpy") +strncpy :: proc "c" (dst: [^]byte, src: cstring, count: uint) -> cstring { + icount := int(count) + assert_contextless(icount >= 0) + cnt := min(len(src), icount) + intrinsics.mem_copy_non_overlapping(dst, rawptr(src), cnt) + intrinsics.mem_zero(dst, icount-cnt) + return cstring(dst) +} + +@(require, linkage="strong", link_name="strcpy") +strcpy :: proc "c" (dst: [^]byte, src: cstring) -> cstring { + intrinsics.mem_copy_non_overlapping(dst, rawptr(src), len(src)+1) + return cstring(dst) +} + +@(require, linkage="strong", link_name="strcspn") +strcspn :: proc "c" (dst: cstring, src: cstring) -> uint { + context = g_ctx + sdst := string(dst) + idx := strings.index_any(sdst, string(src)) + if idx == -1 { + return len(sdst) + } + return uint(idx) +} + +@(require, linkage="strong", link_name="strncmp") +strncmp :: proc "c" (lhs: cstring, rhs: cstring, count: uint) -> i32 { + icount := int(count) + assert_contextless(icount >= 0) + lhss := strings.string_from_null_terminated_ptr(([^]byte)(lhs), icount) + rhss := strings.string_from_null_terminated_ptr(([^]byte)(rhs), icount) + return i32(strings.compare(lhss, rhss)) +} + +@(require, linkage="strong", link_name="strcmp") +strcmp :: proc "c" (lhs: cstring, rhs: cstring) -> i32 { + return i32(strings.compare(string(lhs), string(rhs))) +} + +@(require, linkage="strong", link_name="strstr") +strstr :: proc "c" (str: cstring, substr: cstring) -> cstring { + if substr == "" { + return str + } + + idx := strings.index(string(str), string(substr)) + if idx < 0 { + return nil + } + + return cstring(([^]byte)(str)[idx:]) +} + diff --git a/vendor/stb/image/stb_image.odin b/vendor/stb/image/stb_image.odin index 828a1c2bd09..85d612354e0 100644 --- a/vendor/stb/image/stb_image.odin +++ b/vendor/stb/image/stb_image.odin @@ -7,6 +7,7 @@ LIB :: ( "../lib/stb_image.lib" when ODIN_OS == .Windows else "../lib/stb_image.a" when ODIN_OS == .Linux else "../lib/darwin/stb_image.a" when ODIN_OS == .Darwin + else "../lib/stb_image_wasm.o" when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 else "" ) @@ -15,12 +16,19 @@ when LIB != "" { // The STB libraries are shipped with the compiler on Windows so a Windows specific message should not be needed. #panic("Could not find the compiled STB libraries, they can be compiled by running `make -C \"" + ODIN_ROOT + "vendor/stb/src\"`") } +} +when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 { + foreign import stbi "../lib/stb_image_wasm.o" + foreign import stbi { LIB } +} else when LIB != "" { foreign import stbi { LIB } } else { foreign import stbi "system:stb_image" } +NO_STDIO :: ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 + #assert(size_of(c.int) == size_of(b32)) #assert(size_of(b32) == size_of(c.int)) @@ -33,14 +41,48 @@ Io_Callbacks :: struct { eof: proc "c" (user: rawptr) -> c.int, // returns nonzero if we are at end of file/data } +when !NO_STDIO { + @(default_calling_convention="c", link_prefix="stbi_") + foreign stbi { + //////////////////////////////////// + // + // 8-bits-per-channel interface + // + load :: proc(filename: cstring, x, y, channels_in_file: ^c.int, desired_channels: c.int) -> [^]byte --- + load_from_file :: proc(f: ^c.FILE, x, y, channels_in_file: ^c.int, desired_channels: c.int) -> [^]byte --- + + //////////////////////////////////// + // + // 16-bits-per-channel interface + // + load_16 :: proc(filename: cstring, x, y, channels_in_file: ^c.int, desired_channels: c.int) -> [^]u16 --- + load_16_from_file :: proc(f: ^c.FILE, x, y, channels_in_file: ^c.int, desired_channels: c.int) -> [^]u16 --- + + //////////////////////////////////// + // + // float-per-channel interface + // + loadf :: proc(filename: cstring, x, y, channels_in_file: ^c.int, desired_channels: c.int) -> [^]f32 --- + loadf_from_file :: proc(f: ^c.FILE, x, y, channels_in_file: ^c.int, desired_channels: c.int) -> [^]f32 --- + + is_hdr :: proc(filename: cstring) -> c.int --- + is_hdr_from_file :: proc(f: ^c.FILE) -> c.int --- + + // get image dimensions & components without fully decoding + info :: proc(filename: cstring, x, y, comp: ^c.int) -> c.int --- + info_from_file :: proc(f: ^c.FILE, x, y, comp: ^c.int) -> c.int --- + + is_16_bit :: proc(filename: cstring) -> b32 --- + is_16_bit_from_file :: proc(f: ^c.FILE) -> b32 --- + } +} + @(default_calling_convention="c", link_prefix="stbi_") foreign stbi { //////////////////////////////////// // // 8-bits-per-channel interface // - load :: proc(filename: cstring, x, y, channels_in_file: ^c.int, desired_channels: c.int) -> [^]byte --- - load_from_file :: proc(f: ^c.FILE, x, y, channels_in_file: ^c.int, desired_channels: c.int) -> [^]byte --- load_from_memory :: proc(buffer: [^]byte, len: c.int, x, y, channels_in_file: ^c.int, desired_channels: c.int) -> [^]byte --- load_from_callbacks :: proc(clbk: ^Io_Callbacks, user: rawptr, x, y, channels_in_file: ^c.int, desired_channels: c.int) -> [^]byte --- @@ -50,8 +92,6 @@ foreign stbi { // // 16-bits-per-channel interface // - load_16 :: proc(filename: cstring, x, y, channels_in_file: ^c.int, desired_channels: c.int) -> [^]u16 --- - load_16_from_file :: proc(f: ^c.FILE, x, y, channels_in_file: ^c.int, desired_channels: c.int) -> [^]u16 --- load_16_from_memory :: proc(buffer: [^]byte, len: c.int, x, y, channels_in_file: ^c.int, desired_channels: c.int) -> [^]u16 --- load_16_from_callbacks :: proc(clbk: ^Io_Callbacks, x, y, channels_in_file: ^c.int, desired_channels: c.int) -> [^]u16 --- @@ -59,8 +99,6 @@ foreign stbi { // // float-per-channel interface // - loadf :: proc(filename: cstring, x, y, channels_in_file: ^c.int, desired_channels: c.int) -> [^]f32 --- - loadf_from_file :: proc(f: ^c.FILE, x, y, channels_in_file: ^c.int, desired_channels: c.int) -> [^]f32 --- loadf_from_memory :: proc(buffer: [^]byte, len: c.int, x, y, channels_in_file: ^c.int, desired_channels: c.int) -> [^]f32 --- loadf_from_callbacks :: proc(clbk: ^Io_Callbacks, user: rawptr, x, y, channels_in_file: ^c.int, desired_channels: c.int) -> [^]f32 --- @@ -73,9 +111,6 @@ foreign stbi { is_hdr_from_callbacks :: proc(clbk: ^Io_Callbacks, user: rawptr) -> c.int --- is_hdr_from_memory :: proc(buffer: [^]byte, len: c.int) -> c.int --- - is_hdr :: proc(filename: cstring) -> c.int --- - is_hdr_from_file :: proc(f: ^c.FILE) -> c.int --- - // get a VERY brief reason for failure // NOT THREADSAFE failure_reason :: proc() -> cstring --- @@ -84,13 +119,9 @@ foreign stbi { image_free :: proc(retval_from_load: rawptr) --- // get image dimensions & components without fully decoding - info :: proc(filename: cstring, x, y, comp: ^c.int) -> c.int --- - info_from_file :: proc(f: ^c.FILE, x, y, comp: ^c.int) -> c.int --- info_from_memory :: proc(buffer: [^]byte, len: c.int, x, y, comp: ^c.int) -> c.int --- info_from_callbacks :: proc(clbk: ^Io_Callbacks, user: rawptr, x, y, comp: ^c.int) -> c.int --- - is_16_bit :: proc(filename: cstring) -> b32 --- - is_16_bit_from_file :: proc(f: ^c.FILE) -> b32 --- is_16_bit_from_memory :: proc(buffer: [^]byte, len: c.int) -> c.int --- // for image formats that explicitly notate that they have premultiplied alpha, diff --git a/vendor/stb/image/stb_image_resize.odin b/vendor/stb/image/stb_image_resize.odin index e22b587b20b..a37c2e243e0 100644 --- a/vendor/stb/image/stb_image_resize.odin +++ b/vendor/stb/image/stb_image_resize.odin @@ -7,6 +7,7 @@ RESIZE_LIB :: ( "../lib/stb_image_resize.lib" when ODIN_OS == .Windows else "../lib/stb_image_resize.a" when ODIN_OS == .Linux else "../lib/darwin/stb_image_resize.a" when ODIN_OS == .Darwin + else "../lib/stb_image_resize_wasm.o" when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 else "" ) @@ -15,7 +16,11 @@ when RESIZE_LIB != "" { // The STB libraries are shipped with the compiler on Windows so a Windows specific message should not be needed. #panic("Could not find the compiled STB libraries, they can be compiled by running `make -C \"" + ODIN_ROOT + "vendor/stb/src\"`") } +} +when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 { + foreign import lib "../lib/stb_image_resize_wasm.o" +} else when RESIZE_LIB != "" { foreign import lib { RESIZE_LIB } } else { foreign import lib "system:stb_image_resize" diff --git a/vendor/stb/image/stb_image_wasm.odin b/vendor/stb/image/stb_image_wasm.odin new file mode 100644 index 00000000000..77bb44f0294 --- /dev/null +++ b/vendor/stb/image/stb_image_wasm.odin @@ -0,0 +1,4 @@ +//+build wasm32, wasm64p32 +package stb_image + +@(require) import _ "vendor:libc" diff --git a/vendor/stb/image/stb_image_write.odin b/vendor/stb/image/stb_image_write.odin index f030f1e28dc..a0c0b57a0bf 100644 --- a/vendor/stb/image/stb_image_write.odin +++ b/vendor/stb/image/stb_image_write.odin @@ -7,6 +7,7 @@ WRITE_LIB :: ( "../lib/stb_image_write.lib" when ODIN_OS == .Windows else "../lib/stb_image_write.a" when ODIN_OS == .Linux else "../lib/darwin/stb_image_write.a" when ODIN_OS == .Darwin + else "../lib/stb_image_write_wasm.o" when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 else "" ) @@ -15,7 +16,11 @@ when WRITE_LIB != "" { // The STB libraries are shipped with the compiler on Windows so a Windows specific message should not be needed. #panic("Could not find the compiled STB libraries, they can be compiled by running `make -C \"" + ODIN_ROOT + "vendor/stb/src\"`") } +} +when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 { + foreign import stbiw "../lib/stb_image_write_wasm.o" +} else when WRITE_LIB != "" { foreign import stbiw { WRITE_LIB } } else { foreign import stbiw "system:stb_image_write" @@ -25,12 +30,6 @@ write_func :: proc "c" (ctx: rawptr, data: rawptr, size: c.int) @(default_calling_convention="c", link_prefix="stbi_") foreign stbiw { - write_png :: proc(filename: cstring, w, h, comp: c.int, data: rawptr, stride_in_bytes: c.int) -> c.int --- - write_bmp :: proc(filename: cstring, w, h, comp: c.int, data: rawptr) -> c.int --- - write_tga :: proc(filename: cstring, w, h, comp: c.int, data: rawptr) -> c.int --- - write_hdr :: proc(filename: cstring, w, h, comp: c.int, data: [^]f32) -> c.int --- - write_jpg :: proc(filename: cstring, w, h, comp: c.int, data: rawptr, quality: c.int /*0..=100*/) -> c.int --- - write_png_to_func :: proc(func: write_func, ctx: rawptr, w, h, comp: c.int, data: rawptr, stride_in_bytes: c.int) -> c.int --- write_bmp_to_func :: proc(func: write_func, ctx: rawptr, w, h, comp: c.int, data: rawptr) -> c.int --- write_tga_to_func :: proc(func: write_func, ctx: rawptr, w, h, comp: c.int, data: rawptr) -> c.int --- @@ -39,3 +38,14 @@ foreign stbiw { flip_vertically_on_write :: proc(flip_boolean: b32) --- } + +when !NO_STDIO { + @(default_calling_convention="c", link_prefix="stbi_") + foreign stbiw { + write_png :: proc(filename: cstring, w, h, comp: c.int, data: rawptr, stride_in_bytes: c.int) -> c.int --- + write_bmp :: proc(filename: cstring, w, h, comp: c.int, data: rawptr) -> c.int --- + write_tga :: proc(filename: cstring, w, h, comp: c.int, data: rawptr) -> c.int --- + write_hdr :: proc(filename: cstring, w, h, comp: c.int, data: [^]f32) -> c.int --- + write_jpg :: proc(filename: cstring, w, h, comp: c.int, data: rawptr, quality: c.int /*0..=100*/) -> c.int --- + } +} diff --git a/vendor/stb/lib/stb_image_resize_wasm.o b/vendor/stb/lib/stb_image_resize_wasm.o new file mode 100644 index 0000000000000000000000000000000000000000..1bf91266bf948e08986d6d402f30216ca3f829f5 GIT binary patch literal 27646 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 G?)yIx)!R(~ literal 0 HcmV?d00001 diff --git a/vendor/stb/lib/stb_image_wasm.o b/vendor/stb/lib/stb_image_wasm.o new file mode 100644 index 0000000000000000000000000000000000000000..cd7fa31cebc2c011bd3c2185c41d7fb42cab5264 GIT binary patch literal 78144 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%0AIBK9ErKP%v9o@A-s7 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 literal 0 HcmV?d00001 diff --git a/vendor/stb/lib/stb_rect_pack_wasm.o b/vendor/stb/lib/stb_rect_pack_wasm.o new file mode 100644 index 0000000000000000000000000000000000000000..fdd6d95d609945116972f99d96a240939a58ca55 GIT binary patch literal 3683 zcma)9O>7&-6`q-$f8 z^Ku-w(soko##_l&r+Z5}_~jz)c_gkBSp=RtEc%^!e$J!!XyY5A(oFM3;g{7RrZ0GO zADZ`>PIEqpcpyk)k&y-SmxJduBh&TnqqnSn^5ulA=q_)Y3jE;e(g|;K!2yH;1G>5>k2)RTu%`;QLVH?aj zC_pxbs=0QeW35K$&I=jlFTo0SZdfRCrCo~8^8orqohJm`P*UJ7LhgK5M(O_uQh5xy#glvD^mx&W;i`q6;0Hjct0EBbg01w;bG z0uS2kprXCd1O*bQ_DGFC48|Cz!y$F=S<#a*b>yV>4G``S2%tBXU*vO`W;gJ_jWcEf z&?!;2u~4>sJ#~=n3bO47Q^-0po&{_|EmB36p*lp@4Z*{DB2;vN=n(+5snS!_4M1yA zNEjp#LYo4E4d6={q8`8<*nmhY;-1p^2C_la(7ObW44aQ6AweWtxmpx(lMI@Mrj|RA z6@-s;?&q(_JPWY6%m2mCzv*H62DM-ZQe{rLlry8#0IMrd2oYVzAjAUiJ*6G$VMmLx zF8<}Hi!lwotdqt5C;%nvWH`0kfcl86JFf#i9@tcXUW78j+&j3t9NKdMY#o^&)Yf7c z2tPVM_D9MQXQ&bV#!2c_fU1@;grk9(*vOb0TAI^B4F_)o#;XMS(ZB#1A_f{cdHukIp`9>P(xz5Z%78 zbgjRszpLvDOSM+I(Iy8;{9~>PyI|8x+4%`q^X<-Bvar-ncKZuUyLw5R`%|ZMM&H#x zxL`<-{)($-pJsduUthOy|Bg`Q^|aeFib#x1zAM!9gbBKMU#QZ!4bZ-R8(26NVVUIrF)2vwii9U@7z2i14Dt1e4Z@ zaW%D8t8+8%?DXT#I(>68DJ$81+D`lUMC@)PeI{+H4ipZRhAEPs@EH@iX;Uzp2Kcz% z+1jpk6ZpWz_a@waI+&6@H*)YL8>tY^@yym?0RzB@^=yt6MyHn@HqV5cdDH2p8)>`N ziaXu4q|3$0|Kp0$?6PM^>dxg^d2~8oVAG@1D~gru4`_IJ^VM!=t=6wqCk!0zFJ2n4 z5>AZ!hY8g)lcX0J|Ne;UND&-P&OvKT=zVEY@7YPx%Zxw&4NYZ@Fk$E1q|)<~q*oYc zpU{jibdy%6UVZgPuU)bi;% z-j6?#pGumM85Q<8T*$f<-H#6Z0iaBR9jnEy~Rr_ovmcGo7~j(R;|5}J9EBzrh1YsdU;wy@Fatkzn+({2v~ZUN)#f5C??=Kufz literal 0 HcmV?d00001 diff --git a/vendor/stb/lib/stb_sprintf_wasm.o b/vendor/stb/lib/stb_sprintf_wasm.o new file mode 100644 index 0000000000000000000000000000000000000000..4c8e140e5dafae0d1dfceb1b455cbb438bec1307 GIT binary patch literal 13793 zcmd5@dwf*Yoj><6b7$selF4KyGh_msJ77g6aq>=h<^~8L^3YOWpV|;Y1STPGXmF7P z5JbiLet{nisKxrItX2iV6>uwRSBumt)@=o)1sAt#tJFue?Du!hoxDJ|b@z{*Fmuj5 z_nh;4zs|j|+V&+1V@!FdyStmY=BZs>Y@Vx&K1$a-H?=FMr^x}G29z%KcQjkq>YJ8j z)YLRCZmO?st65UNq`7Um$`og~y`#3Sp{AvIaZ^Wqo7N?U-I&x~-@!DRGo+?wanpju zZS{2>HCHTcs_R(X+*H$1JHN4BX<@2%9l`K2Mb&f-|GewzT4Ax0!LN$n5n|l#(Hr8fk+Q$%$xswx6i&_Q|jQ`okm-+Fk8-_o~%b zceci}S}{G7s|_~63u%=+3-`smR==uNaz^`wY<-$vHMz=zr7E@`rRr7?qbslkK(SKe zDm9q!O|Y<+Y0~~mt9`~)Ley51RuB|rX_dBWX??Wx^$6c&JPeZJA$wjjJyS6ZRW}UH zFbuE348!F%ZN<{kJf^LqF-+To27|j9T9;{eV`rX)2F%gzZfMKe?Q4{~C9wy#a^}(ExMqd>w)RaI4AZTMX?I!CL8#;d6|OmQ1}Lxx z*ePHtkRYZ;`*!lq5NJmMJ~|M5l;|cjgAzQ+)uBv)CkQ5wSh`RrAuk>w`gBq=6$>Lo zU$mD|DJ-Epf@N{d{+OKyRD;$KjA`~=UCDHp=5cv+1_iZWW>bMQLAQnoT(DqfGF^9j zFoh<30y$`Czn~WCV-0~&u|OqNR`3J-?PIJuhV>Au4p~B~07W;j*@svM=mJ1$rI^ZT zChaJ1L4H`F+QkwdSS{@*CP5#9wwB}qLDeoKSSBAr3ZtEd@IDrNeGdddpCGe`zz)mI za6Xzx^}7r`!%x@gUSCFrLVXjg3fa$Ns-YU`>3X`BZbFh>^gS(+1gI%hJ<>vS?t%6KIS^4T z^nMSkhTZ74k+k8Qa?jFOd}vki`mOfKj8-dT=SdGiQdZjFsfJdu@5bVE1xjr$tX!w= zIhF?4K};l@hxA-r8^eacO$1Hb&7(XF)3>(~tL&Qu!y+*tFtqBV{1|Jjp(HvU0+)cY zy}FYRofC_PfV*@KtKf=5SU~O{AJ5g+Q0NHeMw8^Q?QI_^V;RDk4Jyv_Bd{(2Aw#MPyD(Vc>z+yJ{NXYCPwBsQ&;>583<3SCY#B zkn=H%I0yta1Smu>(gR>0o&k#hI+z9(q0NF^Bc(z^N|ly@a7Xiaa9Rv^Fanp9vdnMd zY|!DX!_n{nc7mos*#2B#3nWRfq?!HP2|R+-x;`I3M(_B50rn3S8-m5i>Y@~g;g@6< zgT@0#*L_H-_Ggm4O8X;2BMwpeGtkOlOvDr+=v?Afh=*s=ED`< z4^59b5!NDYhPeqS#CljCI4X@0HiqqlfL%N%kEO%-usXNFp)z8NKJgc~WwMjv=M_;rShJEd|6$y4EmK1aiH;G;goSLiS#` zcgPDjJt9wa*{ct+u_8F^W%heu2i#50Ky?kqEJ#O#=DW~OHWvLa+vS$1M`7{zI44Ox?jQO+9j zRSlQ`j|#^j01KT2d&#Lw_d_AvGdBk24&7l5lhpummlz)Er4~eVBZz60Rm|ep35)i= zb?#iSWvJ8dj&m`#5?Go%gR-q$h`>o$a{LT(GAO!HkUqkiAhIK@vB6e4>^CWlB+pgY zScOPH;YbeQ2%Dbr_>c=U7-XQ6s`w};LlCw#;#G*;2Mk|CF&PgfARoc;0Sv`j$k0h1 zDA=W@!QvR46-6Z?8BnDE5pyUr;B%0Db89Ft&qb8_yAiMx*jZ)>-vmzLoaDKv2Tg+0 zn@;io&urjol1fftL3$dP(3@c*kNBnx6R9QW$--CI4%+NqUnFdgYz=`9f}JV~X2jrD z(EBYzisU_N2Fd}uQ5!W-vWSQbQ33*FB^fTbf;=?j5JIsi2dc>Ei?~WP8}uOxyFoz< z^+!TF9I4G@CO$V+%1-5tWJgrO#;uK3T;vkNxK&3=F^tC-kUiu2e(8y^-*g~`1;|vX z#ze78+(ze{L-sI{EK_=p%tz)s2+%193KHO60^gEjV2y~qp!bjh27wW&po}VwJcaNU zFhZGkLY?M0QCaBzsZkjv3gx9T{hAhwBY0ElL}wz@;?zS!!IesJQ1K!`qdJE|GsRMr zzL=Kap#b;Q(2^kwUV(OG_CW;I23u=EEs?@exK)IEq5+lqa3q+NrsFc=bYcDw zuB}q0lnW?0_aI;}_K5J|A?hMiB~&RXfUAYpC>a?F2X+ z0r9QaY6Ooq0PA>!$9M#+BnXmoIbh@nJ{+0`&w{xinCDK95gHLJvSKFkR-MwLn7smp z9U83_(jUxzOalheWL98KX0~E=jK?<-Sx)jw-O!zb^2~x%d>fn^IM-KUX z!C@hES}YeK&w$X}9Nb2JEA|nR66ra#=ya0mix?6K08gzIB7)VEh$1Nw$tv5i0}>0N zMNB^(LSh;`H0Frp6KQ1w&ylGo%5$8N!Qs$d6beYyK%0|mqOy@tWwAl1MI0p)x6x`_gK4y8|Fq3u|OlR)?~bP&yKV_FQ#kc1FnNH`OchD7Irr`i%> z7L>Flcu*>e0N6_q@TS@WB@5*i1U?=~kwgn|5CO>e0;-_RB?vE;2&$+f=67 zzGV&KFibcp;fgUA<&gcF@EsBn(nuP6soxlFooI#crl24;BmCo`r2PSdXy9CV2pCZ7 z)Uc3bRFtgH)DVmvo1&oPQF0wZB_ohp7;Jz^Q8EDbhoM2@3{o5bBfPi666LY3bMygy+bC0*+=;P)}_DATTR@UJSB_kBgAE#IYw>MkhR?6QJ`Q1a{&=F80Bf z!X}1tp-7m5GzLBfnM&_E3{e5=_>tV+^KNoaTtoGm%NfpgNEcMc)2U9hpu4rFt zSCJQ?!au1=5P>8f2xM}EILS}|5~WW(LhK=JicxxGv?g(;t|VI;aB_t?h(oh*-z8{-jsx3hA7w)KKvWb&QK-WL zu^mhs@)Or0>$|4~MW4eE0xOz=jlMg&u^^G3eW;2gAue zv78TYaGs-xJsg2M;wGKMlaYitiy$GkRS))9|Ay+LOiXLp;-eg3e8Z;!R!HFs0cCpX(gTv3ZE9_ zy*>?l5B6yylcI<)1%;__?R2`0(+fB>Akfdh2XR3N3jgl-RQZJTYgmI_C2O)$tl|Ax z1OHA>!-&eS&4Y0InA(CAMKZYmE@C;D1ithBdC(yL{`c{M{5w??vHa0{n!3k#of zs_^^aHXuj)M{zTxCFT%rIRZC4dx5*7hqK){b#u-rQIc|v9>S3th{wVZBI$z)g+Yu% zbb>x0w)E*ksGmO2$u_f8d^1H74-F%0rKksUBqvDf2PZ3iAwhxY=)o7(;5Nl;0SC59 zq4aCij`nlmX@7F0s1P`wz9)g5dD8F2`vCN2K$mNUY}J*df_;Bne=hD$J-~_^By|JN zvgiRLjs*_kSsCNZeqc4KO}mGFxx4QX)SMV@+nVLUv+Ta{lPB4lIexv0aKT5ny!NV2 zyh`Bi9a%%idQ>?YFbjhUA%lCXl=X2hcVj8>+Q1rm|G=>SW}HXQ$9(n&dLweuC6+;4 z@!79?amkku{|sb%8@Ub$c-kf(bJ#&{G{k*&HclpRM}LlhSFU+JZf=gJVYSv_??)!W zk~j>G`?B|7kk8wZhdXK%hku<_584W73AU?X_zTT4(=z`cx7wBO1_H_;btR&<}tI@v@2F0FmkE`sU3*<=8bTIQo_zjP|icu&zI5r{xv) zad<_{k`JFxOZ6!fW&?UQxR?2Dq$9|+$b5Wugt9A;Ek%`y0&t+T!4u*`I#IlZr}Ok) z>FcB&gJ>4&V3JJG!$MjCbx847@OCz-sBZZQ;y@m6#|u8E@c5-`{||W#nnAUnDAMnq z%*5x=q&hNXeVgS4N-4wZ?(VX@ayp^u-@F;W-W|~FxIi0P00yLE7!>wEe@?d{y|vSS zLlJFUl;%!sg)!0@GWV{C2jM1e-1+RAkA397C>hV1^WB1O5@*4Djjb2$oV0PJ!DD^~r=(CYZH;D5D z?gN|#0RVWAl{e7p5PS;{u0ZJ)>W2T#LQ>_uEQw=69F}{*yC8gyU}8`Z7Pu6w3kuF@ z#9EvsR2?(A<6iu(ysC;_;M}GlA)Vou>>_eu*xMlQg*D!-al<}lw1`xLdQI{gQX%j5 z7~}vSKY(c7om~(bHSo7MS|%YGHl6XS_&v=Tzl+ZLNE~=F2Pdq8IQT8>DjYY*yJ8I% z&VF$uK?3pMoh2YoZ?4EY5K$++nZz^g&Lna-dTbpxWbKgy*bpOD2XK?>LTWNafHe>w z?F8fs2Zf;E0RqyyBPdZI!aGuE$i^5~DfB3qqtOc;xE9B1CRaEfmQj?NxPGfSR_T2g z4vt!L!Xv^h%6@1dLL26*0VrHI!ZfxDB%L{`c~nu<)QfaC;YB)K-XYP52(183&`mq7 zqV?jy0Y5l(C=XkUc zvK}|(nC7pphbZZWspJD?QyI;_{O6((a%KRq4xlK)0?h9Z<}iND42hPL~~2UgxdK=w5MdEE%K*InK@r4B$AY<=?SLw;;8O+4ZBpfl{d?jPSMuC`YN@&rbn$p z3q;GP-Ev#b610`SzbCN;?M=h}b=R9{i@$TCA#D=tK2)~+1$z?fIk@)X;$@TAOS2X( z+4IOGHvZ;$M=m)$sdB?pokJfFPoDE%@4a~>XU61Pem&Fu%a6JzWN?e!14U$b=jI^QoRsU)(lf+T*)6 z{`svdCyd#Uc<)Ecr%bs0&F>sD^D`&xeD1Bc-(B&}_}dpOKiu`zgX1&*BX8B+ceajS zy=?lTy=ROYzv-OK>o#5O9-n>D(R&})4vgD%?ZG>rIB?InJKw0TK9Rm~+@q5YyncCG z;kZW+JU#p6HD8S#QFTk&=6m*yoxLgD_p|qJ8T*GHL;}3x2VL;HaeZ#x;bA4^kK0IpXKkfQ->X>!M{_@e8U7uIn{%+5M%U^wM z$IJ3b;u-&rKW=Dpk9zT~?Z)_fhdp`W zb>*eMKltF(xeLpG@XVoS?prpoeDT&_ynV&eFP_0WXNI}xf+vENPv(spTl>AyBVU_5 zzf{*gUQoAbQ^7O2pFa8NJ8z6mOz<4NW^Kl(5qnyy&whRCh|4ee(tiJMtA-umFI>K} zVCRtMHn+YK-|$K3ox5&cb0qEDz(Wh>v}wy0nk?|d3GLafANZU?48rPZvXx#fBi-Nwe8=p9dF+F*_*$LU*Wr9ZMky%SaN)DWb2fx zwlznu?D*bm2bOlMF6!vYdT-qFZJ*v<@l~$25(?lm7fHbL?8@W*m#UsRKE?O+!#ldi z9($!R`^wkj`S<@aJ(_=$yY#|0uF0=n{Y>*&Z)ff|N8f(Q$G>fyasRTc4O`!Pcg)By z7cX6P^v4h1`B43>mw(tZqV|k5*O1m9?`wSP?#MeQ%5yHR_*>SNFW3PpYYe=^->|r8 zq3YRqH7L5VyDD(?zbf{E*xs2% z9=h^5VCFY>m~1;}bm*yRs$Yn)`nEPd+t!bCIh-cO`c3U<22a{D*rGlrVJ1e?`wz)k znKYDwi=jaODJ{)E?5J<@u^#YNclhnFmg%mH6f2t~x0&jWIRw--FKz0mscWoV(o$1b z+t@fC|0jc~hQs{9H*`zlRHP;)`QU(2p&^Xr z=C?KXo1EIHZazs>SB8Gm?WMYsp1LnZ$&|prf&79~hYFbzP0eyp?9~k@M(UQM97U&Y zP|TEYYF3IyAp)HR2aQ7=bT)Xh)CZjn#-dk!PP+tBKkX8!Ag6*B^9O@YO=cTOP`GNwX(Uab2c)6{dw$W{lR2a$SGP>tg!Hrkm-Xn+DUK^{b3M8Sv=8&BW0AnFeF4 zvpo9sS-8463ln;A$94cN9PCqPY8T4mQ6l7Yh1Cu2*IE$35E9Be3HQ zBYj%W846?jzT;yX&h%+J&&0&l$WygfMxl4>S(xJ35WAoe3XX zRp4WH75Loy3N-gug&O;Lv5#F_f*nc}=3ZN>xp$Ol?zI&f>mK8CZyKwyP2+s*FutFS z^SQT<*VtF%eeAXgKKBa~H1{JDHTNx*n(;uTuK%^t&-7JxI@9+frP2>i3UulxCuMf( z2POwQ^`n!sI`uzJ!Hs{Z#?RAJL!J6BriMH9W7D&l{=4%*-JY2~WBV-Kcwv^#eltrm zj-r18-&M19W#jB2?5DFe<%T&q?A|$=v44(k+;gFBY`sutyDp3xFQfh4g&KRDGH-7S zjALnCJv?g~x^?yK?ez=t<}X*$r!_CBpWjyhLk{C@TIen)&o9U?XOGgNjE>s2g>cJP n)Yo<_ZL4or&&gP_RQ$)OyoHU;^J^R1&+)V`Uf7gZ-`Vlsu7e`i literal 0 HcmV?d00001 diff --git a/vendor/stb/lib/stb_truetype_wasm.o b/vendor/stb/lib/stb_truetype_wasm.o index 15c4fa0d5204ed2642368175e70ac3a9fc077d69..30737640609c9f891ebe4cd628cc1023a3ca6c5a 100644 GIT binary patch literal 49666 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 delta 19901 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 C4q#CL diff --git a/vendor/stb/rect_pack/stb_rect_pack.odin b/vendor/stb/rect_pack/stb_rect_pack.odin index 6c0b5637848..696b9c8c080 100644 --- a/vendor/stb/rect_pack/stb_rect_pack.odin +++ b/vendor/stb/rect_pack/stb_rect_pack.odin @@ -9,6 +9,7 @@ LIB :: ( "../lib/stb_rect_pack.lib" when ODIN_OS == .Windows else "../lib/stb_rect_pack.a" when ODIN_OS == .Linux else "../lib/darwin/stb_rect_pack.a" when ODIN_OS == .Darwin + else "../lib/stb_rect_pack_wasm.o" when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 else "" ) @@ -16,7 +17,11 @@ when LIB != "" { when !#exists(LIB) { #panic("Could not find the compiled STB libraries, they can be compiled by running `make -C \"" + ODIN_ROOT + "vendor/stb/src\"`") } +} +when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 { + foreign import lib "../lib/stb_rect_pack_wasm.o" +} else when LIB != "" { foreign import lib { LIB } } else { foreign import lib "system:stb_rect_pack" diff --git a/vendor/stb/rect_pack/stb_rect_pack_wasm.odin b/vendor/stb/rect_pack/stb_rect_pack_wasm.odin new file mode 100644 index 00000000000..fb75552ecf9 --- /dev/null +++ b/vendor/stb/rect_pack/stb_rect_pack_wasm.odin @@ -0,0 +1,4 @@ +//+build wasm32, wasm64p32 +package stb_rect_pack + +@(require) import _ "vendor:libc" diff --git a/vendor/stb/sprintf/stb_sprintf.odin b/vendor/stb/sprintf/stb_sprintf.odin new file mode 100644 index 00000000000..ec5036e45f1 --- /dev/null +++ b/vendor/stb/sprintf/stb_sprintf.odin @@ -0,0 +1,37 @@ +package stb_sprintf + +import "core:c" + +@(private) +LIB :: ( + "../lib/stb_sprintf.lib" when ODIN_OS == .Windows + else "../lib/stb_sprintf.a" when ODIN_OS == .Linux + else "../lib/darwin/stb_sprintf.a" when ODIN_OS == .Darwin + else "../lib/stb_sprintf_wasm.o" when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 + else "" +) + +when LIB != "" { + when !#exists(LIB) { + #panic("Could not find the compiled STB libraries, they can be compiled by running `make -C \"" + ODIN_ROOT + "vendor/stb/src\"`") + } +} + +when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 { + foreign import stbpf "../lib/stb_sprintf_wasm.o" +} else when LIB != "" { + foreign import stbpf { LIB } +} else { + foreign import stbpf "system:stb_sprintf" +} + +@(link_prefix="stbsp_", default_calling_convention="c") +foreign stbpf { + sprintf :: proc(buf: [^]byte, fmt: cstring, #c_vararg args: ..any) -> i32 --- + snprintf :: proc(buf: [^]byte, count: i32, fmt: cstring, #c_vararg args: ..any) -> i32 --- + vsprintf :: proc(buf: [^]byte, fmt: cstring, va: c.va_list) -> i32 --- + vsnprintf :: proc(buf: [^]byte, count: i32, fmt: cstring, va: ^c.va_list) -> i32 --- + vsprintfcb :: proc(callback: SPRINTFCB, user: rawptr, buf: [^]byte, fmt: cstring, va: ^c.va_list) -> i32 --- +} + +SPRINTFCB :: #type proc "c" (buf: [^]byte, user: rawptr, len: i32) -> cstring diff --git a/vendor/stb/src/Makefile b/vendor/stb/src/Makefile index 6123a95fa89..194ea5e7548 100644 --- a/vendor/stb/src/Makefile +++ b/vendor/stb/src/Makefile @@ -8,17 +8,24 @@ endif wasm: mkdir -p ../lib - clang -c -Os --target=wasm32 -nostdlib stb_truetype_wasm.c -o ../lib/stb_truetype_wasm.o + $(CC) -c -Os --target=wasm32 --sysroot=$(shell odin root)/vendor/libc stb_image.c -o ../lib/stb_image_wasm.o -DSTBI_NO_STDIO + $(CC) -c -Os --target=wasm32 --sysroot=$(shell odin root)/vendor/libc stb_image_write.c -o ../lib/stb_image_write_wasm.o -DSTBI_WRITE_NO_STDIO + $(CC) -c -Os --target=wasm32 --sysroot=$(shell odin root)/vendor/libc stb_image_resize.c -o ../lib/stb_image_resize_wasm.o + $(CC) -c -Os --target=wasm32 --sysroot=$(shell odin root)/vendor/libc stb_truetype.c -o ../lib/stb_truetype_wasm.o + # $(CC) -c -Os --target=wasm32 --sysroot=$(shell odin root)/vendor/libc stb_vorbis.c -o ../lib/stb_vorbis_wasm.o -DSTB_VORBIS_NO_STDIO + $(CC) -c -Os --target=wasm32 --sysroot=$(shell odin root)/vendor/libc stb_rect_pack.c -o ../lib/stb_rect_pack_wasm.o + $(CC) -c -Os --target=wasm32 stb_sprintf.c -o ../lib/stb_sprintf_wasm.o unix: mkdir -p ../lib - $(CC) -c -O2 -Os -fPIC stb_image.c stb_image_write.c stb_image_resize.c stb_truetype.c stb_rect_pack.c stb_vorbis.c + $(CC) -c -O2 -Os -fPIC stb_image.c stb_image_write.c stb_image_resize.c stb_truetype.c stb_rect_pack.c stb_vorbis.c stb_sprintf.c $(AR) rcs ../lib/stb_image.a stb_image.o $(AR) rcs ../lib/stb_image_write.a stb_image_write.o $(AR) rcs ../lib/stb_image_resize.a stb_image_resize.o $(AR) rcs ../lib/stb_truetype.a stb_truetype.o $(AR) rcs ../lib/stb_rect_pack.a stb_rect_pack.o $(AR) rcs ../lib/stb_vorbis.a stb_vorbis.o + $(AR) rcs ../lib/stb_sprintf.a stb_sprintf.o #$(CC) -fPIC -shared -Wl,-soname=stb_image.so -o ../lib/stb_image.so stb_image.o #$(CC) -fPIC -shared -Wl,-soname=stb_image_write.so -o ../lib/stb_image_write.so stb_image_write.o #$(CC) -fPIC -shared -Wl,-soname=stb_image_resize.so -o ../lib/stb_image_resize.so stb_image_resize.o @@ -47,4 +54,7 @@ darwin: $(CC) -arch x86_64 -c -O2 -Os -fPIC stb_vorbis.c -o stb_vorbis-x86_64.o -mmacosx-version-min=10.12 $(CC) -arch arm64 -c -O2 -Os -fPIC stb_vorbis.c -o stb_vorbis-arm64.o -mmacosx-version-min=10.12 lipo -create stb_vorbis-x86_64.o stb_vorbis-arm64.o -output ../lib/darwin/stb_vorbis.a + $(CC) -arch x86_64 -c -O2 -Os -fPIC stb_sprintf.c -o stb_sprintf-x86_64.o -mmacosx-version-min=10.12 + $(CC) -arch arm64 -c -O2 -Os -fPIC stb_sprintf.c -o stb_sprintf-arm64.o -mmacosx-version-min=10.12 + lipo -create stb_sprintf-x86_64.o stb_sprintf-arm64.o -output ../lib/darwin/stb_sprintf.a rm *.o diff --git a/vendor/stb/src/stb_sprintf.c b/vendor/stb/src/stb_sprintf.c new file mode 100644 index 00000000000..d60a91bae9c --- /dev/null +++ b/vendor/stb/src/stb_sprintf.c @@ -0,0 +1,2 @@ +#define STB_SPRINTF_IMPLEMENTATION +#include "stb_sprintf.h" diff --git a/vendor/stb/src/stb_sprintf.h b/vendor/stb/src/stb_sprintf.h new file mode 100644 index 00000000000..ca432a6bca6 --- /dev/null +++ b/vendor/stb/src/stb_sprintf.h @@ -0,0 +1,1906 @@ +// stb_sprintf - v1.10 - public domain snprintf() implementation +// originally by Jeff Roberts / RAD Game Tools, 2015/10/20 +// http://github.com/nothings/stb +// +// allowed types: sc uidBboXx p AaGgEef n +// lengths : hh h ll j z t I64 I32 I +// +// Contributors: +// Fabian "ryg" Giesen (reformatting) +// github:aganm (attribute format) +// +// Contributors (bugfixes): +// github:d26435 +// github:trex78 +// github:account-login +// Jari Komppa (SI suffixes) +// Rohit Nirmal +// Marcin Wojdyr +// Leonard Ritter +// Stefano Zanotti +// Adam Allison +// Arvid Gerstmann +// Markus Kolb +// +// LICENSE: +// +// See end of file for license information. + +#ifndef STB_SPRINTF_H_INCLUDE +#define STB_SPRINTF_H_INCLUDE + +/* +Single file sprintf replacement. + +Originally written by Jeff Roberts at RAD Game Tools - 2015/10/20. +Hereby placed in public domain. + +This is a full sprintf replacement that supports everything that +the C runtime sprintfs support, including float/double, 64-bit integers, +hex floats, field parameters (%*.*d stuff), length reads backs, etc. + +Why would you need this if sprintf already exists? Well, first off, +it's *much* faster (see below). It's also much smaller than the CRT +versions code-space-wise. We've also added some simple improvements +that are super handy (commas in thousands, callbacks at buffer full, +for example). Finally, the format strings for MSVC and GCC differ +for 64-bit integers (among other small things), so this lets you use +the same format strings in cross platform code. + +It uses the standard single file trick of being both the header file +and the source itself. If you just include it normally, you just get +the header file function definitions. To get the code, you include +it from a C or C++ file and define STB_SPRINTF_IMPLEMENTATION first. + +It only uses va_args macros from the C runtime to do it's work. It +does cast doubles to S64s and shifts and divides U64s, which does +drag in CRT code on most platforms. + +It compiles to roughly 8K with float support, and 4K without. +As a comparison, when using MSVC static libs, calling sprintf drags +in 16K. + +API: +==== +int stbsp_sprintf( char * buf, char const * fmt, ... ) +int stbsp_snprintf( char * buf, int count, char const * fmt, ... ) + Convert an arg list into a buffer. stbsp_snprintf always returns + a zero-terminated string (unlike regular snprintf). + +int stbsp_vsprintf( char * buf, char const * fmt, va_list va ) +int stbsp_vsnprintf( char * buf, int count, char const * fmt, va_list va ) + Convert a va_list arg list into a buffer. stbsp_vsnprintf always returns + a zero-terminated string (unlike regular snprintf). + +int stbsp_vsprintfcb( STBSP_SPRINTFCB * callback, void * user, char * buf, char const * fmt, va_list va ) + typedef char * STBSP_SPRINTFCB( char const * buf, void * user, int len ); + Convert into a buffer, calling back every STB_SPRINTF_MIN chars. + Your callback can then copy the chars out, print them or whatever. + This function is actually the workhorse for everything else. + The buffer you pass in must hold at least STB_SPRINTF_MIN characters. + // you return the next buffer to use or 0 to stop converting + +void stbsp_set_separators( char comma, char period ) + Set the comma and period characters to use. + +FLOATS/DOUBLES: +=============== +This code uses a internal float->ascii conversion method that uses +doubles with error correction (double-doubles, for ~105 bits of +precision). This conversion is round-trip perfect - that is, an atof +of the values output here will give you the bit-exact double back. + +One difference is that our insignificant digits will be different than +with MSVC or GCC (but they don't match each other either). We also +don't attempt to find the minimum length matching float (pre-MSVC15 +doesn't either). + +If you don't need float or doubles at all, define STB_SPRINTF_NOFLOAT +and you'll save 4K of code space. + +64-BIT INTS: +============ +This library also supports 64-bit integers and you can use MSVC style or +GCC style indicators (%I64d or %lld). It supports the C99 specifiers +for size_t and ptr_diff_t (%jd %zd) as well. + +EXTRAS: +======= +Like some GCCs, for integers and floats, you can use a ' (single quote) +specifier and commas will be inserted on the thousands: "%'d" on 12345 +would print 12,345. + +For integers and floats, you can use a "$" specifier and the number +will be converted to float and then divided to get kilo, mega, giga or +tera and then printed, so "%$d" 1000 is "1.0 k", "%$.2d" 2536000 is +"2.53 M", etc. For byte values, use two $:s, like "%$$d" to turn +2536000 to "2.42 Mi". If you prefer JEDEC suffixes to SI ones, use three +$:s: "%$$$d" -> "2.42 M". To remove the space between the number and the +suffix, add "_" specifier: "%_$d" -> "2.53M". + +In addition to octal and hexadecimal conversions, you can print +integers in binary: "%b" for 256 would print 100. + +PERFORMANCE vs MSVC 2008 32-/64-bit (GCC is even slower than MSVC): +=================================================================== +"%d" across all 32-bit ints (4.8x/4.0x faster than 32-/64-bit MSVC) +"%24d" across all 32-bit ints (4.5x/4.2x faster) +"%x" across all 32-bit ints (4.5x/3.8x faster) +"%08x" across all 32-bit ints (4.3x/3.8x faster) +"%f" across e-10 to e+10 floats (7.3x/6.0x faster) +"%e" across e-10 to e+10 floats (8.1x/6.0x faster) +"%g" across e-10 to e+10 floats (10.0x/7.1x faster) +"%f" for values near e-300 (7.9x/6.5x faster) +"%f" for values near e+300 (10.0x/9.1x faster) +"%e" for values near e-300 (10.1x/7.0x faster) +"%e" for values near e+300 (9.2x/6.0x faster) +"%.320f" for values near e-300 (12.6x/11.2x faster) +"%a" for random values (8.6x/4.3x faster) +"%I64d" for 64-bits with 32-bit values (4.8x/3.4x faster) +"%I64d" for 64-bits > 32-bit values (4.9x/5.5x faster) +"%s%s%s" for 64 char strings (7.1x/7.3x faster) +"...512 char string..." ( 35.0x/32.5x faster!) +*/ + +#if defined(__clang__) + #if defined(__has_feature) && defined(__has_attribute) + #if __has_feature(address_sanitizer) + #if __has_attribute(__no_sanitize__) + #define STBSP__ASAN __attribute__((__no_sanitize__("address"))) + #elif __has_attribute(__no_sanitize_address__) + #define STBSP__ASAN __attribute__((__no_sanitize_address__)) + #elif __has_attribute(__no_address_safety_analysis__) + #define STBSP__ASAN __attribute__((__no_address_safety_analysis__)) + #endif + #endif + #endif +#elif defined(__GNUC__) && (__GNUC__ >= 5 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) + #if defined(__SANITIZE_ADDRESS__) && __SANITIZE_ADDRESS__ + #define STBSP__ASAN __attribute__((__no_sanitize_address__)) + #endif +#endif + +#ifndef STBSP__ASAN +#define STBSP__ASAN +#endif + +#ifdef STB_SPRINTF_STATIC +#define STBSP__PUBLICDEC static +#define STBSP__PUBLICDEF static STBSP__ASAN +#else +#ifdef __cplusplus +#define STBSP__PUBLICDEC extern "C" +#define STBSP__PUBLICDEF extern "C" STBSP__ASAN +#else +#define STBSP__PUBLICDEC extern +#define STBSP__PUBLICDEF STBSP__ASAN +#endif +#endif + +#if defined(__has_attribute) + #if __has_attribute(format) + #define STBSP__ATTRIBUTE_FORMAT(fmt,va) __attribute__((format(printf,fmt,va))) + #endif +#endif + +#ifndef STBSP__ATTRIBUTE_FORMAT +#define STBSP__ATTRIBUTE_FORMAT(fmt,va) +#endif + +#ifdef _MSC_VER +#define STBSP__NOTUSED(v) (void)(v) +#else +#define STBSP__NOTUSED(v) (void)sizeof(v) +#endif + +#include // for va_arg(), va_list() +#include // size_t, ptrdiff_t + +#ifndef STB_SPRINTF_MIN +#define STB_SPRINTF_MIN 512 // how many characters per callback +#endif +typedef char *STBSP_SPRINTFCB(const char *buf, void *user, int len); + +#ifndef STB_SPRINTF_DECORATE +#define STB_SPRINTF_DECORATE(name) stbsp_##name // define this before including if you want to change the names +#endif + +STBSP__PUBLICDEC int STB_SPRINTF_DECORATE(vsprintf)(char *buf, char const *fmt, va_list va); +STBSP__PUBLICDEC int STB_SPRINTF_DECORATE(vsnprintf)(char *buf, int count, char const *fmt, va_list va); +STBSP__PUBLICDEC int STB_SPRINTF_DECORATE(sprintf)(char *buf, char const *fmt, ...) STBSP__ATTRIBUTE_FORMAT(2,3); +STBSP__PUBLICDEC int STB_SPRINTF_DECORATE(snprintf)(char *buf, int count, char const *fmt, ...) STBSP__ATTRIBUTE_FORMAT(3,4); + +STBSP__PUBLICDEC int STB_SPRINTF_DECORATE(vsprintfcb)(STBSP_SPRINTFCB *callback, void *user, char *buf, char const *fmt, va_list va); +STBSP__PUBLICDEC void STB_SPRINTF_DECORATE(set_separators)(char comma, char period); + +#endif // STB_SPRINTF_H_INCLUDE + +#ifdef STB_SPRINTF_IMPLEMENTATION + +#define stbsp__uint32 unsigned int +#define stbsp__int32 signed int + +#ifdef _MSC_VER +#define stbsp__uint64 unsigned __int64 +#define stbsp__int64 signed __int64 +#else +#define stbsp__uint64 unsigned long long +#define stbsp__int64 signed long long +#endif +#define stbsp__uint16 unsigned short + +#ifndef stbsp__uintptr +#if defined(__ppc64__) || defined(__powerpc64__) || defined(__aarch64__) || defined(_M_X64) || defined(__x86_64__) || defined(__x86_64) || defined(__s390x__) +#define stbsp__uintptr stbsp__uint64 +#else +#define stbsp__uintptr stbsp__uint32 +#endif +#endif + +#ifndef STB_SPRINTF_MSVC_MODE // used for MSVC2013 and earlier (MSVC2015 matches GCC) +#if defined(_MSC_VER) && (_MSC_VER < 1900) +#define STB_SPRINTF_MSVC_MODE +#endif +#endif + +#ifdef STB_SPRINTF_NOUNALIGNED // define this before inclusion to force stbsp_sprintf to always use aligned accesses +#define STBSP__UNALIGNED(code) +#else +#define STBSP__UNALIGNED(code) code +#endif + +#ifndef STB_SPRINTF_NOFLOAT +// internal float utility functions +static stbsp__int32 stbsp__real_to_str(char const **start, stbsp__uint32 *len, char *out, stbsp__int32 *decimal_pos, double value, stbsp__uint32 frac_digits); +static stbsp__int32 stbsp__real_to_parts(stbsp__int64 *bits, stbsp__int32 *expo, double value); +#define STBSP__SPECIAL 0x7000 +#endif + +static char stbsp__period = '.'; +static char stbsp__comma = ','; +static struct +{ + short temp; // force next field to be 2-byte aligned + char pair[201]; +} stbsp__digitpair = +{ + 0, + "00010203040506070809101112131415161718192021222324" + "25262728293031323334353637383940414243444546474849" + "50515253545556575859606162636465666768697071727374" + "75767778798081828384858687888990919293949596979899" +}; + +STBSP__PUBLICDEF void STB_SPRINTF_DECORATE(set_separators)(char pcomma, char pperiod) +{ + stbsp__period = pperiod; + stbsp__comma = pcomma; +} + +#define STBSP__LEFTJUST 1 +#define STBSP__LEADINGPLUS 2 +#define STBSP__LEADINGSPACE 4 +#define STBSP__LEADING_0X 8 +#define STBSP__LEADINGZERO 16 +#define STBSP__INTMAX 32 +#define STBSP__TRIPLET_COMMA 64 +#define STBSP__NEGATIVE 128 +#define STBSP__METRIC_SUFFIX 256 +#define STBSP__HALFWIDTH 512 +#define STBSP__METRIC_NOSPACE 1024 +#define STBSP__METRIC_1024 2048 +#define STBSP__METRIC_JEDEC 4096 + +static void stbsp__lead_sign(stbsp__uint32 fl, char *sign) +{ + sign[0] = 0; + if (fl & STBSP__NEGATIVE) { + sign[0] = 1; + sign[1] = '-'; + } else if (fl & STBSP__LEADINGSPACE) { + sign[0] = 1; + sign[1] = ' '; + } else if (fl & STBSP__LEADINGPLUS) { + sign[0] = 1; + sign[1] = '+'; + } +} + +static STBSP__ASAN stbsp__uint32 stbsp__strlen_limited(char const *s, stbsp__uint32 limit) +{ + char const * sn = s; + + // get up to 4-byte alignment + for (;;) { + if (((stbsp__uintptr)sn & 3) == 0) + break; + + if (!limit || *sn == 0) + return (stbsp__uint32)(sn - s); + + ++sn; + --limit; + } + + // scan over 4 bytes at a time to find terminating 0 + // this will intentionally scan up to 3 bytes past the end of buffers, + // but becase it works 4B aligned, it will never cross page boundaries + // (hence the STBSP__ASAN markup; the over-read here is intentional + // and harmless) + while (limit >= 4) { + stbsp__uint32 v = *(stbsp__uint32 *)sn; + // bit hack to find if there's a 0 byte in there + if ((v - 0x01010101) & (~v) & 0x80808080UL) + break; + + sn += 4; + limit -= 4; + } + + // handle the last few characters to find actual size + while (limit && *sn) { + ++sn; + --limit; + } + + return (stbsp__uint32)(sn - s); +} + +STBSP__PUBLICDEF int STB_SPRINTF_DECORATE(vsprintfcb)(STBSP_SPRINTFCB *callback, void *user, char *buf, char const *fmt, va_list va) +{ + static char hex[] = "0123456789abcdefxp"; + static char hexu[] = "0123456789ABCDEFXP"; + char *bf; + char const *f; + int tlen = 0; + + bf = buf; + f = fmt; + for (;;) { + stbsp__int32 fw, pr, tz; + stbsp__uint32 fl; + + // macros for the callback buffer stuff + #define stbsp__chk_cb_bufL(bytes) \ + { \ + int len = (int)(bf - buf); \ + if ((len + (bytes)) >= STB_SPRINTF_MIN) { \ + tlen += len; \ + if (0 == (bf = buf = callback(buf, user, len))) \ + goto done; \ + } \ + } + #define stbsp__chk_cb_buf(bytes) \ + { \ + if (callback) { \ + stbsp__chk_cb_bufL(bytes); \ + } \ + } + #define stbsp__flush_cb() \ + { \ + stbsp__chk_cb_bufL(STB_SPRINTF_MIN - 1); \ + } // flush if there is even one byte in the buffer + #define stbsp__cb_buf_clamp(cl, v) \ + cl = v; \ + if (callback) { \ + int lg = STB_SPRINTF_MIN - (int)(bf - buf); \ + if (cl > lg) \ + cl = lg; \ + } + + // fast copy everything up to the next % (or end of string) + for (;;) { + while (((stbsp__uintptr)f) & 3) { + schk1: + if (f[0] == '%') + goto scandd; + schk2: + if (f[0] == 0) + goto endfmt; + stbsp__chk_cb_buf(1); + *bf++ = f[0]; + ++f; + } + for (;;) { + // Check if the next 4 bytes contain %(0x25) or end of string. + // Using the 'hasless' trick: + // https://graphics.stanford.edu/~seander/bithacks.html#HasLessInWord + stbsp__uint32 v, c; + v = *(stbsp__uint32 *)f; + c = (~v) & 0x80808080; + if (((v ^ 0x25252525) - 0x01010101) & c) + goto schk1; + if ((v - 0x01010101) & c) + goto schk2; + if (callback) + if ((STB_SPRINTF_MIN - (int)(bf - buf)) < 4) + goto schk1; + #ifdef STB_SPRINTF_NOUNALIGNED + if(((stbsp__uintptr)bf) & 3) { + bf[0] = f[0]; + bf[1] = f[1]; + bf[2] = f[2]; + bf[3] = f[3]; + } else + #endif + { + *(stbsp__uint32 *)bf = v; + } + bf += 4; + f += 4; + } + } + scandd: + + ++f; + + // ok, we have a percent, read the modifiers first + fw = 0; + pr = -1; + fl = 0; + tz = 0; + + // flags + for (;;) { + switch (f[0]) { + // if we have left justify + case '-': + fl |= STBSP__LEFTJUST; + ++f; + continue; + // if we have leading plus + case '+': + fl |= STBSP__LEADINGPLUS; + ++f; + continue; + // if we have leading space + case ' ': + fl |= STBSP__LEADINGSPACE; + ++f; + continue; + // if we have leading 0x + case '#': + fl |= STBSP__LEADING_0X; + ++f; + continue; + // if we have thousand commas + case '\'': + fl |= STBSP__TRIPLET_COMMA; + ++f; + continue; + // if we have kilo marker (none->kilo->kibi->jedec) + case '$': + if (fl & STBSP__METRIC_SUFFIX) { + if (fl & STBSP__METRIC_1024) { + fl |= STBSP__METRIC_JEDEC; + } else { + fl |= STBSP__METRIC_1024; + } + } else { + fl |= STBSP__METRIC_SUFFIX; + } + ++f; + continue; + // if we don't want space between metric suffix and number + case '_': + fl |= STBSP__METRIC_NOSPACE; + ++f; + continue; + // if we have leading zero + case '0': + fl |= STBSP__LEADINGZERO; + ++f; + goto flags_done; + default: goto flags_done; + } + } + flags_done: + + // get the field width + if (f[0] == '*') { + fw = va_arg(va, stbsp__uint32); + ++f; + } else { + while ((f[0] >= '0') && (f[0] <= '9')) { + fw = fw * 10 + f[0] - '0'; + f++; + } + } + // get the precision + if (f[0] == '.') { + ++f; + if (f[0] == '*') { + pr = va_arg(va, stbsp__uint32); + ++f; + } else { + pr = 0; + while ((f[0] >= '0') && (f[0] <= '9')) { + pr = pr * 10 + f[0] - '0'; + f++; + } + } + } + + // handle integer size overrides + switch (f[0]) { + // are we halfwidth? + case 'h': + fl |= STBSP__HALFWIDTH; + ++f; + if (f[0] == 'h') + ++f; // QUARTERWIDTH + break; + // are we 64-bit (unix style) + case 'l': + fl |= ((sizeof(long) == 8) ? STBSP__INTMAX : 0); + ++f; + if (f[0] == 'l') { + fl |= STBSP__INTMAX; + ++f; + } + break; + // are we 64-bit on intmax? (c99) + case 'j': + fl |= (sizeof(size_t) == 8) ? STBSP__INTMAX : 0; + ++f; + break; + // are we 64-bit on size_t or ptrdiff_t? (c99) + case 'z': + fl |= (sizeof(ptrdiff_t) == 8) ? STBSP__INTMAX : 0; + ++f; + break; + case 't': + fl |= (sizeof(ptrdiff_t) == 8) ? STBSP__INTMAX : 0; + ++f; + break; + // are we 64-bit (msft style) + case 'I': + if ((f[1] == '6') && (f[2] == '4')) { + fl |= STBSP__INTMAX; + f += 3; + } else if ((f[1] == '3') && (f[2] == '2')) { + f += 3; + } else { + fl |= ((sizeof(void *) == 8) ? STBSP__INTMAX : 0); + ++f; + } + break; + default: break; + } + + // handle each replacement + switch (f[0]) { + #define STBSP__NUMSZ 512 // big enough for e308 (with commas) or e-307 + char num[STBSP__NUMSZ]; + char lead[8]; + char tail[8]; + char *s; + char const *h; + stbsp__uint32 l, n, cs; + stbsp__uint64 n64; +#ifndef STB_SPRINTF_NOFLOAT + double fv; +#endif + stbsp__int32 dp; + char const *sn; + + case 's': + // get the string + s = va_arg(va, char *); + if (s == 0) + s = (char *)"null"; + // get the length, limited to desired precision + // always limit to ~0u chars since our counts are 32b + l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u); + lead[0] = 0; + tail[0] = 0; + pr = 0; + dp = 0; + cs = 0; + // copy the string in + goto scopy; + + case 'c': // char + // get the character + s = num + STBSP__NUMSZ - 1; + *s = (char)va_arg(va, int); + l = 1; + lead[0] = 0; + tail[0] = 0; + pr = 0; + dp = 0; + cs = 0; + goto scopy; + + case 'n': // weird write-bytes specifier + { + int *d = va_arg(va, int *); + *d = tlen + (int)(bf - buf); + } break; + +#ifdef STB_SPRINTF_NOFLOAT + case 'A': // float + case 'a': // hex float + case 'G': // float + case 'g': // float + case 'E': // float + case 'e': // float + case 'f': // float + va_arg(va, double); // eat it + s = (char *)"No float"; + l = 8; + lead[0] = 0; + tail[0] = 0; + pr = 0; + cs = 0; + STBSP__NOTUSED(dp); + goto scopy; +#else + case 'A': // hex float + case 'a': // hex float + h = (f[0] == 'A') ? hexu : hex; + fv = va_arg(va, double); + if (pr == -1) + pr = 6; // default is 6 + // read the double into a string + if (stbsp__real_to_parts((stbsp__int64 *)&n64, &dp, fv)) + fl |= STBSP__NEGATIVE; + + s = num + 64; + + stbsp__lead_sign(fl, lead); + + if (dp == -1023) + dp = (n64) ? -1022 : 0; + else + n64 |= (((stbsp__uint64)1) << 52); + n64 <<= (64 - 56); + if (pr < 15) + n64 += ((((stbsp__uint64)8) << 56) >> (pr * 4)); +// add leading chars + +#ifdef STB_SPRINTF_MSVC_MODE + *s++ = '0'; + *s++ = 'x'; +#else + lead[1 + lead[0]] = '0'; + lead[2 + lead[0]] = 'x'; + lead[0] += 2; +#endif + *s++ = h[(n64 >> 60) & 15]; + n64 <<= 4; + if (pr) + *s++ = stbsp__period; + sn = s; + + // print the bits + n = pr; + if (n > 13) + n = 13; + if (pr > (stbsp__int32)n) + tz = pr - n; + pr = 0; + while (n--) { + *s++ = h[(n64 >> 60) & 15]; + n64 <<= 4; + } + + // print the expo + tail[1] = h[17]; + if (dp < 0) { + tail[2] = '-'; + dp = -dp; + } else + tail[2] = '+'; + n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3)); + tail[0] = (char)n; + for (;;) { + tail[n] = '0' + dp % 10; + if (n <= 3) + break; + --n; + dp /= 10; + } + + dp = (int)(s - sn); + l = (int)(s - (num + 64)); + s = num + 64; + cs = 1 + (3 << 24); + goto scopy; + + case 'G': // float + case 'g': // float + h = (f[0] == 'G') ? hexu : hex; + fv = va_arg(va, double); + if (pr == -1) + pr = 6; + else if (pr == 0) + pr = 1; // default is 6 + // read the double into a string + if (stbsp__real_to_str(&sn, &l, num, &dp, fv, (pr - 1) | 0x80000000)) + fl |= STBSP__NEGATIVE; + + // clamp the precision and delete extra zeros after clamp + n = pr; + if (l > (stbsp__uint32)pr) + l = pr; + while ((l > 1) && (pr) && (sn[l - 1] == '0')) { + --pr; + --l; + } + + // should we use %e + if ((dp <= -4) || (dp > (stbsp__int32)n)) { + if (pr > (stbsp__int32)l) + pr = l - 1; + else if (pr) + --pr; // when using %e, there is one digit before the decimal + goto doexpfromg; + } + // this is the insane action to get the pr to match %g semantics for %f + if (dp > 0) { + pr = (dp < (stbsp__int32)l) ? l - dp : 0; + } else { + pr = -dp + ((pr > (stbsp__int32)l) ? (stbsp__int32) l : pr); + } + goto dofloatfromg; + + case 'E': // float + case 'e': // float + h = (f[0] == 'E') ? hexu : hex; + fv = va_arg(va, double); + if (pr == -1) + pr = 6; // default is 6 + // read the double into a string + if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr | 0x80000000)) + fl |= STBSP__NEGATIVE; + doexpfromg: + tail[0] = 0; + stbsp__lead_sign(fl, lead); + if (dp == STBSP__SPECIAL) { + s = (char *)sn; + cs = 0; + pr = 0; + goto scopy; + } + s = num + 64; + // handle leading chars + *s++ = sn[0]; + + if (pr) + *s++ = stbsp__period; + + // handle after decimal + if ((l - 1) > (stbsp__uint32)pr) + l = pr + 1; + for (n = 1; n < l; n++) + *s++ = sn[n]; + // trailing zeros + tz = pr - (l - 1); + pr = 0; + // dump expo + tail[1] = h[0xe]; + dp -= 1; + if (dp < 0) { + tail[2] = '-'; + dp = -dp; + } else + tail[2] = '+'; +#ifdef STB_SPRINTF_MSVC_MODE + n = 5; +#else + n = (dp >= 100) ? 5 : 4; +#endif + tail[0] = (char)n; + for (;;) { + tail[n] = '0' + dp % 10; + if (n <= 3) + break; + --n; + dp /= 10; + } + cs = 1 + (3 << 24); // how many tens + goto flt_lead; + + case 'f': // float + fv = va_arg(va, double); + doafloat: + // do kilos + if (fl & STBSP__METRIC_SUFFIX) { + double divisor; + divisor = 1000.0f; + if (fl & STBSP__METRIC_1024) + divisor = 1024.0; + while (fl < 0x4000000) { + if ((fv < divisor) && (fv > -divisor)) + break; + fv /= divisor; + fl += 0x1000000; + } + } + if (pr == -1) + pr = 6; // default is 6 + // read the double into a string + if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr)) + fl |= STBSP__NEGATIVE; + dofloatfromg: + tail[0] = 0; + stbsp__lead_sign(fl, lead); + if (dp == STBSP__SPECIAL) { + s = (char *)sn; + cs = 0; + pr = 0; + goto scopy; + } + s = num + 64; + + // handle the three decimal varieties + if (dp <= 0) { + stbsp__int32 i; + // handle 0.000*000xxxx + *s++ = '0'; + if (pr) + *s++ = stbsp__period; + n = -dp; + if ((stbsp__int32)n > pr) + n = pr; + i = n; + while (i) { + if ((((stbsp__uintptr)s) & 3) == 0) + break; + *s++ = '0'; + --i; + } + while (i >= 4) { + *(stbsp__uint32 *)s = 0x30303030; + s += 4; + i -= 4; + } + while (i) { + *s++ = '0'; + --i; + } + if ((stbsp__int32)(l + n) > pr) + l = pr - n; + i = l; + while (i) { + *s++ = *sn++; + --i; + } + tz = pr - (n + l); + cs = 1 + (3 << 24); // how many tens did we write (for commas below) + } else { + cs = (fl & STBSP__TRIPLET_COMMA) ? ((600 - (stbsp__uint32)dp) % 3) : 0; + if ((stbsp__uint32)dp >= l) { + // handle xxxx000*000.0 + n = 0; + for (;;) { + if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) { + cs = 0; + *s++ = stbsp__comma; + } else { + *s++ = sn[n]; + ++n; + if (n >= l) + break; + } + } + if (n < (stbsp__uint32)dp) { + n = dp - n; + if ((fl & STBSP__TRIPLET_COMMA) == 0) { + while (n) { + if ((((stbsp__uintptr)s) & 3) == 0) + break; + *s++ = '0'; + --n; + } + while (n >= 4) { + *(stbsp__uint32 *)s = 0x30303030; + s += 4; + n -= 4; + } + } + while (n) { + if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) { + cs = 0; + *s++ = stbsp__comma; + } else { + *s++ = '0'; + --n; + } + } + } + cs = (int)(s - (num + 64)) + (3 << 24); // cs is how many tens + if (pr) { + *s++ = stbsp__period; + tz = pr; + } + } else { + // handle xxxxx.xxxx000*000 + n = 0; + for (;;) { + if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) { + cs = 0; + *s++ = stbsp__comma; + } else { + *s++ = sn[n]; + ++n; + if (n >= (stbsp__uint32)dp) + break; + } + } + cs = (int)(s - (num + 64)) + (3 << 24); // cs is how many tens + if (pr) + *s++ = stbsp__period; + if ((l - dp) > (stbsp__uint32)pr) + l = pr + dp; + while (n < l) { + *s++ = sn[n]; + ++n; + } + tz = pr - (l - dp); + } + } + pr = 0; + + // handle k,m,g,t + if (fl & STBSP__METRIC_SUFFIX) { + char idx; + idx = 1; + if (fl & STBSP__METRIC_NOSPACE) + idx = 0; + tail[0] = idx; + tail[1] = ' '; + { + if (fl >> 24) { // SI kilo is 'k', JEDEC and SI kibits are 'K'. + if (fl & STBSP__METRIC_1024) + tail[idx + 1] = "_KMGT"[fl >> 24]; + else + tail[idx + 1] = "_kMGT"[fl >> 24]; + idx++; + // If printing kibits and not in jedec, add the 'i'. + if (fl & STBSP__METRIC_1024 && !(fl & STBSP__METRIC_JEDEC)) { + tail[idx + 1] = 'i'; + idx++; + } + tail[0] = idx; + } + } + }; + + flt_lead: + // get the length that we copied + l = (stbsp__uint32)(s - (num + 64)); + s = num + 64; + goto scopy; +#endif + + case 'B': // upper binary + case 'b': // lower binary + h = (f[0] == 'B') ? hexu : hex; + lead[0] = 0; + if (fl & STBSP__LEADING_0X) { + lead[0] = 2; + lead[1] = '0'; + lead[2] = h[0xb]; + } + l = (8 << 4) | (1 << 8); + goto radixnum; + + case 'o': // octal + h = hexu; + lead[0] = 0; + if (fl & STBSP__LEADING_0X) { + lead[0] = 1; + lead[1] = '0'; + } + l = (3 << 4) | (3 << 8); + goto radixnum; + + case 'p': // pointer + fl |= (sizeof(void *) == 8) ? STBSP__INTMAX : 0; + pr = sizeof(void *) * 2; + fl &= ~STBSP__LEADINGZERO; // 'p' only prints the pointer with zeros + // fall through - to X + + case 'X': // upper hex + case 'x': // lower hex + h = (f[0] == 'X') ? hexu : hex; + l = (4 << 4) | (4 << 8); + lead[0] = 0; + if (fl & STBSP__LEADING_0X) { + lead[0] = 2; + lead[1] = '0'; + lead[2] = h[16]; + } + radixnum: + // get the number + if (fl & STBSP__INTMAX) + n64 = va_arg(va, stbsp__uint64); + else + n64 = va_arg(va, stbsp__uint32); + + s = num + STBSP__NUMSZ; + dp = 0; + // clear tail, and clear leading if value is zero + tail[0] = 0; + if (n64 == 0) { + lead[0] = 0; + if (pr == 0) { + l = 0; + cs = 0; + goto scopy; + } + } + // convert to string + for (;;) { + *--s = h[n64 & ((1 << (l >> 8)) - 1)]; + n64 >>= (l >> 8); + if (!((n64) || ((stbsp__int32)((num + STBSP__NUMSZ) - s) < pr))) + break; + if (fl & STBSP__TRIPLET_COMMA) { + ++l; + if ((l & 15) == ((l >> 4) & 15)) { + l &= ~15; + *--s = stbsp__comma; + } + } + }; + // get the tens and the comma pos + cs = (stbsp__uint32)((num + STBSP__NUMSZ) - s) + ((((l >> 4) & 15)) << 24); + // get the length that we copied + l = (stbsp__uint32)((num + STBSP__NUMSZ) - s); + // copy it + goto scopy; + + case 'u': // unsigned + case 'i': + case 'd': // integer + // get the integer and abs it + if (fl & STBSP__INTMAX) { + stbsp__int64 i64 = va_arg(va, stbsp__int64); + n64 = (stbsp__uint64)i64; + if ((f[0] != 'u') && (i64 < 0)) { + n64 = (stbsp__uint64)-i64; + fl |= STBSP__NEGATIVE; + } + } else { + stbsp__int32 i = va_arg(va, stbsp__int32); + n64 = (stbsp__uint32)i; + if ((f[0] != 'u') && (i < 0)) { + n64 = (stbsp__uint32)-i; + fl |= STBSP__NEGATIVE; + } + } + +#ifndef STB_SPRINTF_NOFLOAT + if (fl & STBSP__METRIC_SUFFIX) { + if (n64 < 1024) + pr = 0; + else if (pr == -1) + pr = 1; + fv = (double)(stbsp__int64)n64; + goto doafloat; + } +#endif + + // convert to string + s = num + STBSP__NUMSZ; + l = 0; + + for (;;) { + // do in 32-bit chunks (avoid lots of 64-bit divides even with constant denominators) + char *o = s - 8; + if (n64 >= 100000000) { + n = (stbsp__uint32)(n64 % 100000000); + n64 /= 100000000; + } else { + n = (stbsp__uint32)n64; + n64 = 0; + } + if ((fl & STBSP__TRIPLET_COMMA) == 0) { + do { + s -= 2; + *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2]; + n /= 100; + } while (n); + } + while (n) { + if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) { + l = 0; + *--s = stbsp__comma; + --o; + } else { + *--s = (char)(n % 10) + '0'; + n /= 10; + } + } + if (n64 == 0) { + if ((s[0] == '0') && (s != (num + STBSP__NUMSZ))) + ++s; + break; + } + while (s != o) + if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) { + l = 0; + *--s = stbsp__comma; + --o; + } else { + *--s = '0'; + } + } + + tail[0] = 0; + stbsp__lead_sign(fl, lead); + + // get the length that we copied + l = (stbsp__uint32)((num + STBSP__NUMSZ) - s); + if (l == 0) { + *--s = '0'; + l = 1; + } + cs = l + (3 << 24); + if (pr < 0) + pr = 0; + + scopy: + // get fw=leading/trailing space, pr=leading zeros + if (pr < (stbsp__int32)l) + pr = l; + n = pr + lead[0] + tail[0] + tz; + if (fw < (stbsp__int32)n) + fw = n; + fw -= n; + pr -= l; + + // handle right justify and leading zeros + if ((fl & STBSP__LEFTJUST) == 0) { + if (fl & STBSP__LEADINGZERO) // if leading zeros, everything is in pr + { + pr = (fw > pr) ? fw : pr; + fw = 0; + } else { + fl &= ~STBSP__TRIPLET_COMMA; // if no leading zeros, then no commas + } + } + + // copy the spaces and/or zeros + if (fw + pr) { + stbsp__int32 i; + stbsp__uint32 c; + + // copy leading spaces (or when doing %8.4d stuff) + if ((fl & STBSP__LEFTJUST) == 0) + while (fw > 0) { + stbsp__cb_buf_clamp(i, fw); + fw -= i; + while (i) { + if ((((stbsp__uintptr)bf) & 3) == 0) + break; + *bf++ = ' '; + --i; + } + while (i >= 4) { + *(stbsp__uint32 *)bf = 0x20202020; + bf += 4; + i -= 4; + } + while (i) { + *bf++ = ' '; + --i; + } + stbsp__chk_cb_buf(1); + } + + // copy leader + sn = lead + 1; + while (lead[0]) { + stbsp__cb_buf_clamp(i, lead[0]); + lead[0] -= (char)i; + while (i) { + *bf++ = *sn++; + --i; + } + stbsp__chk_cb_buf(1); + } + + // copy leading zeros + c = cs >> 24; + cs &= 0xffffff; + cs = (fl & STBSP__TRIPLET_COMMA) ? ((stbsp__uint32)(c - ((pr + cs) % (c + 1)))) : 0; + while (pr > 0) { + stbsp__cb_buf_clamp(i, pr); + pr -= i; + if ((fl & STBSP__TRIPLET_COMMA) == 0) { + while (i) { + if ((((stbsp__uintptr)bf) & 3) == 0) + break; + *bf++ = '0'; + --i; + } + while (i >= 4) { + *(stbsp__uint32 *)bf = 0x30303030; + bf += 4; + i -= 4; + } + } + while (i) { + if ((fl & STBSP__TRIPLET_COMMA) && (cs++ == c)) { + cs = 0; + *bf++ = stbsp__comma; + } else + *bf++ = '0'; + --i; + } + stbsp__chk_cb_buf(1); + } + } + + // copy leader if there is still one + sn = lead + 1; + while (lead[0]) { + stbsp__int32 i; + stbsp__cb_buf_clamp(i, lead[0]); + lead[0] -= (char)i; + while (i) { + *bf++ = *sn++; + --i; + } + stbsp__chk_cb_buf(1); + } + + // copy the string + n = l; + while (n) { + stbsp__int32 i; + stbsp__cb_buf_clamp(i, n); + n -= i; + STBSP__UNALIGNED(while (i >= 4) { + *(stbsp__uint32 volatile *)bf = *(stbsp__uint32 volatile *)s; + bf += 4; + s += 4; + i -= 4; + }) + while (i) { + *bf++ = *s++; + --i; + } + stbsp__chk_cb_buf(1); + } + + // copy trailing zeros + while (tz) { + stbsp__int32 i; + stbsp__cb_buf_clamp(i, tz); + tz -= i; + while (i) { + if ((((stbsp__uintptr)bf) & 3) == 0) + break; + *bf++ = '0'; + --i; + } + while (i >= 4) { + *(stbsp__uint32 *)bf = 0x30303030; + bf += 4; + i -= 4; + } + while (i) { + *bf++ = '0'; + --i; + } + stbsp__chk_cb_buf(1); + } + + // copy tail if there is one + sn = tail + 1; + while (tail[0]) { + stbsp__int32 i; + stbsp__cb_buf_clamp(i, tail[0]); + tail[0] -= (char)i; + while (i) { + *bf++ = *sn++; + --i; + } + stbsp__chk_cb_buf(1); + } + + // handle the left justify + if (fl & STBSP__LEFTJUST) + if (fw > 0) { + while (fw) { + stbsp__int32 i; + stbsp__cb_buf_clamp(i, fw); + fw -= i; + while (i) { + if ((((stbsp__uintptr)bf) & 3) == 0) + break; + *bf++ = ' '; + --i; + } + while (i >= 4) { + *(stbsp__uint32 *)bf = 0x20202020; + bf += 4; + i -= 4; + } + while (i--) + *bf++ = ' '; + stbsp__chk_cb_buf(1); + } + } + break; + + default: // unknown, just copy code + s = num + STBSP__NUMSZ - 1; + *s = f[0]; + l = 1; + fw = fl = 0; + lead[0] = 0; + tail[0] = 0; + pr = 0; + dp = 0; + cs = 0; + goto scopy; + } + ++f; + } +endfmt: + + if (!callback) + *bf = 0; + else + stbsp__flush_cb(); + +done: + return tlen + (int)(bf - buf); +} + +// cleanup +#undef STBSP__LEFTJUST +#undef STBSP__LEADINGPLUS +#undef STBSP__LEADINGSPACE +#undef STBSP__LEADING_0X +#undef STBSP__LEADINGZERO +#undef STBSP__INTMAX +#undef STBSP__TRIPLET_COMMA +#undef STBSP__NEGATIVE +#undef STBSP__METRIC_SUFFIX +#undef STBSP__NUMSZ +#undef stbsp__chk_cb_bufL +#undef stbsp__chk_cb_buf +#undef stbsp__flush_cb +#undef stbsp__cb_buf_clamp + +// ============================================================================ +// wrapper functions + +STBSP__PUBLICDEF int STB_SPRINTF_DECORATE(sprintf)(char *buf, char const *fmt, ...) +{ + int result; + va_list va; + va_start(va, fmt); + result = STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va); + va_end(va); + return result; +} + +typedef struct stbsp__context { + char *buf; + int count; + int length; + char tmp[STB_SPRINTF_MIN]; +} stbsp__context; + +static char *stbsp__clamp_callback(const char *buf, void *user, int len) +{ + stbsp__context *c = (stbsp__context *)user; + c->length += len; + + if (len > c->count) + len = c->count; + + if (len) { + if (buf != c->buf) { + const char *s, *se; + char *d; + d = c->buf; + s = buf; + se = buf + len; + do { + *d++ = *s++; + } while (s < se); + } + c->buf += len; + c->count -= len; + } + + if (c->count <= 0) + return c->tmp; + return (c->count >= STB_SPRINTF_MIN) ? c->buf : c->tmp; // go direct into buffer if you can +} + +static char * stbsp__count_clamp_callback( const char * buf, void * user, int len ) +{ + stbsp__context * c = (stbsp__context*)user; + (void) sizeof(buf); + + c->length += len; + return c->tmp; // go direct into buffer if you can +} + +STBSP__PUBLICDEF int STB_SPRINTF_DECORATE( vsnprintf )( char * buf, int count, char const * fmt, va_list va ) +{ + stbsp__context c; + + if ( (count == 0) && !buf ) + { + c.length = 0; + + STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__count_clamp_callback, &c, c.tmp, fmt, va ); + } + else + { + int l; + + c.buf = buf; + c.count = count; + c.length = 0; + + STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__clamp_callback, &c, stbsp__clamp_callback(0,&c,0), fmt, va ); + + // zero-terminate + l = (int)( c.buf - buf ); + if ( l >= count ) // should never be greater, only equal (or less) than count + l = count - 1; + buf[l] = 0; + } + + return c.length; +} + +STBSP__PUBLICDEF int STB_SPRINTF_DECORATE(snprintf)(char *buf, int count, char const *fmt, ...) +{ + int result; + va_list va; + va_start(va, fmt); + + result = STB_SPRINTF_DECORATE(vsnprintf)(buf, count, fmt, va); + va_end(va); + + return result; +} + +STBSP__PUBLICDEF int STB_SPRINTF_DECORATE(vsprintf)(char *buf, char const *fmt, va_list va) +{ + return STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va); +} + +// ======================================================================= +// low level float utility functions + +#ifndef STB_SPRINTF_NOFLOAT + +// copies d to bits w/ strict aliasing (this compiles to nothing on /Ox) +#define STBSP__COPYFP(dest, src) \ + { \ + int cn; \ + for (cn = 0; cn < 8; cn++) \ + ((char *)&dest)[cn] = ((char *)&src)[cn]; \ + } + +// get float info +static stbsp__int32 stbsp__real_to_parts(stbsp__int64 *bits, stbsp__int32 *expo, double value) +{ + double d; + stbsp__int64 b = 0; + + // load value and round at the frac_digits + d = value; + + STBSP__COPYFP(b, d); + + *bits = b & ((((stbsp__uint64)1) << 52) - 1); + *expo = (stbsp__int32)(((b >> 52) & 2047) - 1023); + + return (stbsp__int32)((stbsp__uint64) b >> 63); +} + +static double const stbsp__bot[23] = { + 1e+000, 1e+001, 1e+002, 1e+003, 1e+004, 1e+005, 1e+006, 1e+007, 1e+008, 1e+009, 1e+010, 1e+011, + 1e+012, 1e+013, 1e+014, 1e+015, 1e+016, 1e+017, 1e+018, 1e+019, 1e+020, 1e+021, 1e+022 +}; +static double const stbsp__negbot[22] = { + 1e-001, 1e-002, 1e-003, 1e-004, 1e-005, 1e-006, 1e-007, 1e-008, 1e-009, 1e-010, 1e-011, + 1e-012, 1e-013, 1e-014, 1e-015, 1e-016, 1e-017, 1e-018, 1e-019, 1e-020, 1e-021, 1e-022 +}; +static double const stbsp__negboterr[22] = { + -5.551115123125783e-018, -2.0816681711721684e-019, -2.0816681711721686e-020, -4.7921736023859299e-021, -8.1803053914031305e-022, 4.5251888174113741e-023, + 4.5251888174113739e-024, -2.0922560830128471e-025, -6.2281591457779853e-026, -3.6432197315497743e-027, 6.0503030718060191e-028, 2.0113352370744385e-029, + -3.0373745563400371e-030, 1.1806906454401013e-032, -7.7705399876661076e-032, 2.0902213275965398e-033, -7.1542424054621921e-034, -7.1542424054621926e-035, + 2.4754073164739869e-036, 5.4846728545790429e-037, 9.2462547772103625e-038, -4.8596774326570872e-039 +}; +static double const stbsp__top[13] = { + 1e+023, 1e+046, 1e+069, 1e+092, 1e+115, 1e+138, 1e+161, 1e+184, 1e+207, 1e+230, 1e+253, 1e+276, 1e+299 +}; +static double const stbsp__negtop[13] = { + 1e-023, 1e-046, 1e-069, 1e-092, 1e-115, 1e-138, 1e-161, 1e-184, 1e-207, 1e-230, 1e-253, 1e-276, 1e-299 +}; +static double const stbsp__toperr[13] = { + 8388608, + 6.8601809640529717e+028, + -7.253143638152921e+052, + -4.3377296974619174e+075, + -1.5559416129466825e+098, + -3.2841562489204913e+121, + -3.7745893248228135e+144, + -1.7356668416969134e+167, + -3.8893577551088374e+190, + -9.9566444326005119e+213, + 6.3641293062232429e+236, + -5.2069140800249813e+259, + -5.2504760255204387e+282 +}; +static double const stbsp__negtoperr[13] = { + 3.9565301985100693e-040, -2.299904345391321e-063, 3.6506201437945798e-086, 1.1875228833981544e-109, + -5.0644902316928607e-132, -6.7156837247865426e-155, -2.812077463003139e-178, -5.7778912386589953e-201, + 7.4997100559334532e-224, -4.6439668915134491e-247, -6.3691100762962136e-270, -9.436808465446358e-293, + 8.0970921678014997e-317 +}; + +#if defined(_MSC_VER) && (_MSC_VER <= 1200) +static stbsp__uint64 const stbsp__powten[20] = { + 1, + 10, + 100, + 1000, + 10000, + 100000, + 1000000, + 10000000, + 100000000, + 1000000000, + 10000000000, + 100000000000, + 1000000000000, + 10000000000000, + 100000000000000, + 1000000000000000, + 10000000000000000, + 100000000000000000, + 1000000000000000000, + 10000000000000000000U +}; +#define stbsp__tento19th ((stbsp__uint64)1000000000000000000) +#else +static stbsp__uint64 const stbsp__powten[20] = { + 1, + 10, + 100, + 1000, + 10000, + 100000, + 1000000, + 10000000, + 100000000, + 1000000000, + 10000000000ULL, + 100000000000ULL, + 1000000000000ULL, + 10000000000000ULL, + 100000000000000ULL, + 1000000000000000ULL, + 10000000000000000ULL, + 100000000000000000ULL, + 1000000000000000000ULL, + 10000000000000000000ULL +}; +#define stbsp__tento19th (1000000000000000000ULL) +#endif + +#define stbsp__ddmulthi(oh, ol, xh, yh) \ + { \ + double ahi = 0, alo, bhi = 0, blo; \ + stbsp__int64 bt; \ + oh = xh * yh; \ + STBSP__COPYFP(bt, xh); \ + bt &= ((~(stbsp__uint64)0) << 27); \ + STBSP__COPYFP(ahi, bt); \ + alo = xh - ahi; \ + STBSP__COPYFP(bt, yh); \ + bt &= ((~(stbsp__uint64)0) << 27); \ + STBSP__COPYFP(bhi, bt); \ + blo = yh - bhi; \ + ol = ((ahi * bhi - oh) + ahi * blo + alo * bhi) + alo * blo; \ + } + +#define stbsp__ddtoS64(ob, xh, xl) \ + { \ + double ahi = 0, alo, vh, t; \ + ob = (stbsp__int64)xh; \ + vh = (double)ob; \ + ahi = (xh - vh); \ + t = (ahi - xh); \ + alo = (xh - (ahi - t)) - (vh + t); \ + ob += (stbsp__int64)(ahi + alo + xl); \ + } + +#define stbsp__ddrenorm(oh, ol) \ + { \ + double s; \ + s = oh + ol; \ + ol = ol - (s - oh); \ + oh = s; \ + } + +#define stbsp__ddmultlo(oh, ol, xh, xl, yh, yl) ol = ol + (xh * yl + xl * yh); + +#define stbsp__ddmultlos(oh, ol, xh, yl) ol = ol + (xh * yl); + +static void stbsp__raise_to_power10(double *ohi, double *olo, double d, stbsp__int32 power) // power can be -323 to +350 +{ + double ph, pl; + if ((power >= 0) && (power <= 22)) { + stbsp__ddmulthi(ph, pl, d, stbsp__bot[power]); + } else { + stbsp__int32 e, et, eb; + double p2h, p2l; + + e = power; + if (power < 0) + e = -e; + et = (e * 0x2c9) >> 14; /* %23 */ + if (et > 13) + et = 13; + eb = e - (et * 23); + + ph = d; + pl = 0.0; + if (power < 0) { + if (eb) { + --eb; + stbsp__ddmulthi(ph, pl, d, stbsp__negbot[eb]); + stbsp__ddmultlos(ph, pl, d, stbsp__negboterr[eb]); + } + if (et) { + stbsp__ddrenorm(ph, pl); + --et; + stbsp__ddmulthi(p2h, p2l, ph, stbsp__negtop[et]); + stbsp__ddmultlo(p2h, p2l, ph, pl, stbsp__negtop[et], stbsp__negtoperr[et]); + ph = p2h; + pl = p2l; + } + } else { + if (eb) { + e = eb; + if (eb > 22) + eb = 22; + e -= eb; + stbsp__ddmulthi(ph, pl, d, stbsp__bot[eb]); + if (e) { + stbsp__ddrenorm(ph, pl); + stbsp__ddmulthi(p2h, p2l, ph, stbsp__bot[e]); + stbsp__ddmultlos(p2h, p2l, stbsp__bot[e], pl); + ph = p2h; + pl = p2l; + } + } + if (et) { + stbsp__ddrenorm(ph, pl); + --et; + stbsp__ddmulthi(p2h, p2l, ph, stbsp__top[et]); + stbsp__ddmultlo(p2h, p2l, ph, pl, stbsp__top[et], stbsp__toperr[et]); + ph = p2h; + pl = p2l; + } + } + } + stbsp__ddrenorm(ph, pl); + *ohi = ph; + *olo = pl; +} + +// given a float value, returns the significant bits in bits, and the position of the +// decimal point in decimal_pos. +/-INF and NAN are specified by special values +// returned in the decimal_pos parameter. +// frac_digits is absolute normally, but if you want from first significant digits (got %g and %e), or in 0x80000000 +static stbsp__int32 stbsp__real_to_str(char const **start, stbsp__uint32 *len, char *out, stbsp__int32 *decimal_pos, double value, stbsp__uint32 frac_digits) +{ + double d; + stbsp__int64 bits = 0; + stbsp__int32 expo, e, ng, tens; + + d = value; + STBSP__COPYFP(bits, d); + expo = (stbsp__int32)((bits >> 52) & 2047); + ng = (stbsp__int32)((stbsp__uint64) bits >> 63); + if (ng) + d = -d; + + if (expo == 2047) // is nan or inf? + { + *start = (bits & ((((stbsp__uint64)1) << 52) - 1)) ? "NaN" : "Inf"; + *decimal_pos = STBSP__SPECIAL; + *len = 3; + return ng; + } + + if (expo == 0) // is zero or denormal + { + if (((stbsp__uint64) bits << 1) == 0) // do zero + { + *decimal_pos = 1; + *start = out; + out[0] = '0'; + *len = 1; + return ng; + } + // find the right expo for denormals + { + stbsp__int64 v = ((stbsp__uint64)1) << 51; + while ((bits & v) == 0) { + --expo; + v >>= 1; + } + } + } + + // find the decimal exponent as well as the decimal bits of the value + { + double ph, pl; + + // log10 estimate - very specifically tweaked to hit or undershoot by no more than 1 of log10 of all expos 1..2046 + tens = expo - 1023; + tens = (tens < 0) ? ((tens * 617) / 2048) : (((tens * 1233) / 4096) + 1); + + // move the significant bits into position and stick them into an int + stbsp__raise_to_power10(&ph, &pl, d, 18 - tens); + + // get full as much precision from double-double as possible + stbsp__ddtoS64(bits, ph, pl); + + // check if we undershot + if (((stbsp__uint64)bits) >= stbsp__tento19th) + ++tens; + } + + // now do the rounding in integer land + frac_digits = (frac_digits & 0x80000000) ? ((frac_digits & 0x7ffffff) + 1) : (tens + frac_digits); + if ((frac_digits < 24)) { + stbsp__uint32 dg = 1; + if ((stbsp__uint64)bits >= stbsp__powten[9]) + dg = 10; + while ((stbsp__uint64)bits >= stbsp__powten[dg]) { + ++dg; + if (dg == 20) + goto noround; + } + if (frac_digits < dg) { + stbsp__uint64 r; + // add 0.5 at the right position and round + e = dg - frac_digits; + if ((stbsp__uint32)e >= 24) + goto noround; + r = stbsp__powten[e]; + bits = bits + (r / 2); + if ((stbsp__uint64)bits >= stbsp__powten[dg]) + ++tens; + bits /= r; + } + noround:; + } + + // kill long trailing runs of zeros + if (bits) { + stbsp__uint32 n; + for (;;) { + if (bits <= 0xffffffff) + break; + if (bits % 1000) + goto donez; + bits /= 1000; + } + n = (stbsp__uint32)bits; + while ((n % 1000) == 0) + n /= 1000; + bits = n; + donez:; + } + + // convert to string + out += 64; + e = 0; + for (;;) { + stbsp__uint32 n; + char *o = out - 8; + // do the conversion in chunks of U32s (avoid most 64-bit divides, worth it, constant denomiators be damned) + if (bits >= 100000000) { + n = (stbsp__uint32)(bits % 100000000); + bits /= 100000000; + } else { + n = (stbsp__uint32)bits; + bits = 0; + } + while (n) { + out -= 2; + *(stbsp__uint16 *)out = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2]; + n /= 100; + e += 2; + } + if (bits == 0) { + if ((e) && (out[0] == '0')) { + ++out; + --e; + } + break; + } + while (out != o) { + *--out = '0'; + ++e; + } + } + + *decimal_pos = tens; + *start = out; + *len = e; + return ng; +} + +#undef stbsp__ddmulthi +#undef stbsp__ddrenorm +#undef stbsp__ddmultlo +#undef stbsp__ddmultlos +#undef STBSP__SPECIAL +#undef STBSP__COPYFP + +#endif // STB_SPRINTF_NOFLOAT + +// clean up +#undef stbsp__uint16 +#undef stbsp__uint32 +#undef stbsp__int32 +#undef stbsp__uint64 +#undef stbsp__int64 +#undef STBSP__UNALIGNED + +#endif // STB_SPRINTF_IMPLEMENTATION + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff --git a/vendor/stb/src/stb_truetype_wasm.c b/vendor/stb/src/stb_truetype_wasm.c deleted file mode 100644 index e0b1fdc77ca..00000000000 --- a/vendor/stb/src/stb_truetype_wasm.c +++ /dev/null @@ -1,46 +0,0 @@ -#include - -void *stbtt_malloc(size_t size); -void stbtt_free(void *ptr); - -void stbtt_qsort(void* base, size_t num, size_t size, int (*compare)(const void*, const void*)); - -double stbtt_floor(double x); -double stbtt_ceil(double x); -double stbtt_sqrt(double x); -double stbtt_pow(double x, double y); -double stbtt_fmod(double x, double y); -double stbtt_cos(double x); -double stbtt_acos(double x); -double stbtt_fabs(double x); - -unsigned long stbtt_strlen(const char *str); - -void *memcpy(void *dst, const void *src, size_t count); -void *memset(void *dst, int x, size_t count); - -#define STBRP_SORT stbtt_qsort -#define STBRP_ASSERT(condition) ((void)0) - -#define STBTT_malloc(x,u) ((void)(u),stbtt_malloc(x)) -#define STBTT_free(x,u) ((void)(u),stbtt_free(x)) - -#define STBTT_assert(condition) ((void)0) - -#define STBTT_ifloor(x) ((int) stbtt_floor(x)) -#define STBTT_iceil(x) ((int) stbtt_ceil(x)) -#define STBTT_sqrt(x) stbtt_sqrt(x) -#define STBTT_pow(x,y) stbtt_pow(x,y) -#define STBTT_fmod(x,y) stbtt_fmod(x,y) -#define STBTT_cos(x) stbtt_cos(x) -#define STBTT_acos(x) stbtt_acos(x) -#define STBTT_fabs(x) stbtt_fabs(x) -#define STBTT_strlen(x) stbtt_strlen(x) -#define STBTT_memcpy memcpy -#define STBTT_memset memset - -#define STB_RECT_PACK_IMPLEMENTATION -#include "stb_rect_pack.h" - -#define STB_TRUETYPE_IMPLEMENTATION -#include "stb_truetype.h" diff --git a/vendor/stb/truetype/stb_truetype.odin b/vendor/stb/truetype/stb_truetype.odin index e6defff5fc4..f1dcdf2a29c 100644 --- a/vendor/stb/truetype/stb_truetype.odin +++ b/vendor/stb/truetype/stb_truetype.odin @@ -8,6 +8,7 @@ LIB :: ( "../lib/stb_truetype.lib" when ODIN_OS == .Windows else "../lib/stb_truetype.a" when ODIN_OS == .Linux else "../lib/darwin/stb_truetype.a" when ODIN_OS == .Darwin + else "../lib/stb_truetype_wasm.o" when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 else "" ) @@ -15,10 +16,12 @@ when LIB != "" { when !#exists(LIB) { #panic("Could not find the compiled STB libraries, they can be compiled by running `make -C \"" + ODIN_ROOT + "vendor/stb/src\"`") } +} - foreign import stbtt { LIB } -} else when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 { +when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 { foreign import stbtt "../lib/stb_truetype_wasm.o" +} else when LIB != "" { + foreign import stbtt { LIB } } else { foreign import stbtt "system:stb_truetype" } diff --git a/vendor/stb/truetype/stb_truetype_wasm.odin b/vendor/stb/truetype/stb_truetype_wasm.odin index 472419ccb60..d15f29f1838 100644 --- a/vendor/stb/truetype/stb_truetype_wasm.odin +++ b/vendor/stb/truetype/stb_truetype_wasm.odin @@ -1,82 +1,4 @@ //+build wasm32, wasm64p32 package stb_truetype -import "base:builtin" -import "base:intrinsics" -import "base:runtime" - -import "core:c" -import "core:math" -import "core:slice" -import "core:sort" - -@(require, linkage="strong", link_name="stbtt_malloc") -malloc :: proc "c" (size: uint) -> rawptr { - context = runtime.default_context() - ptr, _ := runtime.mem_alloc_non_zeroed(int(size)) - return raw_data(ptr) -} - -@(require, linkage="strong", link_name="stbtt_free") -free :: proc "c" (ptr: rawptr) { - context = runtime.default_context() - builtin.free(ptr) -} - -@(require, linkage="strong", link_name="stbtt_qsort") -qsort :: proc "c" (base: rawptr, num: uint, size: uint, cmp: proc "c" (a, b: rawptr) -> i32) { - context = runtime.default_context() - - Inputs :: struct { - base: rawptr, - num: uint, - size: uint, - cmp: proc "c" (a, b: rawptr) -> i32, - } - - sort.sort({ - collection = &Inputs{base, num, size, cmp}, - len = proc(it: sort.Interface) -> int { - inputs := (^Inputs)(it.collection) - return int(inputs.num) - }, - less = proc(it: sort.Interface, i, j: int) -> bool { - inputs := (^Inputs)(it.collection) - a := rawptr(uintptr(inputs.base) + (uintptr(i) * uintptr(inputs.size))) - b := rawptr(uintptr(inputs.base) + (uintptr(j) * uintptr(inputs.size))) - return inputs.cmp(a, b) < 0 - }, - swap = proc(it: sort.Interface, i, j: int) { - inputs := (^Inputs)(it.collection) - - a := rawptr(uintptr(inputs.base) + (uintptr(i) * uintptr(inputs.size))) - b := rawptr(uintptr(inputs.base) + (uintptr(j) * uintptr(inputs.size))) - - slice.ptr_swap_non_overlapping(a, b, int(inputs.size)) - }, - }) -} - -@(require, linkage="strong", link_name="stbtt_floor") -floor :: proc "c" (x: f64) -> f64 { return math.floor(x) } -@(require, linkage="strong", link_name="stbtt_ceil") -ceil :: proc "c" (x: f64) -> f64 { return math.ceil(x) } -@(require, linkage="strong", link_name="stbtt_sqrt") -sqrt :: proc "c" (x: f64) -> f64 { return math.sqrt(x) } -@(require, linkage="strong", link_name="stbtt_pow") -pow :: proc "c" (x, y: f64) -> f64 { return math.pow(x, y) } -@(require, linkage="strong", link_name="stbtt_fmod") -fmod :: proc "c" (x, y: f64) -> f64 { return math.mod(x, y) } -@(require, linkage="strong", link_name="stbtt_cos") -cos :: proc "c" (x: f64) -> f64 { return math.cos(x) } -@(require, linkage="strong", link_name="stbtt_acos") -acos :: proc "c" (x: f64) -> f64 { return math.acos(x) } -@(require, linkage="strong", link_name="stbtt_fabs") -fabs :: proc "c" (x: f64) -> f64 { return math.abs(x) } - -@(require, linkage="strong", link_name="stbtt_strlen") -strlen :: proc "c" (str: cstring) -> c.ulong { return c.ulong(len(str)) } - -// NOTE: defined in runtime. -// void *memcpy(void *dst, const void *src, size_t count); -// void *memset(void *dst, int x, size_t count); +@(require) import _ "vendor:libc"