#
# \brief  Example for running lighttpd
# \author Norman Feske
# \date   2012-08-16
#

create_boot_directory
import_from_depot [depot_user]/src/[base_src] \
                  [depot_user]/pkg/[drivers_nic_pkg] \
                  [depot_user]/src/init \
                  [depot_user]/src/libc \
                  [depot_user]/src/libcrypto \
                  [depot_user]/src/libssh \
                  [depot_user]/src/libssl \
                  [depot_user]/src/lighttpd \
                  [depot_user]/src/posix \
                  [depot_user]/src/vfs \
                  [depot_user]/src/vfs_lwip \
                  [depot_user]/src/zlib

install_config {
<config>
	<parent-provides>
		<service name="ROM"/>
		<service name="LOG"/>
		<service name="RM"/>
		<service name="CPU"/>
		<service name="PD"/>
		<service name="IRQ"/>
		<service name="IO_PORT"/>
		<service name="IO_MEM"/>
	</parent-provides>
	<default-route>
		<any-service> <parent/> <any-child/> </any-service>
	</default-route>
	<default caps="100"/>

	<start name="timer">
		<resource name="RAM" quantum="1M"/>
		<provides><service name="Timer"/></provides>
	</start>

	<start name="nic_drv" caps="1000">
		<resource name="RAM" quantum="32M" constrain_phys="yes"/>
		<binary name="init"/>
		<route>
			<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
			<service name="Timer"> <child name="timer"/> </service>
			<any-service> <parent/> </any-service>
		</route>
		<provides> <service name="Nic"/> </provides>
	</start>

	<start name="lighttpd" caps="200">
		<resource name="RAM" quantum="1G" />
		<config>
			<arg value="lighttpd" />
			<arg value="-f" />
			<arg value="/etc/lighttpd/lighttpd.conf" />
			<arg value="-D" />
			<vfs>
				<dir name="dev">
					<log/>
					<null/>
				</dir>
				<dir name="socket">
					<lwip dhcp="yes"/> </dir>
				<dir name="etc">
					<dir name="lighttpd">
						<inline name="lighttpd.conf">
# lighttpd configuration
server.port          = 80
server.document-root = "/website"
server.event-handler = "select"
server.network-backend = "write"
index-file.names     = (
  "index.xhtml", "index.html", "index.htm"
)
mimetype.assign      = (
  ".html"         =>      "text/html",
  ".htm"          =>      "text/html"
)
						</inline>
					</dir>
				</dir>
				<dir name="website">
					<inline name="index.html">
<html>
	<head>
		<title>Hello</title>
	</head>
	<body>
		<p>Hello Genode!</p>
		<b>I am bold ;-)</b>
	</body>
</html>
					</inline>
				</dir>
			</vfs>
			<libc stdin="/dev/null" stdout="/dev/log" stderr="/dev/log"
			      socket="/socket" />
		</config>
	</start>
</config>}

build_boot_image {}

proc qemu_nic_model {} {
	if [have_spec x86]     { return e1000 }
	if [have_spec lan9118] { return lan9118 }
	if [have_spec zynq]    { return cadence_gem }
	return nic_model_missing
}

append qemu_args " -netdev user,id=net0,hostfwd=tcp::5555-:80 "
append qemu_args " -net nic,model=[qemu_nic_model],netdev=net0 "
append qemu_args " -nographic -serial mon:stdio "
append xen_args  { sdl=0\; vif=\["model=e1000,mac=02:00:00:00:01:01,bridge=xenbr0"\] }

run_genode_until forever
