04907c671874f697defd910c123303f7fadfb8c7
[AGL/meta-agl.git] / meta-agl-core / recipes-graphics / wayland / weston-ini-conf.bb
1 SUMMARY = "Configuration file for the Weston and AGL Wayland compositors"
2 LICENSE = "MIT"
3 LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
4
5 SRC_URI = " \
6         file://core.cfg \
7         file://shell.cfg \
8         file://hdmi-a-1-0.cfg \
9         file://hdmi-a-1-90.cfg \
10         file://hdmi-a-1-180.cfg \
11         file://hdmi-a-1-270.cfg \
12         file://remote-output.cfg \
13         file://transmitter-output.cfg.in \
14         file://virtual-0.cfg \
15         file://virtual-90.cfg \
16         file://virtual-180.cfg \
17         file://virtual-270.cfg \
18 "
19
20 S = "${WORKDIR}"
21
22 inherit update-alternatives
23
24 # Default primary display/orientation fragment
25 WESTON_DISPLAYS ?= "hdmi-a-1-90"
26
27 # Configuration fragments to use in weston.ini.*
28 # Note that some may be replaced/removed when building the landscape
29 # configuration.
30 WESTON_FRAGMENTS = "core shell ${WESTON_DISPLAYS}"
31
32 # On-target weston.ini directory
33 weston_ini_dir = "${sysconfdir}/xdg/weston"
34
35 # Options for the user to change in local.conf
36 # e.g. TRANSMITTER_OUTPUT_MODE = "1080x1488"
37 TRANSMITTER_OUTPUT_MODE ??= "640x720@30"
38 TRANSMITTER_OUTPUT_HOST ??= "192.168.10.3"
39 TRANSMITTER_OUTPUT_PORT ??= "5005"
40
41 do_configure() {
42     sed -e "s#mode=.*#mode=${TRANSMITTER_OUTPUT_MODE}#" \
43         -e "s#host=.*#host=${TRANSMITTER_OUTPUT_HOST}#" \
44         -e "s#port=.*#port=${TRANSMITTER_OUTPUT_PORT}#" \
45         ${WORKDIR}/transmitter-output.cfg.in  > ${WORKDIR}/transmitter-output.cfg
46 }
47
48 do_compile() {
49     # Put all of our cfg files together for a default portrait
50     # orientation configuration
51     rm -f ${WORKDIR}/weston.ini.default
52     for F in ${WESTON_FRAGMENTS}; do
53         cat ${WORKDIR}/${F}.cfg >> ${WORKDIR}/weston.ini.default
54         echo >> ${WORKDIR}/weston.ini.default
55     done
56     sed -i -e '$ d' ${WORKDIR}/weston.ini.default
57
58     echo "[shell-client-ext]\ncommand=/usr/lib/agl-compositor/agl-shell-grpc-server\n" >> ${WORKDIR}/weston.ini.default
59
60     cat ${WORKDIR}/weston.ini.default > ${WORKDIR}/weston.ini.default-no-activate
61     sed -i -e 's#\[core\]#[core]\nactivate-by-default=false#' ${WORKDIR}/weston.ini.default-no-activate
62
63     # Do it again, but filter fragments to configure for landscape
64     # and a corresponding landscape-inverted that is 180 degrees
65     # rotated.
66     rm -f ${WORKDIR}/weston.ini.landscape
67     for F in ${WESTON_FRAGMENTS}; do
68         INVF=$F
69         if echo $F | grep '^hdmi-a-1-\(90\|270\)$'; then
70             F="hdmi-a-1-0"
71             INVF="hdmi-a-1-180"
72         elif echo $F | grep '^virtual-90$'; then
73             F="virtual-0"
74             INVF="virtual-180"
75         fi
76         cat ${WORKDIR}/${F}.cfg >> ${WORKDIR}/weston.ini.landscape
77         cat ${WORKDIR}/${INVF}.cfg >> ${WORKDIR}/weston.ini.landscape-inverted
78         echo >> ${WORKDIR}/weston.ini.landscape
79         echo >> ${WORKDIR}/weston.ini.landscape-inverted
80     done
81     sed -i -e '$ d' ${WORKDIR}/weston.ini.landscape
82     sed -i -e '$ d' ${WORKDIR}/weston.ini.landscape-inverted
83 }
84
85 do_install:append() {
86     install -d ${D}${weston_ini_dir}
87     install -m 0644 ${WORKDIR}/weston.ini.default ${D}${weston_ini_dir}/
88     install -m 0644 ${WORKDIR}/weston.ini.default-no-activate ${D}${weston_ini_dir}/
89     install -m 0644 ${WORKDIR}/weston.ini.landscape ${D}${weston_ini_dir}/
90     install -m 0644 ${WORKDIR}/weston.ini.landscape-inverted ${D}${weston_ini_dir}/
91 }
92
93 PACKAGE_ARCH = "${MACHINE_ARCH}"
94
95 # Use the alternative mechanism to handle multiple packages providing
96 # weston.ini.  This seems simpler than other possible approaches.
97 # Note that for now the generated packages are being marked as
98 # incompatible with each other for simplicity, that can be changed if
99 # a usecase where switching between alternatives at runtime is desirable
100 # appears.
101
102 ALTERNATIVE_LINK_NAME[weston.ini] = "${weston_ini_dir}/weston.ini"
103
104 RDEPENDS:${PN} = "weston-init"
105 RPROVIDES:${PN} = "weston-ini"
106 RCONFLICTS:${PN} = "${PN}-landscape"
107 ALTERNATIVE:${PN} = "weston.ini"
108 ALTERNATIVE_TARGET_${PN} = "${weston_ini_dir}/weston.ini.default"
109
110 PACKAGE_BEFORE_PN += "${PN}-landscape"
111
112 FILES:${PN}-landscape = "${weston_ini_dir}/weston.ini.landscape"
113
114 RDEPENDS:${PN}-landscape = "weston-init"
115 RPROVIDES:${PN}-landscape = "weston-ini"
116 RCONFLICTS:${PN}-landscape = "${PN}"
117 ALTERNATIVE:${PN}-landscape = "weston.ini"
118 ALTERNATIVE_TARGET_${PN}-landscape = "${weston_ini_dir}/weston.ini.landscape"
119
120 PACKAGE_BEFORE_PN += "${PN}-landscape-inverted"
121
122 FILES:${PN}-landscape-inverted = "${weston_ini_dir}/weston.ini.landscape-inverted"
123
124 RDEPENDS:${PN}-landscape-inverted = "weston-init"
125 RPROVIDES:${PN}-landscape-inverted = "weston-ini"
126 RCONFLICTS:${PN}-landscape-inverted = "${PN}"
127 ALTERNATIVE:${PN}-landscape-inverted = "weston.ini"
128 ALTERNATIVE_TARGET_${PN}-landscape-inverted = "${weston_ini_dir}/weston.ini.landscape-inverted"
129
130 # no activation by default
131 PACKAGE_BEFORE_PN += "${PN}-no-activate"
132
133 FILES:${PN}-no-activate = "${weston_ini_dir}/weston.ini.default-no-activate"
134
135 RDEPENDS:${PN}-no-activate = "weston-init"
136 RPROVIDES:${PN}-no-activate = "weston-ini"
137 RCONFLICTS:${PN}-no-activate = "${PN}"
138 ALTERNATIVE:${PN}-no-activate = "weston.ini"
139 ALTERNATIVE_TARGET_${PN}-no-activate = "${weston_ini_dir}/weston.ini.default-no-activate"
140
141 # This is a settings-only package, we do not need a development package
142 # (and its fixed dependency to ${PN} being installed)
143 PACKAGES:remove = "${PN}-dev ${PN}-staticdev"