2
0
mirror of synced 2025-02-25 07:45:21 +00:00

46 Commits

Author SHA1 Message Date
Elias Naur
cde3d952bc cmd/gomobile: explicitly disable modules
Gomobile doesn't support modules.

Updates golang/go#27234

Change-Id: I426db1600eafd4a9ddc7eb239f5f264756f1ba35
Reviewed-on: https://go-review.googlesource.com/c/mobile/+/167659
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2019-03-16 15:04:07 +00:00
Elias Naur
ca80213619 cmd/gomobile: use the NDK r19b prebuilt toolchains
To use the NDK before version r19b standalone toolchains had to be
generated. Version r19b added prebuilt standalone toolchains.

Use the prebuilt for gomobile build and gomobile bind and
stop generating toolchains during gomobile init.

gomobile init is now only necessary for building OpenAL for
gomobile build programs.

This change is not compatible with NDK versions < r19b, but the
user is instructed how to upgrade when running gomobile build or
gomobile bind.

Change-Id: I96953298ecce42402459a9dd15169c09fe6b6f8b
Reviewed-on: https://go-review.googlesource.com/c/163378
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2019-02-22 14:21:12 +00:00
Elias Naur
920b52be60 cmd/gomobile: bump minimum sdk version and update gradle for NDK 18
NDK 18 drops support for API levels below 16. Bump it to 16.

NDK 18 also needs a newer version of the Android gradle plugin.
Update the bind example and test build.gradle files.

Change-Id: I71499c88b48c43b2d4da50e415cb0b0dcbbbed75
Reviewed-on: https://go-review.googlesource.com/136775
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2018-09-22 16:38:55 +00:00
Elias Naur
b07e525bd7 cmd/gomobile: make sure gobind is installed and updated
When running gomobile bind, make sure gobind exists. If not, instruct
the user to run gomobile init which will go install gobind.

Change-Id: I2d064ba58874fd5581c17417124561f3d1fb6b83
Reviewed-on: https://go-review.googlesource.com/101055
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2018-03-26 17:12:18 +00:00
Elias Naur
6b7c05d452 cmd/gomobile: use standalone NDK toolchains
Issue golang/go#24058 demonstrates a Go package that fails to build with
gomobile but builds successfully with a manually using the standalone NDK
toolchain. I haven't been able to figure out a set of CPPFLAGS/LDFLAGS
that fixes the build for 24058 so instead rework gomobile to use
standalone NDK toolchains.

Standalone toolchains fixes the 24058 build and is the official way
to build Android programs. So gomobile should be less affected by
future changes in the NDK toolchain internals.

Create the standalone toolchains with gomobile init.

With the new Go 1.10 build cache, the prebuild work by the gomobile
init command is useless. Use the opportunity to simplify init to
only creating NDK toolchains and, optionally, building OpenAL for
Android. With that, it is no longer necessary to use gomobile init
to build iOS apps and frameworks.

Fixes golang/go#24058

Change-Id: I4692fcaa927e7076a6387d080ebc1726905afd72
Reviewed-on: https://go-review.googlesource.com/99875
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2018-03-26 17:11:49 +00:00
Elias Naur
3ef91fec25 cmd/gomobile, internal/mobileinit: update to the NDK unified headers
From r16, the legacy headers no longer ship with the NDK. Update
the gomobile build system to use the unified headers instead.
They're available from r14.

Based on a patch by Steeve Morin.

Fixes golang/go#21802

Change-Id: I098330962c737edb833e968fe82558e15837f23f
Reviewed-on: https://go-review.googlesource.com/69950
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2017-10-11 16:08:37 +00:00
Elias Naur
44ced21510 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>
2017-01-30 19:32:33 +00:00
Elias Naur
3212b34dba cmd/gomobile: replace stripped NDK with external NDK
Gomobile has up until now used stripped NDKs hosted by Google. This
arrangement adds maintenance overhead and blocks the use of custom
NDKs or custom API levels. Also, as noted in issue 16211, the stripped
NDK is no longer tiny because Gomobile supports more platforms.

This CL removed the code for generating and packaging stripped NDKs and
adds support for using external NDKs to the gomobile tool.

