~smspillaz/compiz-core/compiz-core.fix_911530

« back to all changes in this revision

Viewing changes to cmake/plugin_extensions/CompizGenGSettings.cmake

MergeĀ upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
option (
2
 
    COMPIZ_DISABLE_SCHEMAS_INSTALL
3
 
    "Disables gsettings schema installation"
4
 
    OFF
5
 
)
6
 
 
7
 
option (
8
 
    USE_GSETTINGS
9
 
    "Generate GSettings schemas"
10
 
    ON
11
 
)
12
 
 
13
 
set (
14
 
    COMPIZ_INSTALL_GSETTINGS_SCHEMA_DIR ${COMPIZ_INSTALL_GSETTINGS_SCHEMA_DIR} CACHE PATH
15
 
    "Installation path of the gsettings schema file"
16
 
)
17
 
 
18
 
macro (compiz_gsettings_prepare_install_dirs)
19
 
    # package
20
 
    if ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "package")
21
 
        if (NOT COMPIZ_INSTALL_GSETTINGS_SCHEMA_DIR)
22
 
            set (PLUGIN_SCHEMADIR "${datadir}/glib-2.0/schemas/")
23
 
        else (NOT COMPIZ_INSTALL_GSETTINGS_SCHEMA_DIR)
24
 
            set (PLUGIN_SCHEMADIR "${COMPIZ_INSTALL_GSETTINGS_SCHEMA_DIR}")
25
 
        endif (NOT COMPIZ_INSTALL_GSETTINGS_SCHEMA_DIR)
26
 
    # compiz
27
 
    elseif ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "compiz" OR
28
 
            "$ENV{BUILD_GLOBAL}" STREQUAL "true")
29
 
        if (NOT COMPIZ_INSTALL_GSETTINGS_SCHEMA_DIR)
30
 
            set (PLUGIN_SCHEMADIR "${COMPIZ_PREFIX}/share/glib-2.0/schemas/")
31
 
        else (NOT COMPIZ_INSTALL_GSETTINGS_SCHEMA_DIR)
32
 
            set (PLUGIN_SCHEMADIR "${COMPIZ_INSTALL_GSETTINGS_SCHEMA_DIR}")
33
 
        endif (NOT COMPIZ_INSTALL_GSETTINGS_SCHEMA_DIR)
34
 
    # local
35
 
    else ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "compiz" OR
36
 
          "$ENV{BUILD_GLOBAL}" STREQUAL "true")
37
 
 
38
 
        if (NOT COMPIZ_INSTALL_GSETTINGS_SCHEMA_DIR)
39
 
            set (PLUGIN_SCHEMADIR "$ENV{HOME}/.config/compiz-1/gsettings/schemas")
40
 
        else (NOT COMPIZ_INSTALL_GSETTINGS_SCHEMA_DIR)
41
 
            set (PLUGIN_SCHEMADIR "${COMPIZ_INSTALL_GSETTINGS_SCHEMA_DIR}")
42
 
        endif (NOT COMPIZ_INSTALL_GSETTINGS_SCHEMA_DIR)
43
 
 
44
 
    endif ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "package")
45
 
endmacro (compiz_gsettings_prepare_install_dirs)
46
 
 
47
 
function (compiz_install_gsettings_schema _src _dst)
48
 
    find_program (PKG_CONFIG_TOOL pkg-config)
49
 
    find_program (GLIB_COMPILE_SCHEMAS glib-compile-schemas)
50
 
    mark_as_advanced (FORCE PKG_CONFIG_TOOL)
51
 
 
52
 
    # find out where schemas need to go if we are installing them systemwide
53
 
    execute_process (COMMAND ${PKG_CONFIG_TOOL} glib-2.0 --variable prefix  OUTPUT_VARIABLE GSETTINGS_GLIB_PREFIX OUTPUT_STRIP_TRAILING_WHITESPACE)
54
 
    SET (GSETTINGS_GLOBAL_INSTALL_DIR "${GSETTINGS_GLIB_PREFIX}/share/glib-2.0/schemas/")
