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