gomobile init will now use the NDK installed by the Android SDK manager,
if present, or a user specified NDK if the -ndk flag is given. If no
NDK was found or specified, Android initialization is skipped. gomobile
will instruct the user to run init with a valid NDK if bind or build is
invoked without Android initialization.

gomobile init will also attempt to build OpenAL for Android if the -openal
flag specifies a source directory. It needs cmake and, on Windows, nmake
installed. If gomobile build is run on an app that requires
golang.org/x/mobile/exp/audio/al and OpenAL wasn't built by init, the user
is instructed to do so.

Tested on Linux, macOS, Windows.

Fixes golang/go#16211
Fixes golang/go#18522

Change-Id: Ia38f6e43e671a207dad562678c65225b426e7e3e
Reviewed-on: https://go-review.googlesource.com/35173
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2017-01-17 21:04:41 +00:00
Elias Naur
f52baf9a56 mobile/cmd/gomobile: fix test
Change-Id: I4c790d2156e6b167244ce3e4f5a37c1253e6e152
Reviewed-on: https://go-review.googlesource.com/28590
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2016-09-07 12:53:10 +00:00
Elias Naur
0ba4e6463d mobile/cmd/gomobile: remove explicit -p argument to the go cmd
Now that darwin/arm no longer use an explicit -p=1 in the go command
remove the explicit -p=<num cpus> from gomobile as well.

While we're here, fix the init test templates to reflect the new
clang based build.

Fixes golang/go#10477

Change-Id: I29a179e628466ae0c591620f485194b80e310811
Reviewed-on: https://go-review.googlesource.com/21186
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2016-08-16 10:53:25 +00:00
Elias Naur
efd7eed289 mobile/cmd/gomobile: upgrade to NDK r12b and add nm
gomobile build uses the nm tool which was missing from the NDK r12
upgrade. I missed it because gomobile bind works without it.

Make release.go include nm and upgrade to NDK r12b to make avoid
name clashes with the already released, but inadequate, NDK r12
files.

Finally, update the cmd/gomobile tests to match the new clang
reality.

Fixes golang/go#16268

Change-Id: Ic0cbf75785baace1fe6e88c8dc72d83ce2e13b35
Reviewed-on: https://go-review.googlesource.com/24724
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2016-07-11 14:34:23 +00:00
Elias Naur
d6153aa12b mobile/cmd/gomobile: upgrade to ndk-r11c
Update gcc version to 4.9 everywhere. NDK r11 stopped support
for gcc 4.8.

Switch from bin/exe format to zip format.

Drop support for linux/x86, since r11c no longer supports it.

Change the NDK URLs from http://dl.google.com/android/ndk/ to
https://dl.google.com/android/repository/.

Add a flag, -ndkdir, to specify where the downloaded NDK files for
processing are found and downloaded.

Check the status code from the http.Get that fetches the NDK files.

Change-Id: I836de6611bd04f5220e01937a3288a91604b8999
Reviewed-on: https://go-review.googlesource.com/23592
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2016-06-06 18:19:59 +00:00
Elias Naur
5496692b9e mobile/cmd/gomobile: fix tests
Change-Id: I99514f73a0c9783e01921e1ba9f2aa79d44c65f7
Reviewed-on: https://go-review.googlesource.com/21134
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2016-03-25 14:33:59 +00:00
Hyang-Ah Hana Kim
ab5e5f68d8 cmd/gomobile: update init/bind/build for multiple android archs
init command installs std for all the architectures supported by the
current go tool version (as listed in androidEnv).

build and bind commands pass the list of architectures to the underlying
functions. The list is currently hard-coded []string{"arm"}. In a
separate CL, the list will be populated from the -target flag value.

Still targets arm devices only.

For golang/go#10743

Change-Id: I62b5899859e76ad78a2dc55111e87aa13a68a1f9
Reviewed-on: https://go-review.googlesource.com/17749
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-12-14 21:21:36 +00:00
Hyang-Ah Hana Kim
0a84d43930 cmd/gomobile: refactor android*Env to handle more architectures
This does not change the tool's behavior.

The global ndkConfig 'ndk' holds info on all supported architectures
with the latest Go and gomobile tools (tip), and provides Root and
Toolchain methods that returns the current NDK installation directory
and the toolchain info depending on the GOPATH and the current go
version.

