diff options
| author | Scitoshi Nakayobro <matthewtpeterson1@gmail.com> | 2019-12-30 19:09:59 -0500 |
|---|---|---|
| committer | Scitoshi Nakayobro <matthewtpeterson1@gmail.com> | 2019-12-30 19:09:59 -0500 |
| commit | d79ee7d530d08b20ab61e305f6c49d53ea96bb79 (patch) | |
| tree | 29f07fb94c0070b1a42671ff1f477e78961b8420 /core/dynlib | |
| parent | 7e271310ff7a844270a981bb8fc1f961bb45f319 (diff) | |
Implement dynlib core library for unix/darwin; not 100% about the build tags
Diffstat (limited to 'core/dynlib')
| -rw-r--r-- | core/dynlib/lib_unix.odin | 21 | ||||
| -rw-r--r-- | core/dynlib/lib_windows.odin | 1 |
2 files changed, 22 insertions, 0 deletions
diff --git a/core/dynlib/lib_unix.odin b/core/dynlib/lib_unix.odin new file mode 100644 index 000000000..4eac9829d --- /dev/null +++ b/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; +}
\ No newline at end of file diff --git a/core/dynlib/lib_windows.odin b/core/dynlib/lib_windows.odin index bb45032da..cabd4b4cc 100644 --- a/core/dynlib/lib_windows.odin +++ b/core/dynlib/lib_windows.odin @@ -1,3 +1,4 @@ +// +build windows package dynlib import "core:sys/win32" |