aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorflysand7 <yyakut.ac@gmail.com>2023-10-14 21:21:34 +1100
committerflysand7 <yyakut.ac@gmail.com>2023-10-14 21:21:34 +1100
commitcf937c63412ebf7c071505dc880c8ea929baa6af (patch)
treeec1c66468af2ba2d464e2a142cc83e243bd8b5e3
parent77210ffa56876f502de64ac0bc3f3b9445b20bd9 (diff)
add 'shared' config to vendor libraries
-rwxr-xr-xa.outbin0 -> 9160 bytes
-rw-r--r--vendor/OpenEXRCore/exr_base.odin8
-rw-r--r--vendor/commonmark/cmark.odin5
-rw-r--r--vendor/glfw/bindings/bindings.odin13
-rw-r--r--vendor/glfw/constants.odin2
-rw-r--r--vendor/glfw/native_darwin.odin9
-rw-r--r--vendor/glfw/native_windows.odin16
-rw-r--r--vendor/lua/5.1/lua.odin23
-rw-r--r--vendor/lua/5.2/lua.odin23
-rw-r--r--vendor/lua/5.3/lua.odin23
-rw-r--r--vendor/lua/5.4/lua.odin31
-rw-r--r--vendor/miniaudio/common.odin6
-rw-r--r--vendor/portmidi/portmidi.odin14
-rw-r--r--vendor/raylib/raygui.odin62
-rw-r--r--vendor/raylib/raylib.odin85
15 files changed, 246 insertions, 74 deletions
diff --git a/a.out b/a.out
new file mode 100755
index 000000000..96dd612b4
--- /dev/null
+++ b/a.out
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 {