Kaynağa Gözat

Clean-up `libc` usage

gingerBill 11 ay önce
ebeveyn
işleme
26d00925cc

+ 8 - 0
core/c/libc/errno.odin

@@ -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

+ 1 - 1
core/c/libc/stdio.odin

@@ -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

+ 1 - 0
core/c/libc/string.odin

@@ -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 ---

+ 1 - 1
core/c/libc/time.odin

@@ -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

+ 1 - 2
vendor/stb/image/stb_image.odin

@@ -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 {

+ 1 - 1
vendor/stb/image/stb_image_resize.odin

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

+ 1 - 1
vendor/stb/image/stb_image_write.odin

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

+ 1 - 1
vendor/wasm/README.md

@@ -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);