diff options
| -rw-r--r-- | toolchain/Android.cmake | 20 | ||||
| -rw-r--r-- | toolchain/ECMAndroidDeployQt.cmake | 14 | ||||
| -rw-r--r-- | toolchain/deployment-file-qt514.json.in | 18 | 
3 files changed, 43 insertions, 9 deletions
| diff --git a/toolchain/Android.cmake b/toolchain/Android.cmake index 5c27db29..63b40e70 100644 --- a/toolchain/Android.cmake +++ b/toolchain/Android.cmake @@ -167,18 +167,24 @@ if (NOT CMAKE_ANDROID_STL_TYPE)      set(CMAKE_ANDROID_STL_TYPE c++_shared)  endif() -include(${CMAKE_ROOT}/Modules/Platform/Android-Clang.cmake REQUIRED) -include(${CMAKE_ROOT}/Modules/Platform/Android-Initialize.cmake REQUIRED) +# let the Android NDK toolchain file do the actual work +set(ANDROID_PLATFORM "android-${CMAKE_ANDROID_API}") +set(ANDROID_STL ${CMAKE_ANDROID_STL_TYPE}) +include(${CMAKE_ANDROID_NDK}/build/cmake/android.toolchain.cmake REQUIRED) + +# these aren't set yet at this point by the Android toolchain, but without +# those the find_package() call in ECMAndroidDeployQt will fail +set(CMAKE_FIND_LIBRARY_PREFIXES "lib") +set(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".a") + +# determine STL architecture, which is using a different format than ANDROID_ARCH_ABI +string(REGEX REPLACE "-(clang)?([0-9].[0-9])?$" "" ECM_ANDROID_STL_ARCH ${ANDROID_TOOLCHAIN_NAME})  if (NOT DEFINED ECM_ADDITIONAL_FIND_ROOT_PATH)      SET(ECM_ADDITIONAL_FIND_ROOT_PATH ${CMAKE_PREFIX_PATH})  endif() -SET(CMAKE_FIND_ROOT_PATH ${CMAKE_ANDROID_NDK} ${CMAKE_ANDROID_NDK}/sysroot ${CMAKE_SYSROOT} ${ECM_ADDITIONAL_FIND_ROOT_PATH}) -SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) +LIST(APPEND CMAKE_FIND_ROOT_PATH ${ECM_ADDITIONAL_FIND_ROOT_PATH})  #we want executables to be shared libraries, hooks will invoke the exported cmake function  set(CMAKE_CXX_LINK_EXECUTABLE diff --git a/toolchain/ECMAndroidDeployQt.cmake b/toolchain/ECMAndroidDeployQt.cmake index e565fac4..1121dbfd 100644 --- a/toolchain/ECMAndroidDeployQt.cmake +++ b/toolchain/ECMAndroidDeployQt.cmake @@ -3,7 +3,11 @@ find_package(Qt5Core REQUIRED)  function(ecm_androiddeployqt QTANDROID_EXPORTED_TARGET ECM_ADDITIONAL_FIND_ROOT_PATH)      set(EXPORT_DIR "${CMAKE_BINARY_DIR}/${QTANDROID_EXPORTED_TARGET}_build_apk/") -    set(EXECUTABLE_DESTINATION_PATH "${EXPORT_DIR}/libs/${CMAKE_ANDROID_ARCH_ABI}/lib${QTANDROID_EXPORTED_TARGET}.so") +    if (Qt5Core_VERSION VERSION_LESS 5.14.0) +        set(EXECUTABLE_DESTINATION_PATH "${EXPORT_DIR}/libs/${CMAKE_ANDROID_ARCH_ABI}/lib${QTANDROID_EXPORTED_TARGET}.so") +    else() +        set(EXECUTABLE_DESTINATION_PATH "${EXPORT_DIR}/libs/${CMAKE_ANDROID_ARCH_ABI}/lib${QTANDROID_EXPORTED_TARGET}_${CMAKE_ANDROID_ARCH_ABI}.so") +    endif()      set(QML_IMPORT_PATHS "")      foreach(prefix ${ECM_ADDITIONAL_FIND_ROOT_PATH})          # qmlimportscanner chokes on symlinks, so we need to resolve those first @@ -28,8 +32,14 @@ function(ecm_androiddeployqt QTANDROID_EXPORTED_TARGET ECM_ADDITIONAL_FIND_ROOT_              set(EXTRA_PREFIX_DIRS "\"${prefix}\"")          endif()      endforeach() + +    if (Qt5Core_VERSION VERSION_LESS 5.14.0) +        set(_deployment_file_template "${_CMAKE_ANDROID_DIR}/deployment-file.json.in") +    else() +        set(_deployment_file_template "${_CMAKE_ANDROID_DIR}/deployment-file-qt514.json.in") +    endif()      string(TOLOWER "${CMAKE_HOST_SYSTEM_NAME}" _LOWER_CMAKE_HOST_SYSTEM_NAME) -    configure_file("${_CMAKE_ANDROID_DIR}/deployment-file.json.in" "${CMAKE_BINARY_DIR}/${QTANDROID_EXPORTED_TARGET}-deployment.json.in1") +    configure_file("${_deployment_file_template}" "${CMAKE_BINARY_DIR}/${QTANDROID_EXPORTED_TARGET}-deployment.json.in1")      file(GENERATE OUTPUT "${CMAKE_BINARY_DIR}/${QTANDROID_EXPORTED_TARGET}-deployment.json.in2"                    INPUT  "${CMAKE_BINARY_DIR}/${QTANDROID_EXPORTED_TARGET}-deployment.json.in1") diff --git a/toolchain/deployment-file-qt514.json.in b/toolchain/deployment-file-qt514.json.in new file mode 100644 index 00000000..ac069c4d --- /dev/null +++ b/toolchain/deployment-file-qt514.json.in @@ -0,0 +1,18 @@ +{ +   "qt": "@_qt5Core_install_prefix@", +   "sdk": "@ANDROID_SDK_ROOT@", +   "ndk": "@CMAKE_ANDROID_NDK@", +   "toolchain-prefix": "llvm", +   "tool-prefix": "llvm", +   "ndk-host": "@_LOWER_CMAKE_HOST_SYSTEM_NAME@-@CMAKE_HOST_SYSTEM_PROCESSOR@", +   "application-binary": "@QTANDROID_EXPORTED_TARGET@", +   "qml-root-path": "@CMAKE_SOURCE_DIR@", +   @DEFINE_QML_IMPORT_PATHS@ +   ##EXTRALIBS## +   ##EXTRAPLUGINS## +   "android-package-source-directory": "$<TARGET_PROPERTY:create-apk-${QTANDROID_EXPORTED_TARGET},ANDROID_APK_DIR>", +   "stdcpp-path": "@CMAKE_SYSROOT@/usr/lib", +   "sdkBuildToolsRevision": "@ANDROID_SDK_BUILD_TOOLS_REVISION@", +   "extraPrefixDirs": [ @EXTRA_PREFIX_DIRS@ ], +   "architectures": { "@CMAKE_ANDROID_ARCH_ABI@": "@ECM_ANDROID_STL_ARCH@" } +} | 
