Skip to content

Commit

Permalink
fix: support darwin arm64
Browse files Browse the repository at this point in the history
  • Loading branch information
liuq19 committed Apr 9, 2024
1 parent a6bab49 commit a9dbdf5
Show file tree
Hide file tree
Showing 12 changed files with 59 additions and 75 deletions.
2 changes: 1 addition & 1 deletion dev/Makefile
Expand Up @@ -22,7 +22,7 @@ darwin_x86:

darwin_aarch64:
mkdir -p ./rs_wrapper/lib/darwin
cd rs_wrapper && cargo update --package sonic-rs && RUSTFLAGS="-C target-feature=+neon" cargo build --target=aarch64-apple-darwin --release && cp -a target/aarch64-unknown-linux-gnu/release/librs_wrapper.so ../internal/link/libsonic_rs_aarch64-unknown-darwin-gnu.so
cd rs_wrapper && cargo update --package sonic-rs && RUSTFLAGS="-C target-feature=+neon" cargo build --target=aarch64-apple-darwin --release && cp -a target/aarch64-apple-darwin/release/librs_wrapper.dylib ../internal/link/libsonic_rs_aarch64-apple-darwin.dylib

clean:
rm -vrf ./rs_wrapper/lib/
Expand Down
7 changes: 7 additions & 0 deletions dev/internal/link/blob_darwin_amd64.go
Expand Up @@ -3,3 +3,10 @@

package link

import (
_ "embed"
)

// TODO: fixme
//go:embed libsonic_rs_aarch64-apple-darwin.dylib
var sonic_rs_blob []byte
6 changes: 6 additions & 0 deletions dev/internal/link/blob_darwin_arm64.go
Expand Up @@ -3,3 +3,9 @@

package link

import (
_ "embed"
)

//go:embed libsonic_rs_aarch64-apple-darwin.dylib
var sonic_rs_blob []byte
29 changes: 5 additions & 24 deletions dev/internal/link/dlopen.go
@@ -1,40 +1,21 @@
// +build cgo
// +build !cgo

package link

// #cgo LDFLAGS: -ldl
// #include <dlfcn.h>
import "C"
import "unsafe"

func DlOpen(filename string, flags int32) unsafe.Pointer {
handle := C.dlopen(C.CString(filename), C.int(flags))
if handle == nil {
panic("dlopen failed")
}
return handle
panic("must enable cgo")
}

func DlClose(handle unsafe.Pointer) int32 {
ret := int32(C.dlclose(handle))
if ret != 0 {
panic("dlcolse failed")
}
return ret
panic("must enable cgo")
}

func DlSym(handle unsafe.Pointer, symbol string) unsafe.Pointer {
addr := C.dlsym(handle, C.CString(symbol))
if addr == nil {
panic(DlError())
}
return addr
panic("must enable cgo")
}

func DlError() (err string) {
cerr := C.dlerror()
if cerr != nil {
err = C.GoString(cerr)
}
return
panic("must enable cgo")
}
40 changes: 40 additions & 0 deletions dev/internal/link/dlopen_fake.go
@@ -0,0 +1,40 @@
// +build cgo

package link

// #cgo LDFLAGS: -ldl
// #include <dlfcn.h>
import "C"
import "unsafe"

func DlOpen(filename string, flags int32) unsafe.Pointer {
handle := C.dlopen(C.CString(filename), C.int(flags))
if handle == nil {
panic("dlopen failed")
}
return handle
}

func DlClose(handle unsafe.Pointer) int32 {
ret := int32(C.dlclose(handle))
if ret != 0 {
panic("dlcolse failed")
}
return ret
}

func DlSym(handle unsafe.Pointer, symbol string) unsafe.Pointer {
addr := C.dlsym(handle, C.CString(symbol))
if addr == nil {
panic(DlError())
}
return addr
}

func DlError() (err string) {
cerr := C.dlerror()
if cerr != nil {
err = C.GoString(cerr)
}
return
}
Binary file not shown.
50 changes: 0 additions & 50 deletions dev/internal/link/link_test.go

This file was deleted.

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 comments on commit a9dbdf5

Please sign in to comment.