mk-standalone

standalone mk from 9base
git clone git@git.evenfri.pw:mk-standalone.git
Log | Files | Refs | README

commit eb7c48baef6f4bfe736c5ac0efbfd4c9e3bd29c7
parent 9384ccbfd1afa8ea83ceda4918905e2969e0001a
Author: evenfri <evenfri256@gmail.com>
Date:   Tue, 21 Jul 2026 20:48:38 +0800

add src templates for mk

Diffstat:
Dlib9.log | 176-------------------------------------------------------------------------------
Dmk.log | 28----------------------------
Asrc/mkcommon | 23+++++++++++++++++++++++
Asrc/mkdirs | 10++++++++++
Asrc/mkenv | 6++++++
Asrc/mkfile | 58++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mkhdr | 21+++++++++++++++++++++
Asrc/mklib | 14++++++++++++++
Asrc/mkmany | 27+++++++++++++++++++++++++++
Asrc/mkone | 17+++++++++++++++++
Asrc/mksyslib | 14++++++++++++++
11 files changed, 190 insertions(+), 204 deletions(-)

diff --git a/lib9.log b/lib9.log @@ -1,176 +0,0 @@ -make: Entering directory '/mnt/develop/mk/lib9' -CC sec/sha1block.c -CC sec/sha1.c -CC sec/sha1pickle.c -CC sec/md5block.c -CC sec/md5.c -CC sec/md5pickle.c -CC fmt/dofmt.c -CC fmt/fltfmt.c -CC fmt/fmt.c -CC fmt/fmtfd.c -CC fmt/fmtfdflush.c -CC fmt/fmtlocale.c -CC fmtlock2.c -CC fmt/fmtnull.c -CC fmt/fmtprint.c -CC fmt/fmtquote.c -CC fmt/fmtrune.c -CC fmt/fmtstr.c -CC fmt/fmtvprint.c -CC fmt/fprint.c -CC fmt/nan64.c -CC fmt/print.c -CC fmt/runefmtstr.c -CC fmt/runeseprint.c -CC fmt/runesmprint.c -CC fmt/runesnprint.c -CC fmt/runesprint.c -CC fmt/runevseprint.c -CC fmt/runevsmprint.c -CC fmt/runevsnprint.c -CC fmt/seprint.c -CC fmt/smprint.c -CC fmt/snprint.c -CC fmt/sprint.c -CC fmt/strtod.c -CC fmt/vfprint.c -CC fmt/vseprint.c -CC fmt/vsmprint.c -CC fmt/vsnprint.c -CC fmt/charstod.c -CC fmt/pow10.c -CC utf/rune.c -CC utf/runestrcat.c -CC utf/runestrchr.c -CC utf/runestrcmp.c -CC utf/runestrcpy.c -CC utf/runestrdup.c -CC utf/runestrlen.c -CC utf/runestrecpy.c -CC utf/runestrncat.c -CC utf/runestrncmp.c -CC utf/runestrncpy.c -CC utf/runestrrchr.c -CC utf/runestrstr.c -CC utf/runetype.c -CC utf/utfecpy.c -CC utf/utflen.c -CC utf/utfnlen.c -CC utf/utfrrune.c -CC utf/utfrune.c -CC utf/utfutf.c -CC bio/bbuffered.c -CC bio/bfildes.c -CC bio/bflush.c -CC bio/bgetc.c -CC bio/bgetrune.c -CC bio/bgetd.c -CC bio/binit.c -CC bio/boffset.c -CC bio/bprint.c -CC bio/bputc.c -CC bio/bputrune.c -CC bio/brdline.c -CC bio/brdstr.c -CC bio/bread.c -CC bio/bseek.c -CC bio/bvprint.c -CC bio/bwrite.c -CC regex/regcomp.c -CC regex/regerror.c -CC regex/regexec.c -CC regex/regsub.c -CC regex/regaux.c -CC regex/rregexec.c -CC regex/rregsub.c -CC _exits.c -CC _p9dialparse.c -CC _p9dir.c -CC announce.c -CC argv0.c -CC atexit.c -CC atoi.c -CC atol.c -CC atoll.c -CC atnotify.c -CC await.c -CC cistrcmp.c -CC cistrncmp.c -CC cistrstr.c -CC cleanname.c -CC create.c -CC ctime.c -CC dial.c -CC dirfstat.c -CC dirfwstat.c -CC dirmodefmt.c -CC dirread.c -CC dirstat.c -CC dirwstat.c -CC dup.c -CC encodefmt.c -CC errstr.c -CC exec.c -CC execl.c -CC exitcode.c -CC fcallfmt.c -CC get9root.c -CC getcallerpc-386.c -CC getenv.c -CC getfields.c -CC getnetconn.c -CC getns.c -CC getuser.c -CC getwd.c -CC jmp.c -CC lrand.c -CC lnrand.c -CC main.c -CC malloc.c -CC malloctag.c -CC mallocz.c -CC nan.c -CC needsrcquote.c -CC needstack.c -CC netmkaddr.c -CC notify.c -CC nrand.c -CC nulldir.c -CC open.c -CC opentemp.c -CC pin.c -CC pipe.c -CC post9p.c -CC postnote.c -CC qlock.c -CC quote.c -CC rand.c -CC read9pmsg.c -CC readcons.c -CC readn.c -CC rfork.c -CC searchpath.c -CC seek.c -CC sendfd.c -CC sleep.c -CC strdup.c -CC strecpy.c -CC sysfatal.c -CC syslog.c -CC sysname.c -CC time.c -CC tm2sec.c -CC tokenize.c -CC truerand.c -CC u16.c -CC u32.c -CC u64.c -CC unsharp.c -CC wait.c -CC waitpid.c -CC write.c -CC zoneinfo.c -AR lib9 -built lib9 -make: Leaving directory '/mnt/develop/mk/lib9' diff --git a/mk.log b/mk.log @@ -1,28 +0,0 @@ -make: Entering directory '/mnt/develop/mk/mk' -CC arc.c -CC archive.c -CC bufblock.c -CC env.c -CC file.c -CC graph.c -CC job.c -CC lex.c -CC main.c -CC match.c -CC mk.c -CC parse.c -CC recipe.c -CC rc.c -CC rule.c -CC run.c -CC sh.c -CC shell.c -CC shprint.c -CC symtab.c -CC var.c -CC varsub.c -CC word.c -CC unix.c -LD mk -built mk -make: Leaving directory '/mnt/develop/mk/mk' diff --git a/src/mkcommon b/src/mkcommon @@ -0,0 +1,23 @@ +%.$o: $hfiles # don't combine with following %.$o rules + +%.$o: %.c + $cc $cflags -c $stem.c + +%.$o: %.cc + $cc $cflags -c $stem.cc + +%.$o: %.s + $as $aflags $stem.s + +nuke:V: nuke-common +clean:V: clean-common +%.clean:V: %.clean-common + +nuke-common:V: + rm -f *.[$os] [$os].out $cleanfiles $nukefiles + +clean-common: + rm -f *.[$os] [$os].out $cleanfiles + +%.clean-common:V: + rm -f $stem.[$os] [$os].$stem $stem.acid $stem diff --git a/src/mkdirs b/src/mkdirs @@ -0,0 +1,10 @@ +dir-%:V: + for i in $dirs + do + (cd $i; echo cd `pwd`';' mk $mkflags $stem; mk $mkflags $stem) + done + +all:V: dir-all +clean:V: dir-clean +install:V: dir-install +nuke:V: dir-nuke diff --git a/src/mkenv b/src/mkenv @@ -0,0 +1,6 @@ +# This file must be valid mk input for mkhdr +# and also valid shell input for ../dist/buildmk + +sysname=`uname` + +install=`[ $(uname) = AIX ] && echo installbsd || echo install` diff --git a/src/mkfile b/src/mkfile @@ -0,0 +1,58 @@ +<mkhdr + +buggered='fs|fmt|utf' +libdirs=`ls -ld lib* | sed -n 's/^d.* //p' |$egrep -v "^lib($buggered)$"` + +dirs=\ + $libdirs\ + cmd\ + +<mkdirs + +libs:V: libs-all + +libs-%:V: + for i in $libdirs + do + (cd $i; echo cd `pwd`';' mk $mkflags $stem; mk $mkflags $stem) + done + +mkdirs=\ + libbio\ + libregexp\ + cmd/mk\ + +mkmk.sh:VD: + ( + echo '# AUTOMATICALLY GENERATED - DO NOT EDIT' + echo cd lib9 + echo 'echo cd `pwd`' + (cd lib9; mk -n -a install) + echo cd .. + for i in libbio libregexp cmd/mk + do + (cd $i; echo cd $i; echo 'echo cd `pwd`'; mk -n -a install) + echo cd .. + done + ) | sed ' + s/'$install'/$install/g + s/'$sysname'/$sysname/g + s;'$PLAN9';$PLAN9;g + ' >$target + +testmkmk:V: + mk mkmk.sh + rm -f ../lib/lib*.a + mv ../bin/mk ../bin/_mk + sh -ex mkmk.sh + ls -l ../bin/mk + +testcvs:V: + (cd ..; cvs up -dAP) + cp ../bin/_mk ../bin/mk + mk clean + rm ../lib/*.a + mv ../bin/mk ../bin/_mk + rm ../bin/* + PLAN9="`pwd`/.." export PLAN9 + PATH=$PLAN9/bin:$PATH export PATH diff --git a/src/mkhdr b/src/mkhdr @@ -0,0 +1,21 @@ +<$PLAN9/src/mkenv + +bin=$PLAN9/bin +libdir=$PLAN9/lib + +o=o +os=$o + +cc=cc +ld=cc +as=as +ar=ar +cflags= +ldflags= +aflags= +cleanfiles= +nukefiles= +lib= +shortlib= + +<|cat $PLAN9/config 2>/dev/null || true diff --git a/src/mklib b/src/mklib @@ -0,0 +1,14 @@ +default:V: $lib + +$lib(%):N: % +$lib: ${ofiles:%=$lib(%)} + $ar rsc $lib $newmember + +&:n: &.$o + $ar rsc $lib $stem.$o + +all install:V: $lib + +cleanfiles=$cleanfiles $lib + +<$PLAN9/src/mkcommon diff --git a/src/mkmany b/src/mkmany @@ -0,0 +1,27 @@ +none:VQ: + echo usage: mk all, install, installall, '$o'.cmd, cmd.install, or cmd.installall + +progs=${targ:%=$o.%} + +all:V: $progs + +$o.%: %.$o $ofiles $lib # ${shortlib:%=$libdir/lib%.a} + $ld -o $target $prereq $ldflags + +%.install:V: $bin/% + +$bin/%: $o.% + $install $o.$stem $bin/$stem + +many-install:V: + for i in $targ + do + mk $mkflags $i.install + done + +install:V: many-install + +cleanfiles=$cleanfiles $progs +nukefiles=$nukefiles ${targ:%=$bin/%} + +<$PLAN9/src/mkcommon diff --git a/src/mkone b/src/mkone @@ -0,0 +1,17 @@ +prog=$o.$targ + +all:V: $prog + +$prog: $ofiles $lib # ${shortlib:%=$libdir/lib%.a} + $ld -o $target $prereq $ldflags + +install:V: $targ.install +%.install:V: $bin/% + +$bin/%: $o.% + $install $o.$stem $bin/$stem + +cleanfiles=$cleanfiles $prog +nukefiles=$nukefiles $bin/$targ + +<$PLAN9/src/mkcommon diff --git a/src/mksyslib b/src/mksyslib @@ -0,0 +1,14 @@ +default:V: $PLAN9/lib/$lib + +$PLAN9/lib/$lib(%):N: % +$PLAN9/lib/$lib: ${ofiles:%=$PLAN9/lib/$lib(%)} + $ar rsc $PLAN9/lib/$lib $newmember + +&:n: &.$o + $ar rsc $PLAN9/lib/$lib $stem.$o + +all install:V: $PLAN9/lib/$lib + +nukefiles=$nukefiles $PLAN9/lib/$lib + +<$PLAN9/src/mkcommon