Mir

Merge lp:~alan-griffiths/mir/mive-miral-to-mir-regeneration into lp:mir

Proposed by Alan Griffiths on 2017-08-25
Status: Superseded
Proposed branch: lp:~alan-griffiths/mir/mive-miral-to-mir-regeneration
Merge into: lp:mir
Prerequisite: lp:~alan-griffiths/mir/move-miral-test-to-mir
Diff against target: 1133 lines (+694/-190)
17 files modified
CMakeLists.txt (+1/-1)
doc/Doxyfile.in (+2/-1)
examples/basic.c (+5/-8)
include/client/mir_toolkit/mir_buffer.h (+2/-0)
include/client/mir_toolkit/mir_display_configuration.h (+4/-4)
include/client/mir_toolkit/mir_input_device.h (+3/-3)
include/client/mir_toolkit/mir_window.h (+1/-1)
include/client/mir_toolkit/rs/mir_render_surface.h (+1/-1)
include/miral/miral/command_line_option.h (+5/-0)
include/miral/miral/window_management_policy_addendum3.h (+1/-0)
include/platform/mir/graphics/platform.h (+1/-0)
include/server/mir/graphics/display_configuration_observer.h (+1/-1)
include/test/mir_test_framework/main.h (+2/-2)
src/miral/CMakeLists.txt (+10/-146)
src/miral/miral.pc.in (+0/-12)
src/miral/mirclientcpp.pc.in (+0/-10)
src/miral/process_doxygen_xml.py (+655/-0)
To merge this branch: bzr merge lp:~alan-griffiths/mir/mive-miral-to-mir-regeneration
Reviewer Review Type Date Requested Status
Mir CI Bot continuous-integration Needs Fixing on 2017-08-30
Gerry Boland 2017-08-25 Approve on 2017-08-30
Review via email: mp+329590@code.launchpad.net

This proposal has been superseded by a proposal from 2017-08-31.

Commit message

 Incorporate the utility script for regenerating the libmiral symbols file. Vis:

$ make regenerate-miral-symbols-map

Description of the change

Incorporate miral project into mir source tree

This is a third-cut:

1. There's no attempt to remove code obsoleted by MirAL
2. There's no reworking of the generated docs to include miral

To post a comment you must log in.
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:4257
https://mir-jenkins.ubuntu.com/job/mir-ci/3585/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4908
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/5131
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/5120
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/5120
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/5120
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4947
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4947/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4947
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4947/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4947
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4947/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4947
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4947/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4947
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4947/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4947
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4947/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4947
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4947/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4947
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4947/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://mir-jenkins.ubuntu.com/job/mir-ci/3585/rebuild

review: Approve (continuous-integration)
Gerry Boland (gerboland) wrote :

+#! /usr/bin/python
Does this need to be python3?

review: Needs Information
Alan Griffiths (alan-griffiths) wrote :

> +#! /usr/bin/python
> Does this need to be python3?

It could be, it doesn't need to be.

Gerry Boland (gerboland) wrote :

Seems ok

review: Approve
Mir CI Bot (mir-ci-bot) wrote :

FAILED: Autolanding.
More details in the following jenkins job:
https://mir-jenkins.ubuntu.com/job/mir-autolanding/1399/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/4938/console
    None: https://mir-jenkins.ubuntu.com/job/generic-land-mp/1529/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-0-fetch/5163/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/5153/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/5153/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/5153/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4977/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4977/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4977/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4977/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4977/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4977/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4977/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4977/console

review: Needs Fixing (continuous-integration)
Mir CI Bot (mir-ci-bot) wrote :

FAILED: Continuous integration, rev:4258
https://mir-jenkins.ubuntu.com/job/mir-ci/3613/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/4940/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-0-fetch/5165/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/5155/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/5155/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/5155/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4979/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4979/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4979/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4979/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4979/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4979/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4979/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4979/console

Click here to trigger a rebuild:
https://mir-jenkins.ubuntu.com/job/mir-ci/3613/rebuild

review: Needs Fixing (continuous-integration)
4259. By Alan Griffiths on 2017-08-31

