Skip to content

Commit

Permalink
feat: Add support for c-shared and c-archive build modes in windows (#…
Browse files Browse the repository at this point in the history
…1243)

* add hardcoded .dll and .lib extensions

* chore: remove unnecessary else case
  • Loading branch information
qmuntal authored and caarlos0 committed Nov 15, 2019
1 parent 16cb4d8 commit 1cf86b8
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 8 deletions.
12 changes: 10 additions & 2 deletions internal/pipe/build/build.go
Expand Up @@ -104,7 +104,7 @@ func runHook(ctx *context.Context, env []string, hook string) error {
}

func doBuild(ctx *context.Context, build config.Build, target string) error {
var ext = extFor(target)
var ext = extFor(target, build.Flags)

binary, err := tmpl.New(ctx).Apply(build.Binary)
if err != nil {
Expand All @@ -127,8 +127,16 @@ func doBuild(ctx *context.Context, build config.Build, target string) error {
})
}

func extFor(target string) string {
func extFor(target string, flags config.FlagArray) string {
if strings.Contains(target, "windows") {
for _, s := range flags {
if s == "-buildmode=c-shared" {
return ".dll"
}
if s == "-buildmode=c-archive" {
return ".lib"
}
}
return ".exe"
}
if target == "js_wasm" {
Expand Down
17 changes: 11 additions & 6 deletions internal/pipe/build/build_test.go
Expand Up @@ -336,18 +336,23 @@ func TestDefaultFillSingleBuild(t *testing.T) {
}

func TestExtWindows(t *testing.T) {
assert.Equal(t, ".exe", extFor("windows_amd64"))
assert.Equal(t, ".exe", extFor("windows_386"))
assert.Equal(t, ".exe", extFor("windows_amd64", config.FlagArray{}))
assert.Equal(t, ".exe", extFor("windows_386", config.FlagArray{}))
assert.Equal(t, ".exe", extFor("windows_amd64", config.FlagArray{"-tags=dev", "-v"}))
assert.Equal(t, ".dll", extFor("windows_amd64", config.FlagArray{"-tags=dev", "-v", "-buildmode=c-shared"}))
assert.Equal(t, ".dll", extFor("windows_386", config.FlagArray{"-buildmode=c-shared"}))
assert.Equal(t, ".lib", extFor("windows_amd64", config.FlagArray{"-buildmode=c-archive"}))
assert.Equal(t, ".lib", extFor("windows_386", config.FlagArray{"-tags=dev", "-v", "-buildmode=c-archive"}))
}

func TestExtWasm(t *testing.T) {
assert.Equal(t, ".wasm", extFor("js_wasm"))
assert.Equal(t, ".wasm", extFor("js_wasm", config.FlagArray{}))
}

func TestExtOthers(t *testing.T) {
assert.Empty(t, "", extFor("linux_amd64"))
assert.Empty(t, "", extFor("linuxwin_386"))
assert.Empty(t, "", extFor("winasdasd_sad"))
assert.Empty(t, "", extFor("linux_amd64", config.FlagArray{}))
assert.Empty(t, "", extFor("linuxwin_386", config.FlagArray{}))
assert.Empty(t, "", extFor("winasdasd_sad", config.FlagArray{}))
}

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

0 comments on commit 1cf86b8

Please sign in to comment.