aboutsummaryrefslogtreecommitdiff
path: root/toolchain
diff options
context:
space:
mode:
Diffstat (limited to 'toolchain')
-rw-r--r--toolchain/Android.cmake20
-rw-r--r--toolchain/ECMAndroidDeployQt.cmake14
-rw-r--r--toolchain/deployment-file-qt514.json.in18
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@" }
+}