Merge pull request #3384 from akallabeth/android64_build
Android64 build fixes
This commit is contained in:
commit
89c25276b4
@ -102,9 +102,9 @@ if (FREERDP_EXTERNAL_PATH)
|
||||
endif()
|
||||
|
||||
# Allow to search the host machine for git
|
||||
if(ANDROID OR IOS)
|
||||
if(CMAKE_CROSSCOMPILING)
|
||||
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH)
|
||||
endif(ANDROID OR IOS)
|
||||
endif(CMAKE_CROSSCOMPILING)
|
||||
|
||||
include(GetGitRevisionDescription)
|
||||
git_get_exact_tag(GIT_REVISION --tags --always)
|
||||
@ -112,9 +112,9 @@ git_get_exact_tag(GIT_REVISION --tags --always)
|
||||
if (${GIT_REVISION} STREQUAL "n/a")
|
||||
git_rev_parse (GIT_REVISION --short)
|
||||
endif()
|
||||
if(ANDROID OR IOS)
|
||||
if(CMAKE_CROSSCOMPILING)
|
||||
SET (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
|
||||
endif(ANDROID OR IOS)
|
||||
endif(CMAKE_CROSSCOMPILING)
|
||||
|
||||
message(STATUS "Git Revision ${GIT_REVISION}")
|
||||
|
||||
@ -468,6 +468,8 @@ endif()
|
||||
if(ANDROID)
|
||||
set(WITH_LIBRARY_VERSIONING "OFF")
|
||||
|
||||
set_property( GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS ${ANDROID_LIBRARY_USE_LIB64_PATHS} )
|
||||
|
||||
if (${ANDROID_ABI} STREQUAL "armeabi")
|
||||
set (WITH_NEON OFF)
|
||||
endif()
|
||||
@ -503,12 +505,22 @@ endif()
|
||||
|
||||
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
||||
|
||||
if(NOT IOS AND NOT ANDROID)
|
||||
if(NOT IOS)
|
||||
find_package(Threads REQUIRED)
|
||||
endif()
|
||||
|
||||
if(NOT WIN32)
|
||||
check_library_exists(pthread pthread_mutex_timedlock "" HAVE_PTHREAD_MUTEX_TIMEDLOCK)
|
||||
CHECK_SYMBOL_EXISTS(pthread_mutex_timedlock pthread.h HAVE_PTHREAD_MUTEX_TIMEDLOCK_SYMBOL)
|
||||
if (NOT HAVE_PTHREAD_MUTEX_TIMEDLOCK_SYMBOL)
|
||||
CHECK_LIBRARY_EXISTS(pthread pthread_mutex_timedlock "" HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIB)
|
||||
endif (NOT HAVE_PTHREAD_MUTEX_TIMEDLOCK_SYMBOL)
|
||||
if (NOT HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIB)
|
||||
CHECK_LIBRARY_EXISTS(pthreads pthread_mutex_timedlock "" HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIBS)
|
||||
endif (NOT HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIB)
|
||||
|
||||
if (HAVE_PTHREAD_MUTEX_TIMEDLOCK_SYMBOL OR HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIB OR HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIBS)
|
||||
set(HAVE_PTHREAD_MUTEX_TIMEDLOCK ON)
|
||||
endif (HAVE_PTHREAD_MUTEX_TIMEDLOCK_SYMBOL OR HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIB OR HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIBS)
|
||||
endif()
|
||||
|
||||
if(WITH_VALGRIND_MEMCHECK)
|
||||
|
@ -2,7 +2,7 @@ apply plugin: 'com.android.application'
|
||||
|
||||
android {
|
||||
compileSdkVersion 21
|
||||
buildToolsVersion "23.0.2"
|
||||
buildToolsVersion "24.0.0"
|
||||
|
||||
defaultConfig {
|
||||
applicationId "com.freerdp.afreerdp"
|
||||
|
@ -4,7 +4,7 @@ buildscript {
|
||||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:1.5.0'
|
||||
classpath 'com.android.tools.build:gradle:2.1.2'
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
|
||||
|
||||
android {
|
||||
compileSdkVersion 21
|
||||
buildToolsVersion "23.0.2"
|
||||
buildToolsVersion "24.0.0"
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 14
|
||||
|
@ -1,6 +1,6 @@
|
||||
#Wed Oct 21 11:34:03 PDT 2015
|
||||
#Wed Jul 06 13:01:23 CEST 2016
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -8,10 +8,6 @@
|
||||
if(OPENSLES_INCLUDE_DIR)
|
||||
# Already in cache, be silent
|
||||
set(OPENSLES_FIND_QUIETLY TRUE)
|
||||
elseif(ANDROID)
|
||||
# Android has no pkgconfig - fallback to default paths
|
||||
set(PC_OPENSLES_INCLUDE_DIR "${ANDROID_SYSROOT}/usr/include")
|
||||
set(PC_OPENSLES_LIBDIR "${ANDROID_SYSROOT}/usr/lib" )
|
||||
else()
|
||||
find_package(PkgConfig)
|
||||
pkg_check_modules(PC_OPENSLES QUIET OpenSLES)
|
||||
|
@ -13,8 +13,8 @@ Build requirements
|
||||
For the Android port some additional dependencies need to be fulfilled:
|
||||
|
||||
* for JNI
|
||||
- Android NDK (>= r9)
|
||||
- prebuild openssl (optionally libjpeg and openh264)
|
||||
- CMake >= 3.0
|
||||
- Android NDK (>= r9) (and <= 10e if build with OpenH264)
|
||||
|
||||
* for the Java GUI
|
||||
- Android SDK
|
||||
@ -38,9 +38,9 @@ Currently the default script builds for:
|
||||
* armeabi-v7a
|
||||
* x86
|
||||
* mips
|
||||
|
||||
64 bit architectures will be added as soon as the OpenSSL build scripts
|
||||
support the android build for those.
|
||||
* arm64-v8a
|
||||
* x86_64
|
||||
* mips64
|
||||
|
||||
When the script is finished the libraries are ready for android studio to
|
||||
be picked up in client/Android/Studio/freeRDPCore/src/main/jniLibs
|
||||
|
26
scripts/0001-64bit-architecture-support.patch
Normal file
26
scripts/0001-64bit-architecture-support.patch
Normal file
@ -0,0 +1,26 @@
|
||||
From 6e9a00d9ac02c3b3adc0613798678eadb0c4dae5 Mon Sep 17 00:00:00 2001
|
||||
From: Armin Novak <armin.novak@thincast.com>
|
||||
Date: Thu, 2 Jun 2016 13:55:27 +0200
|
||||
Subject: [PATCH] 64bit architecture support.
|
||||
|
||||
---
|
||||
Configure | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/Configure b/Configure
|
||||
index c98107a..fa20eca 100755
|
||||
--- a/Configure
|
||||
+++ b/Configure
|
||||
@@ -473,6 +473,9 @@ my %table=(
|
||||
"android-x86","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:".eval{my $asm=${x86_elf_asm};$asm=~s/:elf/:android/;$asm}.":dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"android-armv7","gcc:-march=armv7-a -mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"android-mips","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
+"android64", "gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib64 -m64 -DL_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:android:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
|
||||
+"android64-aarch64","gcc:-march=armv8-a -mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${aarch64_asm}:linux64:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
+"android64-mips64","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib64 -mabi=64 -O3 -Wall -DBN_DIV3W::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC:-mabi=64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
|
||||
|
||||
#### *BSD [do see comment about ${BSDthreads} above!]
|
||||
"BSD-generic32","gcc:-O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
--
|
||||
2.1.4
|
||||
|
@ -45,6 +45,7 @@ function build {
|
||||
BASE=$(pwd)
|
||||
DST_DIR=$BUILD_DST/$DST_PREFIX
|
||||
common_run cd $BUILD_SRC
|
||||
common_run git am $(dirname "${BASH_SOURCE[0]}")/0001-64bit-architecture-support.patch
|
||||
common_run git clean -xdf
|
||||
common_run ./Configure --openssldir=$DST_DIR $CONFIG shared
|
||||
common_run make CALC_VERSIONS="SHLIB_COMPAT=; SHLIB_SOVER=" depend
|
||||
@ -84,10 +85,8 @@ do
|
||||
$ARCH "mipsel-linux-android-" "arch-mips"
|
||||
;;
|
||||
"mips64")
|
||||
echo "[WARNING] Skipping unsupported architecture $ARCH"
|
||||
continue
|
||||
build "android-mips" "mipsel-linux-android-" \
|
||||
$ARCH "mipsel-linux-android-" "arch-mips"
|
||||
build "android64-mips64" "mips64el-linux-android-" \
|
||||
$ARCH "mips64el-linux-android-" "arch-mips64"
|
||||
;;
|
||||
"x86")
|
||||
build "android-x86" "i686-linux-android-" \
|
||||
|
@ -1,18 +1,26 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Android build confguration
|
||||
#
|
||||
# Note: This is a simple configuration to build all
|
||||
# architectures in one rush.
|
||||
# Since android 64 bit support was introduced with NDK API 21
|
||||
# this is the minimal common denominator.
|
||||
# If you require support for older NDK API levels,
|
||||
# create seperate configurations for each NDK API level
|
||||
# and architecture you want to support.
|
||||
SCRIPT_PATH=$(dirname "${BASH_SOURCE[0]}")
|
||||
SCRIPT_PATH=$(realpath "$SCRIPT_PATH")
|
||||
|
||||
WITH_JPEG=0
|
||||
WITH_OPENH264=1
|
||||
WITH_OPENH264=0
|
||||
WITH_OPENSSL=1
|
||||
BUILD_DEPS=1
|
||||
ANDROID_NATIVE_API_LEVEL=android-12
|
||||
ANDROID_NATIVE_API_LEVEL=android-21
|
||||
|
||||
JPEG_TAG=master
|
||||
OPENH264_TAG=v1.5.0
|
||||
OPENSSL_TAG=OpenSSL_1_0_2g
|
||||
OPENSSL_TAG=OpenSSL_1_0_2h
|
||||
|
||||
SRC_DIR=$SCRIPT_PATH/..
|
||||
BUILD_DST=$SCRIPT_PATH/../client/Android/Studio/freeRDPCore/src/main/jniLibs
|
||||
@ -20,4 +28,4 @@ BUILD_SRC=$SRC_DIR/build
|
||||
|
||||
CMAKE_BUILD_TYPE=Debug
|
||||
|
||||
BUILD_ARCH="armeabi armeabi-v7a x86"
|
||||
BUILD_ARCH="armeabi armeabi-v7a x86 mips arm64-v8a x86_64 mips64"
|
||||
|
@ -70,7 +70,7 @@ if(FREERDP_BUILD)
|
||||
else()
|
||||
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
||||
|
||||
if(NOT IOS AND NOT ANDROID)
|
||||
if(NOT IOS)
|
||||
find_package(Threads REQUIRED)
|
||||
endif()
|
||||
|
||||
@ -99,7 +99,17 @@ else()
|
||||
endif()
|
||||
|
||||
if(NOT WIN32)
|
||||
check_library_exists(pthread pthread_mutex_timedlock "" HAVE_PTHREAD_MUTEX_TIMEDLOCK)
|
||||
CHECK_SYMBOL_EXISTS(pthread_mutex_timedlock pthread.h HAVE_PTHREAD_MUTEX_TIMEDLOCK_SYMBOL)
|
||||
if (NOT HAVE_PTHREAD_MUTEX_TIMEDLOCK_SYMBOL)
|
||||
CHECK_LIBRARY_EXISTS(pthread pthread_mutex_timedlock "" HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIB)
|
||||
endif (NOT HAVE_PTHREAD_MUTEX_TIMEDLOCK_SYMBOL)
|
||||
if (NOT HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIB)
|
||||
CHECK_LIBRARY_EXISTS(pthreads pthread_mutex_timedlock "" HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIBS)
|
||||
endif (NOT HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIB)
|
||||
|
||||
if (HAVE_PTHREAD_MUTEX_TIMEDLOCK_SYMBOL OR HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIB OR HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIBS)
|
||||
set(HAVE_PTHREAD_MUTEX_TIMEDLOCK ON)
|
||||
endif (HAVE_PTHREAD_MUTEX_TIMEDLOCK_SYMBOL OR HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIB OR HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIBS)
|
||||
endif()
|
||||
|
||||
set(OPENSSL_FEATURE_TYPE "OPTIONAL")
|
||||
|
Loading…
Reference in New Issue
Block a user