summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Forney <mforney@mforney.org>2016-04-17 23:34:06 -0700
committerMichael Forney <mforney@mforney.org>2016-04-18 02:20:39 -0700
commitb4bc94979483c44d91e32f1728d05d0fac4eaea5 (patch)
tree356f78734641f4d9bbdad0136368c140ab1ff2e7
parent09422da76c5f3524c1f03ef494d2ea8ed998961e (diff)
Add perp-2.07
-rw-r--r--core/gen.rc1
-rw-r--r--core/perp/.gitignore1
-rw-r--r--core/perp/gen.rc84
-rw-r--r--core/perp/url1
-rw-r--r--ninja.rc4
5 files changed, 91 insertions, 0 deletions
diff --git a/core/gen.rc b/core/gen.rc
index ae69c366..0088e629 100644
--- a/core/gen.rc
+++ b/core/gen.rc
@@ -3,6 +3,7 @@ subgen cparser
subgen file
subgen libfirm
subgen loksh
+subgen perp
subgen plan9port
subgen sbase
subgen sinit
diff --git a/core/perp/.gitignore b/core/perp/.gitignore
new file mode 100644
index 00000000..29394683
--- /dev/null
+++ b/core/perp/.gitignore
@@ -0,0 +1 @@
+tools.ninja
diff --git a/core/perp/gen.rc b/core/perp/gen.rc
new file mode 100644
index 00000000..eba8f855
--- /dev/null
+++ b/core/perp/gen.rc
@@ -0,0 +1,84 @@
+cflags\
+ -I '$srcdir'/lasagna\
+ -I '$outdir'
+
+{
+ include 'toolchain/$host_toolchain.ninja'
+ exe mk_outvec lasagna/outvec/mk_outvec.c
+ exe mk_rlimit lasagna/rlimit/mk_rlimit.c
+ exe mksysstr lasagna/sysstr/mksysstr.c
+} >../tools.ninja
+subninja '$dir/tools.ninja'
+
+rule outvec '$outdir/mk_outvec >$out.tmp && mv $out.tmp $out'
+build '$outdir'/outvec_STDOUT.h outvec '|' '$outdir'/mk_outvec
+
+rule rlimit '$outdir/mk_rlimit >$out.tmp && mv $out.tmp $out'
+build '$outdir'/rlimit_defs.c.in rlimit '|' '$outdir'/mk_rlimit
+
+rule sysstr '$outdir/mksysstr $type >$out.tmp && mv $out.tmp $out'
+let type errno -- build '$outdir'/sysstr_errno.c.in sysstr '|' '$outdir'/mksysstr
+let type signo -- build '$outdir'/sysstr_signo.c.in sysstr '|' '$outdir'/mksysstr
+
+phony internal_headers outvec_STDOUT.h rlimit_defs.c.in sysstr_^(errno signo)^.c.in
+
+lib libasagna.a -d 'phony/$dir/internal_headers' lasagna/^(\
+ buf/buf_^(cmp copy fill ndx rcopy rndx)^.c\
+ cstr/cstr_^(cat chop cmp cmpi contains copy dup lcat lcpy len ltrim match matchi ncmp pos rpos rtrim trim vcat_ vcopy_ vlen_)^.c\
+ cdb/^(cdb_^(find cc clear close distance dynget dynread get hashpart init open read seq) cdbmk_^(add addioq addrec clear finish init _update))^.c\
+ devout/devout.c\
+ domsock/domsock_^(accept close connect create)^.c\
+ dynbuf/^(dynbuf.c dynbuf_^(clear copy free freebuf grow need new pack put putb)^.c)\
+ dynstr/^(dynstr.c dynstr_^(chop clear copy copys free freestr grow need new put putc putn puts set vputs_)^.c)\
+ dynstuf/dynstuf_^(find free get grow init isempty items new peek pop push replace reverse set slots sort stuf visit)^.c\
+ execvx/execvx.c\
+ fd/fd_^(blocking cloexec dupe move nonblock)^.c\
+ hdb/hdb_^(find cc clear close distance dynget dynread get hashpart init open read seq)^.c\
+ hdb/hdbmk_^(add addioq addrec clear finish start _update)^.c\
+ hfunc/hfunc_^(djba djbm djbx elf1 fnva fnvm ghfa ghfm ghfx jsw1 kp37 kr31 kx17 murm oat1 p50a pjw1 rsuh rot1 rotm sax1 sdbm sfh1 postmix32)^.c\
+ ioq/ioq_^(get getln init put putfd putfile stderr stdin stdout vputs_)^.c\
+ newenv/newenv.c\
+ nextopt/^(nextopt nextopt_progname)^.c\
+ nfmt/nfmt_^(uint32 uint32_pad uint32_pad_ uint32_pad0 uint32_pad0_ uint32o uint32o_pad0 uint32o_pad0_ uint32x uint32x_pad uint32x_pad_ uint32x_pad0 uint32x_pad0_ uint64 uint64_pad uint64_pad_ uint64_pad0 uint64_pad0_)^.c\
+ nuscan/nuscan_^(uint32 uint32o)^.c\
+ outvec/outvec_^(STDERR STDOUT flush put puts vputs_)^.c\
+ packet/packet_^(read write)^.c\
+ padlock/padlock_^(exbyte exlock extest fcntl shbyte shlock shtest unbyte unlock)^.c\
+ pidlock/pidlock_^(check set)^.c\
+ pkt/pkt_^(load read write)^.c\
+ pollio/pollio.c\
+ rlimit/rlimit.c\
+ sig/sig_^(block catch catchr unblock)^.c\
+ sysstr/sysstr_^(errno signal)^.c\
+ tain/tain_^(assign iszero less load load_msecs load_utc minus now pack packhex pause plus tai_pack tai_unpack uptime to_float to_msecs to_utc unpack unpackhex)^.c\
+ tx64/^(base64_vec tx64_encode)^.c\
+ ufunc/ufunc_^(u32add u48add)^.c\
+ upak/upak_vpack.c\
+ upak/upak^('' 16 24 32 48 64)^_pack.c\
+ upak/upak^('' 16 24 32 48 64)^_unpack.c\
+)
+
+fn x {
+ exe=$1
+ shift
+ exe $exe $* libasagna.a
+ file bin/$exe '$outdir'/$exe 755
+}
+
+x perpd perp/^(\
+ perpd.c\
+ perpd_conn.c\
+ perpd_svdef.c\
+)
+
+for(exe in perp^(boot ctl hup ls ok stat)) x $exe perp/$exe.c
+for(exe in run^(args argv0 choom detach deux env file limit lock pause session trap tool uid)) x $exe runtools/$exe.c
+for(exe in cat^(args env limits uid)) x $exe runtools/$exe.c
+
+for(man in */man/*.[1-9]) {
+ ifs=() {
+ sect=`{printf %s $man | tail -c 1}
+ base=`{basename $man | head -c -1}
+ }
+ file share/man/man$sect/$base.$sect '$srcdir'/$man 644
+}
diff --git a/core/perp/url b/core/perp/url
new file mode 100644
index 00000000..2078b738
--- /dev/null
+++ b/core/perp/url
@@ -0,0 +1 @@
+http://b0llix.net/perp/distfiles/perp-2.07.tar.gz
diff --git a/ninja.rc b/ninja.rc
index 077ca174..81e4296f 100644
--- a/ninja.rc
+++ b/ninja.rc
@@ -94,6 +94,10 @@ fn ar {
fn objects {
rule=$1 out=$2 deps=() objs=() {
shift 2
+ if(~ $1 -d) {
+ deps=('||' $2)
+ shift 2
+ }
for(src) {
if(~ $src *.c) {
cc $src $deps