commit eb7c48baef6f4bfe736c5ac0efbfd4c9e3bd29c7
parent 9384ccbfd1afa8ea83ceda4918905e2969e0001a
Author: evenfri <evenfri256@gmail.com>
Date: Tue, 21 Jul 2026 20:48:38 +0800
add src templates for mk
Diffstat:
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