diff --git a/Makefile b/Makefile index 2a806ec..90d009d 100644 --- a/Makefile +++ b/Makefile @@ -18,12 +18,12 @@ server: client-dynlib: mkdir -p build - go build -ldflags "-X main.version=${version}" -buildmode=c-shared -o libck-client.so ./cmd/ck-client + go build -ldflags "-X main.version=${version}" -buildmode=c-shared -tags=external_main -o libck-client.so ./cmd/ck-client mv libck-client* ./build server-dynlib: mkdir -p build - go build -ldflags "-X main.version=${version}" -buildmode=c-shared -o libck-server.so ./cmd/ck-server + go build -ldflags "-X main.version=${version}" -buildmode=c-shared -tags=external_main -o libck-server.so ./cmd/ck-server mv libck-server* ./build install: diff --git a/cmd/ck-client/ck-client.go b/cmd/ck-client/ck-client.go index abe2d87..1a43651 100644 --- a/cmd/ck-client/ck-client.go +++ b/cmd/ck-client/ck-client.go @@ -10,8 +10,6 @@ import ( "fmt" "net" "os" - "C" - "unsafe" "github.com/cbeuw/Cloak/internal/common" @@ -20,19 +18,6 @@ import ( log "github.com/sirupsen/logrus" ) -//export external_main -func external_main(argc C.int, argv **C.char) { - var offset = unsafe.Sizeof(uintptr(0)) - var go_argv []string - for i := 0; i < int(argc); i++ { - go_argv = append(go_argv, C.GoString(*argv)) - argv = (**C.char)(unsafe.Pointer(uintptr(unsafe.Pointer(argv)) + offset)) - } - - os.Args = go_argv - main() -} - var version string func main() { diff --git a/cmd/ck-client/external-main.go b/cmd/ck-client/external-main.go new file mode 100644 index 0000000..f05c52f --- /dev/null +++ b/cmd/ck-client/external-main.go @@ -0,0 +1,23 @@ +//go:build external_main +// +build external_main + +package main + +import ( + "os" + "C" + "unsafe" +) + +//export external_main +func external_main(argc C.int, argv **C.char) { + var offset = unsafe.Sizeof(uintptr(0)) + var go_argv []string + for i := 0; i < int(argc); i++ { + go_argv = append(go_argv, C.GoString(*argv)) + argv = (**C.char)(unsafe.Pointer(uintptr(unsafe.Pointer(argv)) + offset)) + } + + os.Args = go_argv + main() +} diff --git a/cmd/ck-server/ck-server.go b/cmd/ck-server/ck-server.go index c5645ba..b1c0bb0 100644 --- a/cmd/ck-server/ck-server.go +++ b/cmd/ck-server/ck-server.go @@ -9,8 +9,6 @@ import ( "os" "runtime" "strings" - "C" - "unsafe" "github.com/cbeuw/Cloak/internal/common" "github.com/cbeuw/Cloak/internal/server" @@ -70,19 +68,6 @@ func parseSSBindAddr(ssRemoteHost string, ssRemotePort string, ckBindAddr *[]net return nil } -//export external_main -func external_main(argc C.int, argv **C.char) { - var offset = unsafe.Sizeof(uintptr(0)) - var go_argv []string - for i := 0; i < int(argc); i++ { - go_argv = append(go_argv, C.GoString(*argv)) - argv = (**C.char)(unsafe.Pointer(uintptr(unsafe.Pointer(argv)) + offset)) - } - - os.Args = go_argv - main() -} - func main() { var config string diff --git a/cmd/ck-server/external-main.go b/cmd/ck-server/external-main.go new file mode 100644 index 0000000..f05c52f --- /dev/null +++ b/cmd/ck-server/external-main.go @@ -0,0 +1,23 @@ +//go:build external_main +// +build external_main + +package main + +import ( + "os" + "C" + "unsafe" +) + +//export external_main +func external_main(argc C.int, argv **C.char) { + var offset = unsafe.Sizeof(uintptr(0)) + var go_argv []string + for i := 0; i < int(argc); i++ { + go_argv = append(go_argv, C.GoString(*argv)) + argv = (**C.char)(unsafe.Pointer(uintptr(unsafe.Pointer(argv)) + offset)) + } + + os.Args = go_argv + main() +}