summaryrefslogtreecommitdiffstats
path: root/tests/auto/other/android_deployment_settings/CMakeLists.txt
blob: f2ba135328206274acd247c695e2584b5acbe2c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# Copyright (C) 2023 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause

if(NOT QT_BUILD_STANDALONE_TESTS AND NOT QT_BUILDING_QT)
    cmake_minimum_required(VERSION 3.16)
    project(tst_android_deployment_settings LANGUAGES CXX)
    find_package(Qt6BuildInternals REQUIRED COMPONENTS STANDALONE_TEST)
endif()

function(tst_generate_android_deployment_setting target)
    # Qt build always use new property format that supports generator expressions. In this test we
    # want to test user scenario so disable all Qt specific options to make sure that
    # qt6_android_generate_deployment_settings behave like in user projects.
    set(QT_BUILD_STANDALONE_TESTS FALSE)
    set(QT_BUILDING_QT FALSE)
    set(QT_INTERNAL_IS_STANDALONE_TEST FALSE)

    qt6_android_generate_deployment_settings(${target})
endfunction()

qt6_policy(SET QTP0002 NEW)

set(target tst_android_deployment_settings_new)
qt6_add_executable(${target} MANUAL_FINALIZATION EXCLUDE_FROM_ALL noop.cpp)
set_target_properties(${target} PROPERTIES
    my_package_source_dir "path/to/source/dir"
    my_libs_property "some/path/to/lib2.so;some/path/to/lib3.so"
    my_plugins_property "some/path/to/plugin2.so;some/path/to/plugin3.so"

    QT_ANDROID_SDK_BUILD_TOOLS_REVISION "23.0.2"
    QT_ANDROID_MIN_SDK_VERSION "1"
    QT_ANDROID_TARGET_SDK_VERSION "2"
    QT_ANDROID_DEPLOYMENT_DEPENDENCIES "dep1.so;dep2.so;dep3.so"
    QT_ANDROID_DEPLOYMENT_SETTINGS_FILE "attempt_to_rewrite.json"
    QT_ANDROID_EXTRA_LIBS
        "some/path/to/lib1.so;$<TARGET_PROPERTY:${target},my_libs_property>;some/path/to/lib4.so"
    QT_ANDROID_EXTRA_PLUGINS
        "some/path/to/plugin1.so;$<TARGET_PROPERTY:${target},my_plugins_property>"
    QT_ANDROID_PACKAGE_SOURCE_DIR "$<TARGET_PROPERTY:${target},my_package_source_dir>"
    QT_ANDROID_SYSTEM_LIBS_PREFIX "myLibPrefix"

    # Make sure that this property is overwritten by
    # qt6_android_generate_deployment_settings
    QT_ANDROID_DEPLOYMENT_SETTINGS_FILE "custom_deployment_settings.json"
)
tst_generate_android_deployment_setting(${target})

qt6_policy(SET QTP0002 OLD)

set(target tst_android_deployment_settings_old)
qt6_add_executable(${target} MANUAL_FINALIZATION EXCLUDE_FROM_ALL noop.cpp)
set_target_properties(${target} PROPERTIES
    QT_ANDROID_SDK_BUILD_TOOLS_REVISION "23.0.2"
    QT_ANDROID_MIN_SDK_VERSION "1"
    QT_ANDROID_TARGET_SDK_VERSION "2"
    QT_ANDROID_DEPLOYMENT_DEPENDENCIES "dep1.so;dep2.so;dep3.so"
    QT_ANDROID_EXTRA_LIBS
        "some/path/to/lib1.so;some/path\\to/lib2.so;some\\path\\to\\lib3.so;some/path/to/lib4.so"
    QT_ANDROID_EXTRA_PLUGINS
        "some\\path\\to\\plugin1.so;some/path\\to/plugin2.so;some/path/to/plugin3.so"
    QT_ANDROID_PACKAGE_SOURCE_DIR "path\\to/source\\dir"
    QT_ANDROID_SYSTEM_LIBS_PREFIX "myLibPrefix"
)
tst_generate_android_deployment_setting(${target})

get_target_property(new_settings
    tst_android_deployment_settings_new QT_ANDROID_DEPLOYMENT_SETTINGS_FILE)
get_target_property(old_settings
    tst_android_deployment_settings_old QT_ANDROID_DEPLOYMENT_SETTINGS_FILE)
set_source_files_properties("${new_settings}" PROPERTIES QT_RESOURCE_ALIAS "new_settings.json")
set_source_files_properties("${old_settings}" PROPERTIES QT_RESOURCE_ALIAS "old_settings.json")
qt_internal_add_test(tst_android_deployment_settings
    SOURCES
        tst_android_deployment_settings.cpp
    DEFINES
        DEFAULT_ABI="${CMAKE_ANDROID_ARCH_ABI}"
)
qt6_add_resources(tst_android_deployment_settings
    "deployment_settings_res"
    PREFIX
        "/"
    FILES
        "${new_settings}"
        "${old_settings}"
)