on xenial help sign in
Refactor export_qmlfiles and export_qmlplugins to be more generic and clean up installed mocks.
commit113c4c9fcb8d1c3d70515e813b965ac834a262cc authorMichał Sawicz <michal.sawicz@canonical.com> dateFri 16 May 2014, 18:46 (12 years ago) parent93503fa8d4d9da
58 files changed+261−306
cmake/modules/Plugins.cmake−68 cmake/modules/QmlPlugins.cmake+143 plugins/AccountsService/CMakeLists.txt+1−4 plugins/AccountsService/qmldir+1−1 plugins/CMakeLists.txt+13 plugins/Dash/CMakeLists.txt+1−6 plugins/Dash/qmldir+1−1 plugins/HudClient/CMakeLists.txt+1−6 plugins/HudClient/qmldir+1−1 plugins/LightDM/CMakeLists.txt+1−6 plugins/LightDM/qmldir+1−1 plugins/Powerd/CMakeLists.txt+1−3 plugins/Powerd/qmldir+1−1 plugins/SessionBroadcast/CMakeLists.txt+1−4 plugins/SessionBroadcast/qmldir+1−1 plugins/Ubuntu/DownloadDaemonListener/CMakeLists.txt+1−6 plugins/Ubuntu/DownloadDaemonListener/qmldir+1−1 plugins/Ubuntu/Gestures/CMakeLists.txt+1−6 plugins/Ubuntu/Gestures/qmldir+1−1 plugins/Unity/Indicators/CMakeLists.txt+4−7 plugins/Unity/Indicators/qml/CMakeLists.txt−5 plugins/Unity/Indicators/qml/qmldir+1−1 plugins/Unity/Launcher/CMakeLists.txt+1−3 plugins/Unity/Launcher/qmldir+1−1 plugins/Utils/CMakeLists.txt+1−3 plugins/Utils/qmldir+1−1 tests/mocks/AccountsService/CMakeLists.txt+1−12 tests/mocks/AccountsService/qmldir+1 tests/mocks/CMakeLists.txt+30 tests/mocks/GSettings.1.0/CMakeLists.txt+1−4 tests/mocks/GSettings.1.0/qmldir+1 tests/mocks/HudClient/CMakeLists.txt+1−4 tests/mocks/HudClient/qmldir+2 tests/mocks/LightDM/CMakeLists.txt+5−12 tests/mocks/LightDM/qmldir+1 tests/mocks/Powerd/CMakeLists.txt+1−12 tests/mocks/Powerd/qmldir+1 tests/mocks/QMenuModel/CMakeLists.txt+2−12 tests/mocks/QMenuModel/qmldir+1 tests/mocks/QtMultimedia/CMakeLists.txt+1−12 tests/mocks/QtMultimedia/qmldir+1 tests/mocks/Ubuntu/DownloadDaemonListener/CMakeLists.txt+1−9 tests/mocks/Ubuntu/DownloadDaemonListener/qmldir+1 tests/mocks/Ubuntu/Thumbnailer/CMakeLists.txt+1−7 tests/mocks/Ubuntu/Thumbnailer/qmldir+2 tests/mocks/Unity/Application/CMakeLists.txt+9−35 tests/mocks/Unity/Application/qmldir+2 tests/mocks/Unity/CMakeLists.txt+1−12 tests/mocks/Unity/Indicators/CMakeLists.txt+1−14 tests/mocks/Unity/Indicators/qml/FakeMenuPage.qml → tests/mocks/Unity/Indicators/FakeMenuPage.qml tests/mocks/Unity/Indicators/qmldir+1 tests/mocks/Unity/Launcher/CMakeLists.txt+1−5 tests/mocks/Unity/Launcher/qmldir+1 tests/mocks/Unity/Notifications/CMakeLists.txt+1−11 tests/mocks/Unity/Notifications/qmldir+1 tests/mocks/Unity/qmldir+1 tests/utils/modules/Unity/Test/CMakeLists.txt+4−7 tests/utils/modules/Unity/Test/qmldir+2
cmake/modules/Plugins.cmakedeleted−68
@@ -1,68 +0,0 @@
1−find_program(qmlplugindump_exe qmlplugindump)
2−
3−if(NOT qmlplugindump_exe)
4− msg(FATAL_ERROR "Could not locate qmlplugindump.")
5−endif()
6−
7−# Creates target for copying and installing qmlfiles
8−#
9−# export_qmlfiles(plugin sub_path)
10−#
11−#
12−# Target to be created:
13−# - plugin-qmlfiles - Copies the qml files (*.qml, *.js, qmldir) into the shadow build folder.
14−
15−macro(export_qmlfiles PLUGIN PLUGIN_SUBPATH)
16−
17− file(GLOB QMLFILES
18− *.qml
19− *.js
20− qmldir
21− )
22−
23− # copy the qmldir file
24− add_custom_target(${PLUGIN}-qmlfiles ALL
25− COMMAND cp ${QMLFILES} ${CMAKE_BINARY_DIR}/plugins/${PLUGIN_SUBPATH}
26− DEPENDS ${QMLFILES}
27− SOURCES ${QMLFILES}
28− )
29−
30− # install the qmlfiles file.
31− install(FILES ${QMLFILES}
32− DESTINATION ${SHELL_INSTALL_QML}/${PLUGIN_SUBPATH}
33− )
34−endmacro(export_qmlfiles)
35−
36−
37−# Creates target for generating the qmltypes file for a plugin and installs plugin files
38−#
39−# export_qmlplugin(plugin version sub_path [TARGETS target1 [target2 ...]])
40−#
41−# TARGETS additional install targets (eg the plugin shared object)
42−#
43−# Target to be created:
44−# - plugin-qmltypes - Generates the qmltypes file in the shadow build folder.
45−
46−macro(export_qmlplugin PLUGIN VERSION PLUGIN_SUBPATH)
47− set(multi_value_keywords TARGETS)
48− cmake_parse_arguments(qmlplugin "" "" "${multi_value_keywords}" ${ARGN})
49−
50− # Only try to generate .qmltypes if not cross compiling
51− if(NOT CMAKE_CROSSCOMPILING)
52− # create the plugin.qmltypes file
53− add_custom_target(${PLUGIN}-qmltypes ALL
54− COMMAND ${qmlplugindump_exe} -notrelocatable ${PLUGIN} ${VERSION} ${CMAKE_BINARY_DIR}/plugins > ${CMAKE_BINARY_DIR}/plugins/${PLUGIN_SUBPATH}/plugin.qmltypes
55− )
56− add_dependencies(${PLUGIN}-qmltypes ${PLUGIN}-qmlfiles ${qmlplugin_TARGETS})
57−
58− # install the qmltypes file.
59− install(FILES ${CMAKE_BINARY_DIR}/plugins/${PLUGIN_SUBPATH}/plugin.qmltypes
60− DESTINATION ${SHELL_INSTALL_QML}/${PLUGIN_SUBPATH}
61− )
62− endif()
63−
64− # install the additional targets
65− install(TARGETS ${qmlplugin_TARGETS}
66− DESTINATION ${SHELL_INSTALL_QML}/${PLUGIN_SUBPATH}
67− )
68−endmacro(export_qmlplugin)
cmake/modules/QmlPlugins.cmakenew file+143
@@ -0,0 +1,143 @@
1+# If you need to override the qmlplugindump binary, create the qmlplugin executable
2+# target before loading this plugin.
3+
4+if(NOT TARGET qmlplugindump)
5+ find_program(qmlplugindump_exe qmlplugindump)
6+
7+ if(NOT qmlplugindump_exe)
8+ msg(FATAL_ERROR "Could not locate qmlplugindump.")
9+ endif()
10+
11+ add_executable(qmlplugindump IMPORTED)
12+ set_target_properties(qmlplugindump PROPERTIES IMPORTED_LOCATION ${qmlplugindump_exe})
13+endif()
14+
15+
16+# Creates a target for copying resource files into build dir and optionally installing them.
17+#
18+# Files will be copied into ${BINARY_DIR}/${path} or ${CMAKE_CURRENT_BINARY_DIR} and installed
19+# into ${DESTINATION}/${path}.
20+#
21+# Resource file names are matched against {*.{qml,js,jpg,png,sci,svg},qmldir}.
22+#
23+# export_qmlfiles(plugin path
24+# [SEARCH_PATH path] # Path to search for resources in (defaults to ${CMAKE_CURRENT_SOURCE_DIR})
25+# [BINARY_DIR path]
26+# [DESTINATION path]
27+# [TARGET_PREFIX string] # Will be prefixed to the target name
28+# )
29+#
30+# Created target:
31+# - ${TARGET_PREFIX}${plugin}-qmlfiles - Copies resources into the binary dir.
32+
33+macro(export_qmlfiles PLUGIN PATH)
34+ set(single SEARCH_PATH BINARY_DIR DESTINATION TARGET_PREFIX)
35+ cmake_parse_arguments(QMLFILES "" "${single}" "" ${ARGN})
36+
37+ if(NOT QMLFILES_SEARCH_PATH)
38+ set(QMLFILES_SEARCH_PATH ${CMAKE_CURRENT_SOURCE_DIR})
39+ endif()
40+
41+ if(QMLFILES_BINARY_DIR)
42+ set(qmlfiles_dir ${QMLFILES_BINARY_DIR}/${PATH})
43+ else()
44+ set(qmlfiles_dir ${CMAKE_CURRENT_BINARY_DIR})
45+ endif()
46+
47+ file(GLOB QMLFILES
48+ ${QMLFILES_SEARCH_PATH}/*.qml
49+ ${QMLFILES_SEARCH_PATH}/*.js
50+ ${QMLFILES_SEARCH_PATH}/*.jpg
51+ ${QMLFILES_SEARCH_PATH}/*.png
52+ ${QMLFILES_SEARCH_PATH}/*.sci
53+ ${QMLFILES_SEARCH_PATH}/*.svg
54+ ${QMLFILES_SEARCH_PATH}/qmldir
55+ )
56+
57+ execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${qmlfiles_dir})
58+
59+ # copy the files
60+ add_custom_target(${QMLFILES_TARGET_PREFIX}${PLUGIN}-qmlfiles ALL
61+ COMMAND cp ${QMLFILES} ${qmlfiles_dir}
62+ DEPENDS ${QMLFILES}
63+ SOURCES ${QMLFILES}
64+ )
65+
66+ if(QMLFILES_DESTINATION)
67+ # install the qmlfiles file.
68+ install(FILES ${QMLFILES}
69+ DESTINATION ${QMLFILES_DESTINATION}/${PATH}
70+ )
71+ endif()
72+endmacro(export_qmlfiles)
73+
74+
75+# Creates a target for generating the typeinfo file for a QML plugin and optionally installs it
76+# and additional targets.
77+#
78+# Files will be copied into ${BINARY_DIR}/${path} or ${CMAKE_CURRENT_BINARY_DIR} and installed
79+# into ${DESTINATION}/${path}. If you don't pass BINARY_DIR, it's assumed that current source
80+# path ends with ${path}.
81+#
82+# The generated file will be named after the last segment of the plugin name, e.g. Foo.qmltypes.
83+#
84+# export_qmlplugin(plugin version path
85+# [BINARY_DIR path]
86+# [DESTINATION path]
87+# [TARGET_PREFIX string] # Will be prefixed to the target name
88+# [ENVIRONMENT string] # Will be added to qmlplugindump's env
89+# [TARGETS target1 [target2 ...]] # Targets to depend on and install (e.g. the plugin shared object)
90+# )
91+#
92+# Created target:
93+# - ${TARGET_PREFIX}${plugin}-qmltypes - Generates the qmltypes file in the binary dir.
94+
95+macro(export_qmlplugin PLUGIN VERSION PATH)
96+ set(single BINARY_DIR DESTINATION TARGET_PREFIX ENVIRONMENT)
97+ set(multi TARGETS)
98+ cmake_parse_arguments(QMLPLUGIN "" "${single}" "${multi}" ${ARGN})
99+
100+ get_target_property(qmlplugindump_executable qmlplugindump LOCATION)
101+
102+ if(QMLPLUGIN_BINARY_DIR)
103+ set(qmlplugin_dir ${QMLPLUGIN_BINARY_DIR}/${PATH})
104+ else()
105+ # Find import path to point qmlplugindump at
106+ string(REGEX REPLACE "${PATH}$" "" QMLPLUGIN_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
107+ set(qmlplugin_dir ${CMAKE_CURRENT_BINARY_DIR})
108+ endif()
109+
110+ # Find the last segment of the plugin name to use as qmltypes basename
111+ string(REGEX MATCH "[^.]+$" plugin_suffix ${PLUGIN})
112+ set(target_prefix ${QMLPLUGIN_TARGET_PREFIX}${PLUGIN})
113+ set(qmltypes_path ${qmlplugin_dir}/${plugin_suffix}.qmltypes)
114+
115+ # Only generate typeinfo if not cross compiling
116+ if(NOT CMAKE_CROSSCOMPILING)
117+ add_custom_target(${target_prefix}-qmltypes ALL
118+ COMMAND env ${QMLPLUGIN_ENVIRONMENT} ${qmlplugindump_executable} -notrelocatable
119+ ${PLUGIN} ${VERSION} ${QMLPLUGIN_BINARY_DIR} > ${qmltypes_path}
120+ )
121+ add_dependencies(${target_prefix}-qmltypes ${target_prefix}-qmlfiles ${QMLPLUGIN_TARGETS})
122+
123+ if (QMLPLUGIN_DESTINATION)
124+ # Install the typeinfo file
125+ install(FILES ${qmltypes_path}
126+ DESTINATION ${QMLPLUGIN_DESTINATION}/${PATH}
127+ )
128+ endif()
129+ endif()
130+
131+ set_target_properties(${QMLPLUGIN_TARGETS} PROPERTIES
132+ ARCHIVE_OUTPUT_DIRECTORY ${qmlplugin_dir}
133+ LIBRARY_OUTPUT_DIRECTORY ${qmlplugin_dir}
134+ RUNTIME_OUTPUT_DIRECTORY ${qmlplugin_dir}
135+ )
136+
137+ if (QMLPLUGIN_DESTINATION)
138+ # Install additional targets
139+ install(TARGETS ${QMLPLUGIN_TARGETS}
140+ DESTINATION ${QMLPLUGIN_DESTINATION}/${PATH}
141+ )
142+ endif()
143+endmacro()
plugins/AccountsService/CMakeLists.txt+1−4
@@ -1,5 +1,3 @@
1−include(Plugins)
2−
31add_definitions(-DSM_BUSNAME=systemBus)
42
53add_library(AccountsService-qml MODULE
@@ -10,8 +8,7 @@ add_library(AccountsService-qml MODULE
108
119qt5_use_modules(AccountsService-qml DBus Qml)
1210
13−export_qmlfiles(AccountsService AccountsService)
14−export_qmlplugin(AccountsService 0.1 AccountsService TARGETS AccountsService-qml)
11+add_unity8_plugin(AccountsService 0.1 AccountsService TARGETS AccountsService-qml)
1512
1613set(POLKIT_LIB_DIR "${CMAKE_INSTALL_LOCALSTATEDIR}/lib/polkit-1")
1714set(POLKIT_DATA_DIR "${CMAKE_INSTALL_PREFIX}/share/polkit-1")
plugins/AccountsService/qmldir+1−1
@@ -1,3 +1,3 @@
11module AccountsService
22plugin AccountsService-qml
3−typeinfo plugin.qmltypes
3+typeinfo AccountsService.qmltypes
plugins/CMakeLists.txt+13
@@ -1,3 +1,16 @@
1+include(QmlPlugins)
2+
3+# Set up and install a plugin for unity8.
4+#
5+# add_unity8_plugin(plugin version path
6+# [...] # See export_qmlfiles and export_qmlplugin documentation for more options
7+# )
8+
9+macro(add_unity8_plugin PLUGIN VERSION PATH)
10+ export_qmlfiles(${PLUGIN} ${PATH} DESTINATION ${SHELL_INSTALL_QML} ${ARGN})
11+ export_qmlplugin(${PLUGIN} ${VERSION} ${PATH} DESTINATION ${SHELL_INSTALL_QML} ${ARGN})
12+endmacro()
13+
114add_subdirectory(AccountsService)
215add_subdirectory(HudClient)
316add_subdirectory(LightDM)
plugins/Dash/CMakeLists.txt+1−6
@@ -1,6 +1,3 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
41# There's no cmake var for v8 include path :-/
52# so create one
63LIST(GET Qt5Core_INCLUDE_DIRS 0 QtCoreDir0)
@@ -41,6 +38,4 @@ target_link_libraries(Dash-qml
4138
4239qt5_use_modules(Dash-qml Qml Quick)
4340
44−# export the qmldir qmltypes and plugin files
45−export_qmlfiles(Dash Dash)
46−export_qmlplugin(Dash 0.1 Dash TARGETS Dash-qml)
41+add_unity8_plugin(Dash 0.1 Dash TARGETS Dash-qml)
plugins/Dash/qmldir+1−1
@@ -1,4 +1,4 @@
11module Dash
22plugin Dash-qml
3−typeinfo plugin.qmltypes
3+typeinfo Dash.qmltypes
44singleton CardCreatorCache 0.1 CardCreatorCache.qml
plugins/HudClient/CMakeLists.txt+1−6
@@ -1,6 +1,3 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
41find_package(Qt5Core REQUIRED)
52find_package(Qt5Quick REQUIRED)
63pkg_search_module(DEE dee-1.0 REQUIRED)
@@ -38,6 +35,4 @@ target_link_libraries(HudClientQml
3835
3936qt5_use_modules(HudClientQml Qml)
4037
41−# export the qmldir qmltypes and plugin files
42−export_qmlfiles(HudClient HudClient)
43−export_qmlplugin(HudClient 0.1 HudClient TARGETS HudClientQml)
38+add_unity8_plugin(HudClient 0.1 HudClient TARGETS HudClientQml)
plugins/HudClient/qmldir+1−1
@@ -1,3 +1,3 @@
11module HudClient
22plugin HudClientQml
3−typeinfo plugin.qmltypes
3+typeinfo HudClient.qmltypes
plugins/LightDM/CMakeLists.txt+1−6
@@ -1,6 +1,3 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
41# Dependencies
52include(FindPkgConfig)
63pkg_check_modules(LIBUSERMETRICSOUTPUT REQUIRED libusermetricsoutput-1)
@@ -37,6 +34,4 @@ target_link_libraries(LightDM-qml
3734
3835qt5_use_modules(LightDM-qml DBus Gui Qml)
3936
40−# export the qmldir qmltypes and plugin files
41−export_qmlfiles(LightDM LightDM)
42−export_qmlplugin(LightDM 0.1 LightDM TARGETS LightDM-qml)
37+add_unity8_plugin(LightDM 0.1 LightDM TARGETS LightDM-qml)
plugins/LightDM/qmldir+1−1
@@ -1,3 +1,3 @@
11module LightDM
22plugin LightDM-qml
3−typeinfo plugin.qmltypes
3+typeinfo LightDM.qmltypes
plugins/Powerd/CMakeLists.txt+1−3
@@ -1,4 +1,3 @@
1−include(Plugins)
21include(FindPkgConfig)
32
43pkg_search_module(GIO REQUIRED gio-2.0)
@@ -17,5 +16,4 @@ add_library(Powerd-qml MODULE
1716qt5_use_modules(Powerd-qml DBus Qml)
1817target_link_libraries(Powerd-qml ${GIO_LDFLAGS})
1918
20−export_qmlfiles(Powerd Powerd)
21−export_qmlplugin(Powerd 0.1 Powerd TARGETS Powerd-qml)
19+add_unity8_plugin(Powerd 0.1 Powerd TARGETS Powerd-qml)
plugins/Powerd/qmldir+1−1
@@ -1,3 +1,3 @@
11module Powerd
22plugin Powerd-qml
3−typeinfo plugin.qmltypes
3+typeinfo Powerd.qmltypes
plugins/SessionBroadcast/CMakeLists.txt+1−4
@@ -1,5 +1,3 @@
1−include(Plugins)
2−
31add_definitions(-DSM_BUSNAME=systemBus)
42
53add_library(SessionBroadcast-qml MODULE
@@ -9,5 +7,4 @@ add_library(SessionBroadcast-qml MODULE
97
108qt5_use_modules(SessionBroadcast-qml DBus Qml)
119
12−export_qmlfiles(SessionBroadcast SessionBroadcast)
13−export_qmlplugin(SessionBroadcast 0.1 SessionBroadcast TARGETS SessionBroadcast-qml)
10+add_unity8_plugin(SessionBroadcast 0.1 SessionBroadcast TARGETS SessionBroadcast-qml)
plugins/SessionBroadcast/qmldir+1−1
@@ -1,3 +1,3 @@
11module SessionBroadcast
22plugin SessionBroadcast-qml
3−typeinfo plugin.qmltypes
3+typeinfo SessionBroadcast.qmltypes
plugins/Ubuntu/DownloadDaemonListener/CMakeLists.txt+1−6
@@ -1,6 +1,3 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
41include_directories(
52 ${CMAKE_CURRENT_SOURCE_DIR}
63 ${CMAKE_CURRENT_BINARY_DIR}
@@ -17,6 +14,4 @@ add_library(DownloadDaemonListener MODULE ${DOWNLOADDAEMONLISTENER_SOURCES})
1714
1815qt5_use_modules(DownloadDaemonListener Qml Quick DBus Core)
1916
20−# export the qmldir qmltypes and plugin files
21−export_qmlfiles(Ubuntu.DownloadDaemonListener Ubuntu/DownloadDaemonListener)
22−export_qmlplugin(Ubuntu.DownloadDaemonListener 0.1 Ubuntu/DownloadDaemonListener TARGETS DownloadDaemonListener)
17+add_unity8_plugin(Ubuntu.DownloadDaemonListener 0.1 Ubuntu/DownloadDaemonListener TARGETS DownloadDaemonListener)
plugins/Ubuntu/DownloadDaemonListener/qmldir+1−1
@@ -1,3 +1,3 @@
11module Ubuntu.DownloadDaemonListener
22plugin DownloadDaemonListener
3−typeinfo plugins.qmltypes
3+typeinfo DownloadDaemonListener.qmltypes
plugins/Ubuntu/Gestures/CMakeLists.txt+1−6
@@ -1,6 +1,3 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
41set(UbuntuGestureQml_SOURCES
52 plugin.cpp
63 AxisVelocityCalculator.cpp
@@ -19,6 +16,4 @@ qt5_use_modules(UbuntuGestureQml Core Quick)
1916# So that Foo.cpp can #include "Foo.moc"
2017include_directories(${CMAKE_CURRENT_BINARY_DIR})
2118
22−# export the qmldir qmltypes and plugin files
23−export_qmlfiles(Ubuntu.Gestures Ubuntu/Gestures)
24−export_qmlplugin(Ubuntu.Gestures 0.1 Ubuntu/Gestures TARGETS UbuntuGestureQml)
19+add_unity8_plugin(Ubuntu.Gestures 0.1 Ubuntu/Gestures TARGETS UbuntuGestureQml)
plugins/Ubuntu/Gestures/qmldir+1−1
@@ -1,3 +1,3 @@
11module Ubuntu.Gestures
22plugin UbuntuGestureQml
3−typeinfo plugin.qmltypes
3+typeinfo Gestures.qmltypes
plugins/Unity/Indicators/CMakeLists.txt+4−7
@@ -1,6 +1,3 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
41project(IndicatorsQml)
52
63pkg_check_modules(GLIB REQUIRED glib-2.0>=2.32)
@@ -10,8 +7,6 @@ pkg_check_modules(QMENUMODEL REQUIRED qmenumodel)
107find_package(Qt5Core REQUIRED)
118find_package(Qt5Quick REQUIRED)
129
13−add_subdirectory(qml)
14−
1510include_directories(
1611 ${CMAKE_CURRENT_SOURCE_DIR}
1712 ${CMAKE_CURRENT_BINARY_DIR}
@@ -56,5 +51,7 @@ target_link_libraries(IndicatorsQml
5651
5752qt5_use_modules(IndicatorsQml Core Qml Quick)
5853
59−# export the qmltypes and plugin files
60−export_qmlplugin(Unity.Indicators 0.1 Unity/Indicators TARGETS IndicatorsQml)
54+add_unity8_plugin(Unity.Indicators 0.1 Unity/Indicators
55+ SEARCH_PATH qml
56+ TARGETS IndicatorsQml
57+)
plugins/Unity/Indicators/qml/CMakeLists.txtdeleted−5
@@ -1,5 +0,0 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
4−# export the qmldir, *.qml files.
5−export_qmlfiles(Unity.Indicators Unity/Indicators)
plugins/Unity/Indicators/qml/qmldir+1−1
@@ -1,6 +1,6 @@
11module Unity.Indicators
22plugin IndicatorsQml
3−typeinfo plugin.qmltypes
3+typeinfo Indicators.qmltypes
44
55CachedUnityMenuModel 0.1 CachedUnityMenuModel.qml
66IndicatorBase 0.1 IndicatorBase.qml
plugins/Unity/Launcher/CMakeLists.txt+1−3
@@ -32,6 +32,4 @@ target_link_libraries(UnityLauncher-qml ${GSETTINGS_QT_LDFLAGS})
3232
3333qt5_use_modules(UnityLauncher-qml DBus Qml)
3434
35−# export the qmldir and qmltypes files
36−export_qmlfiles(Unity.Launcher Unity/Launcher)
37−export_qmlplugin(Unity.Launcher 0.1 Unity/Launcher TARGETS UnityLauncher-qml)
35+add_unity8_plugin(Unity.Launcher 0.1 Unity/Launcher TARGETS UnityLauncher-qml)
plugins/Unity/Launcher/qmldir+1−1
@@ -1,3 +1,3 @@
11module Unity.Launcher
22plugin UnityLauncher-qml
3−typeinfo plugin.qmltypes
3+typeinfo Launcher.qmltypes
plugins/Utils/CMakeLists.txt+1−3
@@ -33,6 +33,4 @@ set_target_properties(Utils-qml PROPERTIES COMPILE_FLAGS -fvisibility=default)
3333
3434qt5_use_modules(Utils-qml Qml Quick DBus Network XmlPatterns Gui Concurrent)
3535
36−# export the qmldir qmltypes and plugin files
37−export_qmlfiles(Utils Utils)
38−export_qmlplugin(Utils 0.1 Utils TARGETS Utils-qml)
36+add_unity8_plugin(Utils 0.1 Utils TARGETS Utils-qml)
plugins/Utils/qmldir+1−1
@@ -1,3 +1,3 @@
11module Utils
22plugin Utils-qml
3−typeinfo plugin.qmltypes
3+typeinfo Utils.qmltypes
tests/mocks/AccountsService/CMakeLists.txt+1−12
@@ -7,15 +7,4 @@ add_library(MockAccountsService-qml MODULE
77
88qt5_use_modules(MockAccountsService-qml DBus Qml)
99
10−# copy files into build directory for shadow builds
11−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
12− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
13− )
14−
15−install(TARGETS MockAccountsService-qml
16− DESTINATION ${SHELL_INSTALL_QML}/mocks/AccountsService
17− )
18−
19−install(FILES qmldir
20− DESTINATION ${SHELL_INSTALL_QML}/mocks/AccountsService
21− )
10+add_unity8_mock(AccountsService 0.1 AccountsService TARGETS MockAccountsService-qml)
tests/mocks/AccountsService/qmldir+1
@@ -1,2 +1,3 @@
11module AccountsService
22plugin MockAccountsService-qml
3+typeinfo AccountsService.qmltypes
tests/mocks/CMakeLists.txt+30
@@ -1,3 +1,33 @@
1+include(QmlPlugins)
2+
3+# Set up and optionally install a mock plugin for unity8.
4+#
5+# add_unity8_mock(plugin version path
6+# [PREFIX string] # Install the plugin to the specified prefix under unity8 private plugin directory
7+# [...] # See export_qmlfiles and export_qmlplugin documentation for more options
8+# )
9+
10+macro(add_unity8_mock PLUGIN VERSION PATH)
11+ set(single PREFIX)
12+ cmake_parse_arguments(MOCK "" "${single}" "" ${ARGN})
13+
14+ if(MOCK_PREFIX)
15+ export_qmlfiles(${PLUGIN} ${PATH}
16+ DESTINATION ${SHELL_INSTALL_QML}/${MOCK_PREFIX}
17+ TARGET_PREFIX ${MOCK_PREFIX}-Mock
18+ ${MOCK_UNPARSED_ARGUMENTS}
19+ )
20+ export_qmlplugin(${PLUGIN} ${VERSION} ${PATH}
21+ DESTINATION ${SHELL_INSTALL_QML}/${MOCK_PREFIX}
22+ TARGET_PREFIX ${MOCK_PREFIX}-Mock
23+ ${MOCK_UNPARSED_ARGUMENTS}
24+ )
25+ else()
26+ export_qmlfiles(${PLUGIN} ${PATH} TARGET_PREFIX Mock ${MOCK_UNPARSED_ARGUMENTS})
27+ export_qmlplugin(${PLUGIN} ${VERSION} ${PATH} TARGET_PREFIX Mock ${MOCK_UNPARSED_ARGUMENTS})
28+ endif()
29+endmacro()
30+
131add_subdirectory(AccountsService)
232add_subdirectory(GSettings.1.0)
333add_subdirectory(HudClient)
tests/mocks/GSettings.1.0/CMakeLists.txt+1−4
@@ -17,7 +17,4 @@ target_link_libraries(FakeGSettingsQml
1717
1818qt5_use_modules(FakeGSettingsQml Qml)
1919
20−# copy qmldir file into build directory for shadow builds
21−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
22− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
23− )
20+add_unity8_mock(GSettings 1.0 GSettings.1.0 TARGETS FakeGSettingsQml)
tests/mocks/GSettings.1.0/qmldir+1
@@ -1,2 +1,3 @@
11module GSettings
22plugin FakeGSettingsQml
3+typeinfo GSettings.qmltypes
tests/mocks/HudClient/CMakeLists.txt+1−4
@@ -35,7 +35,4 @@ target_link_libraries(FakeHudClientQml
3535
3636qt5_use_modules(FakeHudClientQml Qml)
3737
38−# copy qmldir file into build directory for shadow builds
39−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
40− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
41− )
38+add_unity8_mock(HudClient 0.1 HudClient TARGETS FakeHudClientQml)
tests/mocks/HudClient/qmldir+2
@@ -1 +1,3 @@
1+module HudClient
12plugin FakeHudClientQml
3+typeinfo HudClient.qmltypes
tests/mocks/LightDM/CMakeLists.txt+5−12
@@ -43,15 +43,8 @@ target_link_libraries(MockLightDM-qml
4343
4444qt5_use_modules(MockLightDM-qml DBus Gui Qml)
4545
46−# copy qmldir file into build directory for shadow builds
47−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
48− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
49− )
50−
51−install(TARGETS MockLightDM-qml
52− DESTINATION ${SHELL_INSTALL_QML}/mocks/LightDM
53− )
54−
55−install(FILES qmldir
56− DESTINATION ${SHELL_INSTALL_QML}/mocks/LightDM
57− )
46+add_unity8_mock(LightDM 0.1 LightDM
47+ PREFIX mocks
48+ TARGETS MockLightDM-qml
49+ ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_CURRENT_BINARY_DIR}/full"
50+)
tests/mocks/LightDM/qmldir+1
@@ -1,2 +1,3 @@
11module LightDM
22plugin MockLightDM-qml
3+typeinfo LightDM.qmltypes
tests/mocks/Powerd/CMakeLists.txt+1−12
@@ -7,15 +7,4 @@ add_library(MockPowerd-qml MODULE
77
88qt5_use_modules(MockPowerd-qml Qml)
99
10−# copy qmldir file into build directory for shadow builds
11−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
12− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
13− )
14−
15−install(TARGETS MockPowerd-qml
16− DESTINATION ${SHELL_INSTALL_QML}/mocks/Powerd
17− )
18−
19−install(FILES qmldir
20− DESTINATION ${SHELL_INSTALL_QML}/mocks/Powerd
21− )
10+add_unity8_mock(Powerd 0.1 Powerd TARGETS MockPowerd-qml)
tests/mocks/Powerd/qmldir+1
@@ -1,2 +1,3 @@
11module Powerd
22plugin MockPowerd-qml
3+typeinfo Powerd.qmltypes
tests/mocks/QMenuModel/CMakeLists.txt+2−12
@@ -1,15 +1,3 @@
1−file(GLOB QMLFILES
2− *.qml
3− *.js
4− qmldir
5−)
6−
7−# copy files into build directory for shadow builds
8−add_custom_target(QMenuModelQmlFiles ALL
9− COMMAND cp ${QMLFILES} ${CMAKE_CURRENT_BINARY_DIR}
10− DEPENDS ${QMLFILES}
11−)
12−
131include_directories(
142 ${Qt5Core_INCLUDE_DIRS}
153 ${Qt5Quick_INCLUDE_DIRS}
@@ -32,3 +20,5 @@ qt5_use_modules(QMenuModelQml Core Quick)
3220set_target_properties(QMenuModelQml PROPERTIES
3321 OUTPUT_NAME qmenumodel
3422 VERSION 0)
23+
24+add_unity8_mock(QMenuModel 0.1 QMenuModel TARGETS QMenuModelQml)
tests/mocks/QMenuModel/qmldir+1
@@ -1,5 +1,6 @@
11module QMenuModel
22plugin qmenumodel
3+typeinfo QMenuModel.qmltypes
34
45QDBusActionGroup 0.1 QDBusActionGroup.qml
56UnityMenuAction 0.1 UnityMenuAction.qml
tests/mocks/QtMultimedia/CMakeLists.txt+1−12
@@ -5,15 +5,4 @@ add_library(QtMultimedia-qml MODULE
55
66qt5_use_modules(QtMultimedia-qml Qml)
77
8−# copy qmldir file into build directory for shadow builds
9−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
10− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
11− )
12−
13−install(TARGETS QtMultimedia-qml
14− DESTINATION ${SHELL_INSTALL_QML}/mocks/QtMultimedia
15− )
16−
17−install(FILES qmldir
18− DESTINATION ${SHELL_INSTALL_QML}/mocks/QtMultimedia
19− )
8+add_unity8_mock(QtMultimedia 5.0 QtMultimedia TARGETS QtMultimedia-qml)
tests/mocks/QtMultimedia/qmldir+1
@@ -1,2 +1,3 @@
11module QtMultimedia
22plugin QtMultimedia-qml
3+typeinfo QtMultimedia.qmltypes
tests/mocks/Ubuntu/DownloadDaemonListener/CMakeLists.txt+1−9
@@ -7,12 +7,4 @@ add_library(FakeUbuntuDownloadDaemonListenerQml MODULE ${FakeUbuntuDownloadDaemo
77
88qt5_use_modules(FakeUbuntuDownloadDaemonListenerQml Core Quick)
99
10−# copy files into build directory for shadow builds
11−add_custom_target(UbuntuDownloadQmlDirFile ALL
12− COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/qmldir" ${CMAKE_CURRENT_BINARY_DIR}
13− DEPENDS qmldir
14−)
15−
16−install(TARGETS FakeUbuntuDownloadDaemonListenerQml
17− DESTINATION ${SHELL_INSTALL_QML}/mocks/Ubuntu/DownloadDaemonListener
18− )
10+add_unity8_mock(Ubuntu.DownloadDaemonListener 0.1 Ubuntu/DownloadDaemonListener TARGETS FakeUbuntuDownloadDaemonListenerQml)
tests/mocks/Ubuntu/DownloadDaemonListener/qmldir+1
@@ -1,2 +1,3 @@
11module Ubuntu.DownloadDaemonListener
22plugin FakeUbuntuDownloadDaemonListenerQml
3+typeinfo DownloadDaemonListener.qmltypes
tests/mocks/Ubuntu/Thumbnailer/CMakeLists.txt+1−7
@@ -1,7 +1 @@
1−# copy files into build directory for shadow builds
2−add_custom_target(UbuntuThumbnailerQmlDirFile ALL
3− COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/qmldir" ${CMAKE_CURRENT_BINARY_DIR}
4− DEPENDS qmldir
5−)
6−
7−install(FILES qmldir DESTINATION ${SHELL_INSTALL_QML}/mocks/Ubuntu/Thumbnailer)
1+add_unity8_mock(Ubuntu.Thumbnailer 0.1 Ubuntu/Thumbnailer)
tests/mocks/Ubuntu/Thumbnailer/qmldir+2
@@ -1,2 +1,4 @@
11module Ubuntu.Thumbnailer
2+typeinfo Thumbnailer.qmltypes
3+
24Dummy 0.1 Dummy.qml
tests/mocks/Unity/Application/CMakeLists.txt+9−35
@@ -12,40 +12,14 @@ set(FakeUnityApplicationQml_SOURCES
1212
1313add_library(FakeUnityApplicationQml MODULE ${FakeUnityApplicationQml_SOURCES})
1414
15−qt5_use_modules(FakeUnityApplicationQml Core Quick)
16−
17−# copy files into build directory for shadow builds
18−add_custom_target(UnityAppQmlDirFile ALL
19− COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/qmldir" ${CMAKE_CURRENT_BINARY_DIR}
20− DEPENDS qmldir
21−)
22−add_custom_target(InputFilterAreaQmlFile ALL
23− COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/InputFilterArea.qml" ${CMAKE_CURRENT_BINARY_DIR}
24− DEPENDS InputFilterArea.qml
25−)
26−add_custom_target(OSKControllerQmlFile ALL
27− COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/OSKController.qml" ${CMAKE_CURRENT_BINARY_DIR}
28− DEPENDS OSKController.qml
29−)
15+add_library(NonMirUnityApplicationQml MODULE ${FakeUnityApplicationQml_SOURCES})
16+set_target_properties(NonMirUnityApplicationQml PROPERTIES OUTPUT_NAME FakeUnityApplicationQml)
3017
31−install(TARGETS FakeUnityApplicationQml
32− DESTINATION ${SHELL_INSTALL_QML}/mocks/Unity/Application
33− )
34−
35−install(FILES qmldir InputFilterArea.qml OSKController.qml
36− DESTINATION ${SHELL_INSTALL_QML}/mocks/Unity/Application
37− )
38−
39−# Duplicate the mock to nonmirplugins
40−# In shadow builds we just link it, in real installs we also install it to the other path
41−add_custom_target(OSKControllerQmlFile2 ALL
42− COMMAND mkdir -p ${CMAKE_BINARY_DIR}/nonmirplugins/Unity && rm -f ${CMAKE_BINARY_DIR}/nonmirplugins/Unity/Application && ln -s ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR}/nonmirplugins/Unity
43− DEPENDS qmldir
44−)
45−install(TARGETS FakeUnityApplicationQml
46− DESTINATION ${SHELL_INSTALL_QML}/nonmirplugins/Unity/Application
47− )
18+qt5_use_modules(FakeUnityApplicationQml Core Quick)
19+qt5_use_modules(NonMirUnityApplicationQml Core Quick)
4820
49−install(FILES qmldir InputFilterArea.qml OSKController.qml
50− DESTINATION ${SHELL_INSTALL_QML}/nonmirplugins/Unity/Application
51− )
21+add_unity8_mock(Unity.Application 0.1 Unity/Application PREFIX mocks TARGETS FakeUnityApplicationQml)
22+add_unity8_mock(Unity.Application 0.1 Unity/Application
23+ PREFIX nonmirplugins
24+ TARGETS NonMirUnityApplicationQml
25+ BINARY_DIR ${CMAKE_BINARY_DIR}/nonmirplugins)
tests/mocks/Unity/Application/qmldir+2
@@ -1,4 +1,6 @@
11module Unity.Application
22plugin FakeUnityApplicationQml
3+typeinfo Application.qmltypes
4+
35InputFilterArea 0.1 InputFilterArea.qml
46OSKController 0.1 OSKController.qml
tests/mocks/Unity/CMakeLists.txt+1−12
@@ -39,15 +39,4 @@ target_link_libraries(FakeUnityQml
3939
4040qt5_use_modules(FakeUnityQml Qml)
4141
42−# copy qmldir file into build directory for shadow builds
43−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
44− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
45− )
46−
47−install(TARGETS FakeUnityQml
48− DESTINATION ${SHELL_INSTALL_QML}/scopefakes/Unity
49− )
50−
51−install(FILES qmldir
52− DESTINATION ${SHELL_INSTALL_QML}/scopefakes/Unity
53− )
42+add_unity8_mock(Unity 0.2 Unity PREFIX scopefakes TARGETS FakeUnityQml)
tests/mocks/Unity/Indicators/CMakeLists.txt+1−14
@@ -37,17 +37,4 @@ target_link_libraries(IndicatorsFakeQml)
3737
3838qt5_use_modules(IndicatorsFakeQml Core Qml Quick)
3939
40−file(GLOB IndicatorsFake_QMLFILES
41− *.qml
42− qml/FakeMenuPage.qml
43−)
44−
45−# copy qmldir file into build directory for shadow builds
46−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
47− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
48−)
49−
50−# copy qmldir file into build directory for shadow builds
51−file(COPY ${IndicatorsFake_QMLFILES}
52− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
53−)
40+add_unity8_mock(Unity.Indicators 0.1 Unity/Indicators TARGETS IndicatorsFakeQml)
tests/mocks/Unity/Indicators/qml/FakeMenuPage.qml → tests/mocks/Unity/Indicators/FakeMenuPage.qmlrenamed

The content is the same.

tests/mocks/Unity/Indicators/qmldir+1
@@ -1,5 +1,6 @@
11module Unity.Indicators
22plugin IndicatorsFakeQml
3+typeinfo Indicators.qmltypes
34
45CachedUnityMenuModel 0.1 CachedUnityMenuModel.qml
56IndicatorBase 0.1 IndicatorBase.qml
tests/mocks/Unity/Launcher/CMakeLists.txt+1−5
@@ -20,8 +20,4 @@ add_library(MockLauncherPlugin MODULE ${MockLauncherModel_SOURCES})
2020
2121qt5_use_modules(MockLauncherPlugin Core Quick)
2222
23−# copy files into build directory for shadow builds
24−add_custom_target(LauncherPluginQmlDirFile ALL
25− COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/qmldir" ${CMAKE_CURRENT_BINARY_DIR}
26− DEPENDS qmldir
27−)
23+add_unity8_mock(Unity.Launcher 0.1 Unity/Launcher TARGETS MockLauncherPlugin)
tests/mocks/Unity/Launcher/qmldir+1
@@ -1,2 +1,3 @@
11module Unity.Launcher
22plugin MockLauncherPlugin
3+typeinfo Launcher.qmltypes
tests/mocks/Unity/Notifications/CMakeLists.txt+1−11
@@ -1,11 +1 @@
1−file(GLOB QMLFILES
2− *.qml
3− *.js
4− qmldir
5−)
6−
7−# copy files into build directory for shadow builds
8−add_custom_target(NotificationsQmlFiles ALL
9− COMMAND cp ${QMLFILES} ${CMAKE_CURRENT_BINARY_DIR}
10− DEPENDS ${QMLFILES}
11−)
1+add_unity8_mock(Unity.Notifications 1.0 Unity/Notifications)
tests/mocks/Unity/Notifications/qmldir+1
@@ -1,2 +1,3 @@
11module Unity.Notifications
22Notification 1.0 notification.js
3+typeinfo Notifications.qmltypes
tests/mocks/Unity/qmldir+1
@@ -1,2 +1,3 @@
11module Unity
22plugin FakeUnityQml
3+typeinfo Unity.qmltypes
tests/utils/modules/Unity/Test/CMakeLists.txt+4−7
@@ -1,3 +1,5 @@
1+include(QmlPlugins)
2+
13add_definitions(-DQT_NO_KEYWORDS)
24
35include_directories(
@@ -14,10 +16,5 @@ add_library(UnityTestQml MODULE ${UnityTestQML_SOURCES})
1416
1517qt5_use_modules(UnityTestQml Core Quick Test)
1618
17−# copy qml files into build directory for shadow builds
18−file(GLOB QML_JS_FILES *.js *.qml qmldir)
19−
20−add_custom_target(UnityTestQmlJsFiles ALL
21− COMMAND cp ${QML_JS_FILES} ${CMAKE_CURRENT_BINARY_DIR}
22− DEPENDS ${QML_JS_FILES}
23−)
19+export_qmlfiles(Unity.Test Unity/Test)
20+export_qmlplugin(Unity.Test 0.1 Unity/Test TARGETS UnityTestQml)
tests/utils/modules/Unity/Test/qmldir+2
@@ -1,3 +1,5 @@
11module Unity.Test
22plugin UnityTestQml
3+typeinfo Test.qmltypes
4+
35UnityTestCase 0.1 UnityTestCase.qml