Browse Source

Fix more JS stuff

gingerBill 10 months ago
parent
commit
1ae57d8d20
4 changed files with 37 additions and 3 deletions
  1. 25 1
      core/c/libc/stdio.odin
  2. 10 0
      core/c/libc/stdlib.odin
  3. 1 1
      core/c/libc/wctype.odin
  4. 1 1
      vendor/stb/image/stb_image.odin

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

@@ -59,7 +59,7 @@ when ODIN_OS == .Windows {
 }
 }
 
 
 // GLIBC and MUSL compatible.
 // GLIBC and MUSL compatible.
-when ODIN_OS == .Linux || ODIN_OS == .JS {
+when ODIN_OS == .Linux {
 	fpos_t        :: struct #raw_union { _: [16]char, _: longlong, _: double, }
 	fpos_t        :: struct #raw_union { _: [16]char, _: longlong, _: double, }
 
 
 	_IOFBF        :: 0
 	_IOFBF        :: 0
@@ -89,6 +89,30 @@ when ODIN_OS == .Linux || ODIN_OS == .JS {
 	}
 	}
 }
 }
 
 
+when ODIN_OS == .JS {
+	fpos_t        :: struct #raw_union { _: [16]char, _: longlong, _: double, }
+
+	_IOFBF        :: 0
+	_IOLBF        :: 1
+	_IONBF        :: 2
+
+	BUFSIZ        :: 1024
+
+	EOF           :: int(-1)
+
+	FOPEN_MAX     :: 1000
+
+	FILENAME_MAX  :: 4096
+
+	L_tmpnam      :: 20
+
+	SEEK_SET      :: 0
+	SEEK_CUR      :: 1
+	SEEK_END      :: 2
+
+	TMP_MAX       :: 308915776
+}
+
 when ODIN_OS == .OpenBSD || ODIN_OS == .NetBSD {
 when ODIN_OS == .OpenBSD || ODIN_OS == .NetBSD {
 	fpos_t :: distinct i64
 	fpos_t :: distinct i64
 
 

+ 10 - 0
core/c/libc/stdlib.odin

@@ -10,6 +10,9 @@ when ODIN_OS == .Windows {
 	foreign import libc "system:c"
 	foreign import libc "system:c"
 }
 }
 
 
+@(require)
+import "base:runtime"
+
 when ODIN_OS == .Windows {
 when ODIN_OS == .Windows {
 	RAND_MAX :: 0x7fff
 	RAND_MAX :: 0x7fff
 
 
@@ -145,6 +148,10 @@ aligned_alloc :: #force_inline proc "c" (alignment, size: size_t) -> rawptr {
 			_aligned_malloc :: proc(size, alignment: size_t) -> rawptr ---
 			_aligned_malloc :: proc(size, alignment: size_t) -> rawptr ---
 		}
 		}
 		return _aligned_malloc(size=size, alignment=alignment)
 		return _aligned_malloc(size=size, alignment=alignment)
+	} else when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 {
+		context = runtime.default_context()
+		data, _ := runtime.mem_alloc_bytes(auto_cast size, auto_cast alignment)
+		return raw_data(data)
 	} else {
 	} else {
 		foreign libc {
 		foreign libc {
 			aligned_alloc :: proc(alignment, size: size_t) -> rawptr ---
 			aligned_alloc :: proc(alignment, size: size_t) -> rawptr ---
@@ -160,6 +167,9 @@ aligned_free :: #force_inline proc "c" (ptr: rawptr) {
 			_aligned_free :: proc(ptr: rawptr) ---
 			_aligned_free :: proc(ptr: rawptr) ---
 		}
 		}
 		_aligned_free(ptr)
 		_aligned_free(ptr)
+	} else when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 {
+		context = runtime.default_context()
+		runtime.mem_free(ptr)
 	} else {
 	} else {
 		free(ptr)
 		free(ptr)
 	}
 	}

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

@@ -14,7 +14,7 @@ when ODIN_OS == .Windows {
 	wctrans_t :: distinct wchar_t
 	wctrans_t :: distinct wchar_t
 	wctype_t  :: distinct ushort
 	wctype_t  :: distinct ushort
 
 
-} else when ODIN_OS == .Linux {
+} else when ODIN_OS == .Linux || ODIN_OS == .JS {
 	wctrans_t :: distinct intptr_t
 	wctrans_t :: distinct intptr_t
 	wctype_t  :: distinct ulong
 	wctype_t  :: distinct ulong
 
 

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

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