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