diff --git a/cmd/fyne/internal/mobile/bind.go b/cmd/fyne/internal/mobile/bind.go index 6bf5408859..5e9aecb86a 100644 --- a/cmd/fyne/internal/mobile/bind.go +++ b/cmd/fyne/internal/mobile/bind.go @@ -15,7 +15,7 @@ import ( "golang.org/x/tools/go/packages" ) -// ctx, pkg, tmpdir in build.go +// pkg, tmpdir in build.go func copyFile(dst, src string) error { if buildX { @@ -68,8 +68,12 @@ func writeFile(filename string, generate func(io.Writer) error) error { func packagesConfig(targetOS string) *packages.Config { config := &packages.Config{} config.Env = append(os.Environ(), "GOARCH=arm", "GOOS="+targetOS) - if len(ctx.BuildTags) > 0 { - config.BuildFlags = []string{"-tags=" + strings.Join(ctx.BuildTags, ",")} + tags := buildTags + if targetOS == "darwin" { + tags = append(tags, "ios") + } + if len(tags) > 0 { + config.BuildFlags = []string{"-tags=" + strings.Join(tags, ",")} } return config } diff --git a/cmd/fyne/internal/mobile/build.go b/cmd/fyne/internal/mobile/build.go index 95a5ba9558..5e9d8b4881 100644 --- a/cmd/fyne/internal/mobile/build.go +++ b/cmd/fyne/internal/mobile/build.go @@ -21,7 +21,6 @@ import ( "golang.org/x/tools/go/packages" ) -var ctx = build.Default var tmpdir string var cmdBuild = &command{ @@ -93,21 +92,6 @@ func runBuildImpl(cmd *command) (*packages.Package, error) { cleanup, err := bui return nil, fmt.Errorf(`invalid -target=%q: %v`, buildTarget, err) } - // TODO(hajimehoshi): ctx is now used only for recording build tags in build. Remove this. - oldCtx := ctx - defer func() { - ctx = oldCtx - }() - - if targetOS == "darwin" { - ctx.BuildTags = append(ctx.BuildTags, "ios") - - if buildRelease { - targetArchs = []string{"arm", "arm64"} - ctx.GOARCH = targetArchs[0] - } - } - var buildPath string switch len(args) { case 0: @@ -157,6 +141,10 @@ func runBuildImpl(cmd *command) (*packages.Package, error) { cleanup, err := bui if !xcodeAvailable() { return nil, fmt.Errorf("-target=ios requires XCode") } + if buildRelease { + targetArchs = []string{"arm", "arm64"} + } + if pkg.Name != "main" { for _, arch := range targetArchs { env := darwinEnv[arch] @@ -247,21 +235,22 @@ func printcmd(format string, args ...interface{}) { // "Build flags", used by multiple commands. var ( - buildA bool // -a - buildI bool // -i - buildN bool // -n - buildV bool // -v - buildX bool // -x - buildO string // -o - buildGcflags string // -gcflags - buildLdflags string // -ldflags - buildRelease bool // -release - buildTarget string // -target - buildTrimpath bool // -trimpath - buildWork bool // -work - buildBundleID string // -bundleid - buildIOSVersion string // -iosversion - buildAndroidAPI int // -androidapi + buildA bool // -a + buildI bool // -i + buildN bool // -n + buildV bool // -v + buildX bool // -x + buildO string // -o + buildGcflags string // -gcflags + buildLdflags string // -ldflags + buildRelease bool // -release + buildTarget string // -target + buildTrimpath bool // -trimpath + buildWork bool // -work + buildBundleID string // -bundleid + buildIOSVersion string // -iosversion + buildAndroidAPI int // -androidapi + buildTags stringsFlag // -tags ) func RunNewBuild(target, appID, icon, name string, release bool) error { @@ -288,7 +277,7 @@ func addBuildFlags(cmd *command) { cmd.Flag.BoolVar(&buildA, "a", false, "") cmd.Flag.BoolVar(&buildI, "i", false, "") cmd.Flag.BoolVar(&buildTrimpath, "trimpath", false, "") - cmd.Flag.Var((*stringsFlag)(&ctx.BuildTags), "tags", "") + cmd.Flag.Var(&buildTags, "tags", "") } func addBuildFlagsNVXWork(cmd *command) { @@ -323,8 +312,16 @@ func goCmd(subcmd string, srcs []string, env []string, args ...string) error { goBin(), subcmd, ) - if len(ctx.BuildTags) > 0 { - cmd.Args = append(cmd.Args, "-tags", strings.Join(ctx.BuildTags, " ")) + tags := buildTags + targetOS, _, err := parseBuildTarget(buildTarget) + if err != nil { + return err + } + if targetOS == "darwin" { + tags = append(tags, "ios") + } + if len(tags) > 0 { + cmd.Args = append(cmd.Args, "-tags", strings.Join(tags, " ")) } if buildV { cmd.Args = append(cmd.Args, "-v")