summaryrefslogtreecommitdiffstats
path: root/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bb
diff options
context:
space:
mode:
Diffstat (limited to 'meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bb')
-rw-r--r--meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bb156
1 files changed, 156 insertions, 0 deletions
diff --git a/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bb b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bb
new file mode 100644
index 000000000..0611ec5b4
--- /dev/null
+++ b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bb
@@ -0,0 +1,156 @@
+SUMMARY = "Configuration file for the Weston and AGL Wayland compositors"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+SRC_URI = " \
+ file://core.cfg \
+ file://shell.cfg \
+ file://hdmi-a-1-0.cfg \
+ file://hdmi-a-1-90.cfg \
+ file://hdmi-a-1-180.cfg \
+ file://hdmi-a-1-270.cfg \
+ file://hdmi-a-2-0.cfg \
+ file://hdmi-a-2-90.cfg \
+ file://hdmi-a-2-180.cfg \
+ file://hdmi-a-2-270.cfg \
+ file://remote-output.cfg.in \
+ file://virtual-0.cfg \
+ file://virtual-90.cfg \
+ file://virtual-180.cfg \
+ file://virtual-270.cfg \
+ file://grpc-proxy.cfg \
+"
+
+S = "${WORKDIR}"
+
+inherit update-alternatives
+
+# Default primary display/orientation fragment
+WESTON_DISPLAYS ?= "hdmi-a-1-90"
+
+# Configuration fragments to use in weston.ini.*
+# Note that some may be replaced/removed when building the landscape
+# configuration.
+WESTON_FRAGMENTS = "core shell grpc-proxy ${WESTON_DISPLAYS}"
+
+# On-target weston.ini directory
+weston_ini_dir = "${sysconfdir}/xdg/weston"
+
+# Options for the user to change in local.conf
+# e.g. REMOTING_OUTPUT_MODE = "1080x1488"
+REMOTING_OUTPUT_MODE ??= "640x720@30"
+REMOTING_OUTPUT_HOST ??= "192.168.10.3"
+REMOTING_OUTPUT_PORT ??= "5005"
+
+do_configure() {
+ sed -e "s#host=.*#host=${REMOTING_OUTPUT_HOST}#" \
+ -e "s#port=.*#port=${REMOTING_OUTPUT_PORT}#" \
+ ${WORKDIR}/remote-output.cfg.in > ${WORKDIR}/remote-output.cfg
+}
+
+do_compile() {
+ # Put all of our cfg files together for a default portrait
+ # orientation configuration
+ rm -f ${WORKDIR}/weston.ini.default
+ for F in ${WESTON_FRAGMENTS}; do
+ cat ${WORKDIR}/${F}.cfg >> ${WORKDIR}/weston.ini.default
+ echo >> ${WORKDIR}/weston.ini.default
+ done
+ sed -i -e '$ d' ${WORKDIR}/weston.ini.default
+
+ cat ${WORKDIR}/weston.ini.default > ${WORKDIR}/weston.ini.default-no-activate
+
+ # Do it again, but filter fragments to configure for landscape
+ # and a corresponding landscape-inverted that is 180 degrees
+ # rotated.
+ rm -f ${WORKDIR}/weston.ini.landscape
+ rm -f ${WORKDIR}/weston.ini.landscape-inverted
+ for F in ${WESTON_FRAGMENTS}; do
+ INVF=$F
+ if echo $F | grep '^hdmi-a-1-\(90\|270\)$'; then
+ F="hdmi-a-1-0"
+ INVF="hdmi-a-1-180"
+ elif echo $F | grep '^hdmi-a-2-\(90\|270\)$'; then
+ F="hdmi-a-2-0"
+ INVF="hdmi-a-2-180"
+ elif echo $F | grep '^virtual-90$'; then
+ F="virtual-0"
+ INVF="virtual-180"
+ fi
+ cat ${WORKDIR}/${F}.cfg >> ${WORKDIR}/weston.ini.landscape
+ cat ${WORKDIR}/${INVF}.cfg >> ${WORKDIR}/weston.ini.landscape-inverted
+ echo >> ${WORKDIR}/weston.ini.landscape
+ echo >> ${WORKDIR}/weston.ini.landscape-inverted
+ done
+ sed -i -e '$ d' ${WORKDIR}/weston.ini.landscape
+ sed -i -e '$ d' ${WORKDIR}/weston.ini.landscape-inverted
+
+ cat ${WORKDIR}/weston.ini.landscape > ${WORKDIR}/weston.ini.landscape-no-activate
+}
+
+do_install:append() {
+ install -d ${D}${weston_ini_dir}
+ install -m 0644 ${WORKDIR}/weston.ini.default ${D}${weston_ini_dir}/
+ install -m 0644 ${WORKDIR}/weston.ini.default-no-activate ${D}${weston_ini_dir}/
+ install -m 0644 ${WORKDIR}/weston.ini.landscape-no-activate ${D}${weston_ini_dir}/
+ install -m 0644 ${WORKDIR}/weston.ini.landscape ${D}${weston_ini_dir}/
+ install -m 0644 ${WORKDIR}/weston.ini.landscape-inverted ${D}${weston_ini_dir}/
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+# Use the alternative mechanism to handle multiple packages providing
+# weston.ini. This seems simpler than other possible approaches.
+# Note that for now the generated packages are being marked as
+# incompatible with each other for simplicity, that can be changed if
+# a usecase where switching between alternatives at runtime is desirable
+# appears.
+
+ALTERNATIVE_LINK_NAME[weston.ini] = "${weston_ini_dir}/weston.ini"
+
+RPROVIDES:${PN} = "weston-ini"
+RCONFLICTS:${PN} = "${PN}-landscape"
+ALTERNATIVE:${PN} = "weston.ini"
+ALTERNATIVE_TARGET_${PN} = "${weston_ini_dir}/weston.ini.default"
+
+PACKAGE_BEFORE_PN += "${PN}-landscape"
+
+FILES:${PN}-landscape = "${weston_ini_dir}/weston.ini.landscape"
+
+RPROVIDES:${PN}-landscape = "weston-ini"
+RCONFLICTS:${PN}-landscape = "${PN}"
+ALTERNATIVE:${PN}-landscape = "weston.ini"
+ALTERNATIVE_TARGET_${PN}-landscape = "${weston_ini_dir}/weston.ini.landscape"
+
+PACKAGE_BEFORE_PN += "${PN}-landscape-inverted"
+
+FILES:${PN}-landscape-inverted = "${weston_ini_dir}/weston.ini.landscape-inverted"
+
+RPROVIDES:${PN}-landscape-inverted = "weston-ini"
+RCONFLICTS:${PN}-landscape-inverted = "${PN}"
+ALTERNATIVE:${PN}-landscape-inverted = "weston.ini"
+ALTERNATIVE_TARGET_${PN}-landscape-inverted = "${weston_ini_dir}/weston.ini.landscape-inverted"
+
+# no activation by default
+PACKAGE_BEFORE_PN += "${PN}-no-activate"
+
+FILES:${PN}-no-activate = "${weston_ini_dir}/weston.ini.default-no-activate"
+
+RPROVIDES:${PN}-no-activate = "weston-ini"
+RCONFLICTS:${PN}-no-activate = "${PN}"
+ALTERNATIVE:${PN}-no-activate = "weston.ini"
+ALTERNATIVE_TARGET_${PN}-no-activate = "${weston_ini_dir}/weston.ini.default-no-activate"
+
+# landscape, no activation by default
+PACKAGE_BEFORE_PN += "${PN}-landscape-no-activate"
+
+FILES:${PN}-landscape-no-activate = "${weston_ini_dir}/weston.ini.landscape-no-activate"
+
+RPROVIDES:${PN}-landscape-no-activate = "weston-ini"
+RCONFLICTS:${PN}-landscape-no-activate = "${PN}"
+ALTERNATIVE:${PN}-landscape-no-activate = "weston.ini"
+ALTERNATIVE_TARGET_${PN}-landscape-no-activate = "${weston_ini_dir}/weston.ini.landscape-no-activate"
+
+# This is a settings-only package, we do not need a development package
+# (and its fixed dependency to ${PN} being installed)
+PACKAGES:remove = "${PN}-dev ${PN}-staticdev"