mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-22 15:02:25 +00:00
3778558608
This patch improves the `Text_painter` utility that is commonly used by native Genode components to render text: - Support for subpixel positioning - Generic interface for accessing font data - Basic UTF-8 support Since the change decouples the font format from the 'Text_painter' and changes the API to use the sub-pixel accurate 'Text_painter::Position' type, all users of the utility require an adaptation. Fixes #2716
322 lines
9.5 KiB
Plaintext
322 lines
9.5 KiB
Plaintext
#
|
|
# Build
|
|
#
|
|
|
|
if {[have_spec odroid_xu] ||
|
|
[have_spec wand_quad] ||
|
|
([get_cmd_switch --autopilot] && [have_spec linux]) ||
|
|
([get_cmd_switch --autopilot] && [have_include "power_on/qemu"])} {
|
|
puts "Run script does not support this platform."
|
|
exit 0
|
|
}
|
|
|
|
set build_components {
|
|
core init
|
|
drivers/timer
|
|
server/nitpicker app/pointer app/status_bar app/global_keys_handler
|
|
app/nit_focus
|
|
server/liquid_framebuffer app/launchpad app/scout
|
|
test/nitpicker server/nitlog
|
|
drivers/framebuffer drivers/input
|
|
server/report_rom server/rom_filter
|
|
}
|
|
|
|
proc gpio_drv { } { if {[have_spec rpi] && [have_spec hw]} { return hw_gpio_drv }
|
|
if {[have_spec rpi] && [have_spec foc]} { return foc_gpio_drv }
|
|
return gpio_drv }
|
|
|
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
|
|
|
lappend_if [need_usb_hid] build_components drivers/usb
|
|
lappend_if [have_spec gpio] build_components drivers/gpio
|
|
|
|
append_platform_drv_build_components
|
|
|
|
build $build_components
|
|
|
|
create_boot_directory
|
|
|
|
#
|
|
# Generate config
|
|
#
|
|
|
|
append config {
|
|
<config>
|
|
<parent-provides>
|
|
<service name="ROM"/>
|
|
<service name="IRQ"/>
|
|
<service name="IO_MEM"/>
|
|
<service name="IO_PORT"/>
|
|
<service name="PD"/>
|
|
<service name="RM"/>
|
|
<service name="CPU"/>
|
|
<service name="LOG"/>
|
|
</parent-provides>
|
|
<default-route>
|
|
<any-service> <parent/> <any-child/> </any-service>
|
|
</default-route>
|
|
<default caps="100"/>}
|
|
|
|
append_if [have_spec sdl] config {
|
|
<start name="fb_sdl">
|
|
<resource name="RAM" quantum="4M"/>
|
|
<provides>
|
|
<service name="Input"/>
|
|
<service name="Framebuffer"/>
|
|
</provides>
|
|
</start>}
|
|
|
|
append_platform_drv_config
|
|
|
|
append_if [have_spec framebuffer] config {
|
|
<start name="fb_drv" caps="130">
|
|
<provides><service name="Framebuffer"/></provides>}
|
|
append_if [expr [have_spec framebuffer] && [have_spec x86]] config {
|
|
<resource name="RAM" quantum="4M"/>
|
|
<config width="1024" height="768"/>
|
|
</start>}
|
|
append_if [expr [have_spec framebuffer] && ![have_spec x86]] config {
|
|
<resource name="RAM" quantum="5M"/>
|
|
<config/>
|
|
</start>}
|
|
|
|
append_if [have_spec gpio] config "
|
|
<start name=\"[gpio_drv]\" caps=\"140\">
|
|
<resource name=\"RAM\" quantum=\"4M\"/>
|
|
<provides><service name=\"Gpio\"/></provides>
|
|
<config/>
|
|
</start>"
|
|
|
|
append_if [have_spec imx53] config {
|
|
<start name="input_drv">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Input"/></provides>
|
|
<config/>
|
|
</start> }
|
|
|
|
append_if [have_spec ps2] config {
|
|
<start name="ps2_drv">
|
|
<resource name="RAM" quantum="1096K"/>
|
|
<provides><service name="Input"/></provides>
|
|
</start>}
|
|
|
|
append_if [need_usb_hid] config {
|
|
<start name="usb_drv" caps="120">
|
|
<resource name="RAM" quantum="12M"/>
|
|
<provides><service name="Input"/></provides>
|
|
<config ehci="yes" uhci="yes" xhci="no"> <hid/> </config>
|
|
</start> }
|
|
|
|
append config {
|
|
<start name="timer">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Timer"/></provides>
|
|
</start>
|
|
|
|
<start name="report_rom">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides> <service name="Report"/> <service name="ROM"/> </provides>
|
|
<config verbose="no">
|
|
<policy label="status_bar -> focus" report="nitpicker -> focus"/>
|
|
<policy label="nitpicker_config -> xray" report="global_keys_handler -> xray"/>
|
|
<policy label="global_keys_handler -> hover" report="nitpicker -> hover"/>
|
|
<policy label="nit_focus -> clicked" report="nitpicker -> clicked"/>
|
|
<policy label="nitpicker -> focus" report="nit_focus -> focus"/>
|
|
</config>
|
|
</start>
|
|
|
|
<start name="nitpicker_config">
|
|
<binary name="rom_filter"/>
|
|
<resource name="RAM" quantum="1096K"/>
|
|
<provides><service name="ROM"/></provides>
|
|
<config>
|
|
<input name="xray_enabled" rom="xray" node="xray">
|
|
<attribute name="enabled" /> </input>
|
|
|
|
<output node="config">
|
|
<attribute name="focus" value="rom"/>
|
|
<inline>
|
|
<report focus="yes" xray="yes" hover="yes" keystate="yes"
|
|
clicked="yes"/>
|
|
<domain name="pointer" layer="1" origin="pointer"
|
|
content="client" label="no"/>
|
|
<domain name="panel" layer="2"
|
|
content="client" label="no" hover="always"/>
|
|
</inline>
|
|
<if>
|
|
<has_value input="xray_enabled" value="no" />
|
|
<then>
|
|
<inline>
|
|
<domain name="launchpad" layer="3"
|
|
content="client" label="no" hover="always" focus="click"
|
|
ypos="18" height="-18" />
|
|
<domain name="" layer="3"
|
|
content="client" label="no" hover="always" focus="click"
|
|
ypos="18" height="-18" />
|
|
</inline>
|
|
</then>
|
|
<else>
|
|
<inline>
|
|
<domain name="launchpad" layer="3" color="#dd0000"
|
|
content="tinted" label="yes" hover="focused" focus="click"
|
|
ypos="18" height="-18" />
|
|
<domain name="" layer="3" color="#55dd34"
|
|
content="tinted" label="yes" hover="focused" focus="click"
|
|
ypos="18" height="-18" />
|
|
</inline>
|
|
</else>
|
|
</if>
|
|
<inline>
|
|
<policy label_prefix="pointer" domain="pointer"/>
|
|
<policy label_prefix="status_bar" domain="panel"/>
|
|
<policy label_prefix="scout -> launchpad" domain="launchpad"/>
|
|
<default-policy domain=""/>
|
|
|
|
<global-key name="KEY_SCROLLLOCK" label="global_keys_handler -> input" />
|
|
<global-key name="KEY_F1" label="global_keys_handler -> input" />
|
|
<global-key name="KEY_F2" label="global_keys_handler -> input" />
|
|
</inline>
|
|
</output>
|
|
</config>
|
|
<route>
|
|
<service name="ROM" label="xray"> <child name="report_rom"/> </service>
|
|
<any-service> <parent/> </any-service>
|
|
</route>
|
|
</start>
|
|
|
|
<start name="global_keys_handler">
|
|
<resource name="RAM" quantum="1096K"/>
|
|
<config>
|
|
<bool name="xray" initial="no"/>
|
|
|
|
<press name="KEY_SCROLLLOCK" bool="xray" change="toggle"/>
|
|
<press name="KEY_F1" bool="xray" change="on"/>
|
|
<release name="KEY_F1" bool="xray" change="off"/>
|
|
<press name="KEY_F2" bool="xray" change="toggle"/>
|
|
|
|
<report name="xray" delay_ms="125">
|
|
<hovered domain="panel"/>
|
|
<bool name="xray"/>
|
|
</report>
|
|
</config>
|
|
<route>
|
|
<service name="Report"> <child name="report_rom"/> </service>
|
|
<service name="ROM" label="hover"> <child name="report_rom"/> </service>
|
|
<any-service> <parent/> <any-child/> </any-service>
|
|
</route>
|
|
</start>
|
|
|
|
<start name="nitpicker" caps="110">
|
|
<resource name="RAM" quantum="1216K"/>
|
|
<provides><service name="Nitpicker"/></provides>
|
|
<configfile name="nitpicker.config"/>
|
|
<route>
|
|
<service name="ROM" label="nitpicker.config">
|
|
<child name="nitpicker_config"/> </service>
|
|
<service name="ROM" label="focus">
|
|
<child name="report_rom"/> </service>
|
|
<service name="Report">
|
|
<child name="report_rom"/> </service>
|
|
<any-service> <parent/> <any-child/> </any-service>
|
|
</route>
|
|
</start>
|
|
|
|
<start name="pointer">
|
|
<resource name="RAM" quantum="1096K"/>
|
|
<config/>
|
|
</start>
|
|
|
|
<start name="nit_focus">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<config> <default-policy focus="yes"/> </config>
|
|
<route>
|
|
<service name="ROM" label="clicked"> <child name="report_rom"/> </service>
|
|
<service name="Report"> <child name="report_rom"/> </service>
|
|
<any-service> <parent/> </any-service>
|
|
</route>
|
|
</start>
|
|
|
|
<start name="status_bar">
|
|
<resource name="RAM" quantum="1096K"/>
|
|
<route>
|
|
<service name="ROM" label="focus"> <child name="report_rom"/> </service>
|
|
<any-service> <parent/> <any-child/> </any-service>
|
|
</route>
|
|
</start>
|
|
|
|
<start name="scout" caps="10000">
|
|
<resource name="RAM" quantum="64M" />
|
|
</start>
|
|
</config>}
|
|
|
|
install_config $config
|
|
|
|
#
|
|
# Create launchpad configuration
|
|
#
|
|
set launchpad_config_fd [open "bin/launchpad.config" w]
|
|
puts $launchpad_config_fd {<config>
|
|
<launcher name="testnit" ram_quota="768K" caps="50"/>
|
|
<launcher name="scout" ram_quota="41M" caps="200"/>
|
|
<launcher name="launchpad" ram_quota="6M" caps="1000">
|
|
<configfile name="launchpad.config" />
|
|
</launcher>
|
|
<launcher name="nitlog" ram_quota="1M" caps="70"/>
|
|
<launcher name="liquid_fb" ram_quota="7M" caps="70">
|
|
<config resize_handle="on" />
|
|
</launcher>
|
|
<launcher name="nitpicker" ram_quota="1M" caps="70">
|
|
<config>
|
|
<domain name="" layer="3" conten="client" label="no" focus="click"/>
|
|
<default-policy domain="" />
|
|
</config>
|
|
</launcher>
|
|
</config>}
|
|
close $launchpad_config_fd
|
|
|
|
|
|
#
|
|
# Boot modules
|
|
#
|
|
|
|
# generic modules
|
|
set boot_modules {
|
|
core ld.lib.so init
|
|
timer
|
|
nitpicker pointer status_bar report_rom rom_filter global_keys_handler
|
|
nit_focus
|
|
liquid_fb launchpad scout testnit nitlog
|
|
launchpad.config
|
|
}
|
|
|
|
# platform-specific modules
|
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
|
lappend_if [need_usb_hid] boot_modules usb_drv
|
|
lappend_if [have_spec gpio] boot_modules [gpio_drv]
|
|
lappend_if [have_spec imx53] boot_modules input_drv
|
|
|
|
append_platform_drv_boot_modules
|
|
|
|
build_boot_image $boot_modules
|
|
|
|
|
|
if {[get_cmd_switch --autopilot]} {
|
|
run_genode_until {\[init -> scout\] png is.*\n} 40
|
|
|
|
grep_output {(requests resources: ram_quota)|(Error)}
|
|
|
|
# remove Error messages which are not fatal, mostly
|
|
unify_output {(?n)^.*platform_drv] Error:.*ACPI table information is wrong.*$} ""
|
|
unify_output {(?n)^.*platform_drv] Error: adjust size from.*$} ""
|
|
unify_output {(?n)^.*acpi_drv] Error:.*platform_info.*$} ""
|
|
unify_output {(?n)^.*ps2_drv] Error: no data available.*$} ""
|
|
unify_output {(?n)^.*ps2_drv] Error: failed to read from port.*$} ""
|
|
|
|
compare_output_to {}
|
|
|
|
} else {
|
|
run_genode_until forever
|
|
}
|