Browse Source

Remove `core:os` dependency from `base:runtime`; change to `base:intrinsics`

gingerBill 1 year ago
parent
commit
9e7cc8cf93

+ 1 - 1
base/runtime/core.odin

@@ -21,7 +21,7 @@
 //+no-instrumentation
 //+no-instrumentation
 package runtime
 package runtime
 
 
-import "core:intrinsics"
+import "base:intrinsics"
 
 
 // NOTE(bill): This must match the compiler's
 // NOTE(bill): This must match the compiler's
 Calling_Convention :: enum u8 {
 Calling_Convention :: enum u8 {

+ 1 - 1
base/runtime/core_builtin.odin

@@ -1,6 +1,6 @@
 package runtime
 package runtime
 
 
-import "core:intrinsics"
+import "base:intrinsics"
 
 
 @builtin
 @builtin
 Maybe :: union($T: typeid) {T}
 Maybe :: union($T: typeid) {T}

+ 1 - 1
base/runtime/core_builtin_soa.odin

@@ -1,6 +1,6 @@
 package runtime
 package runtime
 
 
-import "core:intrinsics"
+import "base:intrinsics"
 _ :: intrinsics
 _ :: intrinsics
 
 
 /*
 /*

+ 1 - 1
base/runtime/default_allocators_arena.odin

@@ -1,6 +1,6 @@
 package runtime
 package runtime
 
 
-import "core:intrinsics"
+import "base:intrinsics"
 
 
 DEFAULT_ARENA_GROWING_MINIMUM_BLOCK_SIZE :: uint(DEFAULT_TEMP_ALLOCATOR_BACKING_SIZE)
 DEFAULT_ARENA_GROWING_MINIMUM_BLOCK_SIZE :: uint(DEFAULT_TEMP_ALLOCATOR_BACKING_SIZE)
 
 

+ 1 - 1
base/runtime/dynamic_map_internal.odin

@@ -1,6 +1,6 @@
 package runtime
 package runtime
 
 
-import "core:intrinsics"
+import "base:intrinsics"
 _ :: intrinsics
 _ :: intrinsics
 
 
 // High performance, cache-friendly, open-addressed Robin Hood hashing hash map
 // High performance, cache-friendly, open-addressed Robin Hood hashing hash map

+ 1 - 1
base/runtime/entry_unix.odin

@@ -3,7 +3,7 @@
 //+no-instrumentation
 //+no-instrumentation
 package runtime
 package runtime
 
 
-import "core:intrinsics"
+import "base:intrinsics"
 
 
 when ODIN_BUILD_MODE == .Dynamic {
 when ODIN_BUILD_MODE == .Dynamic {
 	@(link_name="_odin_entry_point", linkage="strong", require/*, link_section=".init"*/)
 	@(link_name="_odin_entry_point", linkage="strong", require/*, link_section=".init"*/)

+ 1 - 1
base/runtime/entry_wasm.odin

@@ -3,7 +3,7 @@
 //+no-instrumentation
 //+no-instrumentation
 package runtime
 package runtime
 
 
-import "core:intrinsics"
+import "base:intrinsics"
 
 
 when !ODIN_TEST && !ODIN_NO_ENTRY_POINT {
 when !ODIN_TEST && !ODIN_NO_ENTRY_POINT {
 	@(link_name="_start", linkage="strong", require, export)
 	@(link_name="_start", linkage="strong", require, export)

+ 1 - 1
base/runtime/entry_windows.odin

@@ -3,7 +3,7 @@
 //+no-instrumentation
 //+no-instrumentation
 package runtime
 package runtime
 
 
-import "core:intrinsics"
+import "base:intrinsics"
 
 
 when ODIN_BUILD_MODE == .Dynamic {
 when ODIN_BUILD_MODE == .Dynamic {
 	@(link_name="DllMain", linkage="strong", require)
 	@(link_name="DllMain", linkage="strong", require)

+ 1 - 1
base/runtime/internal.odin

@@ -1,6 +1,6 @@
 package runtime
 package runtime
 
 
-import "core:intrinsics"
+import "base:intrinsics"
 
 
 @(private="file")
 @(private="file")
 IS_WASM :: ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32
 IS_WASM :: ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32

+ 1 - 0
base/runtime/os_specific_any.odin

@@ -3,6 +3,7 @@
 //+build !js
 //+build !js
 //+build !wasi
 //+build !wasi
 //+build !windows
 //+build !windows
+//+private
 package runtime
 package runtime
 
 
 import "core:os"
 import "core:os"

+ 17 - 4
base/runtime/os_specific_darwin.odin

@@ -1,12 +1,25 @@
 //+build darwin
 //+build darwin
+//+private
 package runtime
 package runtime
 
 
-import "core:intrinsics"
+foreign import libc "system:System.framework"
+
+foreign libc {
+	@(link_name="__stderrp")
+	_stderr: rawptr
+
+	@(link_name="fwrite")
+	_fwrite :: proc(ptr: rawptr, size: uint, nmemb: uint, stream: rawptr) -> uint ---
+
+	@(link_name="__error")
+	_get_errno :: proc() -> ^i32 ---
+}
 
 
 _os_write :: proc "contextless" (data: []byte) -> (int, _OS_Errno) {
 _os_write :: proc "contextless" (data: []byte) -> (int, _OS_Errno) {
-	ret := intrinsics.syscall(0x2000004, 1, uintptr(raw_data(data)), uintptr(len(data)))
-	if ret < 0 {
-		return 0, _OS_Errno(-ret)
+	ret := _fwrite(raw_data(data), 1, len(data), _stderr)
+	if ret < len(data) {
+		err := _get_errno()
+		return int(ret), _OS_Errno(err^ if err != nil else 0)
 	}
 	}
 	return int(ret), 0
 	return int(ret), 0
 }
 }

+ 1 - 0
base/runtime/os_specific_freestanding.odin

@@ -1,4 +1,5 @@
 //+build freestanding
 //+build freestanding
+//+private
 package runtime
 package runtime
 
 
 // TODO(bill): reimplement `os.write`
 // TODO(bill): reimplement `os.write`

+ 1 - 0
base/runtime/os_specific_js.odin

@@ -1,4 +1,5 @@
 //+build js
 //+build js
+//+private
 package runtime
 package runtime
 
 
 foreign import "odin_env"
 foreign import "odin_env"

+ 1 - 0
base/runtime/os_specific_wasi.odin

@@ -1,4 +1,5 @@
 //+build wasi
 //+build wasi
+//+private
 package runtime
 package runtime
 
 
 import "core:sys/wasm/wasi"
 import "core:sys/wasm/wasi"

+ 1 - 1
base/runtime/procs_darwin.odin

@@ -3,7 +3,7 @@ package runtime
 
 
 foreign import "system:Foundation.framework"
 foreign import "system:Foundation.framework"
 
 
-import "core:intrinsics"
+import "base:intrinsics"
 
 
 objc_id :: ^intrinsics.objc_object
 objc_id :: ^intrinsics.objc_object
 objc_Class :: ^intrinsics.objc_class
 objc_Class :: ^intrinsics.objc_class

+ 1 - 1
base/runtime/udivmod128.odin

@@ -1,6 +1,6 @@
 package runtime
 package runtime
 
 
-import "core:intrinsics"
+import "base:intrinsics"
 
 
 udivmod128 :: proc "c" (a, b: u128, rem: ^u128) -> u128 {
 udivmod128 :: proc "c" (a, b: u128, rem: ^u128) -> u128 {
 	_ctz :: intrinsics.count_trailing_zeros
 	_ctz :: intrinsics.count_trailing_zeros