Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
godot
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
community
godot
Commits
7f4ee364
Commit
7f4ee364
authored
Jan 16, 2019
by
Rémi Verschelde
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Android: Add support for x86_64 architecture
Like arm64v8, this is only supported by API 21 and later, so we enforce 21 as min API for x86_64. Part of #25030.
parent
f0893235
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
21 additions
and
7 deletions
+21
-7
SCsub
modules/webm/libvpx/SCsub
+2
-2
SCsub
platform/android/SCsub
+2
-0
detect.py
platform/android/detect.py
+15
-2
export.cpp
platform/android/export/export.cpp
+2
-3
No files found.
modules/webm/libvpx/SCsub
View file @
7f4ee364
...
...
@@ -272,9 +272,9 @@ else:
import
platform
is_x11_or_server_arm
=
((
env
[
"platform"
]
==
'x11'
or
env
[
"platform"
]
==
'server'
)
and
(
platform
.
machine
()
.
startswith
(
'arm'
)
or
platform
.
machine
()
.
startswith
(
'aarch'
)))
is_ios_x86
=
(
env
[
"platform"
]
==
'iphone'
and
(
"arch"
in
env
and
env
[
"arch"
]
.
startswith
(
'x86'
)))
is_android_x86
=
(
env
[
"platform"
]
==
'android'
and
env
[
"android_arch"
]
==
'x86'
)
is_android_x86
=
(
env
[
"platform"
]
==
'android'
and
env
[
"android_arch"
]
.
startswith
(
'x86'
)
)
if
is_android_x86
:
cpu_bits
=
'32'
cpu_bits
=
'32'
if
env
[
"android_arch"
]
==
'x86'
else
'64'
webm_cpu_x86
=
not
is_x11_or_server_arm
and
(
cpu_bits
==
'32'
or
cpu_bits
==
'64'
)
and
(
env
[
"platform"
]
==
'windows'
or
env
[
"platform"
]
==
'x11'
or
env
[
"platform"
]
==
'osx'
or
env
[
"platform"
]
==
'haiku'
or
is_android_x86
or
is_ios_x86
)
webm_cpu_arm
=
is_x11_or_server_arm
or
(
not
is_ios_x86
and
env
[
"platform"
]
==
'iphone'
)
or
(
not
is_android_x86
and
env
[
"platform"
]
==
'android'
)
...
...
platform/android/SCsub
View file @
7f4ee364
...
...
@@ -152,6 +152,8 @@ elif env['android_arch'] == 'arm64v8':
lib_arch_dir
=
'arm64-v8a'
elif
env
[
'android_arch'
]
==
'x86'
:
lib_arch_dir
=
'x86'
elif
env
[
'android_arch'
]
==
'x86_64'
:
lib_arch_dir
=
'x86_64'
else
:
print
(
'WARN: Architecture not suitable for embedding into APK; keeping .so at
\\
bin'
)
...
...
platform/android/detect.py
View file @
7f4ee364
...
...
@@ -27,7 +27,7 @@ def get_opts():
return
[
(
'ANDROID_NDK_ROOT'
,
'Path to the Android NDK'
,
os
.
environ
.
get
(
"ANDROID_NDK_ROOT"
,
0
)),
(
'ndk_platform'
,
'Target platform (android-<api>, e.g. "android-18")'
,
"android-18"
),
EnumVariable
(
'android_arch'
,
'Target architecture'
,
"armv7"
,
(
'armv7'
,
'armv6'
,
'arm64v8'
,
'x86'
)),
EnumVariable
(
'android_arch'
,
'Target architecture'
,
"armv7"
,
(
'armv7'
,
'armv6'
,
'arm64v8'
,
'x86'
,
'x86_64'
)),
BoolVariable
(
'android_neon'
,
'Enable NEON support (armv7 only)'
,
True
),
BoolVariable
(
'android_stl'
,
'Enable Android STL support (for modules)'
,
True
)
]
...
...
@@ -94,7 +94,7 @@ def configure(env):
## Architecture
if
env
[
'android_arch'
]
not
in
[
'armv7'
,
'armv6'
,
'arm64v8'
,
'x86'
]:
if
env
[
'android_arch'
]
not
in
[
'armv7'
,
'armv6'
,
'arm64v8'
,
'x86'
,
'x86_64'
]:
env
[
'android_arch'
]
=
'armv7'
neon_text
=
""
...
...
@@ -110,6 +110,16 @@ def configure(env):
abi_subpath
=
"i686-linux-android"
arch_subpath
=
"x86"
env
[
"x86_libtheora_opt_gcc"
]
=
True
if
env
[
'android_arch'
]
==
'x86_64'
:
if
get_platform
(
env
[
"ndk_platform"
])
<
21
:
print
(
"WARNING: android_arch=x86_64 is not supported by ndk_platform lower than android-21; setting ndk_platform=android-21"
)
env
[
"ndk_platform"
]
=
"android-21"
env
[
'ARCH'
]
=
'arch-x86_64'
env
.
extra_suffix
=
".x86_64"
+
env
.
extra_suffix
target_subpath
=
"x86_64-4.9"
abi_subpath
=
"x86_64-linux-android"
arch_subpath
=
"x86_64"
env
[
"x86_libtheora_opt_gcc"
]
=
True
elif
env
[
'android_arch'
]
==
'armv6'
:
env
[
'ARCH'
]
=
'arch-arm'
env
.
extra_suffix
=
".armv6"
+
env
.
extra_suffix
...
...
@@ -233,6 +243,9 @@ def configure(env):
# The NDK adds this if targeting API < 21, so we can drop it when Godot targets it at least
env
.
Append
(
CPPFLAGS
=
[
'-mstackrealign'
])
elif
env
[
'android_arch'
]
==
'x86_64'
:
target_opts
=
[
'-target'
,
'x86_64-none-linux-android'
]
elif
env
[
"android_arch"
]
==
"armv6"
:
target_opts
=
[
'-target'
,
'armv6-none-linux-androideabi'
]
env
.
Append
(
CPPFLAGS
=
'-D__ARM_ARCH_6__ -march=armv6 -mfpu=vfp -mfloat-abi=softfp'
.
split
())
...
...
platform/android/export/export.cpp
View file @
7f4ee364
...
...
@@ -552,14 +552,13 @@ class EditorExportAndroid : public EditorExportPlatform {
static
Vector
<
String
>
get_abis
()
{
Vector
<
String
>
abis
;
// We can still build armv
7
in theory, but it doesn't make much
// We can still build armv
6
in theory, but it doesn't make much
// sense for games, so disabling for now.
//abis.push_back("armeabi");
abis
.
push_back
(
"armeabi-v7a"
);
abis
.
push_back
(
"arm64-v8a"
);
abis
.
push_back
(
"x86"
);
// Don't expose x86_64 for now, we don't support it in detect.py
//abis.push_back("x86_64");
abis
.
push_back
(
"x86_64"
);
return
abis
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment