mirror of
https://github.com/netbirdio/gomobile-tvos-fork.git
synced 2026-05-22 18:43:29 -07:00
bind,cmd/gomobile: require Go 1.7
Bump the minimum required version of Go to 1.7. This removes version specific code and makes sure users have the latest mobile related fixes to Go applied. Also, this change is necessary when runtime.KeepAlive is introduced in a later CL. Change-Id: I8441a28aef7f645379fbd8f00edabe3c3fb219de Reviewed-on: https://go-review.googlesource.com/35953 Reviewed-by: David Crawshaw <crawshaw@golang.org>
This commit is contained in:
-15
@@ -371,21 +371,6 @@ func basicParamName(params *types.Tuple, pos int) string {
|
||||
return name
|
||||
}
|
||||
|
||||
func constExactString(o *types.Const) string {
|
||||
// TODO(hyangah): this is a temporary fix for golang.org/issues/14615.
|
||||
// Clean this up when we can require at least go 1.6 or above.
|
||||
|
||||
type exactStringer interface {
|
||||
ExactString() string
|
||||
}
|
||||
v := o.Val()
|
||||
if v, ok := v.(exactStringer); ok {
|
||||
return v.ExactString()
|
||||
}
|
||||
// TODO: warning?
|
||||
return v.String()
|
||||
}
|
||||
|
||||
func lowerFirst(s string) string {
|
||||
if s == "" {
|
||||
return ""
|
||||
|
||||
+1
-1
@@ -983,7 +983,7 @@ func (g *JavaGen) genConst(o *types.Const) {
|
||||
// TODO(hyangah): should const names use upper cases + "_"?
|
||||
// TODO(hyangah): check invalid names.
|
||||
jType := g.javaType(o.Type())
|
||||
val := constExactString(o)
|
||||
val := o.Val().ExactString()
|
||||
switch b := o.Type().(*types.Basic); b.Kind() {
|
||||
case types.Int64, types.UntypedInt:
|
||||
i, exact := constant.Int64Val(o.Val())
|
||||
|
||||
+1
-1
@@ -368,7 +368,7 @@ func (g *ObjcGen) genConstM(o *types.Const) {
|
||||
g.Printf("const BOOL %s = %s;\n", cName, v)
|
||||
|
||||
case types.String, types.UntypedString:
|
||||
g.Printf("NSString* const %s = @%s;\n", cName, constExactString(o))
|
||||
g.Printf("NSString* const %s = @%s;\n", cName, o.Val().ExactString())
|
||||
|
||||
case types.Int, types.Int8, types.Int16, types.Int32:
|
||||
g.Printf("const %s %s = %s;\n", objcType, cName, o.Val())
|
||||
|
||||
@@ -21,12 +21,9 @@ func goAndroidBind(pkgs []*build.Package, androidArchs []string) error {
|
||||
if sdkDir := os.Getenv("ANDROID_HOME"); sdkDir == "" {
|
||||
return fmt.Errorf("this command requires ANDROID_HOME environment variable (path to the Android SDK)")
|
||||
}
|
||||
var androidArgs []string
|
||||
if goVersion == go1_6 {
|
||||
// Ideally this would be -buildmode=c-shared.
|
||||
// https://golang.org/issue/13234.
|
||||
androidArgs = []string{"-gcflags=-shared", "-ldflags=-shared"}
|
||||
}
|
||||
// Ideally this would be -buildmode=c-shared.
|
||||
// https://golang.org/issue/13234.
|
||||
androidArgs := []string{"-gcflags=-shared", "-ldflags=-shared"}
|
||||
|
||||
paths := make([]string, len(pkgs))
|
||||
for i, p := range pkgs {
|
||||
|
||||
@@ -36,7 +36,7 @@ func TestBindAndroid(t *testing.T) {
|
||||
buildN = true
|
||||
buildX = true
|
||||
buildO = "asset.aar"
|
||||
buildTarget = "android"
|
||||
buildTarget = "android/arm"
|
||||
ndkRoot = "/NDK"
|
||||
|
||||
tests := []struct {
|
||||
@@ -107,7 +107,7 @@ mkdir -p $WORK/gomobile_bind
|
||||
mkdir -p $WORK/gomobile_bind
|
||||
mkdir -p $WORK/gomobile_bind
|
||||
mkdir -p $WORK/gen/src/Java
|
||||
GOOS=android GOARCH=arm CC=/NDK/toolchains/llvm/prebuilt/{{.GOOS}}-{{.NDKARCH}}/bin/clang{{.EXE}} CXX=/NDK/toolchains/llvm/prebuilt/{{.GOOS}}-{{.NDKARCH}}/bin/clang++{{.EXE}} CGO_CFLAGS=-target armv7a-none-linux-androideabi --sysroot /NDK/platforms/android-15/arch-arm -gcc-toolchain /NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -I$GOMOBILE/include CGO_CPPFLAGS=-target armv7a-none-linux-androideabi --sysroot /NDK/platforms/android-15/arch-arm -gcc-toolchain /NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -I$GOMOBILE/include CGO_LDFLAGS=-target armv7a-none-linux-androideabi --sysroot /NDK/platforms/android-15/arch-arm -gcc-toolchain /NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -L/NDK/platforms/android-15/arch-arm/usr/lib -L$GOMOBILE/lib/arm CGO_ENABLED=1 GOARM=7 GOPATH=$WORK/gen:$GOPATH go install -pkgdir=$GOMOBILE/pkg_android_arm -x golang.org/x/mobile/asset
|
||||
GOOS=android GOARCH=arm CC=/NDK/toolchains/llvm/prebuilt/{{.GOOS}}-{{.NDKARCH}}/bin/clang{{.EXE}} CXX=/NDK/toolchains/llvm/prebuilt/{{.GOOS}}-{{.NDKARCH}}/bin/clang++{{.EXE}} CGO_CFLAGS=-target armv7a-none-linux-androideabi --sysroot /NDK/platforms/android-15/arch-arm -gcc-toolchain /NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -I$GOMOBILE/include CGO_CPPFLAGS=-target armv7a-none-linux-androideabi --sysroot /NDK/platforms/android-15/arch-arm -gcc-toolchain /NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -I$GOMOBILE/include CGO_LDFLAGS=-target armv7a-none-linux-androideabi --sysroot /NDK/platforms/android-15/arch-arm -gcc-toolchain /NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -L/NDK/platforms/android-15/arch-arm/usr/lib -L$GOMOBILE/lib/arm CGO_ENABLED=1 GOARM=7 GOPATH=$WORK/gen:$GOPATH go install -pkgdir=$GOMOBILE/pkg_android_arm -x -gcflags=-shared -ldflags=-shared golang.org/x/mobile/asset
|
||||
rm -r -f "$WORK/fakegopath"
|
||||
mkdir -p $WORK/fakegopath/pkg
|
||||
cp $GOMOBILE/pkg_android_arm/golang.org/x/mobile/asset.a $WORK/fakegopath/pkg/android_arm/golang.org/x/mobile/asset.a
|
||||
|
||||
@@ -330,11 +330,7 @@ func parseBuildTarget(buildTarget string) (os string, archs []string, _ error) {
|
||||
case "ios":
|
||||
supported = []string{"arm", "arm64", "amd64"}
|
||||
case "android":
|
||||
for arch, tc := range ndk {
|
||||
if tc.minGoVer <= goVersion {
|
||||
supported = append(supported, arch)
|
||||
}
|
||||
}
|
||||
supported = []string{"arm", "arm64", "386", "amd64"}
|
||||
}
|
||||
|
||||
isSupported := func(arch string) bool {
|
||||
|
||||
@@ -75,7 +75,7 @@ func TestAndroidBuild(t *testing.T) {
|
||||
buildN = true
|
||||
buildX = true
|
||||
buildO = "basic.apk"
|
||||
buildTarget = "android"
|
||||
buildTarget = "android/arm"
|
||||
ndkRoot = "/NDK"
|
||||
gopath = filepath.ToSlash(filepath.SplitList(os.Getenv("GOPATH"))[0])
|
||||
if goos == "windows" {
|
||||
@@ -105,7 +105,7 @@ GOOS=android GOARCH=arm CC=/NDK/toolchains/llvm/prebuilt/{{.GOOS}}-{{.NDKARCH}}/
|
||||
`))
|
||||
|
||||
func TestParseBuildTargetFlag(t *testing.T) {
|
||||
androidArchs := "arm"
|
||||
androidArchs := "arm,arm64,386,amd64"
|
||||
iosArchs := "arm,arm64,amd64"
|
||||
|
||||
tests := []struct {
|
||||
|
||||
+1
-10
@@ -116,10 +116,6 @@ func envInit() (err error) {
|
||||
if ndkRoot != "" {
|
||||
androidEnv = make(map[string][]string)
|
||||
for arch, toolchain := range ndk {
|
||||
if goVersion < toolchain.minGoVer {
|
||||
continue
|
||||
}
|
||||
|
||||
// Emulate the flags in the clang wrapper scripts generated
|
||||
// by make_standalone_toolchain.py
|
||||
s := strings.SplitN(toolchain.toolPrefix, "-", 3)
|
||||
@@ -313,7 +309,6 @@ type ndkToolchain struct {
|
||||
platform string
|
||||
gcc string
|
||||
toolPrefix string
|
||||
minGoVer goToolVersion
|
||||
}
|
||||
|
||||
func (tc *ndkToolchain) Path(toolName string) string {
|
||||
@@ -337,7 +332,7 @@ type ndkConfig map[string]ndkToolchain // map: GOOS->androidConfig.
|
||||
|
||||
func (nc ndkConfig) Toolchain(arch string) ndkToolchain {
|
||||
tc, ok := nc[arch]
|
||||
if !ok || tc.minGoVer > goVersion {
|
||||
if !ok {
|
||||
panic(`unsupported architecture: ` + arch)
|
||||
}
|
||||
return tc
|
||||
@@ -350,7 +345,6 @@ var ndk = ndkConfig{
|
||||
platform: "android-15",
|
||||
gcc: "arm-linux-androideabi-4.9",
|
||||
toolPrefix: "arm-linux-androideabi",
|
||||
minGoVer: go1_5,
|
||||
},
|
||||
"arm64": {
|
||||
arch: "arm64",
|
||||
@@ -358,7 +352,6 @@ var ndk = ndkConfig{
|
||||
platform: "android-21",
|
||||
gcc: "aarch64-linux-android-4.9",
|
||||
toolPrefix: "aarch64-linux-android",
|
||||
minGoVer: go1_6,
|
||||
},
|
||||
|
||||
"386": {
|
||||
@@ -367,7 +360,6 @@ var ndk = ndkConfig{
|
||||
platform: "android-15",
|
||||
gcc: "x86-4.9",
|
||||
toolPrefix: "i686-linux-android",
|
||||
minGoVer: go1_6,
|
||||
},
|
||||
"amd64": {
|
||||
arch: "x86_64",
|
||||
@@ -375,7 +367,6 @@ var ndk = ndkConfig{
|
||||
platform: "android-21",
|
||||
gcc: "x86_64-4.9",
|
||||
toolPrefix: "x86_64-linux-android",
|
||||
minGoVer: go1_6,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -158,13 +158,11 @@ func runInit(cmd *command) error {
|
||||
|
||||
// Install standard libraries for cross compilers.
|
||||
start := time.Now()
|
||||
var androidArgs []string
|
||||
if goVersion == go1_6 {
|
||||
// Ideally this would be -buildmode=c-shared.
|
||||
// https://golang.org/issue/13234.
|
||||
androidArgs = []string{"-gcflags=-shared", "-ldflags=-shared"}
|
||||
}
|
||||
for _, env := range androidEnv {
|
||||
// Ideally this would be -buildmode=c-shared.
|
||||
// https://golang.org/issue/13234.
|
||||
androidArgs := []string{"-gcflags=-shared", "-ldflags=-shared"}
|
||||
for _, arch := range archs {
|
||||
env := androidEnv[arch]
|
||||
if err := installStd(env, androidArgs...); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -106,7 +106,10 @@ WORK={{.GOPATH}}/pkg/gomobile/work{{if eq .GOOS "darwin"}}
|
||||
go install -x golang.org/x/mobile/gl
|
||||
go install -x golang.org/x/mobile/app
|
||||
go install -x golang.org/x/mobile/exp/app/debug{{end}}
|
||||
GOOS=android GOARCH=arm CC=$NDK_PATH/toolchains/llvm/prebuilt/{{.GOOS}}-{{.NDKARCH}}/bin/clang{{.EXE}} CXX=$NDK_PATH/toolchains/llvm/prebuilt/{{.GOOS}}-{{.NDKARCH}}/bin/clang++{{.EXE}} CGO_CFLAGS=-target armv7a-none-linux-androideabi --sysroot $NDK_PATH/platforms/android-15/arch-arm -gcc-toolchain $NDK_PATH/toolchains/arm-linux-androideabi-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -I$GOMOBILE/include CGO_CPPFLAGS=-target armv7a-none-linux-androideabi --sysroot $NDK_PATH/platforms/android-15/arch-arm -gcc-toolchain $NDK_PATH/toolchains/arm-linux-androideabi-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -I$GOMOBILE/include CGO_LDFLAGS=-target armv7a-none-linux-androideabi --sysroot $NDK_PATH/platforms/android-15/arch-arm -gcc-toolchain $NDK_PATH/toolchains/arm-linux-androideabi-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -L$NDK_PATH/platforms/android-15/arch-arm/usr/lib -L$GOMOBILE/lib/arm CGO_ENABLED=1 GOARM=7 go install -pkgdir=$GOMOBILE/pkg_android_arm -x std
|
||||
GOOS=android GOARCH=arm CC=$NDK_PATH/toolchains/llvm/prebuilt/{{.GOOS}}-{{.NDKARCH}}/bin/clang{{.EXE}} CXX=$NDK_PATH/toolchains/llvm/prebuilt/{{.GOOS}}-{{.NDKARCH}}/bin/clang++{{.EXE}} CGO_CFLAGS=-target armv7a-none-linux-androideabi --sysroot $NDK_PATH/platforms/android-15/arch-arm -gcc-toolchain $NDK_PATH/toolchains/arm-linux-androideabi-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -I$GOMOBILE/include CGO_CPPFLAGS=-target armv7a-none-linux-androideabi --sysroot $NDK_PATH/platforms/android-15/arch-arm -gcc-toolchain $NDK_PATH/toolchains/arm-linux-androideabi-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -I$GOMOBILE/include CGO_LDFLAGS=-target armv7a-none-linux-androideabi --sysroot $NDK_PATH/platforms/android-15/arch-arm -gcc-toolchain $NDK_PATH/toolchains/arm-linux-androideabi-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -L$NDK_PATH/platforms/android-15/arch-arm/usr/lib -L$GOMOBILE/lib/arm CGO_ENABLED=1 GOARM=7 go install -gcflags=-shared -ldflags=-shared -pkgdir=$GOMOBILE/pkg_android_arm -x std
|
||||
GOOS=android GOARCH=arm64 CC=$NDK_PATH/toolchains/llvm/prebuilt/{{.GOOS}}-{{.NDKARCH}}/bin/clang{{.EXE}} CXX=$NDK_PATH/toolchains/llvm/prebuilt/{{.GOOS}}-{{.NDKARCH}}/bin/clang++{{.EXE}} CGO_CFLAGS=-target aarch64-none-linux-android --sysroot $NDK_PATH/platforms/android-21/arch-arm64 -gcc-toolchain $NDK_PATH/toolchains/aarch64-linux-android-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -I$GOMOBILE/include CGO_CPPFLAGS=-target aarch64-none-linux-android --sysroot $NDK_PATH/platforms/android-21/arch-arm64 -gcc-toolchain $NDK_PATH/toolchains/aarch64-linux-android-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -I$GOMOBILE/include CGO_LDFLAGS=-target aarch64-none-linux-android --sysroot $NDK_PATH/platforms/android-21/arch-arm64 -gcc-toolchain $NDK_PATH/toolchains/aarch64-linux-android-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -L$NDK_PATH/platforms/android-21/arch-arm64/usr/lib -L$GOMOBILE/lib/arm64 CGO_ENABLED=1 go install -gcflags=-shared -ldflags=-shared -pkgdir=$GOMOBILE/pkg_android_arm64 -x std
|
||||
GOOS=android GOARCH=386 CC=$NDK_PATH/toolchains/llvm/prebuilt/{{.GOOS}}-{{.NDKARCH}}/bin/clang{{.EXE}} CXX=$NDK_PATH/toolchains/llvm/prebuilt/{{.GOOS}}-{{.NDKARCH}}/bin/clang++{{.EXE}} CGO_CFLAGS=-target i686-none-linux-android --sysroot $NDK_PATH/platforms/android-15/arch-x86 -gcc-toolchain $NDK_PATH/toolchains/x86-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -I$GOMOBILE/include CGO_CPPFLAGS=-target i686-none-linux-android --sysroot $NDK_PATH/platforms/android-15/arch-x86 -gcc-toolchain $NDK_PATH/toolchains/x86-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -I$GOMOBILE/include CGO_LDFLAGS=-target i686-none-linux-android --sysroot $NDK_PATH/platforms/android-15/arch-x86 -gcc-toolchain $NDK_PATH/toolchains/x86-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -L$NDK_PATH/platforms/android-15/arch-x86/usr/lib -L$GOMOBILE/lib/386 CGO_ENABLED=1 go install -gcflags=-shared -ldflags=-shared -pkgdir=$GOMOBILE/pkg_android_386 -x std
|
||||
GOOS=android GOARCH=amd64 CC=$NDK_PATH/toolchains/llvm/prebuilt/{{.GOOS}}-{{.NDKARCH}}/bin/clang{{.EXE}} CXX=$NDK_PATH/toolchains/llvm/prebuilt/{{.GOOS}}-{{.NDKARCH}}/bin/clang++{{.EXE}} CGO_CFLAGS=-target x86_64-none-linux-android --sysroot $NDK_PATH/platforms/android-21/arch-x86_64 -gcc-toolchain $NDK_PATH/toolchains/x86_64-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -I$GOMOBILE/include CGO_CPPFLAGS=-target x86_64-none-linux-android --sysroot $NDK_PATH/platforms/android-21/arch-x86_64 -gcc-toolchain $NDK_PATH/toolchains/x86_64-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -I$GOMOBILE/include CGO_LDFLAGS=-target x86_64-none-linux-android --sysroot $NDK_PATH/platforms/android-21/arch-x86_64 -gcc-toolchain $NDK_PATH/toolchains/x86_64-4.9/prebuilt/{{.GOOS}}-{{.NDKARCH}} -L$NDK_PATH/platforms/android-21/arch-x86_64/usr/lib -L$GOMOBILE/lib/amd64 CGO_ENABLED=1 go install -gcflags=-shared -ldflags=-shared -pkgdir=$GOMOBILE/pkg_android_amd64 -x std
|
||||
{{if eq .GOOS "darwin"}}GOOS=darwin GOARCH=arm GOARM=7 CC=clang-iphoneos CXX=clang-iphoneos CGO_CFLAGS=-isysroot=iphoneos -miphoneos-version-min=6.1 -arch armv7 CGO_LDFLAGS=-isysroot=iphoneos -miphoneos-version-min=6.1 -arch armv7 CGO_ENABLED=1 go install -pkgdir=$GOMOBILE/pkg_darwin_arm -x std
|
||||
GOOS=darwin GOARCH=arm64 CC=clang-iphoneos CXX=clang-iphoneos CGO_CFLAGS=-isysroot=iphoneos -miphoneos-version-min=6.1 -arch arm64 CGO_LDFLAGS=-isysroot=iphoneos -miphoneos-version-min=6.1 -arch arm64 CGO_ENABLED=1 go install -pkgdir=$GOMOBILE/pkg_darwin_arm64 -x std
|
||||
GOOS=darwin GOARCH=amd64 CC=clang-iphonesimulator CXX=clang-iphonesimulator CGO_CFLAGS=-isysroot=iphonesimulator -mios-simulator-version-min=6.1 -arch x86_64 CGO_LDFLAGS=-isysroot=iphonesimulator -mios-simulator-version-min=6.1 -arch x86_64 CGO_ENABLED=1 go install -tags=ios -pkgdir=$GOMOBILE/pkg_darwin_amd64 -x std
|
||||
|
||||
+4
-14
@@ -25,7 +25,6 @@ import (
|
||||
var (
|
||||
gomobileName = "gomobile"
|
||||
goVersionOut = []byte(nil)
|
||||
goVersion = go1_5
|
||||
)
|
||||
|
||||
func printUsage(w io.Writer) {
|
||||
@@ -85,13 +84,6 @@ func main() {
|
||||
os.Exit(2)
|
||||
}
|
||||
|
||||
type goToolVersion int
|
||||
|
||||
const (
|
||||
go1_5 goToolVersion = iota
|
||||
go1_6
|
||||
)
|
||||
|
||||
func determineGoVersion() error {
|
||||
gobin, err := exec.LookPath("go")
|
||||
if err != nil {
|
||||
@@ -102,12 +94,10 @@ func determineGoVersion() error {
|
||||
return fmt.Errorf("'go version' failed: %v, %s", err, goVersionOut)
|
||||
}
|
||||
switch {
|
||||
case bytes.HasPrefix(goVersionOut, []byte("go version go1.4")):
|
||||
return errors.New("Go 1.5 or newer is required")
|
||||
case bytes.HasPrefix(goVersionOut, []byte("go version go1.5")):
|
||||
goVersion = go1_5
|
||||
default:
|
||||
goVersion = go1_6 // assume developers are working at tip
|
||||
case bytes.HasPrefix(goVersionOut, []byte("go version go1.4")),
|
||||
bytes.HasPrefix(goVersionOut, []byte("go version go1.5")),
|
||||
bytes.HasPrefix(goVersionOut, []byte("go version go1.6")):
|
||||
return errors.New("Go 1.7 or newer is required")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user