~alan-griffiths/miral/basic-Unity8-compatibility

107 by Alan Griffiths
Tidy up dependencies
1
pkg_check_modules(MIRSERVER mirserver>=0.20 REQUIRED)
2
293.1.1 by Alan Griffiths
Reduce the number of build options we try to support
3
if(${CMAKE_COMPILER_IS_GNUCXX})
4
    set(CMAKE_C_FLAGS   "${CMAKE_C_FLAGS} -flto")
5
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto")
6
    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -flto")
7
    set(CMAKE_AR "gcc-ar")
8
    set(CMAKE_NM "gcc-nm")
9
    set(CMAKE_RANLIB "gcc-ranlib")
10
endif()
11
248.1.5 by Alan Griffiths
Only publish public symbols from libmiral
12
set(MIRAL_ABI 1)
13
set(symbol_map ${CMAKE_CURRENT_SOURCE_DIR}/symbols.map)
14
107 by Alan Griffiths
Tidy up dependencies
15
include_directories(include SYSTEM ${MIRSERVER_INCLUDE_DIRS})
16
248.1.5 by Alan Griffiths
Only publish public symbols from libmiral
17
add_library(miral-internal STATIC
18
    basic_window_manager.cpp            basic_window_manager.h window_manager_tools_implementation.h
441.2.2 by Alan Griffiths
Tidy CMakeLists.txt
19
    coordinate_translator.cpp           coordinate_translator.h
248.1.5 by Alan Griffiths
Only publish public symbols from libmiral
20
    mru_window_list.cpp                 mru_window_list.h
353.2.10 by Alan Griffiths
Reformat CMakeLists.txt
21
    window_management_trace.cpp         window_management_trace.h
366.3.2 by Alan Griffiths
Add miral::CursorTheme
22
    xcursor_loader.cpp                  xcursor_loader.h
23
    xcursor.c                           xcursor.h
268.3.7 by Alan Griffiths
Format CMakeLists.txt
24
)
248.1.5 by Alan Griffiths
Only publish public symbols from libmiral
25
366.3.5 by Alan Griffiths
Compiler flags for xcursor.c
26
set_source_files_properties(xcursor.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -std=c99 -D_GNU_SOURCE")
27
1 by Alan Griffiths
Initial import of example code
28
add_library(miral SHARED
224.2.20 by Alan Griffiths
Consistency
29
    active_outputs.cpp                  ${CMAKE_SOURCE_DIR}/include/miral/active_outputs.h
280.2.3 by Alan Griffiths
Resync symbols
30
    add_init_callback.cpp               ${CMAKE_SOURCE_DIR}/include/miral/add_init_callback.h
214.2.6 by Alan Griffiths
Start extracting C++ wrapper for toolkit API
31
    application.cpp                     ${CMAKE_SOURCE_DIR}/include/miral/application.h
32
    application_authorizer.cpp          ${CMAKE_SOURCE_DIR}/include/miral/application_authorizer.h
33
    application_info.cpp                ${CMAKE_SOURCE_DIR}/include/miral/application_info.h
34
    canonical_window_manager.cpp        ${CMAKE_SOURCE_DIR}/include/miral/canonical_window_manager.h
415.1.2 by Alan Griffiths
First draft miral::CommandLineOption
35
    command_line_option.cpp             ${CMAKE_SOURCE_DIR}/include/miral/command_line_option.h
366.3.2 by Alan Griffiths
Add miral::CursorTheme
36
    cursor_theme.cpp                    ${CMAKE_SOURCE_DIR}/include/miral/cursor_theme.h
441.2.3 by Alan Griffiths
DebugExtensions => DebugExtension
37
    debug_extension.cpp                 ${CMAKE_SOURCE_DIR}/include/miral/debug_extension.h
403.2.1 by Alan Griffiths
keymap interface
38
    keymap.cpp                          ${CMAKE_SOURCE_DIR}/include/miral/keymap.h
214.2.6 by Alan Griffiths
Start extracting C++ wrapper for toolkit API
39
    runner.cpp                          ${CMAKE_SOURCE_DIR}/include/miral/runner.h
40
    display_configuration_option.cpp    ${CMAKE_SOURCE_DIR}/include/miral/display_configuration_option.h
224.2.20 by Alan Griffiths
Consistency
41
    output.cpp                          ${CMAKE_SOURCE_DIR}/include/miral/output.h
277.2.4 by Alan Griffiths
Update naming to match
42
    append_event_filter.cpp             ${CMAKE_SOURCE_DIR}/include/miral/append_event_filter.h
214.2.6 by Alan Griffiths
Start extracting C++ wrapper for toolkit API
43
    window.cpp                          ${CMAKE_SOURCE_DIR}/include/miral/window.h
44
    window_info.cpp                     ${CMAKE_SOURCE_DIR}/include/miral/window_info.h
45
    window_management_options.cpp       ${CMAKE_SOURCE_DIR}/include/miral/window_management_options.h
46
    window_specification.cpp            ${CMAKE_SOURCE_DIR}/include/miral/window_specification.h
47
    internal_client.cpp                 ${CMAKE_SOURCE_DIR}/include/miral/internal_client.h
280.2.1 by Alan Griffiths
Add miral::SetCommandLineHandler
48
    set_command_line_hander.cpp         ${CMAKE_SOURCE_DIR}/include/miral/set_command_line_hander.h
273.1.1 by Alan Griffiths
miral::SetTerminator
49
    set_terminator.cpp                  ${CMAKE_SOURCE_DIR}/include/miral/set_terminator.h
214.2.6 by Alan Griffiths
Start extracting C++ wrapper for toolkit API
50
    set_window_managment_policy.cpp     ${CMAKE_SOURCE_DIR}/include/miral/set_window_managment_policy.h
51
    window_management_policy.cpp        ${CMAKE_SOURCE_DIR}/include/miral/window_management_policy.h
237.2.1 by Alan Griffiths
Introduce a level of indirection to WindowManagerTools
52
    window_manager_tools.cpp            ${CMAKE_SOURCE_DIR}/include/miral/window_manager_tools.h
214.2.6 by Alan Griffiths
Start extracting C++ wrapper for toolkit API
53
                                        ${CMAKE_SOURCE_DIR}/include/miral/toolkit/surface_spec.h
268.3.1 by Alan Griffiths
Merge previous attempt
54
                                        ${CMAKE_SOURCE_DIR}/include/miral/toolkit/persistent_id.h
214.2.6 by Alan Griffiths
Start extracting C++ wrapper for toolkit API
55
                                        ${CMAKE_SOURCE_DIR}/include/miral/toolkit/connection.h
268.3.5 by Alan Griffiths
Scratch the original code
56
                                        ${CMAKE_SOURCE_DIR}/include/miral/toolkit/surface.h
366.3.2 by Alan Griffiths
Add miral::CursorTheme
57
                                        ${CMAKE_SOURCE_DIR}/include/miral/detail/mir_forward_compatibility.h
441.2.2 by Alan Griffiths
Tidy CMakeLists.txt
58
)
1 by Alan Griffiths
Initial import of example code
59
60
target_link_libraries(miral
92 by Alan Griffiths
Document that libmirserver should be a private lib dependency
61
    PUBLIC
62
        ${MIRCLIENT_LDFLAGS}
152.3.1 by Alan Griffiths
A bit of tidy-up of Mir dependencies
63
        ${MIRCOMMON_LDFLAGS}
64
    PRIVATE
248.1.5 by Alan Griffiths
Only publish public symbols from libmiral
65
        miral-internal
92 by Alan Griffiths
Document that libmirserver should be a private lib dependency
66
        ${MIRSERVER_LDFLAGS}
105.1.1 by Brandon Schaefer
Install the shell + library
67
)
68
248.1.5 by Alan Griffiths
Only publish public symbols from libmiral
69
set_target_properties(miral
70
        PROPERTIES
71
        SOVERSION ${MIRAL_ABI}
72
        LINK_FLAGS "-Wl,--exclude-libs=ALL -Wl,--version-script,${symbol_map}"
257.2.8 by Alan Griffiths
Update symbols.map
73
        LINK_DEPENDS ${symbol_map}
248.1.5 by Alan Griffiths
Only publish public symbols from libmiral
74
)
75
430.1.5 by Alan Griffiths
Script to filter the dpkg-gensymbols diff
76
430.1.4 by Alan Griffiths
Add a warning when debian/libmiral1.symbols is out of step
77
add_custom_target(check-symbols ALL
78
        DEPENDS miral ${PROJECT_SOURCE_DIR}/debian/libmiral1.symbols
430.1.5 by Alan Griffiths
Script to filter the dpkg-gensymbols diff
79
        COMMAND dpkg-gensymbols -e${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libmiral.so.1 -plibmiral1 | scripts/filter_symbols_diff.sh
430.1.4 by Alan Griffiths
Add a warning when debian/libmiral1.symbols is out of step
80
        WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
430.1.5 by Alan Griffiths
Script to filter the dpkg-gensymbols diff
81
        VERBATIM
430.1.4 by Alan Griffiths
Add a warning when debian/libmiral1.symbols is out of step
82
)
83
300.1.1 by Alan Griffiths
Fix pkg-config file
84
set(LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}")
163.2.2 by Alan Griffiths
Match install locations to pkg-config options
85
set(INCLUDEDIR "${CMAKE_INSTALL_PREFIX}/include/miral")
86
158.1.1 by Alan Griffiths
Install headers and pkg-config support
87
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/miral.pc.in
88
    ${CMAKE_CURRENT_BINARY_DIR}/miral.pc
89
    @ONLY
105.1.1 by Brandon Schaefer
Install the shell + library
90
)
158.1.1 by Alan Griffiths
Install headers and pkg-config support
91
354.1.2 by Daniel d'Andrada
Make it build in xenial
92
if (MIRSERVER_VERSION VERSION_LESS 0.24)
93
    set(MIR_POINTER_CONFINEMENT 0)
94
else()
95
    set(MIR_POINTER_CONFINEMENT 1)
96
endif()
97
98
configure_file(
99
  ${CMAKE_CURRENT_SOURCE_DIR}/mir_features.h.in
100
  ${PROJECT_SOURCE_DIR}/include/miral/detail/mir_features.h
101
)
102
409.2.1 by Alan Griffiths
Add miral/version.h
103
configure_file(
104
  ${CMAKE_CURRENT_SOURCE_DIR}/version.h.in
105
  ${PROJECT_SOURCE_DIR}/include/miral/version.h
106
)
107
260.2.4 by Alan Griffiths
Fix CMakeLists.txt to match
108
install(TARGETS     miral                           LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}")
163.2.2 by Alan Griffiths
Match install locations to pkg-config options
109
install(DIRECTORY   ${CMAKE_SOURCE_DIR}/include/            DESTINATION "${INCLUDEDIR}")
260.2.4 by Alan Griffiths
Fix CMakeLists.txt to match
110
install(FILES       ${CMAKE_CURRENT_BINARY_DIR}/miral.pc    DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig")