Browse Source

Implement dynlib core library for unix/darwin; not 100% about the build tags

Scitoshi Nakayobro 5 years ago
parent
commit
d79ee7d530
2 changed files with 22 additions and 0 deletions
  1. 21 0
      core/dynlib/lib_unix.odin
  2. 1 0
      core/dynlib/lib_windows.odin

+ 21 - 0
core/dynlib/lib_unix.odin

@@ -0,0 +1,21 @@
+// +build linux, darwin
+package dynlib
+
+import "core:os"
+
+load_library :: proc(path: string, global_symbols := false) -> (Library, bool) {
+    flags := os.RTLD_NOW;
+    if global_symbols do flags |= os.RTLD_GLOBAL;
+    lib := os.dlopen(path, flags);
+    return Library(lib), lib != nil;
+}
+
+unload_library :: proc(library: Library) {
+    os.dlclose(rawptr(library));
+}
+
+symbol_address :: proc(library: Library, symbol: string) -> (ptr: rawptr, found: bool) {
+    ptr = os.dlsym(rawptr(library), symbol);
+    found = ptr != nil;
+    return;
+}

+ 1 - 0
core/dynlib/lib_windows.odin

@@ -1,3 +1,4 @@
+// +build windows
 package dynlib
 package dynlib
 
 
 import "core:sys/win32"
 import "core:sys/win32"