Welcome to mirror list, hosted at ThFree Co, Russian Federation.

presentation.cmake « Modules « cmake « build_files - git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 1abcc0e66f798468c1bc7787fdaed8fc2c7b5b84 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
set(PRESENTATION_BACKENDS xlib xcb wayland)
set(PRESENTATION_BACKEND xlib CACHE STRING
    "Presentation backend chosen at configure time")
set_property(CACHE PRESENTATION_BACKEND PROPERTY STRINGS
                ${PRESENTATION_BACKENDS})

list(FIND PRESENTATION_BACKENDS ${PRESENTATION_BACKEND} index)
if(index EQUAL -1)
    message(FATAL_ERROR "Presentation backend must be one of
            ${PRESENTATION_BACKENDS}")
endif()

message(STATUS "Using presentation backend: ${PRESENTATION_BACKEND}")


if( PRESENTATION_BACKEND MATCHES "xlib" )
    find_package(X11 REQUIRED)
    if ((NOT X11_Xxf86vm_LIB) OR (NOT X11_Xrandr_LIB))
        message(FATAL_ERROR "OpenXR xlib backend requires Xxf86vm and Xrandr")
    endif()

    add_definitions( -DSUPPORT_X )
    add_definitions( -DOS_LINUX_XLIB )
    set( XLIB_LIBRARIES
            ${X11_LIBRARIES}
            ${X11_Xxf86vm_LIB}
            ${X11_Xrandr_LIB} )

elseif( PRESENTATION_BACKEND MATCHES "xcb" )
    find_package(PkgConfig REQUIRED)
    # XCB + XCB GLX is limited to OpenGL 2.1
    # add_definitions( -DOS_LINUX_XCB )
    # XCB + Xlib GLX 1.3
    add_definitions( -DOS_LINUX_XCB_GLX )

    pkg_search_module(X11 REQUIRED x11)
    pkg_search_module(XCB REQUIRED xcb)
    pkg_search_module(XCB_RANDR REQUIRED xcb-randr)
    pkg_search_module(XCB_KEYSYMS REQUIRED xcb-keysyms)
    pkg_search_module(XCB_GLX REQUIRED xcb-glx)
    pkg_search_module(XCB_DRI2 REQUIRED xcb-dri2)
    pkg_search_module(XCB_ICCCM REQUIRED xcb-icccm)

    set( XCB_LIBRARIES
            ${XCB_LIBRARIES}
            ${XCB_KEYSYMS_LIBRARIES}
            ${XCB_RANDR_LIBRARIES}
            ${XCB_GLX_LIBRARIES}
            ${XCB_DRI2_LIBRARIES}
            ${X11_LIBRARIES} )

elseif( PRESENTATION_BACKEND MATCHES "wayland" )
    find_package(PkgConfig REQUIRED)
    pkg_search_module(WAYLAND_CLIENT REQUIRED wayland-client)
    pkg_search_module(WAYLAND_EGL REQUIRED wayland-egl)
    pkg_search_module(WAYLAND_SCANNER REQUIRED wayland-scanner)
    pkg_search_module(WAYLAND_PROTOCOLS REQUIRED wayland-protocols>=1.7)
    pkg_search_module(EGL REQUIRED egl)

    add_definitions( -DOS_LINUX_WAYLAND )
    set( WAYLAND_LIBRARIES
            ${EGL_LIBRARIES}
            ${WAYLAND_CLIENT_LIBRARIES}
            ${WAYLAND_EGL_LIBRARIES} )

    # generate wayland protocols
    set(WAYLAND_PROTOCOLS_DIR ${CMAKE_SOURCE_DIR}/wayland-protocols/)
    file(MAKE_DIRECTORY ${WAYLAND_PROTOCOLS_DIR})

    pkg_get_variable(WAYLAND_PROTOCOLS_DATADIR wayland-protocols pkgdatadir)
    pkg_get_variable(WAYLAND_SCANNER wayland-scanner wayland_scanner)

    set(PROTOCOL xdg-shell-unstable-v6)
    set(PROTOCOL_XML
        ${WAYLAND_PROTOCOLS_DATADIR}/unstable/xdg-shell/${PROTOCOL}.xml)

    if( EXISTS ${PROTOCOL_XML} )
        execute_process(COMMAND
                        ${WAYLAND_SCANNER}
                        code
                        ${PROTOCOL_XML}
                        ${WAYLAND_PROTOCOLS_DIR}/${PROTOCOL}.c)
        execute_process(COMMAND
                        ${WAYLAND_SCANNER}
                        client-header
                        ${PROTOCOL_XML}
                        ${WAYLAND_PROTOCOLS_DIR}/${PROTOCOL}.h)

        set( WAYLAND_PROTOCOL_SRC
                ${WAYLAND_PROTOCOLS_DIR}/${PROTOCOL}.c
                ${WAYLAND_PROTOCOLS_DIR}/${PROTOCOL}.h )

        include_directories(${WAYLAND_PROTOCOLS_DIR})
    else()
        message(FATAL_ERROR
                "xdg-shell-unstable-v6.xml not found in "
                ${WAYLAND_PROTOCOLS_DATADIR}
                "\nYour wayland-protocols package does not "
                "contain xdg-shell-unstable-v6.")
    endif()
endif()