841b4c1a3a
Also Use ANDROID_APP_TARGET_SDK for application compatibility project. It is now automatically set/updated during build. Note: The ANDROID_APP_TARGET_SDK version need to be larger or equal to the version required by the used Android support library (appcompat).
83 lines
3.2 KiB
CMake
83 lines
3.2 KiB
CMake
# FreeRDP: A Remote Desktop Protocol Implementation
|
|
# Android Client
|
|
#
|
|
# Copyright 2013 Bernhard Miklautz <bernhard.miklautz@thincast.com>
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
if (NOT ANDROID_NDK)
|
|
message(FATAL_ERROR "ANDROID_NDK not set but required for building android native library.")
|
|
endif()
|
|
|
|
set(CMAKE_PROGRAM_PATH ${ANDROID_NDK})
|
|
find_program(NDK_COMMAND ndk-build CMAKE_FIND_ROOT_PATH_BOTH)
|
|
|
|
if(NDK_COMMAND STREQUAL "NDK_COMMAND-NOTFOUND")
|
|
message(FATAL_ERROR "ndk-build not found but required to build native lib")
|
|
endif()
|
|
|
|
set(NDK_LIB_CFG "${CMAKE_CURRENT_BINARY_DIR}/FreeRDPCore/jni/Android.mk")
|
|
if(ANDROID_BUILD_JAVA)
|
|
if (NOT ANDROID_SDK)
|
|
message(FATAL_ERROR "ANDROID_SDK not set but required for building the java gui (ANDROID_BUILD_JAVA)")
|
|
endif()
|
|
# And isn't shiped with the android ndk/sdk so
|
|
# we need to find it on the local machine
|
|
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH)
|
|
find_program(ANT_COMMAND ant)
|
|
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
|
|
|
|
if(ANT_COMMAND STREQUAL "ANT_COMMAND-NOTFOUND")
|
|
message(FATAL_ERROR "ant not found but required to build android java")
|
|
endif()
|
|
endif(ANDROID_BUILD_JAVA)
|
|
|
|
set(ANDROID_COMMAND "${ANDROID_SDK}/tools/android")
|
|
if(NOT EXISTS ${ANDROID_COMMAND})
|
|
message(FATAL_ERROR "android not found but required to build android java")
|
|
endif()
|
|
|
|
if(ANDROID_BUILD_JAVA_DEBUG)
|
|
set(ANDROID_BUILD_TYPE "debug")
|
|
else()
|
|
set(ANDROID_BUILD_TYPE "release")
|
|
endif()
|
|
|
|
if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
|
|
set(ANDROID_DEBUG_ENABLE "true")
|
|
set(NDK_DEBUG "1")
|
|
else()
|
|
set(ANDROID_DEBUG_ENABLE "false")
|
|
set(NDK_DEBUG "0")
|
|
endif()
|
|
|
|
set(APPCOMPAT_DIR "${CMAKE_CURRENT_BINARY_DIR}/appcompat_v7")
|
|
set(supportdir "${ANDROID_SDK}/extras/android/support/v7/appcompat")
|
|
set(compatibilitydir "${ANDROID_SDK}/extras/android/compatibility/v7/appcompat")
|
|
if(EXISTS "${supportdir}" AND IS_DIRECTORY "${supportdir}")
|
|
add_custom_target(copy_appcompat ALL
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory "${supportdir}" ${APPCOMPAT_DIR}
|
|
COMMAND ${ANDROID_COMMAND} update lib-project -p ${APPCOMPAT_DIR} -t android-${ANDROID_APP_TARGET_SDK}
|
|
)
|
|
elseif(EXISTS "${compatibilitydir}" AND IS_DIRECTORY "${compatibilitydir}")
|
|
add_custom_target(copy_appcompat ALL
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory "${compatibilitydir}" ${APPCOMPAT_DIR}
|
|
COMMAND ${ANDROID_COMMAND} update lib-project -p ${APPCOMPAT_DIR} -t android-${ANDROID_APP_TARGET_SDK}
|
|
)
|
|
else()
|
|
message( FATAL_ERROR "${ANDROID_SDK}/extras/android/{support|compatibility}/v7/appcompat directory not found. Please install a recent version of Android Support Library, CMake will now exit." )
|
|
endif()
|
|
|
|
add_subdirectory(FreeRDPCore)
|
|
add_subdirectory(aFreeRDP)
|