Clean-up libc usage

This commit is contained in:
gingerBill
2024-09-22 13:20:45 +01:00
parent 634fa7aa30
commit 26d00925cc
8 changed files with 15 additions and 7 deletions

View File

@@ -98,6 +98,14 @@ when ODIN_OS == .Haiku {
ERANGE :: B_POSIX_ERROR_BASE + 17
}
when ODIN_OS == .JS {
_ :: libc
_get_errno :: proc "c" () -> ^int {
@(static) errno: int
return &errno
}
}
// Odin has no way to make an identifier "errno" behave as a function call to
// read the value, or to produce an lvalue such that you can assign a different
// error value to errno. To work around this, just expose it as a function like

View File

@@ -59,7 +59,7 @@ when ODIN_OS == .Windows {
}
// GLIBC and MUSL compatible.
when ODIN_OS == .Linux {
when ODIN_OS == .Linux || ODIN_OS == .JS {
fpos_t :: struct #raw_union { _: [16]char, _: longlong, _: double, }
_IOFBF :: 0

View File

@@ -12,6 +12,7 @@ when ODIN_OS == .Windows {
foreign import libc "system:c"
}
@(default_calling_convention="c")
foreign libc {
// 7.24.2 Copying functions
memcpy :: proc(s1, s2: rawptr, n: size_t) -> rawptr ---

View File

@@ -45,7 +45,7 @@ when ODIN_OS == .Windows {
}
}
when ODIN_OS == .Linux || ODIN_OS == .FreeBSD || ODIN_OS == .Darwin || ODIN_OS == .OpenBSD || ODIN_OS == .NetBSD || ODIN_OS == .Haiku {
when ODIN_OS == .Linux || ODIN_OS == .FreeBSD || ODIN_OS == .Darwin || ODIN_OS == .OpenBSD || ODIN_OS == .NetBSD || ODIN_OS == .Haiku || ODIN_OS == .JS {
@(default_calling_convention="c")
foreign libc {
// 7.27.2 Time manipulation functions

View File

@@ -1,6 +1,6 @@
package stb_image
import c "core:c/libc"
import "core:c"
@(private)
LIB :: (
@@ -20,7 +20,6 @@ when LIB != "" {
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 {

View File

@@ -1,6 +1,6 @@
package stb_image
import c "core:c/libc"
import "core:c"
@(private)
RESIZE_LIB :: (

View File

@@ -1,6 +1,6 @@
package stb_image
import c "core:c/libc"
import "core:c"
@(private)
WRITE_LIB :: (

View File

@@ -7,7 +7,7 @@ The `js_wasm32` target assumes that the WASM output will be ran within a web bro
## Example for `js_wasm32`
```html
<!-- Copy `vendor:wasm/js/odin.js` into your web server -->
<!-- Copy `core:sys/wasm/js/odin.js` into your web server -->
<script type="text/javascript" src="odin.js"></script>
<script type="text/javascript">
odin.runWasm(pathToWasm, consolePreElement);