go-libwebp

Experimental translation from libwebp to Go source.
Log | Files | Refs | README | LICENSE

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:
Dlib/dynamic/webp/blobs/libwebp.dll | 0
Alib/dynamic/webp/blobs/libwebp_amd64.dll | 0
Rlib/dynamic/webp/blobs/libwebp.dylib -> lib/dynamic/webp/blobs/libwebp_amd64.dylib | 0
Rlib/dynamic/webp/blobs/libwebp.so -> lib/dynamic/webp/blobs/libwebp_amd64.so | 0
Dlib/dynamic/webp/dlopen.go | 1-
Alib/dynamic/webp/dlopen_unix.go | 9+++++++++
Rlib/dynamic/webp/lib_default.go -> lib/dynamic/webp/dlopen_unsupported.go | 0
Alib/dynamic/webp/dlopen_windows.go | 13+++++++++++++
Dlib/dynamic/webp/lib_darwin.go | 13-------------
Alib/dynamic/webp/lib_darwin_amd64.go | 3+++
Alib/dynamic/webp/lib_darwin_arm64.go | 3+++
Dlib/dynamic/webp/lib_linux.go | 13-------------
Alib/dynamic/webp/lib_linux_amd64.go | 3+++
Alib/dynamic/webp/lib_linux_arm64.go | 3+++
Dlib/dynamic/webp/lib_windows.go | 17-----------------
Alib/dynamic/webp/lib_windows_amd64.go | 3+++
Alib/dynamic/webp/lib_windows_arm64.go | 3+++
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"