The global androidEnv is a map from arch name to the env vars.

ndkccpath is replaced by ndk.Root.

For golang/go#10743

Change-Id: I70d8e7b3e9979836112eb82d50c468df4f4ab43f
Reviewed-on: https://go-review.googlesource.com/17720
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-12-14 21:18:57 +00:00
David Crawshaw
f8cb2f0e7e cmd/gomobile: expose goVersion to subcommands
Pulled out of golang.org/cl/16913.

Change-Id: I041aba4e8cefed95ee2935139571140164b5d677
Reviewed-on: https://go-review.googlesource.com/17001
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-11-17 18:51:34 +00:00
David Crawshaw
0303da803c cmd/gomobile: fix test for buildmode=c-shared
Added recently, but I forgot to update the test.

Fixes golang/go#12983

Change-Id: I668b20d74c6b91d9588e6f252939d36ae780bd77
Reviewed-on: https://go-review.googlesource.com/16052
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-10-19 14:40:54 +00:00
Hyang-Ah (Hana) Kim
4a6caa5fd7 cmd/gomobile: bind allows custom package path/prefix.
New option -javapkg for -target=android, and -prefix for -target=ios.
Fixes golang/go#9660.

Change-Id: I9143f30672672527876524b38f450629452a3161
Reviewed-on: https://go-review.googlesource.com/14023
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-09-01 19:17:05 +00:00
Hyang-Ah (Hana) Kim
c384607ef3 bind: support for custom java package name and objective-c prefix.
Introduce options -javapkg and -prefix for gobind command.

The following generates java class Testpkg with package name com.example.

gobind -lang=java -javapkg=com.example testpkg

The following generates objective-c files where function and type names
are prefixed with ExampleTestpkg.

gobind -lang=objc -prefix=Example testpkg

As discussed in golang/go#9660 and golang/go#12245.

Gomobile support is not yet implemented.

Change-Id: Ib9e39997ce915580a5a2e25643c0c28373f27ee1
Reviewed-on: https://go-review.googlesource.com/13969
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-08-28 13:57:06 +00:00
Hana Kim
979ebcea99 cmd/gomobile: make test pass in windows.
Change-Id: I189524ddf853b9fd0c5510878cfb2cf33b973345
Reviewed-on: https://go-review.googlesource.com/13875
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-08-24 21:39:25 +00:00
David Crawshaw
128f53db6d cmd/gomobile: install common dev packages
I often forget to do this. I can't be the only one.

Change-Id: Ia5dfaa6811242758f996de614f80cb42badf327b
Reviewed-on: https://go-review.googlesource.com/13742
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-08-24 16:01:42 +00:00
Hyang-Ah (Hana) Kim
2a7a6f0949 cmd/gomobile: use the app names as bundle id in ios.
This fixes the bug - all apps built with gomobile build had the same
bundle id (org.golang.todo.main).

As part of this fix, rfc1034Label function is used to sanitize the app
name (in a similar way of 'rfc1034identifier' formatter). We use this
for Android app package name as well.

Change-Id: Iae1985614a55771bf1849fe66180c4ac736497d7
Reviewed-on: https://go-review.googlesource.com/13041
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-08-11 14:39:38 +00:00
Hyang-Ah Hana Kim
18a718a447 cmd/gomobile: fix init test (linux)
Change-Id: I069991176c91e73255a3c92c19bb9f5eff94d681
Reviewed-on: https://go-review.googlesource.com/12980
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-07-31 14:47:41 +00:00
David Crawshaw
405d6233b3 cmd/gomobile: parameterize tests on NumCPU
Builders only have p=4.

Change-Id: I3e5d57579d26cb26f4ce29817a7bbdd8c34ad2ae
Reviewed-on: https://go-review.googlesource.com/12742
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-07-28 13:18:05 +00:00
David Crawshaw
cf7179576b cmd/gomobile: consistent iteration order of paths
This deflakes the TestIOSBuild test, which relies on the iteration
order. While here, use the existing contents to shorten the test
output comparison.

Fixes golang/go#11889

Change-Id: Ib8c9592d07c53a12eee1f40267eaa2074b8d71cc
Reviewed-on: https://go-review.googlesource.com/12679
Reviewed-by: Burcu Dogan <jbd@google.com>
2015-07-27 20:15:51 +00:00
Burcu Dogan
9072a8963f cmd/gomobile: init should honor -u flag
gomobile init should force download the NDK or the OpenAL package
if -u is set. -x should not print `curl` lines if cached archives
are being used.

Change-Id: I82ceb28540c22a0579ba9969bcf11477f1da81fb
Reviewed-on: https://go-review.googlesource.com/12701
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-07-27 19:00:49 +00:00
David Crawshaw
460cd41ce2 cmd/gomobile: fix tests, add -p=8 from cl/12641
Change-Id: I96552800dc8e396592a073283ccf8949b7849439
Reviewed-on: https://go-review.googlesource.com/12677
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-07-25 16:35:55 +00:00
David Crawshaw
bebbf49ba9 cmd/gomobile: consolidate os/exec Run calls
Tested:
	go test golang.org/x/mobile/bind/java
	gomobile bind -target={ios,android} github.com/hyangah/ivy
	gobuild build -target={ios,android} golang.org/x/mobile/example/basic

	(With various takes on -x and -v.)

Change-Id: I15c8f605490381feb6fefb482110f2a1c210529d
Reviewed-on: https://go-review.googlesource.com/12411
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-07-20 17:45:43 +00:00
David Crawshaw
ea6f260cd0 cmd/gomobile: update tests and add bind tests
Change-Id: I9e2fdf179b1e07a8b0d9b612913814768f8284dc
Reviewed-on: https://go-review.googlesource.com/12331
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-07-17 16:18:56 +00:00
David Crawshaw
c8fe70554f cmd/gomobile: use standard env to run Go tool
Now that we no longer modify the user's $GOROOT and run make.bash,
the need for isolating the environment is gone. Pass through
whatever users want, overriding only those necesssary for corss
compilation.

While here, remove some dead code.

Fixes golang/go#11672.

Change-Id: Iaf867913eaa1311519a4d5a7a8169228ebf21346
Reviewed-on: https://go-review.googlesource.com/12128
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-07-14 10:24:28 +00:00
David Crawshaw
e19b161d0d cmd/gomobile: report errors from go install std
While here, make the output of -v easier to read.

Fixes golang/go#11295, golang/go#11296.

Change-Id: I51974a3443bb60a5c0bb77ac784e48987eee8391
Reviewed-on: https://go-review.googlesource.com/11814
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-07-01 05:19:37 +00:00
David Crawshaw
743b9bfd9a cmd/gomobile: simplify init
The Go toolchain used to require that we rebuild the compiler and
friends (the cgo command) when building a cgo-enabled cross compiler.
This meant that gomobile init used to invoke make.bash in a temporary
copy of the GOROOT. This works, but brings with it several
complications, including needing to use -toolexec when invoking the
go tool, finding a boostrap copy of Go 1.4, long initialization
times, and a variety of unusual failure modes.

Fortunately we don't need our own compiler any more. All that's
necessary is building the standard library for the cross-compilation
targets and making sure the right C compiler is used when calling
go build (as it always was). This means most of the initialization
process can be replaced with a carefully invoked 'go install std'.

While here, remove the source install instructions (most of it is
documented already, and the final step, choosing the right git
revision should be within the skills of anyone using pre-release
software.) Some other documentation is changing because it's been a
while since go generate was run.

Change-Id: I88c10fef87867536e83c7df063ae7241b2e9eea4
Reviewed-on: https://go-review.googlesource.com/11711
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-06-29 20:40:46 +00:00
Burcu Dogan
8fff803af0 mobile/cmd/gomobile: install darwin/arm and darwin/arm64 compilers
Change-Id: I16fe8db9ac9e22c7ba9c821b4d8bf858ab28f5f8
Reviewed-on: https://go-review.googlesource.com/11237
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-20 18:09:14 +00:00
David Crawshaw
fb3a660302 cmd/gomobile: fix test broken in cl/11265
Change-Id: Ia431f061fd10aad17b53e2b0ef12fd15eaf8795d
Reviewed-on: https://go-review.googlesource.com/11255
Reviewed-by: Burcu Dogan <jbd@google.com>
2015-06-19 17:38:45 +00:00
David Crawshaw
10a37afdaf cmd/gomobile: add -target flag
Also add a very simple test for gomobile build, some
documentation cleanup, and the -o flag for bind.

