Warning, /frameworks/extra-cmake-modules/find-modules/FindGradle.cmake is written in an unsupported language. File is not indexed.
0001 # SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org> 0002 # 0003 # SPDX-License-Identifier: BSD-3-Clause 0004 0005 #[=======================================================================[.rst: 0006 FindGradle 0007 ---------- 0008 0009 Provides the ability to build Android AAR libraries using Gradle. 0010 0011 This relies on the Qt provided Gradle, so a Qt for Android installation 0012 is required. 0013 :: 0014 0015 gradle_add_aar(<target> 0016 BUIDLFILE build.gradle 0017 NAME <aar-name>) 0018 0019 This builds an Android AAR library using the given ``build.gradle`` file. 0020 :: 0021 0022 gradle_install_aar(<target> 0023 DESTINATION <dest>) 0024 0025 Installs a Android AAR library that has been created with ``gradle_add_aar``. 0026 0027 Since 5.76.0. 0028 #]=======================================================================] 0029 0030 include(${CMAKE_CURRENT_LIST_DIR}/../modules/QtVersionOption.cmake) 0031 include(FindPackageHandleStandardArgs) 0032 0033 find_package(Qt${QT_MAJOR_VERSION}Core REQUIRED) 0034 0035 set (Gradle_PRECOMMAND "") 0036 if (NOT WIN32) 0037 set(Gradle_EXECUTABLE ${CMAKE_BINARY_DIR}/gradle/gradlew) 0038 # the gradlew script installed by Qt6 is not executable, so running it directly fails 0039 if (QT_MAJOR_VERSION EQUAL "6") 0040 set(Gradle_PRECOMMAND "sh") 0041 endif() 0042 else() 0043 set(Gradle_EXECUTABLE ${CMAKE_BINARY_DIR}/gradle/gradlew.bat) 0044 endif() 0045 0046 get_target_property(_qt_core_location Qt${QT_MAJOR_VERSION}::Core LOCATION) 0047 get_filename_component(_qt_install_root ${_qt_core_location} DIRECTORY) 0048 get_filename_component(_qt_install_root ${_qt_install_root}/../ ABSOLUTE) 0049 0050 set(_gradle_template_dir ${CMAKE_CURRENT_LIST_DIR}) 0051 0052 add_custom_command(OUTPUT ${Gradle_EXECUTABLE} 0053 COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/gradle 0054 COMMAND ${CMAKE_COMMAND} -E copy_directory ${_qt_install_root}/src/3rdparty/gradle ${CMAKE_BINARY_DIR}/gradle 0055 ) 0056 add_custom_target(gradle DEPENDS ${Gradle_EXECUTABLE}) 0057 0058 # Android Gradle plugin version (not the Gradle version!) used by Qt, for use in our own build.gradle files 0059 file(READ ${_qt_install_root}/src/android/templates/build.gradle _build_grade_template) 0060 string(REGEX MATCH "[0-9]+\.[0-9]+\.[0-9]+" Gradle_ANDROID_GRADLE_PLUGIN_VERSION ${_build_grade_template}) 0061 0062 find_package_handle_standard_args(Gradle DEFAULT_MSG Gradle_EXECUTABLE) 0063 0064 function(gradle_add_aar target) 0065 cmake_parse_arguments(ARG "" "BUILDFILE;NAME" "" ${ARGN}) 0066 0067 set(_build_root ${CMAKE_CURRENT_BINARY_DIR}/gradle_build/${ARG_NAME}) 0068 configure_file(${_gradle_template_dir}/local.properties.cmake ${_build_root}/local.properties) 0069 configure_file(${_gradle_template_dir}/settings.gradle.cmake ${_build_root}/settings.gradle) 0070 configure_file(${ARG_BUILDFILE} ${_build_root}/build.gradle) 0071 0072 if (CMAKE_BUILD_TYPE MATCHES "[Dd][Ee][Bb][Uu][Gg]") 0073 set(_aar_suffix "-debug") 0074 set(_aar_gradleCmd "assembleDebug") 0075 else() 0076 set(_aar_suffix "-release") 0077 set(_aar_gradleCmd "assembleRelease") 0078 endif() 0079 0080 file(GLOB_RECURSE _src_files CONFIGURE_DEPENDS "*") 0081 add_custom_command( 0082 OUTPUT ${_build_root}/build/outputs/aar/${ARG_NAME}${_aar_suffix}.aar 0083 COMMAND ${Gradle_PRECOMMAND} ${Gradle_EXECUTABLE} ${_aar_gradleCmd} 0084 # this allows make create-apk to work without installations for apps with AAR libs in the same repository 0085 COMMAND ${CMAKE_COMMAND} -E copy ${_build_root}/build/outputs/aar/${ARG_NAME}${_aar_suffix}.aar ${CMAKE_BINARY_DIR}/jar/${ARG_NAME}.aar 0086 DEPENDS ${Gradle_EXECUTABLE} ${_src_files} 0087 DEPENDS gradle 0088 WORKING_DIRECTORY ${_build_root} 0089 ) 0090 add_custom_target(${target} ALL DEPENDS ${_build_root}/build/outputs/aar/${ARG_NAME}${_aar_suffix}.aar) 0091 set_target_properties(${target} PROPERTIES LOCATION ${_build_root}/build/outputs/aar/${ARG_NAME}${_aar_suffix}.aar) 0092 set_target_properties(${target} PROPERTIES OUTPUT_NAME ${ARG_NAME}) 0093 endfunction() 0094 0095 function(gradle_install_aar target) 0096 cmake_parse_arguments(ARG "" "DESTINATION" "" ${ARGN}) 0097 get_target_property(_loc ${target} LOCATION) 0098 get_target_property(_name ${target} OUTPUT_NAME) 0099 install(FILES ${_loc} DESTINATION ${ARG_DESTINATION} RENAME ${_name}.aar) 0100 endfunction()