summaryrefslogtreecommitdiffstats
path: root/src/common-lib/configure.cmake
blob: 11f5d8ef54d592a85de0de22613b50faba28da32 (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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148

if (NOT QT_CONFIGURE_RUNNING)
    include(QtAppManVersionDefines)
endif()

# all features are prefixed with "am" to prevent clashes with features in
# other Qt modules

#### Inputs

set(INPUT_libyaml "undefined" CACHE STRING "")
set_property(CACHE INPUT_libyaml PROPERTY STRINGS undefined qt system)

set(INPUT_libarchive "undefined" CACHE STRING "")
set_property(CACHE INPUT_libarchive PROPERTY STRINGS undefined qt system)


#### Libraries

if(TARGET WrapLibYaml::WrapLibYaml)
    qt_internal_disable_find_package_global_promotion(WrapLibYaml::WrapLibYaml)
endif()
qt_find_package(WrapLibYaml PROVIDED_TARGETS WrapLibYaml::WrapLibYaml MODULE_NAME appman_common QMAKE_LIB yaml)
qt_find_package(WrapLibArchive PROVIDED_TARGETS WrapLibArchive::WrapLibArchive MODULE_NAME appman_package QMAKE_LIB archive)


#### Tests


#### Features

qt_feature("am-system-libyaml" PRIVATE
    LABEL "Using system libyaml"
    CONDITION WrapLibYaml_FOUND
    ENABLE INPUT_libyaml STREQUAL 'system'
    DISABLE INPUT_libyaml STREQUAL 'qt'
)

qt_feature("am-system-libarchive" PRIVATE
    LABEL "Using system libarchive"
    CONDITION WrapLibArchive_FOUND
    ENABLE INPUT_libarchive STREQUAL 'system'
    DISABLE INPUT_libarchive STREQUAL 'qt'
)

qt_feature("am-multi-process" PUBLIC
    LABEL "Multi-process mode"
    CONDITION TARGET Qt::DBus AND TARGET Qt::WaylandCompositor AND LINUX AND QT_FEATURE_shared
    ENABLE INPUT_force_mode STREQUAL 'multi'
    DISABLE INPUT_force_mode STREQUAL 'single'
)

qt_feature("am-installer" PUBLIC
    LABEL "Enable the installer component"
    CONDITION QT_FEATURE_ssl AND NOT IOS
    ENABLE INPUT_installer STREQUAL 'yes'
    DISABLE INPUT_installer STREQUAL 'no'
)

qt_feature("am-external-dbus-interfaces" PRIVATE
    LABEL "Enable external DBus interfaces"
    CONDITION TARGET Qt::DBus
    ENABLE INPUT_external_dbus_interfaces STREQUAL 'yes'
    DISABLE INPUT_external_dbus_interfaces STREQUAL 'no'
)

qt_feature("am-package-server" PRIVATE
    LABEL "Build the package-server"
    CONDITION TARGET Qt::HttpServer AND QT_FEATURE_am_installer
    ENABLE INPUT_package_server STREQUAL 'yes'
    DISABLE INPUT_package_server STREQUAL 'no'
)

qt_feature("am-tools-only" PRIVATE
    LABEL "Tools only build"
    AUTODETECT OFF
    ENABLE INPUT_tools_only STREQUAL 'yes'
    DISABLE INPUT_tools_only STREQUAL 'no'
)

qt_feature("am-dltlogging" PRIVATE
    LABEL "Enable logging via DLT"
    CONDITION TARGET Qt::DltLogging
    ENABLE INPUT_dltlogging STREQUAL 'yes'
    DISABLE INPUT_dltlogging STREQUAL 'no'
)

qt_feature("am-libdbus" PRIVATE
    LABEL "Compile libdbus for appman-controller"
    CONDITION WIN32 OR MACOS
    EMIT_IF WIN32 OR MACOS
    ENABLE INPUT_libdbus STREQUAL 'yes'
    DISABLE INPUT_libdbus STREQUAL 'no'
)

qt_feature("am-libbacktrace" PRIVATE
    LABEL "Enable support for libbacktrace"
    CONDITION (LINUX OR MACOS) AND (CMAKE_BUILD_TYPE STREQUAL "Debug")
    EMIT_IF (LINUX OR MACOS)
    ENABLE INPUT_libbacktrace STREQUAL 'yes'
    DISABLE INPUT_libbacktrace STREQUAL 'no'
)

qt_feature("am-stackwalker" PRIVATE
    LABEL "Enable support for StackWalker"
    CONDITION WIN32 AND MSVC AND (CMAKE_BUILD_TYPE STREQUAL "Debug")
    EMIT_IF WIN32
    ENABLE INPUT_stackwalker STREQUAL 'yes'
    DISABLE INPUT_stackwalker STREQUAL 'no'
)

qt_feature("am-has-hardware-id" PRIVATE
    LABEL "Hardware-id for the installer"
    CONDITION ON
    DISABLE INPUT_hardware_id STREQUAL ''
)
qt_feature_definition("am-has-hardware-id" "QT_AM_HARDWARE_ID" VALUE "\"${INPUT_hardware_id}\"")

qt_feature("am-widgets-support" PUBLIC
    LABEL "Enable support for Qt widgets"
    CONDITION TARGET Qt::Widgets
    ENABLE INPUT_widgets_support STREQUAL 'yes'
    DISABLE INPUT_widgets_support STREQUAL 'no'
)

qt_configure_add_summary_section(NAME "Qt Application Manager")
qt_configure_add_summary_entry(ARGS "am-system-libyaml")
qt_configure_add_summary_entry(ARGS "am-system-libarchive")
qt_configure_add_summary_entry(ARGS "am-multi-process")
qt_configure_add_summary_entry(ARGS "am-installer")
if (QT_FEATURE_am_has_hardware_id)
    qt_configure_add_summary_entry(
        TYPE "message"
        ARGS "${QT_FEATURE_LABEL_am_has_hardware_id}"
        MESSAGE "yes (${INPUT_hardware_id})"
    )
else()
    qt_configure_add_summary_entry(ARGS "am-has-hardware-id")
endif()
qt_configure_add_summary_entry(ARGS "am-external-dbus-interfaces")
qt_configure_add_summary_entry(ARGS "am-widgets-support")
qt_configure_add_summary_entry(ARGS "am-tools-only")
qt_configure_add_summary_entry(ARGS "am-package-server")
qt_configure_add_summary_entry(ARGS "am-dltlogging")
qt_configure_add_summary_entry(ARGS "am-libdbus")
qt_configure_add_summary_entry(ARGS "am-libbacktrace")
qt_configure_add_summary_entry(ARGS "am-stackwalker")
qt_configure_end_summary_section() # end of "Qt ApplicationManger" section