55
 
 
56
 
    if (USE_GSETTINGS AND
57
 
        PKG_CONFIG_TOOL AND
58
 
        GLIB_COMPILE_SCHEMAS AND NOT
59
 
        COMPIZ_DISABLE_SCHEMAS_INSTALL)
60
 
        install (CODE "
61
 
                if (\"$ENV{USER}\"\ STREQUAL \"root\")
62
 
                    message (\"-- Installing GSettings schemas ${GSETTINGS_GLOBAL_INSTALL_DIR}\"\)
63
 
                    file (INSTALL DESTINATION \"${GSETTINGS_GLOBAL_INSTALL_DIR}\"
64
 
                          TYPE FILE
65
 
                          FILES \"${_src}\")
66
 
                    message (\"-- Recompiling GSettings schemas in ${GSETTINGS_GLOBAL_INSTALL_DIR}\"\)
67
 
                    execute_process (COMMAND ${GLIB_COMPILE_SCHEMAS} ${GSETTINGS_GLOBAL_INSTALL_DIR})
68
 
 
69
 
                else (\"$ENV{USER}\"\ STREQUAL \"root\"\)
70
 
                    # It seems like this is only available in CMake > 2.8.5
71
 
                    # but hardly anybody has that, so comment out this warning for now
72
 
                    # string (FIND $ENV{XDG_DATA_DIRS} \"${COMPIZ_DESTDIR}${_dst}\" XDG_INSTALL_PATH)
73
 
                    # if (NOT XDG_INSTALL_PATH)
74
 
                    message (\"[WARNING]: Installing GSettings schemas to a custom location that might not be in XDG_DATA_DIRS, you need to add ${COMPIZ_DESTDIR}${_dst} to your XDG_DATA_DIRS in order for GSettings schemas to be found!\"\)
75
 
                    # endif (NOT XDG_INSTALL_PATH)
76
 
                    message (\"-- Installing GSettings schemas to ${COMPIZ_DESTDIR}${_dst}\"\)
77
 
                    file (INSTALL DESTINATION \"${COMPIZ_DESTDIR}${_dst}\"
78
 
                          TYPE FILE
79
 
                          FILES \"${_src}\")
80
 
                    message (\"-- Recompiling GSettings schemas in ${COMPIZ_DESTDIR}${_dst}\"\)
81
 
                    execute_process (COMMAND ${GLIB_COMPILE_SCHEMAS} ${COMPIZ_DESTDIR}${_dst})
82
 
                endif (\"$ENV{USER}\" STREQUAL \"root\"\)
83
 
                ")
84
 
    endif ()
85
 
endfunction ()
86
 
 
87
 
# generate gsettings schema
88
 
find_program (XSLTPROC_EXECUTABLE xsltproc)
89
 
mark_as_advanced (FORCE XSLTPROC_EXECUTABLE)
90
 
 
91
 
if (XSLTPROC_EXECUTABLE AND USE_GSETTINGS)
92
 
    compiz_gsettings_prepare_install_dirs ()
93
 
 
94
 
    add_custom_command (
95
 
        OUTPUT "${CMAKE_BINARY_DIR}/generated/org.freedesktop.compiz.${COMPIZ_CURRENT_PLUGIN}.gschema.xml"
96
 
        COMMAND ${XSLTPROC_EXECUTABLE}
97
 
                -o "${CMAKE_BINARY_DIR}/generated/org.freedesktop.compiz.${COMPIZ_CURRENT_PLUGIN}.gschema.xml"
98
 
                ${COMPIZ_GSETTINGS_SCHEMAS_XSLT}
99
 
                ${COMPIZ_CURRENT_XML_FILE}
100
 
        DEPENDS ${COMPIZ_CURRENT_XML_FILE}
101
 
    )
102
 
    compiz_install_gsettings_schema ("${CMAKE_BINARY_DIR}/generated/org.freedesktop.compiz.${COMPIZ_CURRENT_PLUGIN}.gschema.xml" ${PLUGIN_SCHEMADIR})
103
 
    list (APPEND COMPIZ_CURRENT_SOURCES_ADDS ${CMAKE_BINARY_DIR}/generated/org.freedesktop.compiz.${COMPIZ_CURRENT_PLUGIN}.gschema.xml)
104
 
endif ()