Skip to content

Commit 7d7f4ee

Browse files
committed
Add support for building android-arm64
The Android support was limited to x64 in the build files. This adds arm64 support. Note that build/pre_build.py argument --android has been replaced with two arguments: --androidx64 --androidarm64
1 parent 0c175a3 commit 7d7f4ee

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

build/cmake_modules/common.cmake

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,16 @@ if(NOT WIN32)
5757
set(CMAKE_C_COMPILER gcc)
5858
set(CMAKE_CXX_COMPILER g++)
5959
endif()
60+
endif()
6061

6162
if(NOT APPLE)
6263
set(GPA_COMMON_LINK_ARCHIVE_FLAG -Wl,--whole-archive)
6364
set(GPA_COMMON_LINK_NO_ARCHIVE_FLAG -Wl,--no-whole-archive)
6465
endif()
65-
add_compile_options(-Wno-unknown-pragmas -Wno-strict-aliasing -Wno-non-virtual-dtor -Wno-unused-value -msse -fvisibility=hidden)
66+
67+
add_compile_options(-Wno-unknown-pragmas -Wno-strict-aliasing -Wno-non-virtual-dtor -Wno-unused-value -fvisibility=hidden)
68+
69+
# Don't add -msse if building for Android ARM. Arg is not relevant for ARM and -Werror,-Wunused-command-line-argument makes that an error
70+
if(NOT ((ANDROID) AND (ANDROID_ABI STREQUAL "arm64-v8a")))
71+
add_compile_options(-msse)
6672
endif()

build/pre_build.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@ def pre_build(build_args):
3333

3434
build_dir_name = "cmake_bld"
3535

36-
if build_args.android == True:
37-
build_dir_name = "cmake_bld_android"
36+
if build_args.androidx64 == True:
37+
build_dir_name = "cmake_bld_android_x64"
38+
elif build_args.androidarm64 == True:
39+
build_dir_name = "cmake_bld_android_arm64"
3840

3941
cmake_additional_args = PreBuildCMakeCommon.parse_cmake_arguments(build_args)
4042

@@ -43,14 +45,13 @@ def pre_build(build_args):
4345
else:
4446
cmake_additional_args.append("-Dbuild=0")
4547

46-
if build_args.android == True:
48+
if build_args.androidx64 == True or build_args.androidarm64 == True:
4749
PreBuildCMakeCommon.cmake_generator_platforms.remove('x86')
4850
android_ndk=os.environ["ANDROID_NDK"]
4951
if android_ndk == "":
5052
print("Android environment variable is not defined. Exiting.")
5153
exit(1)
5254
cmake_additional_args.append("-DBUILD_ANDROID=ON")
53-
cmake_additional_args.append("-DANDROID_ABI=x86_64")
5455
cmake_additional_args.append("-DANDROID_PLATFORM=24")
5556
cmake_additional_args.append("-DANDROID_NATIVE_API_LEVEL=24")
5657
cmake_additional_args.append("-DANDROID_STL=c++_static")
@@ -59,6 +60,11 @@ def pre_build(build_args):
5960
cmake_additional_args.append("-Dskiptests=ON")
6061
cmake_additional_args.append("-Dbuild-32bit=OFF")
6162

63+
if build_args.androidx64 == True:
64+
cmake_additional_args.append("-DANDROID_ABI=x86_64")
65+
elif build_args.androidarm64 == True:
66+
cmake_additional_args.append("-DANDROID_ABI=arm64-v8a")
67+
6268
print(PreBuildCMakeCommon.cmake_generator)
6369
if sys.platform == "win32":
6470
for platform in PreBuildCMakeCommon.cmake_generator_platforms:

0 commit comments

Comments
 (0)