Change-Id: I719b92010ba2a5813049827c99502828788611ef
Reviewed-on: https://go-review.googlesource.com/11253
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-06-19 17:31:29 +00:00
David Crawshaw
8f15a83bc0 cmd/gomobile: do not run make.bash with user env
The user may have set GOBIN, in which case the existing go command is
overwritten. I cannot think of any relevant environment variables the
user would set, so the easiest thing is not to use them at all.

While here, fix the unit test I broke in cl/10319.

Change-Id: I8cef353b5a0e4aabae97169ff553b53f7973ff8b
Reviewed-on: https://go-review.googlesource.com/10397
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-05-28 17:26:45 +00:00
David Crawshaw
a7a3501c10 cmd/gomobile: simpler download caching
Instead of trying to preserve the unpacked NDK, this stores the
downloaded archives in GOPATH/pkg/gomobile/dl and completely
rebuilds on reinitialization.

Also introduce checking that the version of Go we are using to do
the build matches the GOROOT we are building from.

Fixes golang/go#10187

Change-Id: I4a861718d8a413855917a5b1f1073e2cd84c9bb1
Reviewed-on: https://go-review.googlesource.com/9685
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-05-07 17:19:57 +00:00
Hyang-Ah (Hana) Kim
1ab6893162 cmd/gomobile: fix init_test.go to pass on windows/darwin.
Change-Id: I03a18267ddd35ce432a394732185dab0283f2da6
Reviewed-on: https://go-review.googlesource.com/9170
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-04-20 21:32:12 +00:00
Hyang-Ah Hana Kim
f0c91fa51b cmd/gomobile: copy old5a to the tool chain.
The app/internal/callfn package requires old5a.

Change-Id: Id0e084dc5c1dd1275d0043412ab9ea0423e7651d
Reviewed-on: https://go-review.googlesource.com/9034
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-04-17 19:43:10 +00:00
Burcu Dogan
269086b6fe cmd/gomobile/init: download the prebuilt OpenAL library
Change-Id: I21ec4bbcce7f1821c5172522fc87c033c1277d35
Reviewed-on: https://go-review.googlesource.com/6860
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-03-06 02:07:52 +00:00
Hyang-Ah Hana Kim
614540a6db cmd/gomobile: 5a is gone.
See https://go-review.googlesource.com/6366

fixes golang/go#10056

Change-Id: If518d69398df0393feadf6b5d8c56da89a201090
Reviewed-on: https://go-review.googlesource.com/6482
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-03-02 20:30:11 +00:00
Hyang-Ah (Hana) Kim
496a9d6d05 cmd/gomobile: Windows support for 'init' command.
Change-Id: Ia9b5f8e076a7ff78a59e38c54e1dbac3f6cb8021
Reviewed-on: https://go-review.googlesource.com/6403
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-03-02 18:02:30 +00:00
Hyang-Ah (Hana) Kim
f13db43649 cmd/gomobile: don't try to copy $GOROOT/include; no longer exists.
golang.org/cl/6361.

Change-Id: Id056efa8de166978e1385e5a683c9d512b33e3cf
Reviewed-on: https://go-review.googlesource.com/6402
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-03-01 16:10:40 +00:00
Hyang-Ah (Hana) Kim
d6c8d03959 cmd/gobind: fix init_test.
$GOROOT instead of $HOME/go.

Change-Id: I6dd22057b58b0ad93ecbc6900a2fec09c41fe019
Reviewed-on: https://go-review.googlesource.com/6160
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-02-26 21:35:13 +00:00
David Crawshaw
6d45c43cd0 cmd/gomobile: check cross compilers are in sync
Fixes golang/go#9907

Change-Id: I34805ab3a71d720d028a9e2064b179fa329a4a5d
Reviewed-on: https://go-review.googlesource.com/5440
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-02-20 16:17:05 +00:00
David Crawshaw
a52f1ea922 cmd/gomobile: init subcommand tests
Compare the output of gomobile init -x -n with what's expected.

Change-Id: Ib797c900b0a4cf1573395f8ffeb9a662a0fd6154
Reviewed-on: https://go-review.googlesource.com/5080
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-02-18 15:07:23 +00:00