merge :parent

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2017-08-22 16:55:23 +0000
3+++ CMakeLists.txt 2017-08-30 16:18:50 +0000
4@@ -53,6 +53,7 @@
5 include (cmake/EnableCoverageReport.cmake)
6 include (cmake/MirCommon.cmake)
7 include (GNUInstallDirs)
8+include (cmake/Doxygen.cmake)
9
10 set(build_types "None;Debug;Release;RelWithDebInfo;MinSizeRel;Coverage;AddressSanitizer;ThreadSanitizer;UBSanitizer")
11 # Change informational string for CMAKE_BUILD_TYPE
12@@ -300,7 +301,6 @@
13 endif ()
14
15 enable_coverage_report(mirserver)
16-include (cmake/Doxygen.cmake)
17 include (cmake/ABICheck.cmake)
18
19 add_custom_target(ptest
20
21=== modified file 'doc/Doxyfile.in'
22--- doc/Doxyfile.in 2017-05-08 03:04:26 +0000
23+++ doc/Doxyfile.in 2017-08-30 16:18:50 +0000
24@@ -875,7 +875,8 @@
25 # Note that the wildcards are matched against the file with absolute path, so to
26 # exclude all test directories for example use the pattern */test/*
27
28-EXCLUDE_PATTERNS = */include/test/*
29+EXCLUDE_PATTERNS = *.capnp.c++ \
30+ */examples/multi_stream.cpp
31
32 # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
33 # (namespaces, classes, functions, etc.) that should be excluded from the
34
35=== modified file 'examples/basic.c'
36--- examples/basic.c 2017-07-28 17:00:43 +0000
37+++ examples/basic.c 2017-08-30 16:18:50 +0000
38@@ -41,16 +41,12 @@
39 /// \snippet basic.c surface_release_tag
40 ///\subsection connection_release We release our connection
41 /// \snippet basic.c connection_release_tag
42-///\subsection get the raw, platform-specific buffer handle for the current buffer
43-/// \snippet basic.c get_current_buffer_tag
44+///\subsection get graphics region for the current buffer
45+/// \snippet basic.c get_graphics_region_tag
46 /// \example basic.c A simple mir client
47 ///\section MirDemoState MirDemoState
48 /// The handles needs to be accessible both to callbacks and to the control function.
49 /// \snippet basic.c MirDemoState_tag
50-///\section Callbacks Callbacks
51-/// This program opens a mir connection and creates a surface. The handles
52-/// needs to be accessible both to callbacks and to the control function.
53-/// \snippet basic.c Callback_tag
54
55 ///\internal [MirDemoState_tag]
56 // Utility structure for the state of a single surface session.
57@@ -143,11 +139,12 @@
58 {
59 // We can query the current graphics buffer attributes
60 {
61+ ///\internal [get_graphics_region_tag]
62 MirGraphicsRegion graphics_region;
63 mir_buffer_stream_get_graphics_region(bs, &graphics_region);
64
65- ///\internal [get_current_buffer_tag]
66- // In a real application we'd render into the current buffer
67+ ///\internal [get_graphics_region_tag]
68+ // In a real application we'd render into the graphics_region
69 }
70
71 ///\internal [swap_buffers_tag]
72
73=== modified file 'include/client/mir_toolkit/mir_buffer.h'
74--- include/client/mir_toolkit/mir_buffer.h 2017-07-28 17:00:43 +0000
75+++ include/client/mir_toolkit/mir_buffer.h 2017-08-30 16:18:50 +0000
76@@ -40,6 +40,7 @@
77 * \param [in] connection The connection
78 * \param [in] width Requested buffer width
79 * \param [in] height Requested buffer height
80+ * \param [in] format Requested buffer pixel format
81 * \param [in] available_callback The callback called when the buffer
82 * is available
83 * \param [in] available_context The context for the available_callback
84@@ -55,6 +56,7 @@
85 * \param [in] connection The connection
86 * \param [in] width Requested buffer width
87 * \param [in] height Requested buffer height
88+ * \param [in] format Requested buffer pixel format
89 * \return The buffer
90 **/
91 MirBuffer* mir_connection_allocate_buffer_sync(
92
93=== modified file 'include/client/mir_toolkit/mir_display_configuration.h'
94--- include/client/mir_toolkit/mir_display_configuration.h 2017-07-28 17:00:43 +0000
95+++ include/client/mir_toolkit/mir_display_configuration.h 2017-08-30 16:18:50 +0000
96@@ -539,7 +539,7 @@
97 * \param [in] output The MirOutput to query
98 * \returns true if gamma is supported on the hardware, otherwise not supported
99 */
100-bool mir_output_is_gamma_supported(MirOutput const* client_output);
101+bool mir_output_is_gamma_supported(MirOutput const* output);
102
103 /** Gets the gamma size
104 *
105@@ -547,7 +547,7 @@
106 * \returns The size of the gamma ramp LUT
107 *
108 */
109-uint32_t mir_output_get_gamma_size(MirOutput const* client_output);
110+uint32_t mir_output_get_gamma_size(MirOutput const* output);
111
112 /** Get the gamma ramp of a display
113 *
114@@ -559,7 +559,7 @@
115 * \param [out] blue The blue gamma ramp
116 * \param [in] size The size of the gamma ramp
117 */
118-void mir_output_get_gamma(MirOutput const* client_output,
119+void mir_output_get_gamma(MirOutput const* output,
120 uint16_t* red,
121 uint16_t* green,
122 uint16_t* blue,
123@@ -573,7 +573,7 @@
124 * \param [in] blue The blue gamma ramp
125 * \param [in] size The size of the gamma ramp
126 */
127-void mir_output_set_gamma(MirOutput* client_output,
128+void mir_output_set_gamma(MirOutput* output,
129 uint16_t const* red,
130 uint16_t const* green,
131 uint16_t const* blue,
132
133=== modified file 'include/client/mir_toolkit/mir_input_device.h'
134--- include/client/mir_toolkit/mir_input_device.h 2017-07-28 17:00:43 +0000
135+++ include/client/mir_toolkit/mir_input_device.h 2017-08-30 16:18:50 +0000
136@@ -235,7 +235,7 @@
137 * Set the options of the keymap as a null terminated string.
138 *
139 * \param [in] conf The keyboard config
140- * \param [in] layout The keymap options
141+ * \param [in] options The keymap options
142 */
143 void mir_keyboard_config_set_keymap_options(
144 MirKeyboardConfig* conf, char const* options);
145@@ -244,7 +244,7 @@
146 * Set the variant of the keymap as a null terminated string.
147 *
148 * \param [in] conf The keyboard config
149- * \param [in] layout The keymap variant
150+ * \param [in] variant The keymap variant
151 */
152 void mir_keyboard_config_set_keymap_variant(
153 MirKeyboardConfig* conf, char const* variant);
154@@ -549,7 +549,7 @@
155 * Configure whether middle mouse button emulation should be enabled
156 *
157 * \param [in] conf The touchpad config
158- * \param [in] middle_mouse_button_emulation
159+ * \param [in] middle_emulation
160 */
161 void mir_touchpad_config_set_middle_mouse_button_emulation(
162 MirTouchpadConfig* conf, bool middle_emulation);
163
164=== modified file 'include/client/mir_toolkit/mir_window.h'
165--- include/client/mir_toolkit/mir_window.h 2017-07-28 17:00:43 +0000
166+++ include/client/mir_toolkit/mir_window.h 2017-08-30 16:18:50 +0000
167@@ -506,7 +506,7 @@
168 * \param [in] spec the spec to update
169 * \param [in] rect the destination rectangle to align with
170 * \param [in] rect_gravity the point on \p rect to align with
171- * \param [in] surface_gravity the point on the window to align with
172+ * \param [in] window_gravity the point on the window to align with
173 * \param [in] placement_hints positioning hints to use when limited on space
174 * \param [in] offset_dx horizontal offset to shift w.r.t. \p rect
175 * \param [in] offset_dy vertical offset to shift w.r.t. \p rect
176
177=== modified file 'include/client/mir_toolkit/rs/mir_render_surface.h'
178--- include/client/mir_toolkit/rs/mir_render_surface.h 2017-07-28 17:00:43 +0000
179+++ include/client/mir_toolkit/rs/mir_render_surface.h 2017-08-30 16:18:50 +0000
180@@ -53,7 +53,7 @@
181 * \param [in] connection A valid connection
182 * \param [in] width The width in pixels
183 * \param [in] height The height in pixels
184- * \param [in] MirRenderSurfaceCallback Callback to be invoked when the request completes.
185+ * \param [in] callback Callback to be invoked when the request completes.
186 * The callback is guaranteed to be called and called
187 * with a non-null MirRenderSurface*, but the render
188 * surface may be invalid in case of error.
189
190=== modified file 'include/miral/miral/command_line_option.h'
191--- include/miral/miral/command_line_option.h 2017-08-21 14:18:55 +0000
192+++ include/miral/miral/command_line_option.h 2017-08-30 16:18:50 +0000
193@@ -103,6 +103,11 @@
194 std::shared_ptr<Self> self;
195 };
196
197+/**
198+ * Update the option to be called back *before* Mir initialization starts
199+ *
200+ * \param clo the option
201+ */
202 auto pre_init(CommandLineOption const& clo) -> CommandLineOption;
203 }
204
205
206=== modified file 'include/miral/miral/window_management_policy_addendum3.h'
207--- include/miral/miral/window_management_policy_addendum3.h 2017-08-21 14:18:55 +0000
208+++ include/miral/miral/window_management_policy_addendum3.h 2017-08-30 16:18:50 +0000
209@@ -46,6 +46,7 @@
210 * vertically maximized windows to allow adjustment for decorations.
211 *
212 * @param window_info the window
213+ * @param new_state the new state
214 * @param new_placement the suggested placement
215 *
216 * @return the confirmed placement of the window
217
218=== modified file 'include/platform/mir/graphics/platform.h'
219--- include/platform/mir/graphics/platform.h 2017-07-28 17:00:43 +0000
220+++ include/platform/mir/graphics/platform.h 2017-08-30 16:18:50 +0000
221@@ -210,6 +210,7 @@
222 * \param [in] options options to use for this platform
223 * \param [in] emergency_cleanup_registry object to register emergency shutdown handlers with
224 * \param [in] report the object to use to report interesting events from the display subsystem
225+ * \param [in] logger the object to use to log interesting events from the display subsystem
226 *
227 * This factory function needs to be implemented by each platform.
228 *
229
230=== modified file 'include/server/mir/graphics/display_configuration_observer.h'
231--- include/server/mir/graphics/display_configuration_observer.h 2017-07-28 17:00:43 +0000
232+++ include/server/mir/graphics/display_configuration_observer.h 2017-08-30 16:18:50 +0000
233@@ -57,7 +57,7 @@
234 /**
235 * Notification after updating base display configuration.
236 *
237- * \param [in] config The configuration that has just been updated.
238+ * \param [in] base_config The configuration that has just been updated.
239 */
240 virtual void base_configuration_updated(std::shared_ptr<DisplayConfiguration const> const& base_config) = 0;
241
242
243=== modified file 'include/test/mir_test_framework/main.h'
244--- include/test/mir_test_framework/main.h 2017-07-28 17:00:43 +0000
245+++ include/test/mir_test_framework/main.h 2017-08-30 16:18:50 +0000
246@@ -23,11 +23,11 @@
247 {
248 /**
249 * Initialize and run the mir test framework as follows:
250- *
251+ * \code
252 * ::testing::InitGoogleTest(&argc, argv);
253 * set_commandline(argc, argv);
254 * return RUN_ALL_TESTS();
255- *
256+ * \endcode
257 * \attention If you override main() for your own purposes call this or do
258 * something equivalent to run the tests.
259 */
260
261=== modified file 'src/miral/CMakeLists.txt'
262--- src/miral/CMakeLists.txt 2017-08-30 16:18:50 +0000
263+++ src/miral/CMakeLists.txt 2017-08-30 16:18:50 +0000
264@@ -1,4 +1,3 @@
265-<<<<<<< TREE
266 set(MIRAL_VERSION_MAJOR 1)
267 set(MIRAL_VERSION_MINOR 5)
268 set(MIRAL_VERSION_PATCH 0)
269@@ -135,148 +134,13 @@
270 ${miral_include}/miral/version.h
271 )
272
273-install(TARGETS miral LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}")
274-install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/miral DESTINATION "${INCLUDEDIR}")
275-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/miral.pc
276- ${CMAKE_CURRENT_BINARY_DIR}/mirclientcpp.pc DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig")
277-=======
278-set(MIRAL_VERSION_MAJOR 1)
279-set(MIRAL_VERSION_MINOR 5)
280-set(MIRAL_VERSION_PATCH 0)
281-
282-if(${CMAKE_COMPILER_IS_GNUCXX})
283- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto")
284- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto")
285- set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -flto")
286- set(CMAKE_AR "gcc-ar")
287- set(CMAKE_NM "gcc-nm")
288- set(CMAKE_RANLIB "gcc-ranlib")
289-endif()
290-
291-include_directories(
292- ${PROJECT_SOURCE_DIR}/include/platform
293- ${PROJECT_SOURCE_DIR}/include/client
294- ${PROJECT_SOURCE_DIR}/include/server
295-)
296-
297-set(MIRAL_ABI 2)
298-set(symbol_map ${CMAKE_CURRENT_SOURCE_DIR}/symbols.map)
299-set(miral_include ${PROJECT_SOURCE_DIR}/include/miral)
300-
301-add_library(mirclientcpp INTERFACE)
302-
303-add_library(miral-internal STATIC
304- basic_window_manager.cpp basic_window_manager.h window_manager_tools_implementation.h
305- coordinate_translator.cpp coordinate_translator.h
306- display_configuration_listeners.cpp display_configuration_listeners.h
307- mru_window_list.cpp mru_window_list.h
308- window_management_trace.cpp window_management_trace.h
309- xcursor_loader.cpp xcursor_loader.h
310- xcursor.c xcursor.h
311- both_versions.h
312- join_client_threads.h
313-)
314-
315-set_source_files_properties(xcursor.c PROPERTIES COMPILE_DEFINITIONS _GNU_SOURCE)
316-
317-add_library(miral SHARED
318- active_outputs.cpp ${miral_include}/miral/active_outputs.h
319- add_init_callback.cpp ${miral_include}/miral/add_init_callback.h
320- application.cpp ${miral_include}/miral/application.h
321- application_authorizer.cpp ${miral_include}/miral/application_authorizer.h
322- application_info.cpp ${miral_include}/miral/application_info.h
323- canonical_window_manager.cpp ${miral_include}/miral/canonical_window_manager.h
324- command_line_option.cpp ${miral_include}/miral/command_line_option.h
325- cursor_theme.cpp ${miral_include}/miral/cursor_theme.h
326- debug_extension.cpp ${miral_include}/miral/debug_extension.h
327- keymap.cpp ${miral_include}/miral/keymap.h
328- runner.cpp ${miral_include}/miral/runner.h
329- display_configuration_option.cpp ${miral_include}/miral/display_configuration_option.h
330- output.cpp ${miral_include}/miral/output.h
331- append_event_filter.cpp ${miral_include}/miral/append_event_filter.h
332- window.cpp ${miral_include}/miral/window.h
333- window_info.cpp ${miral_include}/miral/window_info.h
334- window_management_options.cpp ${miral_include}/miral/window_management_options.h
335- window_specification.cpp ${miral_include}/miral/window_specification.h
336- internal_client.cpp ${miral_include}/miral/internal_client.h
337- set_command_line_handler.cpp ${miral_include}/miral/set_command_line_handler.h
338- set_terminator.cpp ${miral_include}/miral/set_terminator.h
339- set_window_management_policy.cpp ${miral_include}/miral/set_window_management_policy.h
340- workspace_policy.cpp ${miral_include}/miral/workspace_policy.h
341- window_management_policy.cpp ${miral_include}/miral/window_management_policy.h
342- window_manager_tools.cpp ${miral_include}/miral/window_manager_tools.h
343- ${miral_include}/miral/window_management_policy_addendum2.h
344- ${miral_include}/miral/window_management_policy_addendum3.h
345- ${miral_include}/mir/client/blob.h
346- ${miral_include}/mir/client/cookie.h
347- ${miral_include}/mir/client/window_spec.h
348- ${miral_include}/mir/client/window_id.h
349- ${miral_include}/mir/client/connection.h
350- ${miral_include}/mir/client/display_config.h
351- ${miral_include}/mir/client/window.h
352-)
353-
354-target_include_directories(mirclientcpp
355- INTERFACE "${miral_include}" ${MIRCLIENT_INCLUDE_DIRS}
356-)
357-
358-target_include_directories(miral-internal
359- PRIVATE "${miral_include}" ${MIRCLIENT_INCLUDE_DIRS}
360- PRIVATE ${MIRSERVER_INCLUDE_DIRS}
361-)
362-
363-target_include_directories(miral
364- PUBLIC "${miral_include}" ${MIRCLIENT_INCLUDE_DIRS}
365- PRIVATE ${MIRSERVER_INCLUDE_DIRS}
366-)
367-
368-target_link_libraries(miral
369- PUBLIC
370- mirclient
371- mircommon
372- PRIVATE
373- miral-internal
374- mirserver
375-)
376-
377-set_target_properties(miral
378- PROPERTIES
379- SOVERSION ${MIRAL_ABI}
380- LINK_FLAGS "-Wl,--exclude-libs=ALL -Wl,--version-script,${symbol_map}"
381- LINK_DEPENDS ${symbol_map}
382-)
383-
384-# clang generates slightly different symbols (but we don't care)
385-if (CMAKE_COMPILER_IS_GNUCXX)
386- add_custom_target(check-miral-symbols ALL
387- DEPENDS miral ${PROJECT_SOURCE_DIR}/debian/libmiral${MIRAL_ABI}.symbols
388- COMMAND rm -f ${CMAKE_CURRENT_BINARY_DIR}/libmiral${MIRAL_ABI}.symbols
389- COMMAND dpkg-gensymbols -e${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libmiral.so.${MIRAL_ABI} -plibmiral${MIRAL_ABI} -O${CMAKE_CURRENT_BINARY_DIR}/libmiral${MIRAL_ABI}.symbols
390- WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
391- VERBATIM
392- )
393-endif()
394-
395-set(LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}")
396-set(INCLUDEDIR "${CMAKE_INSTALL_PREFIX}/include")
397-
398-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/miral.pc.in
399- ${CMAKE_CURRENT_BINARY_DIR}/miral.pc
400- @ONLY
401-)
402-
403-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/mirclientcpp.pc.in
404- ${CMAKE_CURRENT_BINARY_DIR}/mirclientcpp.pc
405- @ONLY
406-)
407-
408-configure_file(
409- ${CMAKE_CURRENT_SOURCE_DIR}/version.h.in
410- ${miral_include}/miral/version.h
411-)
412-
413-install(TARGETS miral LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}")
414-install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/miral DESTINATION "${INCLUDEDIR}")
415-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/miral.pc
416- ${CMAKE_CURRENT_BINARY_DIR}/mirclientcpp.pc DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig")
417->>>>>>> MERGE-SOURCE
418+if(TARGET doc)
419+ add_custom_target(regenerate-miral-symbols-map
420+ ${CMAKE_CURRENT_SOURCE_DIR}/process_doxygen_xml.py ${CMAKE_BINARY_DIR}/doc/xml/*.xml > ${symbol_map}
421+ DEPENDS doc)
422+endif()
423+
424+install(TARGETS miral LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}")
425+install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/miral DESTINATION "${INCLUDEDIR}")
426+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/miral.pc
427+ ${CMAKE_CURRENT_BINARY_DIR}/mirclientcpp.pc DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig")
428
429=== modified file 'src/miral/miral.pc.in'
430--- src/miral/miral.pc.in 2017-08-30 16:18:50 +0000
431+++ src/miral/miral.pc.in 2017-08-29 09:17:03 +0000
432@@ -1,4 +1,3 @@
433-<<<<<<< TREE
434 libdir=@LIBDIR@
435 includedir=@INCLUDEDIR@/miral
436
437@@ -8,14 +7,3 @@
438 Requires: mirclientcpp
439 Libs: -L${libdir} -lmiral
440 Cflags: -I${includedir}
441-=======
442-libdir=@LIBDIR@
443-includedir=@INCLUDEDIR@
444-
445-Name: miral
446-Description: Mir Abstraction Layer library
447-Version: @MIRAL_VERSION@
448-Requires: mirclientcpp
449-Libs: -L${libdir} -lmiral
450-Cflags: -I${includedir}
451->>>>>>> MERGE-SOURCE
452
453=== modified file 'src/miral/mirclientcpp.pc.in'
454--- src/miral/mirclientcpp.pc.in 2017-08-30 16:18:50 +0000
455+++ src/miral/mirclientcpp.pc.in 2017-08-29 09:17:03 +0000
456@@ -1,4 +1,3 @@
457-<<<<<<< TREE
458 includedir=@INCLUDEDIR@/miral
459
460 Name: mirclientcpp
461@@ -6,12 +5,3 @@
462 Version: @MIRAL_VERSION@
463 Requires: mirclient
464 Cflags: -I${includedir}
465-=======
466-includedir=@INCLUDEDIR@
467-
468-Name: mirclientcpp
469-Description: Mir Abstraction Layer C++ wrapper for mirclient
470-Version: @MIRAL_VERSION@
471-Requires: mirclient
472-Cflags: -I${includedir}
473->>>>>>> MERGE-SOURCE
474
475=== added file 'src/miral/process_doxygen_xml.py'
476--- src/miral/process_doxygen_xml.py 1970-01-01 00:00:00 +0000
477+++ src/miral/process_doxygen_xml.py 2017-08-30 16:18:50 +0000
478@@ -0,0 +1,655 @@
479+#! /usr/bin/python
480+"""This script processes the XML generated by "make doc" and produces summary information
481+on symbols that libmiral intends to make public.
482+
483+To use: Go to your build folder and run "make regenerate-miral-symbols"""""
484+
485+from xml.dom import minidom
486+from sys import argv
487+
488+HELPTEXT = __doc__
489+DEBUG = False
490+
491+def _get_text(node):
492+ substrings = []
493+ for node in node.childNodes:
494+ if node.nodeType == node.TEXT_NODE:
495+ substrings.append(node.data)
496+ elif node.nodeType == node.ELEMENT_NODE:
497+ substrings.append(_get_text(node))
498+ return ''.join(substrings)
499+
500+def _get_text_for_element(parent, tagname):
501+ substrings = []
502+
503+ for node in parent.getElementsByTagName(tagname):
504+ substrings.append(_get_text(node))
505+
506+ return ''.join(substrings)
507+
508+def _get_file_location(node):
509+ for node in node.childNodes:
510+ if node.nodeType == node.ELEMENT_NODE and node.tagName == 'location':
511+ return node.attributes['file'].value
512+ if DEBUG:
513+ print('no location in:', node)
514+ return None
515+
516+def _has_element(node, tagname):
517+ for node in node.childNodes:
518+ if node.nodeType == node.ELEMENT_NODE and node.tagName in tagname:
519+ return True
520+ return False
521+
522+def _print_attribs(node, attribs):
523+ for attrib in attribs:
524+ print(' ', attrib, '=', node.attributes[attrib].value)
525+
526+def _concat_text_from_tags(parent, tagnames):
527+ substrings = []
528+
529+ for tag in tagnames:
530+ substrings.append(_get_text_for_element(parent, tag))
531+
532+ return ''.join(substrings)
533+
534+def _print_location(node):
535+ print(' ', 'location', '=', _get_file_location(node))
536+
537+def _get_attribs(node):
538+ kind = node.attributes['kind'].value
539+ static = node.attributes['static'].value
540+ prot = node.attributes['prot'].value
541+ return kind, static, prot
542+
543+COMPONENT_MAP = {}
544+SYMBOLS = {'public' : set(), 'private' : set()}
545+
546+def _report(publish, symbol):
547+ symbol = symbol.replace('~', '?')
548+
549+ if publish:
550+ SYMBOLS['public'].add(symbol)
551+ else:
552+ SYMBOLS['private'].add(symbol)
553+
554+ if not DEBUG:
555+ return
556+
557+ if publish:
558+ print(' PUBLISH: {}'.format(symbol))
559+ else:
560+ print('NOPUBLISH: {}'.format(symbol))
561+
562+OLD_STANZAS = '''MIRAL_1.0 {
563+global:
564+ extern "C++" {
565+ miral::ActiveOutputsListener::?ActiveOutputsListener*;
566+ miral::ActiveOutputsListener::ActiveOutputsListener*;
567+ miral::ActiveOutputsListener::advise_output_begin*;
568+ miral::ActiveOutputsListener::advise_output_create*;
569+ miral::ActiveOutputsListener::advise_output_delete*;
570+ miral::ActiveOutputsListener::advise_output_end*;
571+ miral::ActiveOutputsListener::advise_output_update*;
572+ miral::ActiveOutputsListener::operator*;
573+ miral::ActiveOutputsMonitor::?ActiveOutputsMonitor*;
574+ miral::ActiveOutputsMonitor::ActiveOutputsMonitor*;
575+ miral::ActiveOutputsMonitor::add_listener*;
576+ miral::ActiveOutputsMonitor::delete_listener*;
577+ miral::ActiveOutputsMonitor::operator*;
578+ miral::ActiveOutputsMonitor::process_outputs*;
579+ miral::AddInitCallback::?AddInitCallback*;
580+ miral::AddInitCallback::AddInitCallback*;
581+ miral::AddInitCallback::operator*;
582+ miral::AppendEventFilter::AppendEventFilter*;
583+ miral::AppendEventFilter::operator*;
584+ miral::ApplicationAuthorizer::?ApplicationAuthorizer*;
585+ miral::ApplicationAuthorizer::ApplicationAuthorizer*;
586+ miral::ApplicationAuthorizer::operator*;
587+ miral::ApplicationCredentials::ApplicationCredentials*;
588+ miral::ApplicationCredentials::gid*;
589+ miral::ApplicationCredentials::pid*;
590+ miral::ApplicationCredentials::uid*;
591+ miral::ApplicationInfo::?ApplicationInfo*;
592+ miral::ApplicationInfo::ApplicationInfo*;
593+ miral::ApplicationInfo::add_window*;
594+ miral::ApplicationInfo::application*;
595+ miral::ApplicationInfo::name*;
596+ miral::ApplicationInfo::operator*;
597+ miral::ApplicationInfo::remove_window*;
598+ miral::ApplicationInfo::userdata*;
599+ miral::ApplicationInfo::windows*;
600+ miral::BasicSetApplicationAuthorizer::?BasicSetApplicationAuthorizer*;
601+ miral::BasicSetApplicationAuthorizer::BasicSetApplicationAuthorizer*;
602+ miral::BasicSetApplicationAuthorizer::operator*;
603+ miral::BasicSetApplicationAuthorizer::the_application_authorizer*;
604+ miral::CanonicalWindowManagerPolicy::CanonicalWindowManagerPolicy*;
605+ miral::CanonicalWindowManagerPolicy::advise_focus_gained*;
606+ miral::CanonicalWindowManagerPolicy::confirm_inherited_move*;
607+ miral::CanonicalWindowManagerPolicy::handle_modify_window*;
608+ miral::CanonicalWindowManagerPolicy::handle_raise_window*;
609+ miral::CanonicalWindowManagerPolicy::handle_window_ready*;
610+ miral::CanonicalWindowManagerPolicy::place_new_surface*;
611+ miral::CommandLineOption::?CommandLineOption*;
612+ miral::CommandLineOption::CommandLineOption*;
613+ miral::CommandLineOption::operator*;
614+ miral::CursorTheme::?CursorTheme*;
615+ miral::CursorTheme::CursorTheme*;
616+ miral::CursorTheme::operator*;
617+ miral::DebugExtension::DebugExtension*;
618+ miral::DebugExtension::disable*;
619+ miral::DebugExtension::enable*;
620+ miral::DebugExtension::operator*;
621+ miral::InternalClientLauncher::?InternalClientLauncher*;
622+ miral::InternalClientLauncher::InternalClientLauncher*;
623+ miral::InternalClientLauncher::operator*;
624+ miral::Keymap::?Keymap*;
625+ miral::Keymap::Keymap*;
626+ miral::Keymap::operator*;
627+ miral::Keymap::set_keymap*;
628+ miral::MirRunner::?MirRunner*;
629+ miral::MirRunner::MirRunner*;
630+ miral::MirRunner::add_start_callback*;
631+ miral::MirRunner::add_stop_callback*;
632+ miral::MirRunner::run_with*;
633+ miral::MirRunner::set_exception_handler*;
634+ miral::MirRunner::stop*;
635+ miral::Output::?Output*;
636+ miral::Output::Output*;
637+ miral::Output::connected*;
638+ miral::Output::extents*;
639+ miral::Output::form_factor*;
640+ miral::Output::is_same_output*;
641+ miral::Output::operator*;
642+ miral::Output::orientation*;
643+ miral::Output::physical_size_mm*;
644+ miral::Output::pixel_format*;
645+ miral::Output::power_mode*;
646+ miral::Output::refresh_rate*;
647+ miral::Output::scale*;
648+ miral::Output::type*;
649+ miral::Output::used*;
650+ miral::Output::valid*;
651+ miral::SetCommandLineHandler::?SetCommandLineHandler*;
652+ miral::SetCommandLineHandler::SetCommandLineHandler*;
653+ miral::SetCommandLineHandler::operator*;
654+ miral::SetTerminator::?SetTerminator*;
655+ miral::SetTerminator::SetTerminator*;
656+ miral::SetTerminator::operator*;
657+ miral::SetWindowManagmentPolicy::?SetWindowManagmentPolicy*;
658+ miral::SetWindowManagmentPolicy::SetWindowManagmentPolicy*;
659+ miral::SetWindowManagmentPolicy::operator*;
660+ miral::StartupInternalClient::?StartupInternalClient*;
661+ miral::StartupInternalClient::operator*;
662+ miral::Window::?Window*;
663+ miral::Window::Window*;
664+ miral::Window::application*;
665+ miral::Window::move_to*;
666+ miral::Window::operator*;
667+ miral::Window::resize*;
668+ miral::Window::size*;
669+ miral::Window::top_left*;
670+ miral::WindowInfo::?WindowInfo*;
671+ miral::WindowInfo::WindowInfo*;
672+ miral::WindowInfo::add_child*;
673+ miral::WindowInfo::can_be_active*;
674+ miral::WindowInfo::children*;
675+ miral::WindowInfo::confine_pointer*;
676+ miral::WindowInfo::constrain_resize*;
677+ miral::WindowInfo::has_output_id*;
678+ miral::WindowInfo::height_inc*;
679+ miral::WindowInfo::is_visible*;
680+ miral::WindowInfo::max_aspect*;
681+ miral::WindowInfo::max_height*;
682+ miral::WindowInfo::max_width*;
683+ miral::WindowInfo::min_aspect*;
684+ miral::WindowInfo::min_height*;
685+ miral::WindowInfo::min_width*;
686+ miral::WindowInfo::must_have_parent*;
687+ miral::WindowInfo::must_not_have_parent*;
688+ miral::WindowInfo::name*;
689+ miral::WindowInfo::operator*;
690+ miral::WindowInfo::output_id*;
691+ miral::WindowInfo::parent*;
692+ miral::WindowInfo::preferred_orientation*;
693+ miral::WindowInfo::remove_child*;
694+ miral::WindowInfo::restore_rect*;
695+ miral::WindowInfo::userdata*;
696+ miral::WindowInfo::width_inc*;
697+ miral::WindowInfo::window*;
698+ miral::WindowManagementPolicy::?WindowManagementPolicy*;
699+ miral::WindowManagementPolicy::WindowManagementPolicy*;
700+ miral::WindowManagementPolicy::advise_begin*;
701+ miral::WindowManagementPolicy::advise_delete_app*;
702+ miral::WindowManagementPolicy::advise_delete_window*;
703+ miral::WindowManagementPolicy::advise_end*;
704+ miral::WindowManagementPolicy::advise_focus_gained*;
705+ miral::WindowManagementPolicy::advise_focus_lost*;
706+ miral::WindowManagementPolicy::advise_move_to*;
707+ miral::WindowManagementPolicy::advise_new_app*;
708+ miral::WindowManagementPolicy::advise_new_window*;
709+ miral::WindowManagementPolicy::advise_raise*;
710+ miral::WindowManagementPolicy::advise_resize*;
711+ miral::WindowManagementPolicy::operator*;
712+ miral::WindowManagerOptions::WindowManagerOptions*;
713+ miral::WindowManagerOptions::operator*;
714+ miral::WindowManagerTools::?WindowManagerTools*;
715+ miral::WindowManagerTools::WindowManagerTools*;
716+ miral::WindowManagerTools::active_display*;
717+ miral::WindowManagerTools::active_window*;
718+ miral::WindowManagerTools::ask_client_to_close*;
719+ miral::WindowManagerTools::count_applications*;
720+ miral::WindowManagerTools::drag_active_window*;
721+ miral::WindowManagerTools::find_application*;
722+ miral::WindowManagerTools::focus_next_application*;
723+ miral::WindowManagerTools::focus_next_within_application*;
724+ miral::WindowManagerTools::for_each_application*;
725+ miral::WindowManagerTools::force_close*;
726+ miral::WindowManagerTools::id_for_window*;
727+ miral::WindowManagerTools::info_for*;
728+ miral::WindowManagerTools::info_for_window_id*;
729+ miral::WindowManagerTools::invoke_under_lock*;
730+ miral::WindowManagerTools::modify_window*;
731+ miral::WindowManagerTools::operator*;
732+ miral::WindowManagerTools::place_and_size_for_state*;
733+ miral::WindowManagerTools::raise_tree*;
734+ miral::WindowManagerTools::select_active_window*;
735+ miral::WindowManagerTools::window_at*;
736+ miral::WindowSpecification::?WindowSpecification*;
737+ miral::WindowSpecification::WindowSpecification*;
738+ miral::WindowSpecification::aux_rect*;
739+ miral::WindowSpecification::aux_rect_placement_gravity*;
740+ miral::WindowSpecification::aux_rect_placement_offset*;
741+ miral::WindowSpecification::confine_pointer*;
742+ miral::WindowSpecification::height_inc*;
743+ miral::WindowSpecification::input_mode*;
744+ miral::WindowSpecification::input_shape*;
745+ miral::WindowSpecification::max_aspect*;
746+ miral::WindowSpecification::max_height*;
747+ miral::WindowSpecification::max_width*;
748+ miral::WindowSpecification::min_aspect*;
749+ miral::WindowSpecification::min_height*;
750+ miral::WindowSpecification::min_width*;
751+ miral::WindowSpecification::name*;
752+ miral::WindowSpecification::operator*;
753+ miral::WindowSpecification::output_id*;
754+ miral::WindowSpecification::parent*;
755+ miral::WindowSpecification::placement_hints*;
756+ miral::WindowSpecification::preferred_orientation*;
757+ miral::WindowSpecification::shell_chrome*;
758+ miral::WindowSpecification::size*;
759+ miral::WindowSpecification::state*;
760+ miral::WindowSpecification::top_left*;
761+ miral::WindowSpecification::type*;
762+ miral::WindowSpecification::update*;
763+ miral::WindowSpecification::userdata*;
764+ miral::WindowSpecification::width_inc*;
765+ miral::WindowSpecification::window_placement_gravity*;
766+ miral::apply_lifecycle_state_to*;
767+ miral::display_configuration_options*;
768+ miral::equivalent_display_area*;
769+ miral::kill*;
770+ miral::name_of*;
771+ miral::operator*;
772+ miral::pid_of*;
773+ miral::toolkit::Connection::Connection*;
774+ miral::toolkit::Surface::Surface*;
775+ non-virtual?thunk?to?miral::ActiveOutputsListener::?ActiveOutputsListener*;
776+ non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_begin*;
777+ non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_create*;
778+ non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_delete*;
779+ non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_end*;
780+ non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_update*;
781+ non-virtual?thunk?to?miral::ApplicationAuthorizer::?ApplicationAuthorizer*;
782+ non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::advise_focus_gained*;
783+ non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::confirm_inherited_move*;
784+ non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::handle_modify_window*;
785+ non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::handle_raise_window*;
786+ non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::handle_window_ready*;
787+ non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::place_new_surface*;
788+ non-virtual?thunk?to?miral::WindowManagementPolicy::?WindowManagementPolicy*;
789+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_begin*;
790+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_delete_app*;
791+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_delete_window*;
792+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_end*;
793+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_focus_gained*;
794+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_focus_lost*;
795+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_move_to*;
796+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_new_app*;
797+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_new_window*;
798+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_raise*;
799+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_resize*;
800+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_state_change*;
801+ typeinfo?for?miral::ActiveOutputsListener;
802+ typeinfo?for?miral::ActiveOutputsMonitor;
803+ typeinfo?for?miral::AddInitCallback;
804+ typeinfo?for?miral::AppendEventFilter;
805+ typeinfo?for?miral::ApplicationAuthorizer;
806+ typeinfo?for?miral::ApplicationCredentials;
807+ typeinfo?for?miral::ApplicationInfo;
808+ typeinfo?for?miral::BasicSetApplicationAuthorizer;
809+ typeinfo?for?miral::CanonicalWindowManagerPolicy;
810+ typeinfo?for?miral::CommandLineOption;
811+ typeinfo?for?miral::CursorTheme;
812+ typeinfo?for?miral::DebugExtension;
813+ typeinfo?for?miral::InternalClientLauncher;
814+ typeinfo?for?miral::Keymap;
815+ typeinfo?for?miral::MirRunner;
816+ typeinfo?for?miral::Output;
817+ typeinfo?for?miral::Output::PhysicalSizeMM;
818+ typeinfo?for?miral::SetCommandLineHandler;
819+ typeinfo?for?miral::SetTerminator;
820+ typeinfo?for?miral::SetWindowManagmentPolicy;
821+ typeinfo?for?miral::StartupInternalClient;
822+ typeinfo?for?miral::Window;
823+ typeinfo?for?miral::WindowInfo;
824+ typeinfo?for?miral::WindowManagementPolicy;
825+ typeinfo?for?miral::WindowManagerOption;
826+ typeinfo?for?miral::WindowManagerOptions;
827+ typeinfo?for?miral::WindowManagerTools;
828+ typeinfo?for?miral::WindowSpecification;
829+ typeinfo?for?miral::WindowSpecification::AspectRatio;
830+ typeinfo?for?miral::toolkit::Connection;
831+ typeinfo?for?miral::toolkit::PersistentId;
832+ typeinfo?for?miral::toolkit::Surface;
833+ typeinfo?for?miral::toolkit::SurfaceSpec;
834+ vtable?for?miral::ActiveOutputsListener;
835+ vtable?for?miral::ActiveOutputsMonitor;
836+ vtable?for?miral::AddInitCallback;
837+ vtable?for?miral::AppendEventFilter;
838+ vtable?for?miral::ApplicationAuthorizer;
839+ vtable?for?miral::ApplicationCredentials;
840+ vtable?for?miral::ApplicationInfo;
841+ vtable?for?miral::BasicSetApplicationAuthorizer;
842+ vtable?for?miral::CanonicalWindowManagerPolicy;
843+ vtable?for?miral::CommandLineOption;
844+ vtable?for?miral::CursorTheme;
845+ vtable?for?miral::DebugExtension;
846+ vtable?for?miral::InternalClientLauncher;
847+ vtable?for?miral::Keymap;
848+ vtable?for?miral::MirRunner;
849+ vtable?for?miral::Output;
850+ vtable?for?miral::Output::PhysicalSizeMM;
851+ vtable?for?miral::SetCommandLineHandler;
852+ vtable?for?miral::SetTerminator;
853+ vtable?for?miral::SetWindowManagmentPolicy;
854+ vtable?for?miral::StartupInternalClient;
855+ vtable?for?miral::Window;
856+ vtable?for?miral::WindowInfo;
857+ vtable?for?miral::WindowManagementPolicy;
858+ vtable?for?miral::WindowManagerOption;
859+ vtable?for?miral::WindowManagerOptions;
860+ vtable?for?miral::WindowManagerTools;
861+ vtable?for?miral::WindowSpecification;
862+ vtable?for?miral::WindowSpecification::AspectRatio;
863+ vtable?for?miral::toolkit::Connection;
864+ vtable?for?miral::toolkit::PersistentId;
865+ vtable?for?miral::toolkit::Surface;
866+ vtable?for?miral::toolkit::SurfaceSpec;
867+ };
868+# miral::WindowInfo::can_morph_to*;
869+ _ZNK5miral10WindowInfo12can_morph_toE14MirSurfaceType;
870+
871+# miral::WindowInfo::needs_titlebar*;
872+ _ZN5miral10WindowInfo14needs_titlebarE14MirSurfaceType;
873+
874+# miral::WindowInfo::state*;
875+ _ZNK5miral10WindowInfo5stateEv;
876+ _ZN5miral10WindowInfo5stateE15MirSurfaceState;
877+
878+# miral::WindowInfo::type*;
879+ _ZN5miral10WindowInfo4typeE14MirSurfaceType;
880+ _ZNK5miral10WindowInfo4typeEv;
881+
882+# miral::WindowManagementPolicy::advise_state_change*;
883+ _ZN5miral22WindowManagementPolicy19advise_state_changeERKNS_10WindowInfoE15MirSurfaceState;
884+
885+# miral::StartupInternalClient::StartupInternalClient*;
886+ _ZN5miral21StartupInternalClientC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvNS_7toolkit10ConnectionEEES7_IFvSt8weak_ptrIN3mir5scene7SessionEEEE;
887+# miral::InternalClientLauncher::launch*;
888+ _ZNK5miral22InternalClientLauncher6launchERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt8functionIFvNS_7toolkit10ConnectionEEERKS9_IFvSt8weak_ptrIN3mir5scene7SessionEEEE;
889+local: *;
890+};
891+
892+MIRAL_1.1 {
893+global:
894+ # miral::WindowInfo::can_morph_to*
895+ _ZNK5miral10WindowInfo12can_morph_toE13MirWindowType;
896+
897+ #miral::WindowInfo::needs_titlebar*;
898+ _ZN5miral10WindowInfo14needs_titlebarE13MirWindowType;
899+
900+ # miral::WindowInfo::state*;
901+ _ZNK5miral10WindowInfo5stateEv;
902+ _ZN5miral10WindowInfo5stateE14MirWindowState;
903+
904+ miral::WindowInfo::type*;
905+ _ZN5miral10WindowInfo4typeE13MirWindowType;
906+ _ZNK5miral10WindowInfo4typeEv;
907+
908+ # miral::WindowManagementPolicy::advise_state_change*;
909+ _ZN5miral22WindowManagementPolicy19advise_state_changeERKNS_10WindowInfoE14MirWindowState;
910+
911+ extern "C++" {
912+ miral::CanonicalWindowManagerPolicy::place_new_window*;
913+ non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::place_new_window*;
914+ };
915+} MIRAL_1.0;
916+
917+MIRAL_1.2 {
918+global:
919+# miral::InternalClientLauncher::launch*;
920+ _ZNK5miral22InternalClientLauncher6launchERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt8functionIFvN3mir6client10ConnectionEEERKS9_IFvSt8weak_ptrINSA_5scene7SessionEEEE;
921+
922+# miral::StartupInternalClient::StartupInternalClient*;
923+ _ZN5miral21StartupInternalClientC?ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvN3mir6client10ConnectionEEES7_IFvSt8weak_ptrINS8_5scene7SessionEEEE;
924+ extern "C++" {
925+ miral::WindowInfo::shell_chrome*;
926+ miral::WindowManagerTools::drag_window*;
927+ typeinfo?for?miral::ApplicationAuthorizer1;
928+ vtable?for?miral::ApplicationAuthorizer1;
929+ };
930+} MIRAL_1.1;
931+
932+MIRAL_1.3 {
933+global:
934+ extern "C++" {
935+ miral::WindowManagerTools::add_tree_to_workspace*;
936+ miral::WindowManagerTools::create_workspace*;
937+ miral::WindowManagerTools::focus_prev_within_application*;
938+ miral::WindowManagerTools::for_each_window_in_workspace*;
939+ miral::WindowManagerTools::for_each_workspace_containing*;
940+ miral::WindowManagerTools::remove_tree_from_workspace*;
941+ miral::WindowManagerTools::move_workspace_content_to_workspace*;
942+ miral::WorkspacePolicy::?WorkspacePolicy*;
943+ miral::WorkspacePolicy::WorkspacePolicy*;
944+ miral::WorkspacePolicy::advise_adding_to_workspace*;
945+ miral::WorkspacePolicy::advise_removing_from_workspace*;
946+ miral::WorkspacePolicy::operator*;
947+ non-virtual?thunk?to?miral::WorkspacePolicy::?WorkspacePolicy*;
948+ non-virtual?thunk?to?miral::WorkspacePolicy::advise_adding_to_workspace*;
949+ non-virtual?thunk?to?miral::WorkspacePolicy::advise_removing_from_workspace*;
950+ typeinfo?for?miral::WorkspacePolicy;
951+ vtable?for?miral::WorkspacePolicy;
952+ };
953+} MIRAL_1.2;
954+
955+MIRAL_1.3.1 {
956+global:
957+ extern "C++" {
958+ miral::SetWindowManagementPolicy::?SetWindowManagementPolicy*;
959+ miral::SetWindowManagementPolicy::SetWindowManagementPolicy*;
960+ miral::SetWindowManagementPolicy::operator*;
961+ typeinfo?for?miral::SetWindowManagementPolicy;
962+ vtable?for?miral::SetWindowManagementPolicy;
963+ };
964+} MIRAL_1.3;
965+
966+MIRAL_1.4.0 {
967+global:
968+ extern "C++" {
969+ miral::WindowManagementPolicyAddendum2::?WindowManagementPolicyAddendum2*;
970+ miral::WindowManagementPolicyAddendum2::WindowManagementPolicyAddendum2*;
971+ miral::WindowManagementPolicyAddendum2::operator*;
972+ miral::WindowManagerTools::end_drag_and_drop*;
973+ miral::WindowManagerTools::start_drag_and_drop*;
974+ miral::toolkit::Window::Window*;
975+ non-virtual?thunk?to?miral::WindowManagementPolicyAddendum2::?WindowManagementPolicyAddendum2*;
976+ typeinfo?for?miral::WindowManagementPolicyAddendum2;
977+ typeinfo?for?miral::toolkit::Window;
978+ typeinfo?for?miral::toolkit::WindowId;
979+ typeinfo?for?miral::toolkit::WindowSpec;
980+ vtable?for?miral::WindowManagementPolicyAddendum2;
981+ vtable?for?miral::toolkit::Window;
982+ vtable?for?miral::toolkit::WindowId;
983+ vtable?for?miral::toolkit::WindowSpec;
984+ };
985+} MIRAL_1.3.1;
986+
987+MIRAL_1.5.0 {
988+global:
989+ extern "C++" {'''
990+
991+END_NEW_STANZA = ''' };
992+} MIRAL_1.4.0;'''
993+
994+def _print_report():
995+ print(OLD_STANZAS)
996+ for symbol in sorted(SYMBOLS['public']):
997+ formatted_symbol = ' {};'.format(symbol)
998+ if formatted_symbol not in OLD_STANZAS and 'miral::' in formatted_symbol:
999+ print(formatted_symbol)
1000+ print(END_NEW_STANZA)
1001+
1002+def _print_debug_info(node, attributes):
1003+ if not DEBUG:
1004+ return
1005+ print()
1006+ _print_attribs(node, attributes)
1007+ _print_location(node)
1008+
1009+def _parse_member_def(context_name, node, is_class):
1010+ kind = node.attributes['kind'].value
1011+
1012+ if (kind in ['enum', 'typedef']
1013+ or _has_element(node, ['templateparamlist'])
1014+ or kind in ['function'] and node.attributes['inline'].value == 'yes'):
1015+ return
1016+
1017+ name = _concat_text_from_tags(node, ['name'])
1018+
1019+ if name in ['__attribute__']:
1020+ if DEBUG:
1021+ print(' ignoring doxygen mis-parsing:', _concat_text_from_tags(node, ['argsstring']))
1022+ return
1023+
1024+ if name.startswith('operator'):
1025+ name = 'operator'
1026+
1027+ if not context_name is None:
1028+ symbol = context_name + '::' + name
1029+ else:
1030+ symbol = name
1031+
1032+ is_function = kind == 'function'
1033+
1034+ if is_function:
1035+ _print_debug_info(node, ['kind', 'prot', 'static', 'virt'])
1036+ else:
1037+ _print_debug_info(node, ['kind', 'prot', 'static'])
1038+
1039+ if DEBUG:
1040+ print(' is_class:', is_class)
1041+
1042+ publish = _should_publish(is_class, is_function, node)
1043+
1044+ _report(publish, symbol + '*')
1045+
1046+ if is_function and node.attributes['virt'].value == 'virtual':
1047+ _report(publish, 'non-virtual?thunk?to?' + symbol + '*')
1048+
1049+
1050+def _should_publish(is_class, is_function, node):
1051+ (kind, static, prot) = _get_attribs(node)
1052+
1053+ publish = True
1054+
1055+ if publish:
1056+ publish = kind != 'define'
1057+
1058+ if publish and is_class:
1059+ publish = is_function or static == 'yes'
1060+
1061+ if publish and prot == 'private':
1062+ if is_function:
1063+ publish = node.attributes['virt'].value == 'virtual'
1064+ else:
1065+ publish = False
1066+
1067+ if publish and _has_element(node, ['argsstring']):
1068+ publish = not _get_text_for_element(node, 'argsstring').endswith('=0')
1069+
1070+ return publish
1071+
1072+
1073+def _parse_compound_defs(xmldoc):
1074+ compounddefs = xmldoc.getElementsByTagName('compounddef')
1075+ for node in compounddefs:
1076+ kind = node.attributes['kind'].value
1077+
1078+ if kind in ['page', 'file', 'example', 'union']:
1079+ continue
1080+
1081+ if kind in ['group']:
1082+ for member in node.getElementsByTagName('memberdef'):
1083+ _parse_member_def(None, member, False)
1084+ continue
1085+
1086+ if kind in ['namespace']:
1087+ symbol = _concat_text_from_tags(node, ['compoundname'])
1088+ for member in node.getElementsByTagName('memberdef'):
1089+ _parse_member_def(symbol, member, False)
1090+ continue
1091+
1092+ filename = _get_file_location(node)
1093+
1094+ if DEBUG:
1095+ print(' from file:', filename)
1096+
1097+ if ('/examples/' in filename or '/test/' in filename or '[generated]' in filename
1098+ or '[STL]' in filename or _has_element(node, ['templateparamlist'])):
1099+ continue
1100+
1101+ symbol = _concat_text_from_tags(node, ['compoundname'])
1102+
1103+ publish = True
1104+
1105+ if publish:
1106+ if kind in ['class', 'struct']:
1107+ prot = node.attributes['prot'].value
1108+ publish = prot != 'private'
1109+ _print_debug_info(node, ['kind', 'prot'])
1110+ _report(publish, 'vtable?for?' + symbol)
1111+ _report(publish, 'typeinfo?for?' + symbol)
1112+
1113+ if publish:
1114+ for member in node.getElementsByTagName('memberdef'):
1115+ _parse_member_def(symbol, member, kind in ['class', 'struct'])
1116+
1117+if __name__ == "__main__":
1118+ if len(argv) == 1 or '-h' in argv or '--help' in argv:
1119+ print(HELPTEXT)
1120+ exit()
1121+
1122+ for arg in argv[1:]:
1123+ try:
1124+ if DEBUG:
1125+ print('Processing:', arg)
1126+ _parse_compound_defs(minidom.parse(arg))
1127+ except Exception as error:
1128+ print('Error:', arg, error)
1129+
1130+ if DEBUG:
1131+ print('Processing complete')
1132+
1133+ _print_report()

Subscribers

People subscribed via source and target branches