diff options
| author | flysand7 <yyakut.ac@gmail.com> | 2023-10-14 21:21:34 +1100 |
|---|---|---|
| committer | flysand7 <yyakut.ac@gmail.com> | 2023-10-14 21:21:34 +1100 |
| commit | cf937c63412ebf7c071505dc880c8ea929baa6af (patch) | |
| tree | ec1c66468af2ba2d464e2a142cc83e243bd8b5e3 | |
| parent | 77210ffa56876f502de64ac0bc3f3b9445b20bd9 (diff) | |
add 'shared' config to vendor libraries
| -rwxr-xr-x | a.out | bin | 0 -> 9160 bytes | |||
| -rw-r--r-- | vendor/OpenEXRCore/exr_base.odin | 8 | ||||
| -rw-r--r-- | vendor/commonmark/cmark.odin | 5 | ||||
| -rw-r--r-- | vendor/glfw/bindings/bindings.odin | 13 | ||||
| -rw-r--r-- | vendor/glfw/constants.odin | 2 | ||||
| -rw-r--r-- | vendor/glfw/native_darwin.odin | 9 | ||||
| -rw-r--r-- | vendor/glfw/native_windows.odin | 16 | ||||
| -rw-r--r-- | vendor/lua/5.1/lua.odin | 23 | ||||
| -rw-r--r-- | vendor/lua/5.2/lua.odin | 23 | ||||
| -rw-r--r-- | vendor/lua/5.3/lua.odin | 23 | ||||
| -rw-r--r-- | vendor/lua/5.4/lua.odin | 31 | ||||
| -rw-r--r-- | vendor/miniaudio/common.odin | 6 | ||||
| -rw-r--r-- | vendor/portmidi/portmidi.odin | 14 | ||||
| -rw-r--r-- | vendor/raylib/raygui.odin | 62 | ||||
| -rw-r--r-- | vendor/raylib/raylib.odin | 85 |
15 files changed, 246 insertions, 74 deletions
| Binary files differ diff --git a/vendor/OpenEXRCore/exr_base.odin b/vendor/OpenEXRCore/exr_base.odin index 3c71f6285..3ee9f2197 100644 --- a/vendor/OpenEXRCore/exr_base.odin +++ b/vendor/OpenEXRCore/exr_base.odin @@ -1,7 +1,13 @@ package vendor_openexr +OPENEXRCORE_SHARED :: #config(OPENEXRCORE_SHARED, false) + when ODIN_OS == .Windows { - foreign import lib "OpenEXRCore-3_1.lib" + when OPENEXRCORE_SHARED { + #panic("Dynamic linking is not supported for OpenEXRCore yet") + } else { + foreign import lib "OpenEXRCore-3_1.lib" + } } else { foreign import lib "system:OpenEXRCore-3_1" } diff --git a/vendor/commonmark/cmark.odin b/vendor/commonmark/cmark.odin index 4de9b763e..80e33cec4 100644 --- a/vendor/commonmark/cmark.odin +++ b/vendor/commonmark/cmark.odin @@ -10,8 +10,13 @@ import "core:c" import "core:c/libc" import "core:runtime" +COMMONMARK_SHARED :: #config(COMMONMARK_SHARED, false) BINDING_VERSION :: Version_Info{major = 0, minor = 30, patch = 2} +when COMMONMARK_SHARED { + #panic("Shared linking for vendor:commonmark is not supported yet") +} + when ODIN_OS == .Windows { foreign import lib { "cmark_static.lib", diff --git a/vendor/glfw/bindings/bindings.odin b/vendor/glfw/bindings/bindings.odin index a0215834f..891d06a93 100644 --- a/vendor/glfw/bindings/bindings.odin +++ b/vendor/glfw/bindings/bindings.odin @@ -22,15 +22,14 @@ when ODIN_OS == .Windows { } } } else when ODIN_OS == .Linux { - // TODO: Add the billion-or-so static libs to link to in linux foreign import glfw "system:glfw" } else when ODIN_OS == .Darwin { - foreign import glfw { - "../lib/darwin/libglfw3.a", - "system:Cocoa.framework", - "system:IOKit.framework", - "system:OpenGL.framework", - } + foreign import glfw { + "../lib/darwin/libglfw3.a", + "system:Cocoa.framework", + "system:IOKit.framework", + "system:OpenGL.framework", + } } else { foreign import glfw "system:glfw" } diff --git a/vendor/glfw/constants.odin b/vendor/glfw/constants.odin index 160642bfb..90c46f4bc 100644 --- a/vendor/glfw/constants.odin +++ b/vendor/glfw/constants.odin @@ -1,7 +1,7 @@ package glfw /* Config */ -GLFW_DYNAMIC :: #config(GLFW_DYNAMIC, false) +GLFW_SHARED :: #config(GLFW_SHARED, false) /*** Constants ***/ /* Versions */ diff --git a/vendor/glfw/native_darwin.odin b/vendor/glfw/native_darwin.odin index 696645249..56a8e4b40 100644 --- a/vendor/glfw/native_darwin.odin +++ b/vendor/glfw/native_darwin.odin @@ -4,7 +4,14 @@ package glfw import NS "vendor:darwin/foundation" -foreign import glfw { "lib/darwin/libglfw3.a" } +when GLFW_SHARED { + #panic("Dynamic linking for glfw is not supported for darwin yet") + foreign import glfw {"_"} +} else { + foreign import glfw { + "lib/darwin/libglfw3.a" + } +} @(default_calling_convention="c", link_prefix="glfw") foreign glfw { diff --git a/vendor/glfw/native_windows.odin b/vendor/glfw/native_windows.odin index 26f75845c..acf67f5b0 100644 --- a/vendor/glfw/native_windows.odin +++ b/vendor/glfw/native_windows.odin @@ -4,10 +4,20 @@ package glfw import win32 "core:sys/windows" -when GLFW_DYNAMIC { - foreign import glfw { "lib/glfw3dll.lib", "system:user32.lib", "system:gdi32.lib", "system:shell32.lib" } +when GLFW_SHARED { + foreign import glfw { + "lib/glfw3dll.lib", + "system:user32.lib", + "system:gdi32.lib", + "system:shell32.lib" + } } else { - foreign import glfw { "lib/glfw3_mt.lib", "system:user32.lib", "system:gdi32.lib", "system:shell32.lib" } + foreign import glfw { + "lib/glfw3_mt.lib", + "system:user32.lib", + "system:gdi32.lib", + "system:shell32.lib" + } } @(default_calling_convention="c", link_prefix="glfw") diff --git a/vendor/lua/5.1/lua.odin b/vendor/lua/5.1/lua.odin index 5a0ae5bc7..a49fa4505 100644 --- a/vendor/lua/5.1/lua.odin +++ b/vendor/lua/5.1/lua.odin @@ -7,12 +7,25 @@ import c "core:c/libc" #assert(size_of(c.int) == size_of(b32)) -when ODIN_OS == .Windows { - foreign import lib "windows/lua5.1.dll.lib" -} else when ODIN_OS == .Linux { - foreign import lib "linux/liblua5.1.a" +LUA_SHARED :: #config(LUA_SHARED, false) + +when LUA_SHARED { + when ODIN_OS == .Windows { + // Does nothing special on windows + foreign import lib "windows/lua5.1.dll.lib" + } else when ODIN_OS == .Linux { + foreign import lib "linux/liblua5.1.so" + } else { + foreign import lib "system:liblua.so.5.1" + } } else { - foreign import lib "system:liblua5.1.a" + when ODIN_OS == .Windows { + foreign import lib "windows/lua5.1.dll.lib" + } else when ODIN_OS == .Linux { + foreign import lib "linux/liblua5.1.a" + } else { + foreign import lib "system:liblua5.1.a" + } } VERSION :: "Lua 5.1" diff --git a/vendor/lua/5.2/lua.odin b/vendor/lua/5.2/lua.odin index 9770e95b9..c03fdb6a5 100644 --- a/vendor/lua/5.2/lua.odin +++ b/vendor/lua/5.2/lua.odin @@ -7,12 +7,25 @@ import c "core:c/libc" #assert(size_of(c.int) == size_of(b32)) -when ODIN_OS == .Windows { - foreign import lib "windows/lua52dll.lib" -} else when ODIN_OS == .Linux { - foreign import lib "linux/liblua52.a" +LUA_SHARED :: config(LUA_SHARED, false) + +when LUA_SHARED { + when ODIN_OS == .Windows { + // Does nothing special on windows + foreign import lib "windows/lua52dll.lib" + } else when ODIN_OS == .Linux { + foreign import lib "linux/liblua52.so" + } else { + foreign import lib "system:liblua.so.5.2" + } } else { - foreign import lib "system:liblua52.a" + when ODIN_OS == .Windows { + foreign import lib "windows/lua52dll.lib" + } else when ODIN_OS == .Linux { + foreign import lib "linux/liblua52.a" + } else { + foreign import lib "system:liblua52.a" + } } VERSION_MAJOR :: "5" diff --git a/vendor/lua/5.3/lua.odin b/vendor/lua/5.3/lua.odin index db7419d15..c32801bb2 100644 --- a/vendor/lua/5.3/lua.odin +++ b/vendor/lua/5.3/lua.odin @@ -7,12 +7,25 @@ import c "core:c/libc" #assert(size_of(c.int) == size_of(b32)) -when ODIN_OS == .Windows { - foreign import lib "windows/lua53dll.lib" -} else when ODIN_OS == .Linux { - foreign import lib "linux/liblua53.a" +LUA_SHARED :: #config(LUA_SHARED, false) + +when LUA_SHARED { + when ODIN_OS == .Windows { + // Does nothing special on windows + foreign import lib "windows/lua53dll.lib" + } else when ODIN_OS == .Linux { + foreign import lib "linux/liblua53.so" + } else { + foreign import lib "system:liblua.so.5.3" + } } else { - foreign import lib "system:liblua53.a" + when ODIN_OS == .Windows { + foreign import lib "windows/lua53dll.lib" + } else when ODIN_OS == .Linux { + foreign import lib "linux/liblua53.a" + } else { + foreign import lib "system:liblua53.a" + } } VERSION_MAJOR :: "5" diff --git a/vendor/lua/5.4/lua.odin b/vendor/lua/5.4/lua.odin index 495786eb1..dd870d7fa 100644 --- a/vendor/lua/5.4/lua.odin +++ b/vendor/lua/5.4/lua.odin @@ -7,12 +7,33 @@ import c "core:c/libc" #assert(size_of(c.int) == size_of(b32)) -when ODIN_OS == .Windows { - foreign import lib "windows/lua54dll.lib" -} else when ODIN_OS == .Linux { - foreign import lib "linux/liblua54.a" +LUA_SHARED :: #config(LUA_SHARED, false) + +when LUA_SHARED { + when ODIN_OS == .Windows { + // LUA_SHARED does nothing special on windows + foreign import lib "windows/lua54dll.lib" + } else when ODIN_OS == .Linux { + foreign import lib "linux/liblua54.so" + } else { + // Note(bumbread): My linux system has a few aliases for this shared object + // lublua5.4.so, liblua.so, lublua.so.5.4, liblua.so.5.4.6. I don't know + // who enforces these numbers (probably ld?), and if it can be done in a + // unix-generic way, but in any way I think the most sane thing to do is to + // keep it close to what linux does and if it breaks, just special case those + // operating systems. + // Also there was no alias for liblua54.so, that seems to suggest that way + // of specifying it isn't portable + foreign import lib "system:liblua.so.5.4" + } } else { - foreign import lib "system:liblua54.a" + when ODIN_OS == .Windows { + foreign import lib "windows/lua54dll.lib" + } else when ODIN_OS == .Linux { + foreign import lib "linux/liblua54.a" + } else { + foreign import lib "system:liblua54.a" + } } VERSION_MAJOR :: "5" diff --git a/vendor/miniaudio/common.odin b/vendor/miniaudio/common.odin index 54b30c057..1d8c14fa3 100644 --- a/vendor/miniaudio/common.odin +++ b/vendor/miniaudio/common.odin @@ -2,6 +2,12 @@ package miniaudio import "core:c" +MINIAUDIO_SHARED :: #config(MINIAUDIO_SHARED) + +when MINIAUDIO_SHARED { + #panic("Shared linking for miniaudio is not supported yet") +} + when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" } else when ODIN_OS == .Linux { diff --git a/vendor/portmidi/portmidi.odin b/vendor/portmidi/portmidi.odin index a3db4191c..662373cc4 100644 --- a/vendor/portmidi/portmidi.odin +++ b/vendor/portmidi/portmidi.odin @@ -3,11 +3,17 @@ package portmidi import "core:c" import "core:strings" +PORTMIDI_SHARED :: #config(PORTMIDI_SHARED, false) + when ODIN_OS == .Windows { - foreign import lib { - "portmidi_s.lib", - "system:Winmm.lib", - "system:Advapi32.lib", + when PORTMIDI_SHARED { + #panic("Shared linking not supported for portmidi on windows yet") + } else { + foreign import lib { + "portmidi_s.lib", + "system:Winmm.lib", + "system:Advapi32.lib", + } } } else { foreign import lib "system:portmidi" diff --git a/vendor/raylib/raygui.odin b/vendor/raylib/raygui.odin index 6735f1052..04e11407a 100644 --- a/vendor/raylib/raygui.odin +++ b/vendor/raylib/raygui.odin @@ -2,30 +2,60 @@ package raylib import c "core:c/libc" +RAYGUI_SHARED :: #config(RAYGUI_SHARED, false) + when ODIN_OS == .Windows { - foreign import lib { - "windows/raygui.lib", + when RAYGUI_SHARED { + foreign import lib { + "windows/rayguidll.lib", + } + } else { + foreign import lib { + "windows/raygui.lib", + } } } else when ODIN_OS == .Linux { - foreign import lib { - "linux/libraygui.a", - // "system:dl", - // "system:pthread", + when RAYGUI_SHARED { + // Note(bumbread): can't panic here, because the users might be expecting to + // only use raylib. Let's have them get the error at link-time instead.. + //#panic("Cannot link libraygui.so: not in the vendor collection") + // Note(bumbread): unless we import something the rest of the bindings will + // make a compile-time error. This is a bit ugly for now, but in the future + // raygui probably needs to be in a separate package. + foreign import lib {"_"} + } else { + // #panic("Cannot link libraygui.a: not in the vendor collection") + // TODO(bumbread): apparently this one was missing. This might need + // to get rebuilt for linux + // foreign import lib { + // "linux/libraygui.a", + // // "system:dl", + // // "system:pthread", + // } + foreign import lib {"_"} } } else when ODIN_OS == .Darwin { when ODIN_ARCH == .arm64 { - foreign import lib { - "macos-arm64/libraygui.a", - // "system:Cocoa.framework", - // "system:OpenGL.framework", - // "system:IOKit.framework", + when RAYGUI_SHARED { + // #panic("Cannot link libraygui.450.dylib: not in the vendor collection") + } else { + foreign import lib { + "macos-arm64/libraygui.a", + // "system:Cocoa.framework", + // "system:OpenGL.framework", + // "system:IOKit.framework", + } } } else { - foreign import lib { - "macos/libraygui.a", - // "system:Cocoa.framework", - // "system:OpenGL.framework", - // "system:IOKit.framework", + when RAYGUI_SHARED { + // #panic("Cannot link libraygui.450.dylib: not in the vendor collection") + } else { + foreign import lib { + "macos/libraygui.a", + // "system:Cocoa.framework", + // "system:OpenGL.framework", + // "system:IOKit.framework", + } } } } else { diff --git a/vendor/raylib/raylib.odin b/vendor/raylib/raylib.odin index f6e58a564..69a5959f8 100644 --- a/vendor/raylib/raylib.odin +++ b/vendor/raylib/raylib.odin @@ -95,35 +95,78 @@ MAX_TEXT_BUFFER_LENGTH :: #config(RAYLIB_MAX_TEXT_BUFFER_LENGTH, 1024) #assert(size_of(rune) == size_of(c.int)) +RAYLIB_SHARED :: #config(RAYLIB_SHARED, false) + when ODIN_OS == .Windows { - @(extra_linker_flags="/NODEFAULTLIB:libcmt") - foreign import lib { - "windows/raylib.lib", - "system:Winmm.lib", - "system:Gdi32.lib", - "system:User32.lib", - "system:Shell32.lib", + when RAYLIB_SHARED { + @(extra_linker_flags="/NODEFAULTLIB:libcmt") + foreign import lib { + "windows/raylibdll.lib", + "system:Winmm.lib", + "system:Gdi32.lib", + "system:User32.lib", + "system:Shell32.lib", + } + } else { + @(extra_linker_flags="/NODEFAULTLIB:libcmt") + foreign import lib { + "windows/raylib.lib", + "system:Winmm.lib", + "system:Gdi32.lib", + "system:User32.lib", + "system:Shell32.lib", + } } } else when ODIN_OS == .Linux { - foreign import lib { - "linux/libraylib.a", - "system:dl", - "system:pthread", + when RAYLIB_SHARED { + foreign import lib { + // Note(bumbread): I'm not sure why in `linux/` folder there are + // multiple copies of raylib.so, but since these bindings are for + // particular version of the library, I better specify it. Ideally, + // though, it's best specified in terms of major (.so.4) + "linux/libraylib.so.450", + "system:dl", + "system:pthread", + } + } else { + foreign import lib { + "linux/libraylib.a", + "system:dl", + "system:pthread", + } } } else when ODIN_OS == .Darwin { when ODIN_ARCH == .arm64 { - foreign import lib { - "macos-arm64/libraylib.a", - "system:Cocoa.framework", - "system:OpenGL.framework", - "system:IOKit.framework", + when RAYLIB_SHARED { + foreign import lib { + "macos-arm64/libraylib.450.dylib", + "system:Cocoa.framework", + "system:OpenGL.framework", + "system:IOKit.framework", + } + } else { + foreign import lib { + "macos-arm64/libraylib.a", + "system:Cocoa.framework", + "system:OpenGL.framework", + "system:IOKit.framework", + } } } else { - foreign import lib { - "macos/libraylib.a", - "system:Cocoa.framework", - "system:OpenGL.framework", - "system:IOKit.framework", + when RAYLIB_SHARED { + foreign import lib { + "macos/libraylib.450.dylib", + "system:Cocoa.framework", + "system:OpenGL.framework", + "system:IOKit.framework", + } + } else { + foreign import lib { + "macos/libraylib.a", + "system:Cocoa.framework", + "system:OpenGL.framework", + "system:IOKit.framework", + } } } } else { |