commit 3d2240a7f2d0d2062666873e2dee82a7a6cf1937
parent 156db145c43d831d7b9b5378e02b23503ebd35bd
Author: Jack Mordaunt <jackmordaunt.dev@gmail.com>
Date: Thu, 29 Feb 2024 15:37:40 +0800
lib/dynamic: allow multi arch support
Let an application be distributed with an amd64 and arm64 shared object.
Signed-off-by: Jack Mordaunt <jackmordaunt.dev@gmail.com>
Diffstat:
17 files changed, 40 insertions(+), 44 deletions(-)
diff --git a/lib/dynamic/webp/blobs/libwebp.dll b/lib/dynamic/webp/blobs/libwebp.dll
Binary files differ.
diff --git a/lib/dynamic/webp/blobs/libwebp_amd64.dll b/lib/dynamic/webp/blobs/libwebp_amd64.dll
Binary files differ.
diff --git a/lib/dynamic/webp/blobs/libwebp.dylib b/lib/dynamic/webp/blobs/libwebp_amd64.dylib
Binary files differ.
diff --git a/lib/dynamic/webp/blobs/libwebp.so b/lib/dynamic/webp/blobs/libwebp_amd64.so
Binary files differ.
diff --git a/lib/dynamic/webp/dlopen.go b/lib/dynamic/webp/dlopen.go
@@ -1 +0,0 @@
-package webp
diff --git a/lib/dynamic/webp/dlopen_unix.go b/lib/dynamic/webp/dlopen_unix.go
@@ -0,0 +1,9 @@
+//go:build !windows
+
+package webp
+
+import "github.com/ebitengine/purego"
+
+func dlopen(name string) (uintptr, error) {
+ return purego.Dlopen(libraryName, purego.RTLD_LAZY|purego.RTLD_LOCAL)
+}
diff --git a/lib/dynamic/webp/lib_default.go b/lib/dynamic/webp/dlopen_unsupported.go
diff --git a/lib/dynamic/webp/dlopen_windows.go b/lib/dynamic/webp/dlopen_windows.go
@@ -0,0 +1,13 @@
+//go:build windows
+
+package webp
+
+import "golang.org/x/sys/windows"
+
+func dlopen(name string) (uintptr, error) {
+ dll, err := windows.LoadDLL(libraryName)
+ if err != nil {
+ return 0, err
+ }
+ return uintptr(dll.Handle), nil
+}
diff --git a/lib/dynamic/webp/lib_darwin.go b/lib/dynamic/webp/lib_darwin.go
@@ -1,13 +0,0 @@
-package webp
-
-import (
- _ "embed"
-
- "github.com/ebitengine/purego"
-)
-
-const libraryName = "libwebp.dylib"
-
-func dlopen(name string) (uintptr, error) {
- return purego.Dlopen(libraryName, purego.RTLD_LAZY|purego.RTLD_GLOBAL)
-}
diff --git a/lib/dynamic/webp/lib_darwin_amd64.go b/lib/dynamic/webp/lib_darwin_amd64.go
@@ -0,0 +1,3 @@
+package webp
+
+const libraryName = "libwebp_amd64.dylib"
diff --git a/lib/dynamic/webp/lib_darwin_arm64.go b/lib/dynamic/webp/lib_darwin_arm64.go
@@ -0,0 +1,3 @@
+package webp
+
+const libraryName = "libwebp_arm64.dylib"
diff --git a/lib/dynamic/webp/lib_linux.go b/lib/dynamic/webp/lib_linux.go
@@ -1,13 +0,0 @@
-package webp
-
-import (
- _ "embed"
-
- "github.com/ebitengine/purego"
-)
-
-const libraryName = "libwebp.so"
-
-func dlopen(name string) (uintptr, error) {
- return purego.Dlopen(libraryName, purego.RTLD_LAZY|purego.RTLD_GLOBAL)
-}
diff --git a/lib/dynamic/webp/lib_linux_amd64.go b/lib/dynamic/webp/lib_linux_amd64.go
@@ -0,0 +1,3 @@
+package webp
+
+const libraryName = "libwebp_amd64.so"
diff --git a/lib/dynamic/webp/lib_linux_arm64.go b/lib/dynamic/webp/lib_linux_arm64.go
@@ -0,0 +1,3 @@
+package webp
+
+const libraryName = "libwebp_arm64.so"
diff --git a/lib/dynamic/webp/lib_windows.go b/lib/dynamic/webp/lib_windows.go
@@ -1,17 +0,0 @@
-package webp
-
-import (
- _ "embed"
-
- "golang.org/x/sys/windows"
-)
-
-const libraryName = "libwebp.dll"
-
-func dlopen(name string) (uintptr, error) {
- dll, err := windows.LoadDLL(libraryName)
- if err != nil {
- return 0, err
- }
- return uintptr(dll.Handle), nil
-}
diff --git a/lib/dynamic/webp/lib_windows_amd64.go b/lib/dynamic/webp/lib_windows_amd64.go
@@ -0,0 +1,3 @@
+package webp
+
+const libraryName = "libwebp_amd64.dll"
diff --git a/lib/dynamic/webp/lib_windows_arm64.go b/lib/dynamic/webp/lib_windows_arm64.go
@@ -0,0 +1,3 @@
+package webp
+
+const libraryName = "libwebp_arm64.dll"