mirror of
https://github.com/go-i2p/gomobile-java.git
synced 2025-07-12 10:55:28 -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.
|
||||
|
||||
// +build android
|
||||
// +build arm 386 amd64
|
||||
// +build arm 386 amd64 arm64
|
||||
|
||||
// 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
|
||||
if arch == "arm" {
|
||||
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 {
|
||||
return nil, err
|
||||
|
@ -291,6 +291,14 @@ var ndk = ndkConfig{
|
||||
toolPrefix: "arm-linux-androideabi",
|
||||
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": {
|
||||
arch: "x86",
|
||||
|
@ -8,14 +8,14 @@ package main
|
||||
|
||||
var fetchHashes = map[string]string{
|
||||
"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",
|
||||
"gomobile-ndk-r10e-linux-x86.tar.gz": "eafb03ba5cf4712673f44a0991579c235774ff185dd846c1c5ecb3527acac22b",
|
||||
"gomobile-ndk-r10e-linux-x86.tar.gz": "4cc1dd2a1bdf4d81618223d6b25a9d5b5673389c5977a7bff85a89a15afd36a2",
|
||||
"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",
|
||||
"gomobile-ndk-r10e-windows-x86.tar.gz": "5a2da001af85d2b9baf257c556159dc3e0a92f115d2e3d290894dcd8dfe9552e",
|
||||
"gomobile-ndk-r10e-windows-x86.tar.gz": "4c0d647519a5d254d39a13f8ec85951ca378d8eb8463fdcde5c46490b1f2c382",
|
||||
"android-ndk-r10e-windows-x86_64.exe": "9bc55ea4b3ad38dcd34157528760e62183b63ebc4a38a6ca478889ff7583d9c1",
|
||||
"gomobile-ndk-r10e-windows-x86_64.tar.gz": "0c964522f25a27192c4facd7264e71e395d1c383b09276cf3617a02e77af3a74",
|
||||
"gomobile-openal-soft-1.16.0.1.tar.gz": "df8492a31030c4a940aa17602ea7ce56eb0759be9235f68fcce4c51150e49881",
|
||||
"gomobile-ndk-r10e-windows-x86_64.tar.gz": "582cc90605c8cc026be0d70ccf58d2ec44373f7e855fbb2faee59c2cf2f7121e",
|
||||
"gomobile-openal-soft-1.16.0.1.tar.gz": "ff7ff835355a1158001e6b6cc03d3a65abb508abc34a5f19ae9af0bdeadd978b",
|
||||
}
|
||||
|
@ -4,8 +4,6 @@
|
||||
|
||||
package main
|
||||
|
||||
// TODO(crawshaw): android/{386,arm64}
|
||||
|
||||
import (
|
||||
"archive/tar"
|
||||
"bytes"
|
||||
@ -426,6 +424,25 @@ func fetchNDK() error {
|
||||
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")
|
||||
if err := mkdir(linkpath); err != nil {
|
||||
return err
|
||||
|
@ -53,6 +53,7 @@ type target struct {
|
||||
|
||||
var targets = []target{
|
||||
{"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_64", "android-21", "x86_64-4.9", "x86_64-linux-android"},
|
||||
}
|
||||
|
Reference in New Issue
Block a user