cmd/gomobile: enable bitcode unconditionally
As discussed in CL 346150, conditional bitcode build flag was introduced
in CL 214899, for Go >= 1.14 but not Go 1.13.
Since we have dropped the support for 1.13, all bitcode conditions
can be removed.
Hence this CL removes it.
Updates golang/go#47952
Change-Id: I0436cad8d5ab5675b647e25e7dfa85af85996a7e
Reviewed-on: https://go-review.googlesource.com/c/mobile/+/346390
Reviewed-by: Hajime Hoshi <hajimehoshi@gmail.com>
Run-TryBot: Hajime Hoshi <hajimehoshi@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Dmitri Shuralyov <dmitshur@golang.org>
diff --git a/cmd/gomobile/bind_test.go b/cmd/gomobile/bind_test.go
index 5d6796c..ee8d35c 100644
--- a/cmd/gomobile/bind_test.go
+++ b/cmd/gomobile/bind_test.go
@@ -155,14 +155,12 @@
data := struct {
outputData
- Output string
- Prefix string
- BitcodeEnabled bool
+ Output string
+ Prefix string
}{
- outputData: output,
- Output: buildO[:len(buildO)-len(".framework")],
- Prefix: tc.prefix,
- BitcodeEnabled: bitcodeEnabled,
+ outputData: output,
+ Output: buildO[:len(buildO)-len(".framework")],
+ Prefix: tc.prefix,
}
wantBuf := new(bytes.Buffer)
@@ -196,8 +194,8 @@
WORK=$WORK
GOOS=darwin CGO_ENABLED=1 gobind -lang=go,objc -outdir=$WORK -tags=ios{{if .Prefix}} -prefix={{.Prefix}}{{end}} golang.org/x/mobile/asset
mkdir -p $WORK/src
-PWD=$WORK/src GOOS=ios GOARCH=arm64 CC=iphoneos-clang CXX=iphoneos-clang++ CGO_CFLAGS=-isysroot=iphoneos -miphoneos-version-min=7.0 {{if .BitcodeEnabled}}-fembed-bitcode {{end}}-arch arm64 CGO_CXXFLAGS=-isysroot=iphoneos -miphoneos-version-min=7.0 {{if .BitcodeEnabled}}-fembed-bitcode {{end}}-arch arm64 CGO_LDFLAGS=-isysroot=iphoneos -miphoneos-version-min=7.0 {{if .BitcodeEnabled}}-fembed-bitcode {{end}}-arch arm64 CGO_ENABLED=1 GOPATH=$WORK:$GOPATH go mod tidy
-PWD=$WORK/src GOOS=ios GOARCH=arm64 CC=iphoneos-clang CXX=iphoneos-clang++ CGO_CFLAGS=-isysroot=iphoneos -miphoneos-version-min=7.0 {{if .BitcodeEnabled}}-fembed-bitcode {{end}}-arch arm64 CGO_CXXFLAGS=-isysroot=iphoneos -miphoneos-version-min=7.0 {{if .BitcodeEnabled}}-fembed-bitcode {{end}}-arch arm64 CGO_LDFLAGS=-isysroot=iphoneos -miphoneos-version-min=7.0 {{if .BitcodeEnabled}}-fembed-bitcode {{end}}-arch arm64 CGO_ENABLED=1 GOPATH=$WORK:$GOPATH go build -x -buildmode=c-archive -o $WORK/{{.Output}}-arm64.a ./gobind
+PWD=$WORK/src GOOS=ios GOARCH=arm64 CC=iphoneos-clang CXX=iphoneos-clang++ CGO_CFLAGS=-isysroot=iphoneos -miphoneos-version-min=7.0 -fembed-bitcode -arch arm64 CGO_CXXFLAGS=-isysroot=iphoneos -miphoneos-version-min=7.0 -fembed-bitcode -arch arm64 CGO_LDFLAGS=-isysroot=iphoneos -miphoneos-version-min=7.0 -fembed-bitcode -arch arm64 CGO_ENABLED=1 GOPATH=$WORK:$GOPATH go mod tidy
+PWD=$WORK/src GOOS=ios GOARCH=arm64 CC=iphoneos-clang CXX=iphoneos-clang++ CGO_CFLAGS=-isysroot=iphoneos -miphoneos-version-min=7.0 -fembed-bitcode -arch arm64 CGO_CXXFLAGS=-isysroot=iphoneos -miphoneos-version-min=7.0 -fembed-bitcode -arch arm64 CGO_LDFLAGS=-isysroot=iphoneos -miphoneos-version-min=7.0 -fembed-bitcode -arch arm64 CGO_ENABLED=1 GOPATH=$WORK:$GOPATH go build -x -buildmode=c-archive -o $WORK/{{.Output}}-arm64.a ./gobind
rm -r -f "{{.Output}}.framework"
mkdir -p {{.Output}}.framework/Versions/A/Headers
ln -s A {{.Output}}.framework/Versions/Current
diff --git a/cmd/gomobile/build_darwin_test.go b/cmd/gomobile/build_darwin_test.go
index 41fc382..12d9a4b 100644
--- a/cmd/gomobile/build_darwin_test.go
+++ b/cmd/gomobile/build_darwin_test.go
@@ -65,16 +65,14 @@
data := struct {
outputData
- TeamID string
- Pkg string
- Main bool
- BitcodeEnabled bool
+ TeamID string
+ Pkg string
+ Main bool
}{
- outputData: output,
- TeamID: teamID,
- Pkg: test.pkg,
- Main: test.main,
- BitcodeEnabled: bitcodeEnabled,
+ outputData: output,
+ TeamID: teamID,
+ Pkg: test.pkg,
+ Main: test.main,
}
got := filepath.ToSlash(buf.String())
@@ -104,8 +102,8 @@
echo "{{template "infoplist" .Xinfo}}" > $WORK/main/Info.plist
mkdir -p $WORK/main/Images.xcassets/AppIcon.appiconset
echo "{{.Xcontents}}" > $WORK/main/Images.xcassets/AppIcon.appiconset/Contents.json{{end}}
-GOOS=ios GOARCH=arm64 CC=iphoneos-clang CXX=iphoneos-clang++ CGO_CFLAGS=-isysroot=iphoneos -miphoneos-version-min=7.0 {{if .BitcodeEnabled}}-fembed-bitcode {{end}}-arch arm64 CGO_CXXFLAGS=-isysroot=iphoneos -miphoneos-version-min=7.0 {{if .BitcodeEnabled}}-fembed-bitcode {{end}}-arch arm64 CGO_LDFLAGS=-isysroot=iphoneos -miphoneos-version-min=7.0 {{if .BitcodeEnabled}}-fembed-bitcode {{end}}-arch arm64 CGO_ENABLED=1 go build -tags tag1 -x {{if .Main}}-ldflags=-w -o=$WORK/arm64 {{end}}{{.Pkg}}
-GOOS=ios GOARCH=amd64 CC=iphonesimulator-clang CXX=iphonesimulator-clang++ CGO_CFLAGS=-isysroot=iphonesimulator -mios-simulator-version-min=7.0 {{if .BitcodeEnabled}}-fembed-bitcode {{end}}-arch x86_64 CGO_CXXFLAGS=-isysroot=iphonesimulator -mios-simulator-version-min=7.0 {{if .BitcodeEnabled}}-fembed-bitcode {{end}}-arch x86_64 CGO_LDFLAGS=-isysroot=iphonesimulator -mios-simulator-version-min=7.0 {{if .BitcodeEnabled}}-fembed-bitcode {{end}}-arch x86_64 CGO_ENABLED=1 go build -tags tag1 -x {{if .Main}}-ldflags=-w -o=$WORK/amd64 {{end}}{{.Pkg}}{{if .Main}}
+GOOS=ios GOARCH=arm64 CC=iphoneos-clang CXX=iphoneos-clang++ CGO_CFLAGS=-isysroot=iphoneos -miphoneos-version-min=7.0 -fembed-bitcode -arch arm64 CGO_CXXFLAGS=-isysroot=iphoneos -miphoneos-version-min=7.0 -fembed-bitcode -arch arm64 CGO_LDFLAGS=-isysroot=iphoneos -miphoneos-version-min=7.0 -fembed-bitcode -arch arm64 CGO_ENABLED=1 go build -tags tag1 -x {{if .Main}}-ldflags=-w -o=$WORK/arm64 {{end}}{{.Pkg}}
+GOOS=ios GOARCH=amd64 CC=iphonesimulator-clang CXX=iphonesimulator-clang++ CGO_CFLAGS=-isysroot=iphonesimulator -mios-simulator-version-min=7.0 -fembed-bitcode -arch x86_64 CGO_CXXFLAGS=-isysroot=iphonesimulator -mios-simulator-version-min=7.0 -fembed-bitcode -arch x86_64 CGO_LDFLAGS=-isysroot=iphonesimulator -mios-simulator-version-min=7.0 -fembed-bitcode -arch x86_64 CGO_ENABLED=1 go build -tags tag1 -x {{if .Main}}-ldflags=-w -o=$WORK/amd64 {{end}}{{.Pkg}}{{if .Main}}
xcrun lipo -o $WORK/main/main -create $WORK/arm64 $WORK/amd64
mkdir -p $WORK/main/assets
xcrun xcodebuild -configuration Release -project $WORK/main.xcodeproj -allowProvisioningUpdates DEVELOPMENT_TEAM={{.TeamID}}
diff --git a/cmd/gomobile/build_iosapp.go b/cmd/gomobile/build_iosapp.go
index e516d27..0e9e063 100644
--- a/cmd/gomobile/build_iosapp.go
+++ b/cmd/gomobile/build_iosapp.go
@@ -31,13 +31,6 @@
productName = "ProductName" // like xcode.
}
- projPbxproj := new(bytes.Buffer)
- if err := projPbxprojTmpl.Execute(projPbxproj, projPbxprojTmplData{
- BitcodeEnabled: bitcodeEnabled,
- }); err != nil {
- return nil, err
- }
-
infoplist := new(bytes.Buffer)
if err := infoplistTmpl.Execute(infoplist, infoplistTmplData{
// TODO: better bundle id.
@@ -51,7 +44,7 @@
name string
contents []byte
}{
- {tmpdir + "/main.xcodeproj/project.pbxproj", projPbxproj.Bytes()},
+ {tmpdir + "/main.xcodeproj/project.pbxproj", []byte(projPbxproj)},
{tmpdir + "/main/Info.plist", infoplist.Bytes()},
{tmpdir + "/main/Images.xcassets/AppIcon.appiconset/Contents.json", []byte(contentsJSON)},
}
@@ -278,11 +271,7 @@
</plist>
`))
-type projPbxprojTmplData struct {
- BitcodeEnabled bool
-}
-
-var projPbxprojTmpl = template.Must(template.New("projPbxproj").Parse(`// !$*UTF8*$!
+const projPbxproj = `// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
@@ -440,7 +429,7 @@
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
- {{if not .BitcodeEnabled}}ENABLE_BITCODE = NO;{{end}}
+ ENABLE_BITCODE = YES;
};
name = Release;
};
@@ -477,7 +466,7 @@
};
rootObject = 254BB8361B1FD08900C56DE9 /* Project object */;
}
-`))
+`
const contentsJSON = `{
"images" : [
diff --git a/cmd/gomobile/env.go b/cmd/gomobile/env.go
index de0b46e..a178489 100644
--- a/cmd/gomobile/env.go
+++ b/cmd/gomobile/env.go
@@ -21,8 +21,6 @@
androidArmNM string
iosArmNM string
-
- bitcodeEnabled bool
)
func allArchs(targetOS string) []string {
@@ -84,20 +82,6 @@
}
func envInit() (err error) {
- // Check the current Go version by go-list.
- // An arbitrary standard package ('runtime' here) is given to go-list.
- // This is because go-list tries to analyze the module at the current directory if no packages are given,
- // and if the module doesn't have any Go file, go-list fails. See golang/go#36668.
- cmd := exec.Command("go", "list", "-e", "-f", `{{range context.ReleaseTags}}{{if eq . "go1.14"}}{{.}}{{end}}{{end}}`, "runtime")
- cmd.Stderr = os.Stderr
- out, err := cmd.Output()
- if err != nil {
- return err
- }
- if len(strings.TrimSpace(string(out))) > 0 {
- bitcodeEnabled = true
- }
-
// Setup the cross-compiler environments.
if ndkRoot, err := ndkRoot(); err == nil {
androidEnv = make(map[string][]string)
@@ -158,10 +142,7 @@
if err != nil {
return err
}
-
- if bitcodeEnabled {
- cflags += " -fembed-bitcode"
- }
+ cflags += " -fembed-bitcode"
env = append(env,
"GOOS=ios",
"GOARCH="+arch,
diff --git a/cmd/gomobile/init_test.go b/cmd/gomobile/init_test.go
index e7602a8..ee48513 100644
--- a/cmd/gomobile/init_test.go
+++ b/cmd/gomobile/init_test.go
@@ -149,19 +149,12 @@
}
func defaultOutputData() (outputData, error) {
- projPbxproj := new(bytes.Buffer)
- if err := projPbxprojTmpl.Execute(projPbxproj, projPbxprojTmplData{
- BitcodeEnabled: bitcodeEnabled,
- }); err != nil {
- return outputData{}, err
- }
-
data := outputData{
GOOS: goos,
GOARCH: goarch,
GOPATH: gopath,
NDKARCH: archNDK(),
- Xproj: string(projPbxproj.Bytes()),
+ Xproj: projPbxproj,
Xcontents: contentsJSON,
Xinfo: infoplistTmplData{BundleID: "org.golang.todo.basic", Name: "Basic"},
}