xref: /plan9/sys/src/9/port/mkrootc (revision f6eb8b353b1d6b6fa052ff54a71d39ba9b112583)
1*f6eb8b35SDavid du Colombier#!/bin/rc
2*f6eb8b35SDavid du Colombier
3*f6eb8b35SDavid du Colombierrfork e
4*f6eb8b35SDavid du Colombiern=`{echo $#*^'%3' | hoc}
5*f6eb8b35SDavid du Colombierif(! ~ $n 0){
6*f6eb8b35SDavid du Colombier	echo 'usage: mkrootc [name cname file]...' >[1=2]
7*f6eb8b35SDavid du Colombier	exit usage
8*f6eb8b35SDavid du Colombier}
9*f6eb8b35SDavid du Colombier
10*f6eb8b35SDavid du Colombiertmp=mkroot.$pid.out
11*f6eb8b35SDavid du Colombierfn sigexit {
12*f6eb8b35SDavid du Colombier	rm -f $tmp
13*f6eb8b35SDavid du Colombier}
14*f6eb8b35SDavid du Colombier
15*f6eb8b35SDavid du Colombierallcname=()
16*f6eb8b35SDavid du Colombierallname=()
17*f6eb8b35SDavid du Colombierwhile(! ~ $#* 0){
18*f6eb8b35SDavid du Colombier	name=$1
19*f6eb8b35SDavid du Colombier	cname=$2
20*f6eb8b35SDavid du Colombier	file=$3
21*f6eb8b35SDavid du Colombier	shift
22*f6eb8b35SDavid du Colombier	shift
23*f6eb8b35SDavid du Colombier	shift
24*f6eb8b35SDavid du Colombier	allname=($allname $name)
25*f6eb8b35SDavid du Colombier	allcname=($allcname $cname)
26*f6eb8b35SDavid du Colombier}
27*f6eb8b35SDavid du Colombier
28*f6eb8b35SDavid du Colombierecho '
29*f6eb8b35SDavid du Colombier#include "u.h"
30*f6eb8b35SDavid du Colombier#include "../port/lib.h"
31*f6eb8b35SDavid du Colombier#include "mem.h"
32*f6eb8b35SDavid du Colombier#include "dat.h"
33*f6eb8b35SDavid du Colombier#include "fns.h"
34*f6eb8b35SDavid du Colombier#include "io.h"
35*f6eb8b35SDavid du Colombier#include "../port/error.h"
36*f6eb8b35SDavid du Colombier'
37*f6eb8b35SDavid du Colombier
38*f6eb8b35SDavid du Colombierfor(i in $allcname){
39*f6eb8b35SDavid du Colombier	echo 'extern uchar '$i'code[];'
40*f6eb8b35SDavid du Colombier	echo 'extern ulong '$i'len;'
41*f6eb8b35SDavid du Colombier}
42*f6eb8b35SDavid du Colombier
43*f6eb8b35SDavid du Colombierecho '
44*f6eb8b35SDavid du Colombiervoid bootlinks(void){
45*f6eb8b35SDavid du Colombier'
46*f6eb8b35SDavid du Colombierx=($allname)
47*f6eb8b35SDavid du Colombierfor(i in $allcname){
48*f6eb8b35SDavid du Colombier	name=$x(1)
49*f6eb8b35SDavid du Colombier	*=($x); shift; x=($*)
50*f6eb8b35SDavid du Colombier	echo '	addbootfile("'$name'", '$i'code, '$i'len);'
51*f6eb8b35SDavid du Colombier}
52*f6eb8b35SDavid du Colombierecho '
53*f6eb8b35SDavid du Colombier}
54*f6eb8b35SDavid du Colombier'
55