diff options
author | Aleix Pol <aleixpol@kde.org> | 2018-06-29 19:43:29 +0200 |
---|---|---|
committer | Aleix Pol <aleixpol@kde.org> | 2018-07-04 17:04:12 +0200 |
commit | d6cc583f32a4ca0f05ccad8e30cf84b74e9e9561 (patch) | |
tree | cd142890b4c7eb49e1fb2170109410cffd9106c1 | |
parent | 484d5f4ceea2b8d23c9a0d35f16077f7cabfbd27 (diff) | |
download | extra-cmake-modules-5.48.0-rc1.tar.gz extra-cmake-modules-5.48.0-rc1.tar.bz2 |
Android: Make it possible to override a target's APK directoryv5.48.0-rc1v5.48.0
Summary:
Some projects such as marble do some operations with the APK directory
before building. This allows us the project to copy the apk directory
over to the build directory and do whatever it pleases.
Test Plan: Built Marble
Reviewers: #frameworks, vkrause
Reviewed By: vkrause
Subscribers: vkrause, kde-frameworks-devel, kde-buildsystem
Tags: #frameworks, #build_system
Differential Revision: https://phabricator.kde.org/D13403
-rw-r--r-- | toolchain/Android.cmake | 11 | ||||
-rw-r--r-- | toolchain/ECMAndroidDeployQt.cmake | 15 | ||||
-rw-r--r-- | toolchain/deployment-file.json.in | 2 |
3 files changed, 17 insertions, 11 deletions
diff --git a/toolchain/Android.cmake b/toolchain/Android.cmake index 30d82a66..ab0fbcc0 100644 --- a/toolchain/Android.cmake +++ b/toolchain/Android.cmake @@ -108,6 +108,10 @@ # # make create-apk-myapp ARGS="--sign ~/my.keystore alias_name" # +# In case it's needed for your application to set the APK directory from cmake +# scripting you can also set the directory as the ANDROID_APK_DIR property of +# the create-apk-myapp target. +# # See Android documentation on how to create a keystore to use # ============================================================================= @@ -198,8 +202,13 @@ if(DEFINED QTANDROID_EXPORTED_TARGET AND NOT TARGET "create-apk") list(GET ANDROID_APK_DIR ${idx} APK_DIR) if(APK_DIR AND NOT EXISTS "${APK_DIR}/AndroidManifest.xml") message(FATAL_ERROR "Cannot find ${APK_DIR}/AndroidManifest.xml according to ANDROID_APK_DIR. ${ANDROID_APK_DIR} ${exportedTarget}") + elseif(NOT APK_DIR) + get_filename_component(_qt5Core_install_prefix "${Qt5Core_DIR}/../../../" ABSOLUTE) + set(ANDROID_APK_DIR "${_qt5Core_install_prefix}/src/android/templates/") endif() - ecm_androiddeployqt("${exportedTarget}" "${ECM_ADDITIONAL_FIND_ROOT_PATH}" "${APK_DIR}") + + ecm_androiddeployqt("${exportedTarget}" "${ECM_ADDITIONAL_FIND_ROOT_PATH}") + set_target_properties(create-apk-${exportedTarget} PROPERTIES ANDROID_APK_DIR "${APK_DIR}") endforeach() else() message(STATUS "You can export a target by specifying -DQTANDROID_EXPORTED_TARGET=<targetname> and -DANDROID_APK_DIR=<paths>") diff --git a/toolchain/ECMAndroidDeployQt.cmake b/toolchain/ECMAndroidDeployQt.cmake index f3e960cd..53b7d626 100644 --- a/toolchain/ECMAndroidDeployQt.cmake +++ b/toolchain/ECMAndroidDeployQt.cmake @@ -1,11 +1,6 @@ find_package(Qt5Core REQUIRED) -function(ecm_androiddeployqt QTANDROID_EXPORTED_TARGET ECM_ADDITIONAL_FIND_ROOT_PATH ANDROID_APK_DIR) - get_filename_component(_qt5Core_install_prefix "${Qt5Core_DIR}/../../../" ABSOLUTE) - if(NOT ANDROID_APK_DIR) - set(ANDROID_APK_DIR "${_qt5Core_install_prefix}/src/android/templates/") - endif() - +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") set(QML_IMPORT_PATHS "") @@ -33,7 +28,9 @@ function(ecm_androiddeployqt QTANDROID_EXPORTED_TARGET ECM_ADDITIONAL_FIND_ROOT_ endif() endforeach() string(TOLOWER "${CMAKE_HOST_SYSTEM_NAME}" _LOWER_CMAKE_HOST_SYSTEM_NAME) - configure_file("${_CMAKE_ANDROID_DIR}/deployment-file.json.in" "${QTANDROID_EXPORTED_TARGET}-deployment.json.in") + configure_file("${_CMAKE_ANDROID_DIR}/deployment-file.json.in" "${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") if (CMAKE_GENERATOR STREQUAL "Unix Makefiles") set(arguments "\\$(ARGS)") @@ -54,10 +51,10 @@ function(ecm_androiddeployqt QTANDROID_EXPORTED_TARGET ECM_ADDITIONAL_FIND_ROOT_ add_custom_target(${CREATEAPK_TARGET_NAME} COMMAND cmake -E echo "Generating $<TARGET_NAME:${QTANDROID_EXPORTED_TARGET}> with $<TARGET_FILE_DIR:Qt5::qmake>/androiddeployqt" COMMAND cmake -E remove_directory "${EXPORT_DIR}" - COMMAND cmake -E copy_directory "${ANDROID_APK_DIR}" "${EXPORT_DIR}" + COMMAND cmake -E copy_directory "$<TARGET_PROPERTY:create-apk-${QTANDROID_EXPORTED_TARGET},ANDROID_APK_DIR>" "${EXPORT_DIR}" COMMAND cmake -E copy "$<TARGET_FILE:${QTANDROID_EXPORTED_TARGET}>" "${EXECUTABLE_DESTINATION_PATH}" COMMAND LANG=C cmake "-DTARGET=$<TARGET_FILE:${QTANDROID_EXPORTED_TARGET}>" -P ${_CMAKE_ANDROID_DIR}/hasMainSymbol.cmake - COMMAND LANG=C cmake -DINPUT_FILE="${QTANDROID_EXPORTED_TARGET}-deployment.json.in" -DOUTPUT_FILE="${QTANDROID_EXPORTED_TARGET}-deployment.json" "-DTARGET=$<TARGET_FILE:${QTANDROID_EXPORTED_TARGET}>" "-DOUTPUT_DIR=$<TARGET_FILE_DIR:${QTANDROID_EXPORTED_TARGET}>" "-DEXPORT_DIR=${CMAKE_INSTALL_PREFIX}" "-DECM_ADDITIONAL_FIND_ROOT_PATH=\"${ECM_ADDITIONAL_FIND_ROOT_PATH}\"" "-DANDROID_EXTRA_LIBS=\"${ANDROID_EXTRA_LIBS}\"" -P ${_CMAKE_ANDROID_DIR}/specifydependencies.cmake + COMMAND LANG=C cmake -DINPUT_FILE="${QTANDROID_EXPORTED_TARGET}-deployment.json.in2" -DOUTPUT_FILE="${QTANDROID_EXPORTED_TARGET}-deployment.json" "-DTARGET=$<TARGET_FILE:${QTANDROID_EXPORTED_TARGET}>" "-DOUTPUT_DIR=$<TARGET_FILE_DIR:${QTANDROID_EXPORTED_TARGET}>" "-DEXPORT_DIR=${CMAKE_INSTALL_PREFIX}" "-DECM_ADDITIONAL_FIND_ROOT_PATH=\"${ECM_ADDITIONAL_FIND_ROOT_PATH}\"" "-DANDROID_EXTRA_LIBS=\"${ANDROID_EXTRA_LIBS}\"" -P ${_CMAKE_ANDROID_DIR}/specifydependencies.cmake COMMAND $<TARGET_FILE_DIR:Qt5::qmake>/androiddeployqt --gradle --input "${QTANDROID_EXPORTED_TARGET}-deployment.json" --output "${EXPORT_DIR}" --deployment bundled ${arguments} ) diff --git a/toolchain/deployment-file.json.in b/toolchain/deployment-file.json.in index 6bb086ba..2b9b44f1 100644 --- a/toolchain/deployment-file.json.in +++ b/toolchain/deployment-file.json.in @@ -12,7 +12,7 @@ @DEFINE_QML_IMPORT_PATHS@ ##EXTRALIBS## ##EXTRAPLUGINS## - "android-package-source-directory": "@ANDROID_APK_DIR@", + "android-package-source-directory": "$<TARGET_PROPERTY:create-apk-${QTANDROID_EXPORTED_TARGET},ANDROID_APK_DIR>", "stdcpp-path":##CMAKE_CXX_STANDARD_LIBRARIES##, "sdkBuildToolsRevision": "@ANDROID_SDK_BUILD_TOOLS_REVISION@", "extraPrefixDirs": [ @EXTRA_PREFIX_DIRS@ ] |