code: plan9front

Download patch

ref: 8c228a123fa0c6062570964011854302bbf57242
parent: 2eadf1fa1703e5da4a98ba9c1a2bdc23bd140d8c
author: unobe@cpan.org <unobe@cpan.org>
date: Tue Aug 17 10:00:47 EDT 2021

mk for only supported archs
http://fqa.9front.org/fqa1.html#1.2 states the supported archs.
However, clean and nuke also remove build files for 0 (spim) and q
(power).  'mk all' using those archs fails; 'mk kernels' also tries to
build all the kernels, even those which are not supported.  For
example, I tried to build the power arch (qc, qa, ql) and without
surprise it failed (when building dtracy): ...
mk dtracy
qc -FTVw dtracy.c
yacc -v -d -D1 parse.y
qc -FTVw cgen.c
qc -FTVw act.c
qc -FTVw type.c
 == regfree ==
REGISTER R0 <11> STRUCT DTAct cgen.c:302
 == regfree ==

REGISTER R0 <11> STRUCT DTAct act.c:266

 == regfree ==
qc -FTVw agg.c
cgen.c:299 unknown type in regalloc: STRUCT DTAct
cgen.c:299 bad opcode in gmove INT -> STRUCT DTAct
cgen.c:302 unknown type in regalloc: STRUCT DTAct
cgen.c:302 bad opcode in gmove INT -> STRUCT DTAct
cgen.c:302 error in regfree: 0 [0]
REGISTERmk: qc -FTVw cgen.c  : exit status=rc 387386: qc 387392: error R0
 <11> STRUCT DTAct act.c:269

act.c:250 unknown type in regalloc: STRUCT DTAct
act.c:250 bad opcode in gmove INT -> STRUCT DTAct
act.c:266 unknown type in regalloc: STRUCT DTAct
act.c:266 bad opcode in gmove INT -> STRUCT DTAct
act.c:266 error in regfree: 0 [0]
act.c:269 unknown type in regalloc: STRUCT DTAct
act.c:269 bad opcode in gmove INT -> STRUCT DTAct
act.c:269 error in regfree: 0 [0]
act.c:274 unknown type in regalloc: STRUCT DTAct
act.c:274 bad opcode in gmove INT -> STRUCT DTAct
act.c:274 error in regfree: 0 [0]
too many errors
mk: for(i in cc ...  : exit status=rc 382748: rc 387379: mk 387381: error
mk: date for (i ...  : exit status=rc 373781: rc 382226: mk 382227: error
cpu%

The patch below skips over non-supported architectures.  Is that
something we want?  This way, 'mk kernels' should work without a
problem (tested on amd64).  Then if someone works on getting those
architectures supported again in the future, they can be added back
in.


--- a/sys/src/9/mkfile
+++ b/sys/src/9/mkfile
@@ -3,11 +3,13 @@
 	bcm64\
 	cycv\
 	kw\
-	mtx\
+#	power arch:\
+#	mtx\
 	omap\
 	pc\
 	pc64\
-	ppc\
+#	power arch:\
+#	ppc\
 	sgi\
 	teg2\
 	xen\
--- a/sys/src/boot/zynq/mkfile
+++ b/sys/src/boot/zynq/mkfile
@@ -7,6 +7,9 @@
 
 all:V: $TARG
 
+install:V:
+	echo install not supported >[1=2]
+
 clean:V:
 	rm -rf $TARG *.$O
 	@{objtype=$cputype mk -f mkfile.port clean}
--- a/sys/src/mkfile
+++ b/sys/src/mkfile
@@ -1,5 +1,12 @@
 </$objtype/mkfile
 
+SUPPORTED_OBJS=\
+	386\
+	amd64\
+	arm\
+	arm64\
+	mips\
+
 LIBS=\
 	lib9p\
 	libString\
@@ -52,10 +59,14 @@
 
 all install clean nuke:VQ:
 	date
-	for (i in $LIBS $SUBSYS $CMDS) @{
-		cd $i
-		mk $target
+	if (~ $objtype $SUPPORTED_OBJS) {
+		for (i in $LIBS $SUBSYS $CMDS) @{
+			cd $i
+			mk $target
+		}
 	}
+	if not
+		echo $objtype arch not supported by 9front >[1=2]
 	date
 
 installall:V:
@@ -62,11 +73,15 @@
 	echo "installall not supported"
 
 release:V:
-	mk nuke
-	rm -f /$objtype/lib/ape/*.a
-	rm -f /$objtype/lib/*.a
-	mk install
-	mk clean
+	if (~ $objtype $SUPPORTED_OBJS) {
+		mk nuke
+		rm -f /$objtype/lib/ape/*.a
+		rm -f /$objtype/lib/*.a
+		mk install
+		mk clean
+	}
+	if not
+		echo $objtype architecture not supported >[1=2]
 
 kernels:V:
 	for (i in 9 boot) @{