mirror of
https://github.com/go-i2p/gomobile-java.git
synced 2025-07-12 19:04:47 -04:00
cmd/gomobile: add support for android/arm64
forked from https://golang.org/cl/20434 - added app/internal/callfn package update. - changed hashes.go because -for some reason- the generated hashes don't match. - build_androidapp.go had to be changed to deal with openal package. Fixes golang/go#10743 Change-Id: Iaa3f55d80c5fd184338d27832dc5c90cb772bd6a Reviewed-on: https://go-review.googlesource.com/20707 Reviewed-by: David Crawshaw <crawshaw@golang.org> Reviewed-by: Elias Naur <elias.naur@gmail.com>
This commit is contained in:
@ -3,7 +3,7 @@
|
|||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build android
|
// +build android
|
||||||
// +build arm 386 amd64
|
// +build arm 386 amd64 arm64
|
||||||
|
|
||||||
// Package callfn provides an android entry point.
|
// Package callfn provides an android entry point.
|
||||||
//
|
//
|
||||||
|
11
app/internal/callfn/callfn_arm64.s
Normal file
11
app/internal/callfn/callfn_arm64.s
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// Copyright 2016 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
#include "textflag.h"
|
||||||
|
#include "funcdata.h"
|
||||||
|
|
||||||
|
TEXT ·CallFn(SB),$0-8
|
||||||
|
MOVD fn+0(FP), R0
|
||||||
|
BL (R0)
|
||||||
|
RET
|
@ -173,6 +173,8 @@ func goAndroidBuild(pkg *build.Package, androidArchs []string) (map[string]bool,
|
|||||||
src := dst
|
src := dst
|
||||||
if arch == "arm" {
|
if arch == "arm" {
|
||||||
src = "lib/armeabi/libopenal.so"
|
src = "lib/armeabi/libopenal.so"
|
||||||
|
} else if arch == "arm64" {
|
||||||
|
src = "lib/arm64/libopenal.so"
|
||||||
}
|
}
|
||||||
if err := apkwWriteFile(dst, filepath.Join(ndk.Root(), "openal/"+src)); err != nil {
|
if err := apkwWriteFile(dst, filepath.Join(ndk.Root(), "openal/"+src)); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -291,6 +291,14 @@ var ndk = ndkConfig{
|
|||||||
toolPrefix: "arm-linux-androideabi",
|
toolPrefix: "arm-linux-androideabi",
|
||||||
minGoVer: go1_5,
|
minGoVer: go1_5,
|
||||||
},
|
},
|
||||||
|
"arm64": {
|
||||||
|
arch: "arm64",
|
||||||
|
abi: "arm64-v8a",
|
||||||
|
platform: "android-21",
|
||||||
|
gcc: "aarch64-linux-android-4.9",
|
||||||
|
toolPrefix: "aarch64-linux-android",
|
||||||
|
minGoVer: go1_6,
|
||||||
|
},
|
||||||
|
|
||||||
"386": {
|
"386": {
|
||||||
arch: "x86",
|
arch: "x86",
|
||||||
|
@ -8,14 +8,14 @@ package main
|
|||||||
|
|
||||||
var fetchHashes = map[string]string{
|
var fetchHashes = map[string]string{
|
||||||
"android-ndk-r10e-darwin-x86_64.bin": "728c309e606f63101f1258c9d3d579b80ac74fe74c511ebb71f460ce5c5d084e",
|
"android-ndk-r10e-darwin-x86_64.bin": "728c309e606f63101f1258c9d3d579b80ac74fe74c511ebb71f460ce5c5d084e",
|
||||||
"gomobile-ndk-r10e-darwin-x86_64.tar.gz": "9185a734b1b3d8dd29f3bc3c55cf03e397414e656345b7ed835879ee8eb76ebb",
|
"gomobile-ndk-r10e-darwin-x86_64.tar.gz": "e8bff8a56f5688ec849a95a4e85130ce02eff5c2d54e361103777c396db8d308",
|
||||||
"android-ndk-r10e-linux-x86.bin": "92b07d25aaad9b341a7f2b2a62402d508e948bf2dea3ee7b65a6aeb18bca7df5",
|
"android-ndk-r10e-linux-x86.bin": "92b07d25aaad9b341a7f2b2a62402d508e948bf2dea3ee7b65a6aeb18bca7df5",
|
||||||
"gomobile-ndk-r10e-linux-x86.tar.gz": "eafb03ba5cf4712673f44a0991579c235774ff185dd846c1c5ecb3527acac22b",
|
"gomobile-ndk-r10e-linux-x86.tar.gz": "4cc1dd2a1bdf4d81618223d6b25a9d5b5673389c5977a7bff85a89a15afd36a2",
|
||||||
"android-ndk-r10e-linux-x86_64.bin": "102d6723f67ff1384330d12c45854315d6452d6510286f4e5891e00a5a8f1d5a",
|
"android-ndk-r10e-linux-x86_64.bin": "102d6723f67ff1384330d12c45854315d6452d6510286f4e5891e00a5a8f1d5a",
|
||||||
"gomobile-ndk-r10e-linux-x86_64.tar.gz": "709d96f5234c224e4b72254fd2e196d0e1486b8d943e972ed98cf14e3ca7bdde",
|
"gomobile-ndk-r10e-linux-x86_64.tar.gz": "bacfed664a7b69b1b693f246ea49a85f04f502bd1ae723351c5345ab5b2ba850",
|
||||||
"android-ndk-r10e-windows-x86.exe": "5378a60a796de75a2d609b76f5c56df7a343511ec36a823bae8c7423591cc8f5",
|
"android-ndk-r10e-windows-x86.exe": "5378a60a796de75a2d609b76f5c56df7a343511ec36a823bae8c7423591cc8f5",
|
||||||
"gomobile-ndk-r10e-windows-x86.tar.gz": "5a2da001af85d2b9baf257c556159dc3e0a92f115d2e3d290894dcd8dfe9552e",
|
"gomobile-ndk-r10e-windows-x86.tar.gz": "4c0d647519a5d254d39a13f8ec85951ca378d8eb8463fdcde5c46490b1f2c382",
|
||||||
"android-ndk-r10e-windows-x86_64.exe": "9bc55ea4b3ad38dcd34157528760e62183b63ebc4a38a6ca478889ff7583d9c1",
|
"android-ndk-r10e-windows-x86_64.exe": "9bc55ea4b3ad38dcd34157528760e62183b63ebc4a38a6ca478889ff7583d9c1",
|
||||||
"gomobile-ndk-r10e-windows-x86_64.tar.gz": "0c964522f25a27192c4facd7264e71e395d1c383b09276cf3617a02e77af3a74",
|
"gomobile-ndk-r10e-windows-x86_64.tar.gz": "582cc90605c8cc026be0d70ccf58d2ec44373f7e855fbb2faee59c2cf2f7121e",
|
||||||
"gomobile-openal-soft-1.16.0.1.tar.gz": "df8492a31030c4a940aa17602ea7ce56eb0759be9235f68fcce4c51150e49881",
|
"gomobile-openal-soft-1.16.0.1.tar.gz": "ff7ff835355a1158001e6b6cc03d3a65abb508abc34a5f19ae9af0bdeadd978b",
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,6 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
// TODO(crawshaw): android/{386,arm64}
|
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"archive/tar"
|
"archive/tar"
|
||||||
"bytes"
|
"bytes"
|
||||||
@ -426,6 +424,25 @@ func fetchNDK() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ndk-r10e arm64 toolchain has a bug in ld.bfd and for aarch64
|
||||||
|
// ld.bfd is the default linker. Workaround by switching the
|
||||||
|
// default to ld.gold.
|
||||||
|
// TODO(hyangah): remove this when using the new version of ndk.
|
||||||
|
if toolchain.arch == "arm64" {
|
||||||
|
ld := filepath.Join(dst, "bin/aarch64-linux-android-ld")
|
||||||
|
ldgold := ld + ".gold"
|
||||||
|
if goos == "windows" {
|
||||||
|
ld += ".exe"
|
||||||
|
ldgold += ".exe"
|
||||||
|
}
|
||||||
|
if err := rm(ld); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := symlink(ldgold, ld); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
linkpath := filepath.Join(dst, toolchain.toolPrefix+"/bin")
|
linkpath := filepath.Join(dst, toolchain.toolPrefix+"/bin")
|
||||||
if err := mkdir(linkpath); err != nil {
|
if err := mkdir(linkpath); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -53,6 +53,7 @@ type target struct {
|
|||||||
|
|
||||||
var targets = []target{
|
var targets = []target{
|
||||||
{"arm", "android-15", "arm-linux-androideabi-4.8", "arm-linux-androideabi"},
|
{"arm", "android-15", "arm-linux-androideabi-4.8", "arm-linux-androideabi"},
|
||||||
|
{"arm64", "android-21", "aarch64-linux-android-4.9", "aarch64-linux-android"},
|
||||||
{"x86", "android-15", "x86-4.8", "i686-linux-android"},
|
{"x86", "android-15", "x86-4.8", "i686-linux-android"},
|
||||||
{"x86_64", "android-21", "x86_64-4.9", "x86_64-linux-android"},
|
{"x86_64", "android-21", "x86_64-4.9", "x86_64-linux-android"},
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user