Skip to content

Commit

Permalink
fix: extensions for static/shared libraries
Browse files Browse the repository at this point in the history
By default use .a and .so for static and shared libs respectively.
On macOS/Darwin - use .dylib for shared libraries.
On Windows - use .lib for static and .dll for dynamic libs.
  • Loading branch information
borgoat committed Nov 9, 2022
1 parent e17b734 commit 4afae2f
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 24 deletions.
38 changes: 17 additions & 21 deletions internal/pipe/build/build.go
Expand Up @@ -212,34 +212,30 @@ func buildOptionsForTarget(ctx *context.Context, build config.Build, target stri
}

func extFor(target string, build config.BuildDetails) string {
if target == "js_wasm" {
return ".wasm"
}

// Configure the extensions for shared and static libraries - by default .so and .a respectively -
// with overrides for Windows (.dll for shared and .lib for static) and .dylib for macOS.
buildmode := build.Buildmode
if strings.Contains(target, "darwin") {
if buildmode == "c-shared" {

if buildmode == "c-shared" {
if strings.Contains(target, "darwin") {
return ".dylib"
}
if buildmode == "c-archive" {
return ".a"
}
}
if strings.Contains(target, "linux") {
if buildmode == "c-shared" {
return ".so"
}
if buildmode == "c-archive" {
return ".a"
}
}
if strings.Contains(target, "windows") {
if buildmode == "c-shared" {
if strings.Contains(target, "windows") {
return ".dll"
}
if buildmode == "c-archive" {
return ".so"
}

if buildmode == "c-archive" {
if strings.Contains(target, "windows") {
return ".lib"
}
return ".exe"
}
if target == "js_wasm" {
return ".wasm"
return ".a"
}

return ""
}
9 changes: 6 additions & 3 deletions internal/pipe/build/build_test.go
Expand Up @@ -461,9 +461,12 @@ func TestExtWasm(t *testing.T) {
}

func TestExtOthers(t *testing.T) {
require.Empty(t, "", extFor("linux_amd64", config.BuildDetails{}))
require.Empty(t, "", extFor("linuxwin_386", config.BuildDetails{}))
require.Empty(t, "", extFor("winasdasd_sad", config.BuildDetails{}))
require.Equal(t, "", extFor("linux_amd64", config.BuildDetails{}))
require.Equal(t, "", extFor("linuxwin_386", config.BuildDetails{}))
require.Equal(t, "", extFor("winasdasd_sad", config.BuildDetails{}))
require.Equal(t, ".so", extFor("aix_amd64", config.BuildDetails{Buildmode: "c-shared"}))
require.Equal(t, ".a", extFor("android_386", config.BuildDetails{Buildmode: "c-archive"}))
require.Equal(t, ".so", extFor("winasdasd_sad", config.BuildDetails{Buildmode: "c-shared"}))
}

func TestTemplate(t *testing.T) {
Expand Down

0 comments on commit 4afae2f

Please sign in to comment.