From 0adf1b043182df71092c80c270f2276c6a30572d Mon Sep 17 00:00:00 2001 From: Giacomo Tesio Date: Wed, 27 Oct 2021 10:01:28 +0200 Subject: [PATCH] new build: get rid of Go with few rc scripts. --- arch/amd64/include/cflags.json | 18 - arch/rc/cmd/build | 37 ++ arch/rc/cmd/template | 10 + arch/rc/lib/build/utils.rc | 131 ++++ build.json | 13 - hacking | 2 +- jehanne.rc.build | 9 + qa/build.json | 11 - qa/cmd/rc/010-include.rc.template | 3 + qa/cmd/rc/010-template.rc.template | 18 + qa/cmd/rc/010-template.runner | 10 + qa/gnu/gcc/build.json | 11 - qa/gnu/gcc/gcc.rc.build | 6 + qa/kern/build.json | 51 -- qa/kern/kern.rc.build | 8 + qa/lib/c/build.json | 46 -- qa/lib/c/c.rc.build | 9 + qa/lib/newlib/build.json | 138 ---- qa/lib/newlib/newlib.rc.build | 42 ++ qa/lib/newlib/testsuite/build.json | 54 -- qa/lib/newlib/testsuite/testsuite.rc.build | 59 ++ qa/lib/thread/build.json | 11 - qa/lib/thread/thread.rc.build | 6 + qa/qa.rc.build | 6 + sys/src/cmd/FromYacc.rc.build | 53 ++ sys/src/cmd/acme/acme.rc.build | 33 + sys/src/cmd/acme/aux/aux.rc.build | 8 + sys/src/cmd/acme/aux/build.json | 15 - sys/src/cmd/acme/aux/win/build.json | 16 - sys/src/cmd/acme/aux/win/win.rc.build | 16 + sys/src/cmd/acme/build.json | 36 -- sys/src/cmd/auth/authsrv.json | 16 - sys/src/cmd/auth/build.json | 50 -- sys/src/cmd/auth/dsa2pub.json | 16 - sys/src/cmd/auth/dsa2ssh.json | 16 - sys/src/cmd/auth/factotum/build.json | 27 - sys/src/cmd/auth/factotum/factotum.rc.build | 27 + sys/src/cmd/auth/guard.srv.json | 16 - sys/src/cmd/auth/lib/libauthcmd.json | 29 - sys/src/cmd/auth/rsa2csr.json | 16 - sys/src/cmd/auth/rsa2pub.json | 16 - sys/src/cmd/auth/rsa2ssh.json | 16 - sys/src/cmd/auth/rsa2x509.json | 16 - sys/src/cmd/auth/rsafill.json | 16 - sys/src/cmd/auth/secstore/aescbc.json | 13 - sys/src/cmd/auth/secstore/build.json | 21 - sys/src/cmd/auth/secstore/secstore.rc.build | 81 +++ sys/src/cmd/auth/secstore/secstored.json | 18 - sys/src/cmd/auth/secstore/secuser.json | 16 - sys/src/cmd/awk/awk.rc.build | 28 + sys/src/cmd/awk/build.json | 31 - sys/src/cmd/awk/maketab.c | 171 ----- sys/src/cmd/awk/maketab.go | 189 ------ sys/src/cmd/awk/maketab.rc.environment | 64 ++ sys/src/cmd/awk/maketab.rc.template | 40 ++ sys/src/cmd/cmd.json | 45 -- sys/src/cmd/cmd.rc.build | 31 + sys/src/cmd/cmds.json | 118 ---- sys/src/cmd/disk/build.json | 18 - sys/src/cmd/disk/disk.rc.build | 11 + sys/src/cmd/disk/prep/fdisk.json | 21 - sys/src/cmd/disk/prep/fdisk.rc.build | 17 + sys/src/cmd/disk/prep/prep.json | 21 - sys/src/cmd/disk/prep/prep.rc.build | 17 + sys/src/cmd/disk/rofs/build.json | 12 - sys/src/cmd/disk/rofs/rofs.rc.build | 6 + sys/src/cmd/dossrv/build.json | 23 - sys/src/cmd/dossrv/dossrv.rc.build | 21 + sys/src/cmd/exportfs/build.json | 14 - sys/src/cmd/exportfs/exportfs.rc.build | 14 + sys/src/cmd/grep/build.json | 22 - sys/src/cmd/grep/grep.rc.build | 18 + sys/src/cmd/hjfs/build.json | 21 - sys/src/cmd/hjfs/hjfs.rc.build | 21 + sys/src/cmd/hmi/build.json | 19 - sys/src/cmd/hmi/console/COMConsole.rc.build | 16 + sys/src/cmd/hmi/console/PipeConsole.rc.build | 16 + .../cmd/hmi/console/ScreenConsole.rc.build | 17 + sys/src/cmd/hmi/console/comconsole.json | 24 - sys/src/cmd/hmi/console/console.rc.build | 5 + sys/src/cmd/hmi/console/pipeconsole.json | 24 - sys/src/cmd/hmi/console/screenconsole.json | 25 - sys/src/cmd/hmi/hmi.rc.build | 10 + sys/src/cmd/hmi/realemu/loadcom.json | 11 - sys/src/cmd/hmi/realemu/realemu.json | 21 - sys/src/cmd/hmi/realemu/realemu.rc.build | 29 + sys/src/cmd/hmi/vga/build.json | 54 -- sys/src/cmd/hmi/vga/vga.rc.build | 52 ++ sys/src/cmd/hoc/build.json | 23 - sys/src/cmd/hoc/hoc.rc.build | 19 + sys/src/cmd/ip/build.json | 29 - sys/src/cmd/ip/dhcpd/dhcpd.json | 15 - sys/src/cmd/ip/dhcpd/dhcpd.rc.build | 28 + sys/src/cmd/ip/dhcpd/dhcpleases.json | 14 - sys/src/cmd/ip/ip.rc.build | 9 + sys/src/cmd/ip/ipconfig/build.json | 14 - sys/src/cmd/ip/ipconfig/ipconfig.rc.build | 14 + sys/src/cmd/ip/ipconfig/kipconfig.json | 14 - sys/src/cmd/kcmds.json | 20 - sys/src/cmd/kernel.json | 31 - sys/src/cmd/ndb/build.json | 25 - sys/src/cmd/ndb/dns.json | 22 - sys/src/cmd/ndb/dns.rc.build | 22 + sys/src/cmd/ndb/dnsdebug.json | 20 - sys/src/cmd/ndb/dnsdebug.rc.build | 50 ++ sys/src/cmd/ndb/dnsgetip.json | 20 - sys/src/cmd/ndb/dnstcp.json | 20 - sys/src/cmd/ndb/dnstcp.rc.build | 20 + sys/src/cmd/ndb/ndb.rc.build | 3 + sys/src/cmd/ns/build.json | 12 - sys/src/cmd/ns/ns.rc.build | 19 + sys/src/cmd/pict/build.json | 47 -- sys/src/cmd/rc/build.json | 39 -- sys/src/cmd/rc/code.c | 29 +- sys/src/cmd/rc/exec.c | 87 ++- sys/src/cmd/rc/exec.h | 13 +- sys/src/cmd/rc/fns.h | 15 +- sys/src/cmd/rc/glob.c | 16 +- sys/src/cmd/rc/havefork.c | 7 +- sys/src/cmd/rc/here.c | 11 +- sys/src/cmd/rc/jehanne.c | 12 +- sys/src/cmd/rc/lex.c | 13 +- sys/src/cmd/rc/pcmd.c | 9 +- sys/src/cmd/rc/pfnc.c | 11 +- sys/src/cmd/rc/rc.h | 26 +- sys/src/cmd/rc/rc.rc.build | 41 ++ sys/src/cmd/rc/simple.c | 61 +- sys/src/cmd/rc/subr.c | 12 +- sys/src/cmd/rc/syn.y | 9 +- sys/src/cmd/rc/tree.c | 13 + sys/src/cmd/rio/build.json | 20 - sys/src/cmd/rio/rio.rc.build | 20 + sys/src/cmd/sam/build.json | 31 - sys/src/cmd/sam/sam.rc.build | 31 + sys/src/cmd/samterm/build.json | 20 - sys/src/cmd/samterm/samterm.rc.build | 20 + sys/src/cmd/sys/build.json | 18 - sys/src/cmd/sys/call/build.json | 21 - sys/src/cmd/sys/call/call.rc.build | 15 + sys/src/cmd/sys/call/tabh.rc.template | 25 + sys/src/cmd/sys/sys.rc.build | 16 + sys/src/cmd/usb/audio/audio.rc.build | 7 + sys/src/cmd/usb/audio/build.json | 11 - sys/src/cmd/usb/build.json | 32 - sys/src/cmd/usb/cmd.json | 14 - sys/src/cmd/usb/disk/build.json | 14 - sys/src/cmd/usb/disk/disk.rc.build | 7 + sys/src/cmd/usb/ether/build.json | 18 - sys/src/cmd/usb/ether/ether.rc.build | 7 + sys/src/cmd/usb/joy/build.json | 11 - sys/src/cmd/usb/joy/joy.rc.build | 7 + sys/src/cmd/usb/kb/build.json | 11 - sys/src/cmd/usb/kb/kb.rc.build | 7 + sys/src/cmd/usb/libusb.rc.build | 34 + sys/src/cmd/usb/ptp/build.json | 11 - sys/src/cmd/usb/ptp/ptp.rc.build | 7 + sys/src/cmd/usb/serial/build.json | 16 - sys/src/cmd/usb/serial/serial.rc.build | 7 + sys/src/cmd/usb/usb.rc.build | 14 + sys/src/cmd/usb/usbd/build.json | 14 - sys/src/cmd/usb/usbd/usbd.rc.build | 7 + sys/src/cmd/vt.rc.build | 5 + sys/src/cmd/vt/build.json | 14 - sys/src/cmd/vt/vt.rc.build | 14 + sys/src/kern/amd64/amd64.rc.build | 433 +++++++++++++ sys/src/kern/amd64/boot-methods.rc.confs | 3 + sys/src/kern/amd64/build.json | 121 ---- sys/src/kern/amd64/clean.json | 7 - sys/src/kern/amd64/core.json | 110 ---- sys/src/kern/amd64/createSIPIHeader.rc | 13 + sys/src/kern/amd64/devdraw.json | 26 - sys/src/kern/amd64/inith.json | 31 - sys/src/kern/amd64/inith.rc.build | 26 + sys/src/kern/amd64/laptop.json | 112 ---- sys/src/kern/amd64/ramdisk/rofs | Bin 0 -> 121864 bytes sys/src/kern/amd64/registry-amd64.rc.conf | 21 + sys/src/kern/amd64/workhorse.json | 111 ---- sys/src/kern/amd64/workhorse.rc.build | 410 ++++++++++++ sys/src/kern/boot/boot.rc.build | 20 + sys/src/kern/boot/bootlib.rc.build | 32 + sys/src/kern/boot/build.json | 66 -- sys/src/kern/build/README.txt | 2 + sys/src/kern/build/bootCPUc.rc.template | 46 ++ sys/src/kern/build/errorh.rc.template | 26 + sys/src/kern/build/errstrh.rc.template | 26 + sys/src/kern/build/inith.rc.template | 57 ++ sys/src/kern/build/kernelconf.rc.template | 145 +++++ sys/src/kern/build/ksyscalls.rc.template | 292 +++++++++ sys/src/kern/ip/include.json | 31 - sys/src/kern/port/include.json | 73 --- sys/src/lib/9p/9p.rc.build | 29 + sys/src/lib/9p/build.json | 30 - sys/src/lib/9p2000/9p2000.rc.build | 30 + sys/src/lib/9p2000/build.json | 18 - sys/src/lib/9p2000/klib9p2000.json | 18 - sys/src/lib/9p2000/klib9p2000.rc.build | 14 + sys/src/lib/String/String.rc.build | 29 + sys/src/lib/String/build.json | 28 - sys/src/lib/aml/aml.rc.build | 18 + sys/src/lib/aml/build.json | 19 - sys/src/lib/aml/klibaml.json | 19 - sys/src/lib/aml/klibaml.rc.build | 16 + sys/src/lib/auth/auth.rc.build | 28 + sys/src/lib/auth/build.json | 27 - sys/src/lib/authsrv/authsrv.rc.build | 32 + sys/src/lib/authsrv/build.json | 33 - sys/src/lib/avl/avl.rc.build | 13 + sys/src/lib/avl/build.json | 12 - sys/src/lib/bio/bio.rc.build | 29 + sys/src/lib/bio/build.json | 28 - sys/src/lib/complete/build.json | 12 - sys/src/lib/complete/complete.rc.build | 13 + sys/src/lib/control/build.json | 26 - sys/src/lib/control/control.rc.build | 27 + sys/src/lib/disk/build.json | 15 - sys/src/lib/disk/disk.rc.build | 16 + sys/src/lib/draw/build.json | 68 -- sys/src/lib/draw/draw.rc.build | 69 ++ sys/src/lib/draw/klibdraw.json | 55 -- sys/src/lib/draw/klibdraw.rc.build | 54 ++ sys/src/lib/flate/build.json | 22 - sys/src/lib/flate/flate.rc.build | 23 + sys/src/lib/frame/build.json | 20 - sys/src/lib/frame/frame.rc.build | 21 + sys/src/lib/ip/build.json | 22 - sys/src/lib/ip/ip.rc.build | 23 + sys/src/lib/ip/klibip.json | 20 - sys/src/lib/ip/klibip.rc.build | 19 + sys/src/lib/ip/libip.json | 22 - sys/src/lib/jehanne/CrtFiles.rc.build | 14 + sys/src/lib/jehanne/build.json | 245 ------- sys/src/lib/jehanne/jehanne.rc.build | 226 +++++++ sys/src/lib/jehanne/klibc.json | 150 ----- sys/src/lib/jehanne/klibc.rc.build | 145 +++++ sys/src/lib/jehanne/syscallc.rc.template | 60 ++ sys/src/lib/jehanne/syscallh.rc.template | 51 ++ sys/src/lib/klib.json | 29 - sys/src/lib/klibs.json | 15 - sys/src/lib/klibs.rc.build | 13 + sys/src/lib/lib.json | 21 - sys/src/lib/libs.json | 31 - sys/src/lib/libs.rc.build | 29 + sys/src/lib/memdraw/build.json | 34 - sys/src/lib/memdraw/klibmemdraw.json | 29 - sys/src/lib/memdraw/klibmemdraw.rc.build | 28 + sys/src/lib/memdraw/memdraw.rc.build | 33 + sys/src/lib/memlayer/build.json | 23 - sys/src/lib/memlayer/klibmemlayer.json | 23 - sys/src/lib/memlayer/klibmemlayer.rc.build | 22 + sys/src/lib/memlayer/memlayer.rc.build | 24 + sys/src/lib/mp/build.json | 51 -- sys/src/lib/mp/klibmp.json | 51 -- sys/src/lib/mp/klibmp.rc.build | 50 ++ sys/src/lib/mp/mp.rc.build | 52 ++ sys/src/lib/ndb/build.json | 30 - sys/src/lib/ndb/libndb.json | 30 - sys/src/lib/ndb/ndb.rc.build | 31 + sys/src/lib/plumb/build.json | 14 - sys/src/lib/plumb/plumb.rc.build | 15 + sys/src/lib/posix/SignalHelper.rc.build | 15 + sys/src/lib/posix/build.json | 51 -- sys/src/lib/posix/posix.rc.build | 37 ++ sys/src/lib/regexp/build.json | 18 - sys/src/lib/regexp/regexp.rc.build | 19 + sys/src/lib/sec/build.json | 86 --- sys/src/lib/sec/klibsec.json | 82 --- sys/src/lib/sec/klibsec.rc.build | 79 +++ sys/src/lib/sec/sec.rc.build | 85 +++ sys/src/lib/thread/build.json | 37 -- sys/src/lib/thread/thread.rc.build | 37 ++ sys/src/sysconf.json | 606 ------------------ sys/src/sysconf/bootmethods.conf | 3 + sys/src/sysconf/errors.rc.confs | 55 ++ sys/src/sysconf/syscalls.rc.confs | 27 + 274 files changed, 4938 insertions(+), 5214 deletions(-) delete mode 100644 arch/amd64/include/cflags.json create mode 100644 arch/rc/cmd/build create mode 100644 arch/rc/cmd/template create mode 100644 arch/rc/lib/build/utils.rc delete mode 100644 build.json create mode 100644 jehanne.rc.build delete mode 100644 qa/build.json create mode 100644 qa/cmd/rc/010-include.rc.template create mode 100644 qa/cmd/rc/010-template.rc.template create mode 100755 qa/cmd/rc/010-template.runner delete mode 100644 qa/gnu/gcc/build.json create mode 100644 qa/gnu/gcc/gcc.rc.build delete mode 100644 qa/kern/build.json create mode 100644 qa/kern/kern.rc.build delete mode 100644 qa/lib/c/build.json create mode 100644 qa/lib/c/c.rc.build delete mode 100644 qa/lib/newlib/build.json create mode 100644 qa/lib/newlib/newlib.rc.build delete mode 100644 qa/lib/newlib/testsuite/build.json create mode 100644 qa/lib/newlib/testsuite/testsuite.rc.build delete mode 100644 qa/lib/thread/build.json create mode 100644 qa/lib/thread/thread.rc.build create mode 100644 qa/qa.rc.build create mode 100644 sys/src/cmd/FromYacc.rc.build create mode 100644 sys/src/cmd/acme/acme.rc.build create mode 100644 sys/src/cmd/acme/aux/aux.rc.build delete mode 100644 sys/src/cmd/acme/aux/build.json delete mode 100644 sys/src/cmd/acme/aux/win/build.json create mode 100644 sys/src/cmd/acme/aux/win/win.rc.build delete mode 100644 sys/src/cmd/acme/build.json delete mode 100644 sys/src/cmd/auth/authsrv.json delete mode 100644 sys/src/cmd/auth/build.json delete mode 100644 sys/src/cmd/auth/dsa2pub.json delete mode 100644 sys/src/cmd/auth/dsa2ssh.json delete mode 100644 sys/src/cmd/auth/factotum/build.json create mode 100644 sys/src/cmd/auth/factotum/factotum.rc.build delete mode 100644 sys/src/cmd/auth/guard.srv.json delete mode 100644 sys/src/cmd/auth/lib/libauthcmd.json delete mode 100644 sys/src/cmd/auth/rsa2csr.json delete mode 100644 sys/src/cmd/auth/rsa2pub.json delete mode 100644 sys/src/cmd/auth/rsa2ssh.json delete mode 100644 sys/src/cmd/auth/rsa2x509.json delete mode 100644 sys/src/cmd/auth/rsafill.json delete mode 100644 sys/src/cmd/auth/secstore/aescbc.json delete mode 100644 sys/src/cmd/auth/secstore/build.json create mode 100644 sys/src/cmd/auth/secstore/secstore.rc.build delete mode 100644 sys/src/cmd/auth/secstore/secstored.json delete mode 100644 sys/src/cmd/auth/secstore/secuser.json create mode 100644 sys/src/cmd/awk/awk.rc.build delete mode 100644 sys/src/cmd/awk/build.json delete mode 100644 sys/src/cmd/awk/maketab.c delete mode 100644 sys/src/cmd/awk/maketab.go create mode 100644 sys/src/cmd/awk/maketab.rc.environment create mode 100644 sys/src/cmd/awk/maketab.rc.template delete mode 100644 sys/src/cmd/cmd.json create mode 100644 sys/src/cmd/cmd.rc.build delete mode 100644 sys/src/cmd/cmds.json delete mode 100644 sys/src/cmd/disk/build.json create mode 100644 sys/src/cmd/disk/disk.rc.build delete mode 100644 sys/src/cmd/disk/prep/fdisk.json create mode 100644 sys/src/cmd/disk/prep/fdisk.rc.build delete mode 100644 sys/src/cmd/disk/prep/prep.json create mode 100644 sys/src/cmd/disk/prep/prep.rc.build delete mode 100644 sys/src/cmd/disk/rofs/build.json create mode 100644 sys/src/cmd/disk/rofs/rofs.rc.build delete mode 100644 sys/src/cmd/dossrv/build.json create mode 100644 sys/src/cmd/dossrv/dossrv.rc.build delete mode 100644 sys/src/cmd/exportfs/build.json create mode 100644 sys/src/cmd/exportfs/exportfs.rc.build delete mode 100644 sys/src/cmd/grep/build.json create mode 100644 sys/src/cmd/grep/grep.rc.build delete mode 100644 sys/src/cmd/hjfs/build.json create mode 100644 sys/src/cmd/hjfs/hjfs.rc.build delete mode 100644 sys/src/cmd/hmi/build.json create mode 100644 sys/src/cmd/hmi/console/COMConsole.rc.build create mode 100644 sys/src/cmd/hmi/console/PipeConsole.rc.build create mode 100644 sys/src/cmd/hmi/console/ScreenConsole.rc.build delete mode 100644 sys/src/cmd/hmi/console/comconsole.json create mode 100644 sys/src/cmd/hmi/console/console.rc.build delete mode 100644 sys/src/cmd/hmi/console/pipeconsole.json delete mode 100644 sys/src/cmd/hmi/console/screenconsole.json create mode 100644 sys/src/cmd/hmi/hmi.rc.build delete mode 100644 sys/src/cmd/hmi/realemu/loadcom.json delete mode 100644 sys/src/cmd/hmi/realemu/realemu.json create mode 100644 sys/src/cmd/hmi/realemu/realemu.rc.build delete mode 100644 sys/src/cmd/hmi/vga/build.json create mode 100644 sys/src/cmd/hmi/vga/vga.rc.build delete mode 100644 sys/src/cmd/hoc/build.json create mode 100644 sys/src/cmd/hoc/hoc.rc.build delete mode 100644 sys/src/cmd/ip/build.json delete mode 100644 sys/src/cmd/ip/dhcpd/dhcpd.json create mode 100644 sys/src/cmd/ip/dhcpd/dhcpd.rc.build delete mode 100644 sys/src/cmd/ip/dhcpd/dhcpleases.json create mode 100644 sys/src/cmd/ip/ip.rc.build delete mode 100644 sys/src/cmd/ip/ipconfig/build.json create mode 100644 sys/src/cmd/ip/ipconfig/ipconfig.rc.build delete mode 100644 sys/src/cmd/ip/ipconfig/kipconfig.json delete mode 100644 sys/src/cmd/kcmds.json delete mode 100644 sys/src/cmd/kernel.json delete mode 100644 sys/src/cmd/ndb/build.json delete mode 100644 sys/src/cmd/ndb/dns.json create mode 100644 sys/src/cmd/ndb/dns.rc.build delete mode 100644 sys/src/cmd/ndb/dnsdebug.json create mode 100644 sys/src/cmd/ndb/dnsdebug.rc.build delete mode 100644 sys/src/cmd/ndb/dnsgetip.json delete mode 100644 sys/src/cmd/ndb/dnstcp.json create mode 100644 sys/src/cmd/ndb/dnstcp.rc.build create mode 100644 sys/src/cmd/ndb/ndb.rc.build delete mode 100644 sys/src/cmd/ns/build.json create mode 100644 sys/src/cmd/ns/ns.rc.build delete mode 100644 sys/src/cmd/pict/build.json delete mode 100644 sys/src/cmd/rc/build.json create mode 100644 sys/src/cmd/rc/rc.rc.build delete mode 100644 sys/src/cmd/rio/build.json create mode 100644 sys/src/cmd/rio/rio.rc.build delete mode 100644 sys/src/cmd/sam/build.json create mode 100644 sys/src/cmd/sam/sam.rc.build delete mode 100644 sys/src/cmd/samterm/build.json create mode 100644 sys/src/cmd/samterm/samterm.rc.build delete mode 100644 sys/src/cmd/sys/build.json delete mode 100644 sys/src/cmd/sys/call/build.json create mode 100644 sys/src/cmd/sys/call/call.rc.build create mode 100644 sys/src/cmd/sys/call/tabh.rc.template create mode 100644 sys/src/cmd/sys/sys.rc.build create mode 100644 sys/src/cmd/usb/audio/audio.rc.build delete mode 100644 sys/src/cmd/usb/audio/build.json delete mode 100644 sys/src/cmd/usb/build.json delete mode 100644 sys/src/cmd/usb/cmd.json delete mode 100644 sys/src/cmd/usb/disk/build.json create mode 100644 sys/src/cmd/usb/disk/disk.rc.build delete mode 100644 sys/src/cmd/usb/ether/build.json create mode 100644 sys/src/cmd/usb/ether/ether.rc.build delete mode 100644 sys/src/cmd/usb/joy/build.json create mode 100644 sys/src/cmd/usb/joy/joy.rc.build delete mode 100644 sys/src/cmd/usb/kb/build.json create mode 100644 sys/src/cmd/usb/kb/kb.rc.build create mode 100644 sys/src/cmd/usb/libusb.rc.build delete mode 100644 sys/src/cmd/usb/ptp/build.json create mode 100644 sys/src/cmd/usb/ptp/ptp.rc.build delete mode 100644 sys/src/cmd/usb/serial/build.json create mode 100644 sys/src/cmd/usb/serial/serial.rc.build create mode 100644 sys/src/cmd/usb/usb.rc.build delete mode 100644 sys/src/cmd/usb/usbd/build.json create mode 100644 sys/src/cmd/usb/usbd/usbd.rc.build create mode 100644 sys/src/cmd/vt.rc.build delete mode 100644 sys/src/cmd/vt/build.json create mode 100644 sys/src/cmd/vt/vt.rc.build create mode 100644 sys/src/kern/amd64/amd64.rc.build create mode 100644 sys/src/kern/amd64/boot-methods.rc.confs delete mode 100644 sys/src/kern/amd64/build.json delete mode 100644 sys/src/kern/amd64/clean.json delete mode 100644 sys/src/kern/amd64/core.json create mode 100755 sys/src/kern/amd64/createSIPIHeader.rc delete mode 100644 sys/src/kern/amd64/devdraw.json delete mode 100644 sys/src/kern/amd64/inith.json create mode 100644 sys/src/kern/amd64/inith.rc.build delete mode 100644 sys/src/kern/amd64/laptop.json create mode 100755 sys/src/kern/amd64/ramdisk/rofs create mode 100644 sys/src/kern/amd64/registry-amd64.rc.conf delete mode 100644 sys/src/kern/amd64/workhorse.json create mode 100644 sys/src/kern/amd64/workhorse.rc.build create mode 100644 sys/src/kern/boot/boot.rc.build create mode 100644 sys/src/kern/boot/bootlib.rc.build delete mode 100644 sys/src/kern/boot/build.json create mode 100644 sys/src/kern/build/README.txt create mode 100644 sys/src/kern/build/bootCPUc.rc.template create mode 100644 sys/src/kern/build/errorh.rc.template create mode 100644 sys/src/kern/build/errstrh.rc.template create mode 100644 sys/src/kern/build/inith.rc.template create mode 100644 sys/src/kern/build/kernelconf.rc.template create mode 100644 sys/src/kern/build/ksyscalls.rc.template delete mode 100644 sys/src/kern/ip/include.json delete mode 100644 sys/src/kern/port/include.json create mode 100644 sys/src/lib/9p/9p.rc.build delete mode 100644 sys/src/lib/9p/build.json create mode 100644 sys/src/lib/9p2000/9p2000.rc.build delete mode 100644 sys/src/lib/9p2000/build.json delete mode 100644 sys/src/lib/9p2000/klib9p2000.json create mode 100644 sys/src/lib/9p2000/klib9p2000.rc.build create mode 100644 sys/src/lib/String/String.rc.build delete mode 100644 sys/src/lib/String/build.json create mode 100644 sys/src/lib/aml/aml.rc.build delete mode 100644 sys/src/lib/aml/build.json delete mode 100644 sys/src/lib/aml/klibaml.json create mode 100644 sys/src/lib/aml/klibaml.rc.build create mode 100644 sys/src/lib/auth/auth.rc.build delete mode 100644 sys/src/lib/auth/build.json create mode 100644 sys/src/lib/authsrv/authsrv.rc.build delete mode 100644 sys/src/lib/authsrv/build.json create mode 100644 sys/src/lib/avl/avl.rc.build delete mode 100644 sys/src/lib/avl/build.json create mode 100644 sys/src/lib/bio/bio.rc.build delete mode 100644 sys/src/lib/bio/build.json delete mode 100644 sys/src/lib/complete/build.json create mode 100644 sys/src/lib/complete/complete.rc.build delete mode 100644 sys/src/lib/control/build.json create mode 100644 sys/src/lib/control/control.rc.build delete mode 100644 sys/src/lib/disk/build.json create mode 100644 sys/src/lib/disk/disk.rc.build delete mode 100644 sys/src/lib/draw/build.json create mode 100644 sys/src/lib/draw/draw.rc.build delete mode 100644 sys/src/lib/draw/klibdraw.json create mode 100644 sys/src/lib/draw/klibdraw.rc.build delete mode 100644 sys/src/lib/flate/build.json create mode 100644 sys/src/lib/flate/flate.rc.build delete mode 100644 sys/src/lib/frame/build.json create mode 100644 sys/src/lib/frame/frame.rc.build delete mode 100644 sys/src/lib/ip/build.json create mode 100644 sys/src/lib/ip/ip.rc.build delete mode 100644 sys/src/lib/ip/klibip.json create mode 100644 sys/src/lib/ip/klibip.rc.build delete mode 100644 sys/src/lib/ip/libip.json create mode 100644 sys/src/lib/jehanne/CrtFiles.rc.build delete mode 100644 sys/src/lib/jehanne/build.json create mode 100644 sys/src/lib/jehanne/jehanne.rc.build delete mode 100644 sys/src/lib/jehanne/klibc.json create mode 100644 sys/src/lib/jehanne/klibc.rc.build create mode 100644 sys/src/lib/jehanne/syscallc.rc.template create mode 100644 sys/src/lib/jehanne/syscallh.rc.template delete mode 100644 sys/src/lib/klib.json delete mode 100644 sys/src/lib/klibs.json create mode 100644 sys/src/lib/klibs.rc.build delete mode 100644 sys/src/lib/lib.json delete mode 100644 sys/src/lib/libs.json create mode 100644 sys/src/lib/libs.rc.build delete mode 100644 sys/src/lib/memdraw/build.json delete mode 100644 sys/src/lib/memdraw/klibmemdraw.json create mode 100644 sys/src/lib/memdraw/klibmemdraw.rc.build create mode 100644 sys/src/lib/memdraw/memdraw.rc.build delete mode 100644 sys/src/lib/memlayer/build.json delete mode 100644 sys/src/lib/memlayer/klibmemlayer.json create mode 100644 sys/src/lib/memlayer/klibmemlayer.rc.build create mode 100644 sys/src/lib/memlayer/memlayer.rc.build delete mode 100644 sys/src/lib/mp/build.json delete mode 100644 sys/src/lib/mp/klibmp.json create mode 100644 sys/src/lib/mp/klibmp.rc.build create mode 100644 sys/src/lib/mp/mp.rc.build delete mode 100644 sys/src/lib/ndb/build.json delete mode 100644 sys/src/lib/ndb/libndb.json create mode 100644 sys/src/lib/ndb/ndb.rc.build delete mode 100644 sys/src/lib/plumb/build.json create mode 100644 sys/src/lib/plumb/plumb.rc.build create mode 100644 sys/src/lib/posix/SignalHelper.rc.build delete mode 100644 sys/src/lib/posix/build.json create mode 100644 sys/src/lib/posix/posix.rc.build delete mode 100644 sys/src/lib/regexp/build.json create mode 100644 sys/src/lib/regexp/regexp.rc.build delete mode 100644 sys/src/lib/sec/build.json delete mode 100644 sys/src/lib/sec/klibsec.json create mode 100644 sys/src/lib/sec/klibsec.rc.build create mode 100644 sys/src/lib/sec/sec.rc.build delete mode 100644 sys/src/lib/thread/build.json create mode 100644 sys/src/lib/thread/thread.rc.build delete mode 100644 sys/src/sysconf.json create mode 100644 sys/src/sysconf/bootmethods.conf create mode 100644 sys/src/sysconf/errors.rc.confs create mode 100644 sys/src/sysconf/syscalls.rc.confs diff --git a/arch/amd64/include/cflags.json b/arch/amd64/include/cflags.json deleted file mode 100644 index 5bffa44..0000000 --- a/arch/amd64/include/cflags.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "buildflags": { - "Cflags": [ - "-9", - "-g", - "-gdwarf-2", - "-ggdb", - "-mcmodel=small", - "-O0", - "-Wall", - "-Werror", - "-Wno-main", - "-Wno-missing-braces", - "-Wno-parentheses", - "-Wno-unknown-pragmas" - ] - } -} diff --git a/arch/rc/cmd/build b/arch/rc/cmd/build new file mode 100644 index 0000000..a24f3fb --- /dev/null +++ b/arch/rc/cmd/build @@ -0,0 +1,37 @@ +#!/cmd/rc +# This script run the rc build scripts passed as arguments +# after moving in their directory. +# +# If passed a directory, it will look for a build script named +# `{basename $PWD}.rc.build and run it instead. +# +# If invoked with no arguments it will assume $PWD as argument +# +# NOTE: this script is run both fron Jehanne and from UNIX during +# cross compilation (through the sh wrapper in hacking/bin/build) +# thus it should not explicitly check $status as exit codes +# work differently in UNIX and Jehanne. + +args=$* +if (~ $#args 0) + args=$PWD + +for (script in $args){ + if (test -d $script){ + if (~ $script $JEHANNE){ + target=jehanne + } + if not { + target=`{basename $script} + } + rundir=$script + script=$target.rc.build + } + if not { + rundir=`{dirname $script} + script=`{basename $script} + } + + echo $rundir/$script + @{cd $rundir; . $JEHANNE/arch/rc/lib/build/utils.rc; cat $script|rc -v -e >[2=1]|sed 's/^/ /'} +} diff --git a/arch/rc/cmd/template b/arch/rc/cmd/template new file mode 100644 index 0000000..904024c --- /dev/null +++ b/arch/rc/cmd/template @@ -0,0 +1,10 @@ +#!/cmd/rc + +# sed -n \ +# -e '/#{{/{x; /^$/{x;b}; s/''/''''/g; s/\$[$a-zA-Z0-9()#"]\+[\^]\?/''&''/g; s/^\n/echo ''/ ; s/$/''/; p; x; h; b}' \ +# -e H \ +# -e '/#}}/{s/#}}//; x; s/#{{//; s/#}}//; p; g}' \ +# -e '${x; /^$/{b}; /#}}/!{s/''/''''/g; s/\$[$a-zA-Z0-9()#"]\+[\^]\?/''&''/g; s/^\n/echo ''/ ; s/$/''/; p}}' \ +# | rc + +sed '/^$/{s//echo/; b}; /^#! /{s/#! //g; b}; /^#! /!{s/''/''''/g; s/\$\(#\|"\)\?[$a-zA-Z0-9_]\+\(([$a-zA-Z0-9#_]\+)\)\?[\^]\?/''&''/g; s/^/echo ''/ ; s/$/''/; b}' diff --git a/arch/rc/lib/build/utils.rc b/arch/rc/lib/build/utils.rc new file mode 100644 index 0000000..25781eb --- /dev/null +++ b/arch/rc/lib/build/utils.rc @@ -0,0 +1,131 @@ +# Utility functions designed to simplify build scripts. +# +# They react to environment variables + +BUILD_INITIALIZED=true + +CFLAGS=( \ + -9 \ + -g \ + -gdwarf-2 \ + -ggdb \ + '-mcmodel=small' \ + -O0 \ + -Wall \ + -Werror \ + -Wno-main \ + -Wno-missing-braces \ + -Wno-parentheses \ + -Wno-unknown-pragmas \ +) +KLIB_CFLAGS=( \ + -DKERNEL \ + -c \ + '-mcmodel=kernel' \ + -O0 \ + -fplan9-extensions \ + -ffreestanding \ + -fstack-protector-all \ + -fno-builtin \ + -Wall \ + -Wno-missing-braces \ + -Wno-parentheses \ + -Wno-unknown-pragmas \ + -Wuninitialized \ + -g \ +) +STACKCHECK_CFLAGS=( \ + -fstack-check \ + -fstack-protector-all \ +) +CMD_OFLAGS=( \ + -static \ + -lavl \ + -lcomplete \ + -lcontrol \ + -ldisk \ + -lflate \ + -lframe \ + -lmemdraw \ + -lmemlayer \ + -lmemdraw \ + -ldraw \ + -lplumb \ + -lregexp \ + -lString \ + -l9p \ + -lauth \ + -lauthsrv \ + -lndb \ + -lip \ + -lsec \ + -lauth \ + -lmp \ + -lthread \ + -lbio \ + -l9p2000 \ + -ljehanne \ +) + +CC=gcc +CC=$JEHANNE_TOOLCHAIN/cross/posix/bin/$TOOLPREFIX$CC + +AR=ar +AR=$JEHANNE_TOOLCHAIN/cross/posix/bin/$TOOLPREFIX$AR + +RANLIB=ranlib +RANLIB=$JEHANNE_TOOLCHAIN/cross/posix/bin/$TOOLPREFIX$RANLIB + +STRIP=strip +STRIP=$JEHANNE_TOOLCHAIN/cross/posix/bin/$TOOLPREFIX$STRIP + +LD=ld +LD=$JEHANNE_TOOLCHAIN/cross/posix/bin/$TOOLPREFIX$LD + +OBJCOPY=objcopy +OBJCOPY=$JEHANNE_TOOLCHAIN/cross/posix/bin/$TOOLPREFIX$OBJCOPY + +OBJDUMP=objdump +OBJDUMP=$JEHANNE_TOOLCHAIN/cross/posix/bin/$TOOLPREFIX$OBJDUMP + +READELF=readelf +READELF=$JEHANNE_TOOLCHAIN/cross/posix/bin/$TOOLPREFIX$READELF + +fn debuggable { + # echo $* + eval $* +} + +fn prependLibraryName { + LIBRARY_NAME=$1 + if ( ! ~ 0 $#LIBRARY_NAME ) { + for (i in *.o) { + # rename object files to ease library merge + debuggable mv $i $LIBRARY_NAME-$i + } + } +} + +fn compileCommands { + EXT=$1 + DESTINATION=$2 + shift 2 + LIST=$* + if ( ~ 0 $#LIST ) { + LIST=*.$EXT + } + + mkdir -p $DESTINATION + + for (f in $LIST) { + BINARY=`{basename $f|sed 's/\.'$EXT'//'} + + debuggable $CC $f -o $BINARY -O2 '-std=gnu11' $STACKCHECK_CFLAGS $CFLAGS $CMD_OFLAGS + debuggable mv $BINARY $DESTINATION + } +} + +fn safemove { + mkdir -p $*($#*) + mv $* +} diff --git a/build.json b/build.json deleted file mode 100644 index 7e3d802..0000000 --- a/build.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "all": { - "Projects": [ - "/sys/src/lib/klibs.json", - "/sys/src/lib/libs.json", - "/sys/src/cmd/cmds.json", - "/sys/src/kern/amd64/workhorse.json", - "/sys/src/kern/amd64/", - "/hacking/cross/pkgs/", - "qa/" - ] - } -} diff --git a/hacking b/hacking index 6b473cd..e690881 160000 --- a/hacking +++ b/hacking @@ -1 +1 @@ -Subproject commit 6b473cd28f7b778557c8758bdb612fadb54c11bc +Subproject commit e6908814ef79cae9a30fcc1504328d6da6e33ee8 diff --git a/jehanne.rc.build b/jehanne.rc.build new file mode 100644 index 0000000..0bc4564 --- /dev/null +++ b/jehanne.rc.build @@ -0,0 +1,9 @@ +#!/cmd/rc + +build sys/src/lib/klibs.rc.build +build sys/src/lib/libs.rc.build +build sys/src/cmd/cmd.rc.build +build sys/src/kern/amd64/workhorse.rc.build +build sys/src/kern/amd64/ +@{cd hacking/cross/pkgs/ && ./build.sh >[2=1]|sed 's/^/ /'} +build qa/ diff --git a/qa/build.json b/qa/build.json deleted file mode 100644 index 71c3561..0000000 --- a/qa/build.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "RegressionTests": { - "Projects": [ - "kern/", - "lib/c/", - "lib/thread/", - "lib/newlib", - "gnu/gcc/" - ] - } -} diff --git a/qa/cmd/rc/010-include.rc.template b/qa/cmd/rc/010-include.rc.template new file mode 100644 index 0000000..c9bea92 --- /dev/null +++ b/qa/cmd/rc/010-include.rc.template @@ -0,0 +1,3 @@ + $i: + $A($i) + diff --git a/qa/cmd/rc/010-template.rc.template b/qa/cmd/rc/010-template.rc.template new file mode 100644 index 0000000..aa788c5 --- /dev/null +++ b/qa/cmd/rc/010-template.rc.template @@ -0,0 +1,18 @@ +#! A=(a b c) +#! PTR=A +#! ASIZE=$#A +#! LDS='$' + +Variable '$LDS^PTR' contains: $"PTR +Variable '$LDS^$LDS^PTR' contains: $"$PTR + +#! for(v in $A) { + - $v +#! } + +size of A: $#A + + +#! for(i in `{seq $ASIZE}) { +#! cat 010-include.rc.template|template|rc +#! } diff --git a/qa/cmd/rc/010-template.runner b/qa/cmd/rc/010-template.runner new file mode 100755 index 0000000..5ccd7e6 --- /dev/null +++ b/qa/cmd/rc/010-template.runner @@ -0,0 +1,10 @@ +#!/cmd/rc +runner=$0 +test = `{echo $runner|sed 's/.runner//'} + +A=(first second third) +PTR=A +OUTPUT=/tmp/template.$pid.output + +cat $test.rc.template|template > $OUTPUT +cat $OUTPUT diff --git a/qa/gnu/gcc/build.json b/qa/gnu/gcc/build.json deleted file mode 100644 index c51c354..0000000 --- a/qa/gnu/gcc/build.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "RegressionTests": { - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Install": "/arch/$ARCH/qa/gnu/gcc", - "SourceFilesCmd": [ - "rune.c" - ] - } -} diff --git a/qa/gnu/gcc/gcc.rc.build b/qa/gnu/gcc/gcc.rc.build new file mode 100644 index 0000000..dcfc87c --- /dev/null +++ b/qa/gnu/gcc/gcc.rc.build @@ -0,0 +1,6 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +compileCommands c $JEHANNE/arch/$ARCH/qa/gnu/gcc +rm -f *.o diff --git a/qa/kern/build.json b/qa/kern/build.json deleted file mode 100644 index 5072cae..0000000 --- a/qa/kern/build.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "RegressionTests": { - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Install": "/arch/$ARCH/qa/kern", - "Post": [ - "cp *.rc $JEHANNE/arch/$ARCH/qa/kern/", - "cp *.runner $JEHANNE/arch/$ARCH/qa/kern/" - ], - "SourceFilesCmd": [ - "alarm.c", - "args.c", - "awake.c", - "awake_note0.c", - "awake_note1.c", - "brk.c", - "broken.c", - "dup.c", - "execl.c", - "float.c", - "fork.c", - "fork_chain.c", - "frexp.c", - "getmainpid.c", - "getpid.c", - "getppid.c", - "iphash.c", - "malloc1GiB.c", - "memoryisolation.c", - "memoryshare.c", - "mixedfloat.c", - "nested_note.c", - "noexecmem.c", - "notify.c", - "nsclone.c", - "nsec.c", - "pipering.c", - "postnote.c", - "psx.c", - "segattach.c", - "sched0.c", - "stop_start.c", - "syscall.c", - "sysstatread.c", - "tsemacquire.c", - "wait_note.c", - "waserror.c" - ] - } -} diff --git a/qa/kern/kern.rc.build b/qa/kern/kern.rc.build new file mode 100644 index 0000000..3db1c24 --- /dev/null +++ b/qa/kern/kern.rc.build @@ -0,0 +1,8 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +compileCommands c $JEHANNE/arch/$ARCH/qa/kern +cp *.rc $JEHANNE/arch/$ARCH/qa/kern/ +cp *.runner $JEHANNE/arch/$ARCH/qa/kern/ +rm -f *.o diff --git a/qa/lib/c/build.json b/qa/lib/c/build.json deleted file mode 100644 index 9aef650..0000000 --- a/qa/lib/c/build.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "RegressionTests": { - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Cflags": [ - "-O2", - "-std=gnu11" - ], - "Install": "/arch/$ARCH/qa/lib/c", - "Post": [ - "cp *.rc $JEHANNE/arch/$ARCH/qa/lib/c/" - ], - "SourceFilesCmd": [ - "access.c", - "asmscall.c", - "cleanname.c", - "conswrite.c", - "hcube.c", - "lockt.c", - "longjmp.c", - "privates.c", - "privates2.c", - "qlockt0.c", - "qlockt1.c", - "qlockt2.c", - "rlockt0.c", - "rlockt1.c", - "rlockt2.c", - "rsleept0.c", - "rsleept1.c", - "rsleept2.c", - "rwakeup0.c", - "rwakeup1.c", - "sleep.c", - "sleep2.c", - "sqrt.c", - "sysfatal.c", - "va_copy.c", - "vseprint.c", - "wlockt0.c", - "wlockt1.c", - "wlockt2.c" - ] - } -} diff --git a/qa/lib/c/c.rc.build b/qa/lib/c/c.rc.build new file mode 100644 index 0000000..e7131db --- /dev/null +++ b/qa/lib/c/c.rc.build @@ -0,0 +1,9 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* + +compileCommands c $JEHANNE/arch/$ARCH/qa/lib/c + +cp *.rc $JEHANNE/arch/$ARCH/qa/lib/c/ +rm -f *.o diff --git a/qa/lib/newlib/build.json b/qa/lib/newlib/build.json deleted file mode 100644 index e584c0c..0000000 --- a/qa/lib/newlib/build.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "SimplePOSIXTests": { - "Cflags": [ - "-g", - "-gdwarf-2", - "-ggdb", - "-mcmodel=small", - "-O0", - "-Wall", - "-Wno-main", - "-Wno-missing-braces", - "-Wno-parentheses", - "-Wno-unknown-pragmas", - "-fstack-check", - "-fstack-protector-all", - "-O2", - "-std=gnu11" - ], - "Install": "/arch/$ARCH/qa/lib/newlib", - "Post": [ - "rm -f *.o", - "cp *.runner $JEHANNE/arch/$ARCH/qa/lib/newlib/", - "git clean -xdf ." - ], - "Pre": [ - "rm -f *.tag.*" - ], - "SourceFiles": [ - "libposix_customization.c" - ], - "SourceFilesCmd": [ - "000-hello.c", - "001-hello.c", - "002-atexit.c", - "010-fork.c", - "020-waitpid.c", - "030-pause.c", - "031-setjmp.c", - "040-gettimeofday.c", - "041-env.c", - "050-setsid.c", - "100-files.c", - "101-files.c", - "102-files.c", - "103-files.c", - "104-files-nonblocking.c", - "120-fcntl.c", - "121-fcntl.c", - "200-signals.c", - "201-signals.c", - "202-signals.c", - "203-signals.c", - "204-signals.c", - "205-signals.c", - "206-signals.c", - "207-sigsuspend.c", - "208-sigpending.c", - "209-sigwaitinfo.c", - "210-sigtimedwait.c", - "211-sigtimedwait.c", - "212-sigwait.c", - "213-sigqueue.c", - "214-sigsetjmp.c", - "215-sigprocmask.c" - ] - }, - "SIGCHLDTests": { - "Cflags": [ - "-g", - "-gdwarf-2", - "-ggdb", - "-mcmodel=small", - "-O0", - "-Wall", - "-Wno-main", - "-Wno-missing-braces", - "-Wno-parentheses", - "-Wno-unknown-pragmas", - "-fstack-check", - "-fstack-protector-all", - "-O2", - "-DWITH_SIGCHLD", - "-std=gnu11" - ], - "Install": "/arch/$ARCH/qa/lib/newlib/sigchld", - "Post": [ - "rm -f *.o", - "cp *.runner $JEHANNE/arch/$ARCH/qa/lib/newlib/sigchld/", - "git clean -xdf ." - ], - "Pre": [ - "rm -f *.tag.*" - ], - "SourceFiles": [ - "libposix_sigchld.c" - ], - "SourceFilesCmd": [ - "000-hello.c", - "001-hello.c", - "002-atexit.c", - "010-fork.c", - "020-waitpid.c", - "030-pause.c", - "031-setjmp.c", - "040-gettimeofday.c", - "041-env.c", - "050-setsid.c", - "100-files.c", - "101-files.c", - "102-files.c", - "103-files.c", - "104-files-nonblocking.c", - "120-fcntl.c", - "121-fcntl.c", - "200-signals.c", - "201-signals.c", - "202-signals.c", - "203-signals.c", - "204-signals.c", - "205-signals.c", - "206-signals.c", - "207-sigsuspend.c", - "208-sigpending.c", - "209-sigwaitinfo.c", - "210-sigtimedwait.c", - "211-sigtimedwait.c", - "212-sigwait.c", - "213-sigqueue.c", - "214-sigsetjmp.c", - "215-sigprocmask.c" - ] - }, - "NewlibTestsuite": { - "Projects": [ - "testsuite/" - ] - } -} diff --git a/qa/lib/newlib/newlib.rc.build b/qa/lib/newlib/newlib.rc.build new file mode 100644 index 0000000..b984c1a --- /dev/null +++ b/qa/lib/newlib/newlib.rc.build @@ -0,0 +1,42 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* + +TEST=`{ls *.c|grep -v libposix_} + +CFLAGS=( \ + -g \ + -gdwarf-2 \ + -ggdb \ + -mcmodel=small \ + -Wall \ + -Wno-main \ + -Wno-missing-braces \ + -Wno-parentheses \ + -Wno-unknown-pragmas \ + -O2 \ + -std=gnu11 \ +) + +# test without SIGCHILD emulation +mkdir -p $JEHANNE/arch/$ARCH/qa/lib/newlib/ +for (f in $TEST) { + BINARY=`{basename $f|sed 's/\.c//'} + + debuggable $CC $f libposix_customization.c -o $BINARY $STACKCHECK_CFLAGS $CFLAGS + debuggable mv $BINARY $JEHANNE/arch/$ARCH/qa/lib/newlib/ +} + +# test with SIGCHILD emulation +mkdir -p $JEHANNE/arch/$ARCH/qa/lib/newlib/sigchld/ +for (f in $TEST) { + BINARY=`{basename $f|sed 's/\.c//'} + + debuggable $CC $f libposix_sigchld.c -o $BINARY -DWITH_SIGCHLD $STACKCHECK_CFLAGS $CFLAGS + debuggable mv $BINARY $JEHANNE/arch/$ARCH/qa/lib/newlib/sigchld/ +} + +rm -f *.o + +build testsuite/ diff --git a/qa/lib/newlib/testsuite/build.json b/qa/lib/newlib/testsuite/build.json deleted file mode 100644 index 957eaf5..0000000 --- a/qa/lib/newlib/testsuite/build.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "NewlibTestsuite": { - "Cflags": [ - "-g", - "-gdwarf-2", - "-ggdb", - "-mcmodel=small", - "-O0", - "-Wall", - "-Wno-main", - "-Wno-missing-braces", - "-Wno-parentheses", - "-Wno-unknown-pragmas", - "-iquote", "/hacking/cross/pkgs/newlib/src/newlib/testsuite/include/", - "-fstack-check", - "-Wno-unused-variable", - "-Wno-format", - "-fstack-protector-all", - "-O2", - "-std=gnu11" - ], - "Oflags": [ - "-static" - ], - "Post": [ - "mkdir -p $JEHANNE/arch/$ARCH/qa/lib/newlib/testsuite", - "find -type f -perm /a+x -exec cp {} $JEHANNE/arch/$ARCH/qa/lib/newlib/testsuite/ \\;", - "cp *.runner $JEHANNE/arch/$ARCH/qa/lib/newlib/testsuite/", - "git clean -xdf ." - ], - "Pre": [ - "cat $JEHANNE/hacking/cross/pkgs/newlib/src/newlib/testsuite/newlib.wctype/twctype.c|sed 's/0x0967/0x0905/g' > twctype.c", - "rm -f *.tag.*" - ], - "SourceFiles": [ - "../libposix_customization.c" - ], - "SourceFilesCmd": [ - "/hacking/cross/pkgs/newlib/src/newlib/testsuite/newlib.string/tstring.c", - "/hacking/cross/pkgs/newlib/src/newlib/testsuite/newlib.string/memmove1.c", - "/hacking/cross/pkgs/newlib/src/newlib/testsuite/newlib.string/memcpy-1.c", - "/hacking/cross/pkgs/newlib/src/newlib/testsuite/newlib.string/strcmp-1.c", - "/hacking/cross/pkgs/newlib/src/newlib/testsuite/newlib.stdlib/size_max.c", - "/hacking/cross/pkgs/newlib/src/newlib/testsuite/newlib.stdlib/atexit.c", - "twctype.c", - "/hacking/cross/pkgs/newlib/src/newlib/testsuite/newlib.wctype/tiswctype.c", - "/hacking/cross/pkgs/newlib/src/newlib/testsuite/newlib.wctype/twctrans.c", - "/hacking/cross/pkgs/newlib/src/newlib/testsuite/newlib.search/hsearchtest.c", - "/hacking/cross/pkgs/newlib/src/newlib/testsuite/newlib.locale/UTF-8.c", - "/hacking/cross/pkgs/newlib/src/newlib/testsuite/newlib.stdio/nulprintf.c", - "/hacking/cross/pkgs/newlib/src/newlib/testsuite/newlib.stdio/swprintf.c" - ] - } -} diff --git a/qa/lib/newlib/testsuite/testsuite.rc.build b/qa/lib/newlib/testsuite/testsuite.rc.build new file mode 100644 index 0000000..fb09ca7 --- /dev/null +++ b/qa/lib/newlib/testsuite/testsuite.rc.build @@ -0,0 +1,59 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +NEWLIB_TESTSUITE=$JEHANNE/hacking/cross/pkgs/newlib/src/newlib/testsuite/ +TARGET_DIR=$JEHANNE/arch/$ARCH/qa/lib/newlib/testsuite + +CFLAGS=( \ + -g \ + -gdwarf-2 \ + -ggdb \ + '-mcmodel=small' \ + -Wall \ + -Wno-main \ + -Wno-missing-braces \ + -Wno-parentheses \ + -Wno-unknown-pragmas \ + -iquote $NEWLIB_TESTSUITE/include \ + -fstack-check \ + -Wno-unused-variable \ + -Wno-format \ + -fstack-protector-all \ + -O2 \ + '-std=gnu11' \ + -static \ +) + +cat $NEWLIB_TESTSUITE/newlib.wctype/twctype.c|sed 's/0x0967/0x0905/g' > twctype.c +mkdir -p $TARGET_DIR + +rm -f *.tag.* +$CC $NEWLIB_TESTSUITE/newlib.string/tstring.c -o tstring ../libposix_customization.c $CFLAGS +mv tstring $TARGET_DIR +$CC $NEWLIB_TESTSUITE/newlib.string/memmove1.c -o memmove1 ../libposix_customization.c $CFLAGS +mv memmove1 $TARGET_DIR +$CC $NEWLIB_TESTSUITE/newlib.string/memcpy-1.c -o memcpy-1 ../libposix_customization.c $CFLAGS +mv memcpy-1 $TARGET_DIR +$CC $NEWLIB_TESTSUITE/newlib.string/strcmp-1.c -o strcmp-1 ../libposix_customization.c $CFLAGS +mv strcmp-1 $TARGET_DIR +$CC $NEWLIB_TESTSUITE/newlib.stdlib/size_max.c -o size_max ../libposix_customization.c $CFLAGS +mv size_max $TARGET_DIR +$CC $NEWLIB_TESTSUITE/newlib.stdlib/atexit.c -o atexit ../libposix_customization.c $CFLAGS +mv atexit $TARGET_DIR +$CC twctype.c -o twctype ../libposix_customization.c $CFLAGS +mv twctype $TARGET_DIR +$CC $NEWLIB_TESTSUITE/newlib.wctype/tiswctype.c -o tiswctype ../libposix_customization.c $CFLAGS +mv tiswctype $TARGET_DIR +$CC $NEWLIB_TESTSUITE/newlib.wctype/twctrans.c -o twctrans ../libposix_customization.c $CFLAGS +mv twctrans $TARGET_DIR +$CC $NEWLIB_TESTSUITE/newlib.search/hsearchtest.c -o hsearchtest ../libposix_customization.c $CFLAGS +mv hsearchtest $TARGET_DIR +$CC $NEWLIB_TESTSUITE/newlib.locale/UTF-8.c -o UTF-8 ../libposix_customization.c $CFLAGS +mv UTF-8 $TARGET_DIR +$CC $NEWLIB_TESTSUITE/newlib.stdio/nulprintf.c -o nulprintf ../libposix_customization.c $CFLAGS +mv nulprintf $TARGET_DIR +$CC $NEWLIB_TESTSUITE/newlib.stdio/swprintf.c -o swprintf ../libposix_customization.c $CFLAGS +mv swprintf $TARGET_DIR + +cp *.runner $JEHANNE/arch/$ARCH/qa/lib/newlib/testsuite/ +git clean -xdf . diff --git a/qa/lib/thread/build.json b/qa/lib/thread/build.json deleted file mode 100644 index 50b0951..0000000 --- a/qa/lib/thread/build.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "RegressionTests": { - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Install": "/arch/$ARCH/qa/lib/thread", - "SourceFilesCmd": [ - "thread.c" - ] - } -} diff --git a/qa/lib/thread/thread.rc.build b/qa/lib/thread/thread.rc.build new file mode 100644 index 0000000..e55de2d --- /dev/null +++ b/qa/lib/thread/thread.rc.build @@ -0,0 +1,6 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +compileCommands c $JEHANNE/arch/$ARCH/qa/lib/thread +rm -f *.o diff --git a/qa/qa.rc.build b/qa/qa.rc.build new file mode 100644 index 0000000..1213281 --- /dev/null +++ b/qa/qa.rc.build @@ -0,0 +1,6 @@ +#!/cmd/rc +build kern/ +build lib/c/ +build lib/thread/ +build lib/newlib +build gnu/gcc/ diff --git a/sys/src/cmd/FromYacc.rc.build b/sys/src/cmd/FromYacc.rc.build new file mode 100644 index 0000000..9e7f733 --- /dev/null +++ b/sys/src/cmd/FromYacc.rc.build @@ -0,0 +1,53 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +yacc -d mpc.y && mv y.tab.c mpc.c && mv y.tab.h mpc.h +rm -f *.tag.* +$CC \ + $JEHANNE/sys/src/lib/jehanne/lib9.c \ + mpc.c \ + '-DYYSIZE_T=size_t' \ + -fstack-check \ + -fstack-protector-all \ + -9 \ + -g \ + -gdwarf-2 \ + -ggdb \ + '-mcmodel=small' \ + -O0 \ + -Wall \ + -Werror \ + -Wno-main \ + -Wno-missing-braces \ + -Wno-parentheses \ + -Wno-unknown-pragmas \ + -static \ + -lavl \ + -lcomplete \ + -lcontrol \ + -ldisk \ + -lflate \ + -lframe \ + -lmemdraw \ + -lmemlayer \ + -lmemdraw \ + -ldraw \ + -lplumb \ + -lregexp \ + -lString \ + -l9p \ + -lauth \ + -lauthsrv \ + -lndb \ + -lip \ + -lsec \ + -lauth \ + -lmp \ + -lthread \ + -lbio \ + -l9p2000 \ + -ljehanne \ + -o mpc +safemove mpc $JEHANNE/arch/$ARCH/cmd +rm mpc.c mpc.h +rm -f *.o diff --git a/sys/src/cmd/acme/acme.rc.build b/sys/src/cmd/acme/acme.rc.build new file mode 100644 index 0000000..3818d49 --- /dev/null +++ b/sys/src/cmd/acme/acme.rc.build @@ -0,0 +1,33 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + acme.c \ + addr.c \ + buff.c \ + cols.c \ + disk.c \ + ecmd.c \ + edit.c \ + elog.c \ + exec.c \ + file.c \ + fsys.c \ + look.c \ + regx.c \ + rows.c \ + scrl.c \ + text.c \ + time.c \ + util.c \ + wind.c \ + xfid.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o acme +safemove acme $JEHANNE/arch/$ARCH/cmd +rm -f *.o + +build aux/ diff --git a/sys/src/cmd/acme/aux/aux.rc.build b/sys/src/cmd/acme/aux/aux.rc.build new file mode 100644 index 0000000..2fd782e --- /dev/null +++ b/sys/src/cmd/acme/aux/aux.rc.build @@ -0,0 +1,8 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +compileCommands c $JEHANNE/arch/$ARCH/aux/acme +rm -f *.o + +build win/ diff --git a/sys/src/cmd/acme/aux/build.json b/sys/src/cmd/acme/aux/build.json deleted file mode 100644 index a0629a8..0000000 --- a/sys/src/cmd/acme/aux/build.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "Cmd": { - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Projects": [ - "win/" - ], - "Install": "/arch/$ARCH/aux/acme", - "SourceFilesCmd": [ - "mkwnew.c", - "awd.c" - ] - } -} diff --git a/sys/src/cmd/acme/aux/win/build.json b/sys/src/cmd/acme/aux/win/build.json deleted file mode 100644 index c8458c5..0000000 --- a/sys/src/cmd/acme/aux/win/build.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "win": { - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Install": "/arch/$ARCH/aux/acme/", - "Program": "win", - "SourceFiles": [ - "fs.c", - "main.c", - "pipe.c", - "util.c", - "win.c" - ] - } -} diff --git a/sys/src/cmd/acme/aux/win/win.rc.build b/sys/src/cmd/acme/aux/win/win.rc.build new file mode 100644 index 0000000..0507dd0 --- /dev/null +++ b/sys/src/cmd/acme/aux/win/win.rc.build @@ -0,0 +1,16 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + fs.c \ + main.c \ + pipe.c \ + util.c \ + win.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o win +safemove win $JEHANNE/arch/$ARCH/aux/acme +rm -f *.o diff --git a/sys/src/cmd/acme/build.json b/sys/src/cmd/acme/build.json deleted file mode 100644 index 0d43363..0000000 --- a/sys/src/cmd/acme/build.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "acme": { - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Install": "/arch/$ARCH/cmd/", - "Program": "acme", - "SourceFiles": [ - "acme.c", - "addr.c", - "buff.c", - "cols.c", - "disk.c", - "ecmd.c", - "edit.c", - "elog.c", - "exec.c", - "file.c", - "fsys.c", - "look.c", - "regx.c", - "rows.c", - "scrl.c", - "text.c", - "time.c", - "util.c", - "wind.c", - "xfid.c" - ] - }, - "aux": { - "Projects": [ - "aux/" - ] - } -} diff --git a/sys/src/cmd/auth/authsrv.json b/sys/src/cmd/auth/authsrv.json deleted file mode 100644 index de69ba7..0000000 --- a/sys/src/cmd/auth/authsrv.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "authsrv": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/auth/", - "Oflags": [ - "lib/libauthcmd.a" - ], - "Program": "authsrv", - "SourceFiles": [ - "authsrv.c", - "secureidcheck.c" - ] - } -} diff --git a/sys/src/cmd/auth/build.json b/sys/src/cmd/auth/build.json deleted file mode 100644 index de1c07e..0000000 --- a/sys/src/cmd/auth/build.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "Auth": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/auth/", - "Oflags": [ - "lib/libauthcmd.a" - ], - "Projects": [ - "lib/libauthcmd.json", - "factotum/", - "secstore/", - "authsrv.json", - "dsa2pub.json", - "dsa2ssh.json", - "guard.srv.json", - "rsa2csr.json", - "rsa2pub.json", - "rsa2ssh.json", - "rsa2x509.json", - "rsafill.json" - ], - "SourceFilesCmd": [ - "as.c", - "asn12dsa.c", - "asn12rsa.c", - "changeuser.c", - "convkeys.c", - "cron.c", - "debug.c", - "dsagen.c", - "httpauth.c", - "keyfs.c", - "login.c", - "newns.c", - "none.c", - "passwd.c", - "pemdecode.c", - "pemencode.c", - "printnetkey.c", - "readnvram.c", - "rsagen.c", - "uniq.c", - "userpasswd.c", - "warning.c", - "wrkey.c" - ] - } -} diff --git a/sys/src/cmd/auth/dsa2pub.json b/sys/src/cmd/auth/dsa2pub.json deleted file mode 100644 index f5506d9..0000000 --- a/sys/src/cmd/auth/dsa2pub.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "dsa2pub": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/bin/auth/", - "Oflags": [ - "lib/libauthcmd.a" - ], - "Program": "dsa2pub", - "SourceFiles": [ - "dsa2pub.c", - "rsa2any.c" - ] - } -} diff --git a/sys/src/cmd/auth/dsa2ssh.json b/sys/src/cmd/auth/dsa2ssh.json deleted file mode 100644 index e88082e..0000000 --- a/sys/src/cmd/auth/dsa2ssh.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "dsa2ssh": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/bin/auth/", - "Oflags": [ - "lib/libauthcmd.a" - ], - "Program": "dsa2ssh", - "SourceFiles": [ - "dsa2ssh.c", - "rsa2any.c" - ] - } -} diff --git a/sys/src/cmd/auth/factotum/build.json b/sys/src/cmd/auth/factotum/build.json deleted file mode 100644 index 4738c5e..0000000 --- a/sys/src/cmd/auth/factotum/build.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "factotum": { - "Include": [ - "../../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/auth/", - "Program": "factotum", - "SourceFiles": [ - "apop.c", - "chap.c", - "confirm.c", - "ecdsa.c", - "fs.c", - "httpdigest.c", - "log.c", - "p9any.c", - "p9cr.c", - "p9sk1.c", - "pass.c", - "rpc.c", - "rsa.c", - "util.c", - "wep.c", - "wpapsk.c" - ] - } -} diff --git a/sys/src/cmd/auth/factotum/factotum.rc.build b/sys/src/cmd/auth/factotum/factotum.rc.build new file mode 100644 index 0000000..d91f0bc --- /dev/null +++ b/sys/src/cmd/auth/factotum/factotum.rc.build @@ -0,0 +1,27 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + apop.c \ + chap.c \ + confirm.c \ + ecdsa.c \ + fs.c \ + httpdigest.c \ + log.c \ + p9any.c \ + p9cr.c \ + p9sk1.c \ + pass.c \ + rpc.c \ + rsa.c \ + util.c \ + wep.c \ + wpapsk.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o factotum +safemove factotum $JEHANNE/arch/$ARCH/cmd/auth +rm -f *.o diff --git a/sys/src/cmd/auth/guard.srv.json b/sys/src/cmd/auth/guard.srv.json deleted file mode 100644 index 789707a..0000000 --- a/sys/src/cmd/auth/guard.srv.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "guard.srv": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/bin/auth/", - "Oflags": [ - "lib/libauthcmd.a" - ], - "Program": "guard.srv", - "SourceFiles": [ - "guard.srv.c", - "secureidcheck.c" - ] - } -} diff --git a/sys/src/cmd/auth/lib/libauthcmd.json b/sys/src/cmd/auth/lib/libauthcmd.json deleted file mode 100644 index 8745263..0000000 --- a/sys/src/cmd/auth/lib/libauthcmd.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "libauthcmd": { - "Cflags": [ - "-I../" - ], - "Include": [ - "../../../lib/lib.json" - ], - "Library": "libauthcmd.a", - "Install": "./", - "SourceFiles": [ - "keyfmt.c", - "netcheck.c", - "okpasswd.c", - "readwrite.c", - "readarg.c", - "readln.c", - "getauthkey.c", - "log.c", - "error.c", - "fs.c", - "rdbio.c", - "querybio.c", - "wrbio.c", - "private.c", - "getexpiration.c" - ] - } -} diff --git a/sys/src/cmd/auth/rsa2csr.json b/sys/src/cmd/auth/rsa2csr.json deleted file mode 100644 index f52c6c8..0000000 --- a/sys/src/cmd/auth/rsa2csr.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "rsa2csr": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/bin/auth/", - "Oflags": [ - "lib/libauthcmd.a" - ], - "Program": "rsa2csr", - "SourceFiles": [ - "rsa2csr.c", - "rsa2any.c" - ] - } -} diff --git a/sys/src/cmd/auth/rsa2pub.json b/sys/src/cmd/auth/rsa2pub.json deleted file mode 100644 index b6c44b9..0000000 --- a/sys/src/cmd/auth/rsa2pub.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "rsa2pub": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/bin/auth/", - "Oflags": [ - "lib/libauthcmd.a" - ], - "Program": "rsa2pub", - "SourceFiles": [ - "rsa2pub.c", - "rsa2any.c" - ] - } -} diff --git a/sys/src/cmd/auth/rsa2ssh.json b/sys/src/cmd/auth/rsa2ssh.json deleted file mode 100644 index 54ed34d..0000000 --- a/sys/src/cmd/auth/rsa2ssh.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "rsa2ssh": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/bin/auth/", - "Oflags": [ - "lib/libauthcmd.a" - ], - "Program": "rsa2ssh", - "SourceFiles": [ - "rsa2ssh.c", - "rsa2any.c" - ] - } -} diff --git a/sys/src/cmd/auth/rsa2x509.json b/sys/src/cmd/auth/rsa2x509.json deleted file mode 100644 index 1741e35..0000000 --- a/sys/src/cmd/auth/rsa2x509.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "rsa2x509": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/bin/auth/", - "Oflags": [ - "lib/libauthcmd.a" - ], - "Program": "rsa2x509", - "SourceFiles": [ - "rsa2x509.c", - "rsa2any.c" - ] - } -} diff --git a/sys/src/cmd/auth/rsafill.json b/sys/src/cmd/auth/rsafill.json deleted file mode 100644 index 260eed7..0000000 --- a/sys/src/cmd/auth/rsafill.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "rsafill": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/bin/auth/", - "Oflags": [ - "lib/libauthcmd.a" - ], - "Program": "rsafill", - "SourceFiles": [ - "rsafill.c", - "rsa2any.c" - ] - } -} diff --git a/sys/src/cmd/auth/secstore/aescbc.json b/sys/src/cmd/auth/secstore/aescbc.json deleted file mode 100644 index 686cadb..0000000 --- a/sys/src/cmd/auth/secstore/aescbc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "aescbc": { - "Include": [ - "../../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/auth", - "Program": "aescbc", - "SourceFiles": [ - "aescbc.c", - "util.c" - ] - } -} diff --git a/sys/src/cmd/auth/secstore/build.json b/sys/src/cmd/auth/secstore/build.json deleted file mode 100644 index fb3bbe4..0000000 --- a/sys/src/cmd/auth/secstore/build.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "secstore": { - "Include": [ - "../../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/auth/", - "Program": "secstore", - "Projects": [ - "aescbc.json", - "secstored.json", - "secuser.json" - ], - "SourceFiles": [ - "pak.c", - "password.c", - "secstore.c", - "SConn.c", - "util.c" - ] - } -} diff --git a/sys/src/cmd/auth/secstore/secstore.rc.build b/sys/src/cmd/auth/secstore/secstore.rc.build new file mode 100644 index 0000000..40946ba --- /dev/null +++ b/sys/src/cmd/auth/secstore/secstore.rc.build @@ -0,0 +1,81 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + pak.c \ + password.c \ + secstore.c \ + SConn.c \ + util.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o secstore +safemove secstore $JEHANNE/arch/$ARCH/cmd/auth/ +rm -f *.o + +rm -f *.tag.* +$CC \ + aescbc.c \ + util.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o aescbc +safemove aescbc $JEHANNE/arch/$ARCH/cmd/auth/ +rm -f *.o + +rm -f *.tag.* +$CC \ + dirls.c \ + pak.c \ + password.c \ + SConn.c \ + secstored.c \ + ../secureidcheck.c \ + util.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o secstored +safemove secstored $JEHANNE/arch/$ARCH/cmd/auth/ +rm -f *.o + +rm -f *.tag.* +$CC \ + pak.c \ + password.c \ + SConn.c \ + secuser.c \ + util.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o secuser +safemove secuser $JEHANNE/arch/$ARCH/cmd/auth/ +rm -f *.o + + + +{ + "secstore": { + "Include": [ + "../../cmd.json" + ], + "Install": "/arch/$ARCH/cmd/auth/", + "Program": "secstore", + "Projects": [ + "aescbc.json", + "secstored.json", + "secuser.json" + ], + "SourceFiles": [ + "pak.c", + "password.c", + "secstore.c", + "SConn.c", + "util.c" + ] + } +} diff --git a/sys/src/cmd/auth/secstore/secstored.json b/sys/src/cmd/auth/secstore/secstored.json deleted file mode 100644 index 3d272d6..0000000 --- a/sys/src/cmd/auth/secstore/secstored.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "secstored": { - "Include": [ - "../../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/auth/", - "Program": "secstored", - "SourceFiles": [ - "dirls.c", - "pak.c", - "password.c", - "SConn.c", - "secstored.c", - "../secureidcheck.c", - "util.c" - ] - } -} diff --git a/sys/src/cmd/auth/secstore/secuser.json b/sys/src/cmd/auth/secstore/secuser.json deleted file mode 100644 index 9c48a27..0000000 --- a/sys/src/cmd/auth/secstore/secuser.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "secuser": { - "Include": [ - "../../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/auth/", - "Program": "secuser", - "SourceFiles": [ - "pak.c", - "password.c", - "SConn.c", - "secuser.c", - "util.c" - ] - } -} diff --git a/sys/src/cmd/awk/awk.rc.build b/sys/src/cmd/awk/awk.rc.build new file mode 100644 index 0000000..371dfb9 --- /dev/null +++ b/sys/src/cmd/awk/awk.rc.build @@ -0,0 +1,28 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +yacc -d awkgram.y && mv y.tab.c awkgram.c + +cat maketab.rc.template|template|rc > proctab.c + +rm -f *.tag.* +$CC \ + re.c \ + lex.c \ + main.c \ + parse.c \ + proctab.c \ + popen.c \ + tran.c \ + lib.c \ + run.c \ + awkgram.c \ + '-DYYMALLOC=malloc' \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o awk +safemove awk $JEHANNE/arch/$ARCH/cmd + +git clean -xdf ./ +rm -f *.o diff --git a/sys/src/cmd/awk/build.json b/sys/src/cmd/awk/build.json deleted file mode 100644 index f5d2449..0000000 --- a/sys/src/cmd/awk/build.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "awk": { - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Pre": [ - "yacc -d awkgram.y && mv y.tab.c awkgram.c", - "go run maketab.go > proctab.c" - ], - "Post": [ - "git clean -xdf ./" - ], - "Cflags": [ - "-DYYMALLOC=malloc" - ], - "Install": "/arch/$ARCH/cmd/", - "Program": "awk", - "SourceFiles": [ - "re.c", - "lex.c", - "main.c", - "parse.c", - "proctab.c", - "popen.c", - "tran.c", - "lib.c", - "run.c", - "awkgram.c" - ] - } -} diff --git a/sys/src/cmd/awk/maketab.c b/sys/src/cmd/awk/maketab.c deleted file mode 100644 index 015a7fa..0000000 --- a/sys/src/cmd/awk/maketab.c +++ /dev/null @@ -1,171 +0,0 @@ -/**************************************************************** -Copyright (C) Lucent Technologies 1997 -All Rights Reserved - -Permission to use, copy, modify, and distribute this software and -its documentation for any purpose and without fee is hereby -granted, provided that the above copyright notice appear in all -copies and that both that the copyright notice and this -permission notice and warranty disclaimer appear in supporting -documentation, and that the name Lucent Technologies or any of -its entities not be used in advertising or publicity pertaining -to distribution of the software without specific, written prior -permission. - -LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. -IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY -SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER -IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF -THIS SOFTWARE. -****************************************************************/ - -/* - * this program makes the table to link function names - * and type indices that is used by execute() in run.c. - * it finds the indices in y.tab.h, produced by yacc. - */ - -#include -#include -#include -#include "awk.h" -#include "y.tab.h" - -struct xx -{ int token; - char *name; - char *pname; -} proc[] = { - { PROGRAM, "program", nil }, - { BOR, "boolop", " || " }, - { AND, "boolop", " && " }, - { NOT, "boolop", " !" }, - { NE, "relop", " != " }, - { EQ, "relop", " == " }, - { LE, "relop", " <= " }, - { LT, "relop", " < " }, - { GE, "relop", " >= " }, - { GT, "relop", " > " }, - { ARRAY, "array", nil }, - { INDIRECT, "indirect", "$(" }, - { SUBSTR, "substr", "substr" }, - { SUB, "sub", "sub" }, - { GSUB, "gsub", "gsub" }, - { INDEX, "sindex", "sindex" }, - { SPRINTF, "awksprintf", "sprintf" }, - { ADD, "arith", " + " }, - { MINUS, "arith", " - " }, - { MULT, "arith", " * " }, - { DIVIDE, "arith", " / " }, - { MOD, "arith", " % " }, - { UMINUS, "arith", " -" }, - { POWER, "arith", " **" }, - { PREINCR, "incrdecr", "++" }, - { POSTINCR, "incrdecr", "++" }, - { PREDECR, "incrdecr", "--" }, - { POSTDECR, "incrdecr", "--" }, - { CAT, "cat", " " }, - { PASTAT, "pastat", nil }, - { PASTAT2, "dopa2", nil }, - { MATCH, "matchop", " ~ " }, - { NOTMATCH, "matchop", " !~ " }, - { MATCHFCN, "matchop", "matchop" }, - { INTEST, "intest", "intest" }, - { PRINTF, "awkprintf", "printf" }, - { PRINT, "printstat", "print" }, - { CLOSE, "closefile", "closefile" }, - { DELETE, "awkdelete", "awkdelete" }, - { SPLIT, "split", "split" }, - { ASSIGN, "assign", " = " }, - { ADDEQ, "assign", " += " }, - { SUBEQ, "assign", " -= " }, - { MULTEQ, "assign", " *= " }, - { DIVEQ, "assign", " /= " }, - { MODEQ, "assign", " %= " }, - { POWEQ, "assign", " ^= " }, - { CONDEXPR, "condexpr", " ?: " }, - { IF, "ifstat", "if(" }, - { WHILE, "whilestat", "while(" }, - { FOR, "forstat", "for(" }, - { DO, "dostat", "do" }, - { IN, "instat", "instat" }, - { NEXT, "jump", "next" }, - { NEXTFILE, "jump", "nextfile" }, - { EXIT, "jump", "exit" }, - { BREAK, "jump", "break" }, - { CONTINUE, "jump", "continue" }, - { RETURN, "jump", "ret" }, - { BLTIN, "bltin", "bltin" }, - { CALL, "call", "call" }, - { ARG, "arg", "arg" }, - { VARNF, "getnf", "NF" }, - { GETLINE, "getline", "getline" }, - { 0, "", "" }, -}; - -#define SIZE (LASTTOKEN - FIRSTTOKEN + 1) -char *table[SIZE]; -char *names[SIZE]; - -void main(int _, char** __) -{ - struct xx *p; - int i, tok; - Biobuf *fp; - char *buf, *toks[3]; - - print("#include \n"); - print("#include \n"); - print("#include \n"); - print("#include \"awk.h\"\n"); - print("#include \"y.tab.h\"\n\n"); - for (i = SIZE; --i >= 0; ) - names[i] = ""; - - if ((fp = Bopen("y.tab.h", OREAD)) == nil) { - fprint(2, "maketab can't open y.tab.h!\n"); - exits("can't open y.tab.h"); - } - print("static char *printname[%d] = {\n", SIZE); - i = 0; - while ((buf = Brdline(fp, '\n')) != nil) { - buf[Blinelen(fp)-1] = '\0'; - tokenize(buf, toks, 3); - if (toks[0] == nil || strcmp("#define", toks[0]) != 0) /* not a valid #define */ - continue; - tok = strtol(toks[2], nil, 10); - if (tok < FIRSTTOKEN || tok > LASTTOKEN) { - fprint(2, "maketab funny token %d %s\n", tok, buf); - exits("funny token"); - } - names[tok-FIRSTTOKEN] = (char *) malloc(strlen(toks[1])+1); - strcpy(names[tok-FIRSTTOKEN], toks[1]); - print("\t(char *) \"%s\",\t/* %d */\n", toks[1], tok); - i++; - } - print("};\n\n"); - - for (p=proc; p->token!=0; p++) - table[p->token-FIRSTTOKEN] = p->name; - print("\nCell *(*proctab[%d])(Node **, int) = {\n", SIZE); - for (i=0; i LASTTOKEN) {\n"); - print(" sprint(buf, \"token %%d\", n);\n"); - print(" return buf;\n"); - print(" }\n"); - print(" return printname[n-FIRSTTOKEN];\n"); - print("}\n"); - exits(0); -} diff --git a/sys/src/cmd/awk/maketab.go b/sys/src/cmd/awk/maketab.go deleted file mode 100644 index 2ca33ee..0000000 --- a/sys/src/cmd/awk/maketab.go +++ /dev/null @@ -1,189 +0,0 @@ -/* - * This file is part of Jehanne. - * - * Copyright (C) 2016 Giacomo Tesio - * - * Jehanne is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2 of the License. - * - * Jehanne is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Jehanne. If not, see . - */ - -/* - * this program makes the table to link function names - * and type indices that is used by execute() in run.c. - * it finds the indices in y.tab.h, produced by yacc. - */ - -package main - -import ( - "bufio" - "log" - "os" - "strings" - "strconv" - "text/template" -) - -type Flist struct { - Token string - Name string - Pname string -} - -var flist = []Flist { - { "PROGRAM", "program", "" }, - { "BOR", "boolop", " || " }, - { "AND", "boolop", " && " }, - { "NOT", "boolop", " !" }, - { "NE", "relop", " != " }, - { "EQ", "relop", " == " }, - { "LE", "relop", " <= " }, - { "LT", "relop", " < " }, - { "GE", "relop", " >= " }, - { "GT", "relop", " > " }, - { "ARRAY", "array", "" }, - { "INDIRECT", "indirect", "$(" }, - { "SUBSTR", "substr", "substr" }, - { "SUB", "sub", "sub" }, - { "GSUB", "gsub", "gsub" }, - { "INDEX", "sindex", "sindex" }, - { "SPRINTF", "awksprintf", "sprintf" }, - { "ADD", "arith", " + " }, - { "MINUS", "arith", " - " }, - { "MULT", "arith", " * " }, - { "DIVIDE", "arith", " / " }, - { "MOD", "arith", " % " }, - { "UMINUS", "arith", " -" }, - { "POWER", "arith", " **" }, - { "PREINCR", "incrdecr", "++" }, - { "POSTINCR", "incrdecr", "++" }, - { "PREDECR", "incrdecr", "--" }, - { "POSTDECR", "incrdecr", "--" }, - { "CAT", "cat", " " }, - { "PASTAT", "pastat", "" }, - { "PASTAT2", "dopa2", "" }, - { "MATCH", "matchop", " ~ " }, - { "NOTMATCH", "matchop", " !~ " }, - { "MATCHFCN", "matchop", "matchop" }, - { "INTEST", "intest", "intest" }, - { "PRINTF", "awkprintf", "printf" }, - { "PRINT", "printstat", "print" }, - { "CLOSE", "closefile", "closefile" }, - { "DELETE", "awkdelete", "awkdelete" }, - { "SPLIT", "split", "split" }, - { "ASSIGN", "assign", " = " }, - { "ADDEQ", "assign", " += " }, - { "SUBEQ", "assign", " -= " }, - { "MULTEQ", "assign", " *= " }, - { "DIVEQ", "assign", " /= " }, - { "MODEQ", "assign", " %= " }, - { "POWEQ", "assign", " ^= " }, - { "CONDEXPR", "condexpr", " ?: " }, - { "IF", "ifstat", "if(" }, - { "WHILE", "whilestat", "while(" }, - { "FOR", "forstat", "for(" }, - { "DO", "dostat", "do" }, - { "IN", "instat", "instat" }, - { "NEXT", "jump", "next" }, - { "NEXTFILE", "jump", "nextfile" }, - { "EXIT", "jump", "exit" }, - { "BREAK", "jump", "break" }, - { "CONTINUE", "jump", "continue" }, - { "RETURN", "jump", "ret" }, - { "BLTIN", "bltin", "bltin" }, - { "CALL", "call", "call" }, - { "ARG", "arg", "arg" }, - { "VARNF", "getnf", "NF" }, - { "GETLINE", "getline", "getline" }, - { "", "", "" }, -} - -type Proctab struct { - Code int - Name string - Func string -} - -func getf(token string) Flist { - for i := range flist { - if token == flist[i].Token { - return flist[i] - } - } - return Flist{"","nullproc",""} -} - -func main() { - file, err := os.Open("y.tab.h") - if err != nil { - log.Fatal(err) - } - defer file.Close() - - proctab := make([]Proctab, 0) - - scanner := bufio.NewScanner(file) - for scanner.Scan() { - s := scanner.Text() - if strings.Contains(s, "#define") { - tokens := strings.Split(s, " "); - i, err := strconv.Atoi(tokens[2]) - if err == nil { - f := getf(tokens[1]) - proctab = append(proctab, Proctab{i, tokens[1], f.Name}) - } - } - } - - - if err := scanner.Err(); err != nil { - log.Fatal(err) - } - - tmpl, err := template.New("proctab.c").Parse(`/* automatically generated by maketab */ -#include -#include -#include -#include "awk.h" -#include "y.tab.h" - -static char *printname[{{len .}}] = { -{{ range . }} (char *) "{{.Name}}", /* {{.Code}} */ -{{ end }} -}; - -Cell *(*proctab[{{len .}}])(Node **, int) = { -{{ range . }} {{.Func}}, /* {{.Name}} */ -{{ end }} -}; - -char * -tokname(int n) -{ - static char buf[100]; - - if (n < FIRSTTOKEN || n > LASTTOKEN) { - sprint(buf, "token %d", n); - return buf; - } - return printname[n-FIRSTTOKEN]; -} -`) - if err != nil { - log.Fatal(err) - } - - err = tmpl.Execute(os.Stdout, proctab) - if err != nil { - log.Fatal(err) - } -} diff --git a/sys/src/cmd/awk/maketab.rc.environment b/sys/src/cmd/awk/maketab.rc.environment new file mode 100644 index 0000000..acdea40 --- /dev/null +++ b/sys/src/cmd/awk/maketab.rc.environment @@ -0,0 +1,64 @@ +PROGRAM=(program '') +BOR=(boolop ' || ') +AND=(boolop ' && ') +NOT=(boolop ' !') +NE=(relop ' != ') +EQ=(relop ' == ') +LE=(relop ' <= ') +LT=(relop ' < ') +GE=(relop ' >= ') +GT=(relop ' > ') +ARRAY=(array '') +INDIRECT=(indirect '$(') +SUBSTR=(substr 'substr') +SUB=(sub 'sub') +GSUB=(gsub 'gsub') +INDEX=(sindex 'sindex') +SPRINTF=(awksprintf 'sprintf') +ADD=(arith ' + ') +MINUS=(arith ' - ') +MULT=(arith ' * ') +DIVIDE=(arith ' / ') +MOD=(arith ' % ') +UMINUS=(arith ' -') +POWER=(arith ' **') +PREINCR=(incrdecr '++') +POSTINCR=(incrdecr '++') +PREDECR=(incrdecr '--') +POSTDECR=(incrdecr '--') +CAT=(cat ' ') +PASTAT=(pastat '') +PASTAT2=(dopa2 '') +MATCH=(matchop ' ~ ') +NOTMATCH=(matchop ' !~ ') +MATCHFCN=(matchop 'matchop') +INTEST=(intest 'intest') +PRINTF=(awkprintf 'printf') +PRINT=(printstat 'print') +CLOSE=(closefile 'closefile') +DELETE=(awkdelete 'awkdelete') +SPLIT=(split 'split') +ASSIGN=(assign ' = ') +ADDEQ=(assign ' += ') +SUBEQ=(assign ' -= ') +MULTEQ=(assign ' *= ') +DIVEQ=(assign ' /= ') +MODEQ=(assign ' %= ') +POWEQ=(assign ' ^= ') +CONDEXPR=(condexpr ' ?: ') +IF=(ifstat 'if(') +WHILE=(whilestat 'while(') +FOR=(forstat 'for(') +DO=(dostat 'do') +IN=(instat 'instat') +NEXT=(jump 'next') +NEXTFILE=(jump 'nextfile') +EXIT=(jump 'exit') +BREAK=(jump 'break') +CONTINUE=(jump 'continue') +RETURN=(jump 'ret') +BLTIN=(bltin 'bltin') +CALL=(call 'call') +ARG=(arg 'arg') +VARNF=(getnf 'NF') +GETLINE=(getline 'getline') diff --git a/sys/src/cmd/awk/maketab.rc.template b/sys/src/cmd/awk/maketab.rc.template new file mode 100644 index 0000000..324b4b3 --- /dev/null +++ b/sys/src/cmd/awk/maketab.rc.template @@ -0,0 +1,40 @@ +/* automatically generated by maketab.rc.template */ +#include +#include +#include +#include "awk.h" +#include "y.tab.h" + +#! rfork e +#! . ./maketab.rc.environment +#! GETNAMES='/#define FIRSTTOKEN/,/#define LASTTOKEN/{s/#define //;s/ [0-9]\+$//g;p}' +#! NAMES=`{cat y.tab.h|sed -n $GETNAMES} +#! GETCODES='/#define FIRSTTOKEN/,/#define LASTTOKEN/{s/#define [A-Z0-9]\+ //;p}' +#! CODES=`{cat y.tab.h|sed -n $GETCODES} + +static char *printname[$#NAMES] = { + +#! for (token in `{seq $#NAMES}) { + (char *) "$NAMES($token)", /* $CODES($token) */ +#! } +}; + +Cell *(*proctab[$#NAMES])(Node **, int) = { +#! for (token in `{seq $#NAMES}) { +#! PROC=$$NAMES($token) +#! if( ~ 0 $#PROC ) PROC=(nullproc '') + $PROC(1), /* $NAMES($token) */ +#! } +}; + +char * +tokname(int n) +{ + static char buf[100]; + + if (n < FIRSTTOKEN || n > LASTTOKEN) { + sprint(buf, "token %d", n); + return buf; + } + return printname[n-FIRSTTOKEN]; +} diff --git a/sys/src/cmd/cmd.json b/sys/src/cmd/cmd.json deleted file mode 100644 index 89e2ff5..0000000 --- a/sys/src/cmd/cmd.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "Cmd": { - "Include": [ - "/arch/$ARCH/include/cflags.json" - ], - "Cflags": [ - "-fstack-check", - "-fstack-protector-all" - ], - "Oflags": [ - "-static", - "-lavl", - "-lcomplete", - "-lcontrol", - "-ldisk", - "-lflate", - "-lframe", - "-lmemdraw", - "-lmemlayer", - "-lmemdraw", - "-ldraw", - "-lplumb", - "-lregexp", - "-lString", - "-l9p", - "-lauth", - "-lauthsrv", - "-lndb", - "-lip", - "-lsec", - "-lauth", - "-lmp", - "-lthread", - "-lbio", - "-l9p2000", - "-ljehanne" - ], - "Post": [ - "rm -f *.o" - ], - "Pre": [ - "rm -f *.tag.*" - ] - } -} diff --git a/sys/src/cmd/cmd.rc.build b/sys/src/cmd/cmd.rc.build new file mode 100644 index 0000000..7f03f18 --- /dev/null +++ b/sys/src/cmd/cmd.rc.build @@ -0,0 +1,31 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +mkdir -p $JEHANNE/arch/$ARCH/cmd + +rm -f *.tag.* +compileCommands c $JEHANNE/arch/$ARCH/cmd +rm -f *.o + +build FromYacc.rc.build + +build acme/ +build auth/factotum/ +build hmi/ +build awk/ +build disk/ +build dossrv/ +build exportfs/ +build ip/ +build grep/ +build hjfs/ +build hoc/ +build ndb/ +build ns/ +build rc/ +build rio/ +build sam/ +build samterm/ +build sys/ +build usb/ +build vt/ diff --git a/sys/src/cmd/cmds.json b/sys/src/cmd/cmds.json deleted file mode 100644 index fa65347..0000000 --- a/sys/src/cmd/cmds.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "Cmd": { - "Include": [ - "cmd.json" - ], - "Install": "/arch/$ARCH/cmd/", - "SourceFilesCmd": [ - "ascii.c", - "basename.c", - "bind.c", - "cal.c", - "cat.c", - "chgrp.c", - "chmod.c", - "cleanname.c", - "cp.c", - "cpu.c", - "date.c", - "dd.c", - "du.c", - "echo.c", - "ed.c", - "fcp.c", - "field.c", - "flip.c", - "hget.c", - "import.c", - "init.c", - "join.c", - "lock.c", - "look.c", - "ls.c", - "mc.c", - "mkdir.c", - "mntgen.c", - "mount.c", - "mtime.c", - "mv.c", - "netstat.c", - "p.c", - "pipefile.c", - "ps.c", - "pstree.c", - "pwd.c", - "ramfs.c", - "rm.c", - "sed.c", - "seq.c", - "sleep.c", - "sort.c", - "split.c", - "srv.c", - "srvfs.c", - "stats.c", - "tail.c", - "tar.c", - "tee.c", - "test.c", - "time.c", - "touch.c", - "tr.c", - "unicode.c", - "uniq.c", - "unmount.c", - "wc.c", - "xargs.c", - "xd.c" - ] - }, - "FromYacc": { - "Include": [ - "cmd.json" - ], - "Pre": [ - "yacc -d mpc.y && mv y.tab.c mpc.c && mv y.tab.h mpc.h" - ], - "Post": [ - "rm mpc.c mpc.h" - ], - "Cflags": [ - "-DYYSIZE_T=size_t" - ], - "Install": "/arch/$ARCH/cmd/", - "Program": "mpc", - "SourceFiles": [ - "/sys/src/lib/jehanne/lib9.c", - "mpc.c" - ] - }, - "Dirs": { - "Include": [ - "cmd.json" - ], - "Install": "/arch/$ARCH/cmd/", - "Projects": [ - "acme/", - "auth/factotum/", - "hmi/", - "awk/", - "disk/build.json", - "dossrv/", - "exportfs/", - "ip/", - "grep/", - "hjfs/", - "hoc/", - "ndb/", - "ns/", - "rc/", - "rio/", - "sam/", - "samterm/", - "sys/", - "usb/", - "vt/" - ] - } -} diff --git a/sys/src/cmd/disk/build.json b/sys/src/cmd/disk/build.json deleted file mode 100644 index 16681e1..0000000 --- a/sys/src/cmd/disk/build.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "disk": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/disk/", - "Projects": [ - "prep/prep.json", - "prep/fdisk.json", - "rofs/" - ], - "SourceFilesCmd": [ - "format.c", - "mkext.c", - "mkfs.c" - ] - } -} diff --git a/sys/src/cmd/disk/disk.rc.build b/sys/src/cmd/disk/disk.rc.build new file mode 100644 index 0000000..aeb2415 --- /dev/null +++ b/sys/src/cmd/disk/disk.rc.build @@ -0,0 +1,11 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +compileCommands c $JEHANNE/arch/$ARCH/cmd/disk +rm -f *.o + +build rofs/ + +build prep/fdisk.rc.build +build prep/ diff --git a/sys/src/cmd/disk/prep/fdisk.json b/sys/src/cmd/disk/prep/fdisk.json deleted file mode 100644 index 7cfdb88..0000000 --- a/sys/src/cmd/disk/prep/fdisk.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "fdisk": { - "Include": [ - "../../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/disk", - "Post": [ - "rm y.tab.[ch]" - ], - "Pre": [ - "yacc -d calc.y" - ], - "Program": "fdisk", - "SourceFiles": [ - "/sys/src/lib/jehanne/lib9.c", - "fdisk.c", - "edit.c", - "y.tab.c" - ] - } -} diff --git a/sys/src/cmd/disk/prep/fdisk.rc.build b/sys/src/cmd/disk/prep/fdisk.rc.build new file mode 100644 index 0000000..80fdf94 --- /dev/null +++ b/sys/src/cmd/disk/prep/fdisk.rc.build @@ -0,0 +1,17 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +yacc -d calc.y +rm -f *.tag.* +$CC \ + $JEHANNE/sys/src/lib/jehanne/lib9.c \ + fdisk.c \ + edit.c \ + y.tab.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o fdisk +safemove fdisk $JEHANNE/arch/$ARCH/cmd/disk +rm y.tab.[ch] +rm -f *.o diff --git a/sys/src/cmd/disk/prep/prep.json b/sys/src/cmd/disk/prep/prep.json deleted file mode 100644 index 3d0f56a..0000000 --- a/sys/src/cmd/disk/prep/prep.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "prep": { - "Include": [ - "../../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/disk", - "Post": [ - "rm -f y.tab.[ch]" - ], - "Pre": [ - "yacc -d calc.y" - ], - "Program": "prep", - "SourceFiles": [ - "/sys/src/lib/jehanne/lib9.c", - "prep.c", - "edit.c", - "y.tab.c" - ] - } -} diff --git a/sys/src/cmd/disk/prep/prep.rc.build b/sys/src/cmd/disk/prep/prep.rc.build new file mode 100644 index 0000000..cf32cfb --- /dev/null +++ b/sys/src/cmd/disk/prep/prep.rc.build @@ -0,0 +1,17 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +yacc -d calc.y +rm -f *.tag.* +$CC \ + $JEHANNE/sys/src/lib/jehanne/lib9.c \ + prep.c \ + edit.c \ + y.tab.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o prep +safemove prep $JEHANNE/arch/$ARCH/cmd/disk +rm -f y.tab.[ch] +rm -f *.o diff --git a/sys/src/cmd/disk/rofs/build.json b/sys/src/cmd/disk/rofs/build.json deleted file mode 100644 index db2e108..0000000 --- a/sys/src/cmd/disk/rofs/build.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "rofs": { - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Install": "/arch/$ARCH/cmd/disk/", - "SourceFilesCmd": [ - "rofs.c", - "mkrofs.c" - ] - } -} diff --git a/sys/src/cmd/disk/rofs/rofs.rc.build b/sys/src/cmd/disk/rofs/rofs.rc.build new file mode 100644 index 0000000..bd24449 --- /dev/null +++ b/sys/src/cmd/disk/rofs/rofs.rc.build @@ -0,0 +1,6 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +compileCommands c $JEHANNE/arch/$ARCH/cmd/disk +rm -f *.o diff --git a/sys/src/cmd/dossrv/build.json b/sys/src/cmd/dossrv/build.json deleted file mode 100644 index 38000fb..0000000 --- a/sys/src/cmd/dossrv/build.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "dossrv": { - "Include": [ - "../cmd.json" - ], - "Cflags": [ - "-fno-aggressive-loop-optimizations", - "-Wno-array-bounds" - ], - "Install": "/arch/$ARCH/cmd/", - "Program": "dossrv", - "SourceFiles": [ - "xfssrv.c", - "xfile.c", - "dosfs.c", - "dossubs.c", - "iotrack.c", - "lock.c", - "chat.c", - "devio.c" - ] - } -} diff --git a/sys/src/cmd/dossrv/dossrv.rc.build b/sys/src/cmd/dossrv/dossrv.rc.build new file mode 100644 index 0000000..825cb27 --- /dev/null +++ b/sys/src/cmd/dossrv/dossrv.rc.build @@ -0,0 +1,21 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + xfssrv.c \ + xfile.c \ + dosfs.c \ + dossubs.c \ + iotrack.c \ + lock.c \ + chat.c \ + devio.c \ + -fno-aggressive-loop-optimizations \ + -Wno-array-bounds \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o dossrv +safemove dossrv $JEHANNE/arch/$ARCH/cmd +rm -f *.o diff --git a/sys/src/cmd/exportfs/build.json b/sys/src/cmd/exportfs/build.json deleted file mode 100644 index e0f5e8f..0000000 --- a/sys/src/cmd/exportfs/build.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "exportfs": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/", - "Program": "exportfs", - "SourceFiles": [ - "exportfs.c", - "exportsrv.c", - "pattern.c" - ] - } -} diff --git a/sys/src/cmd/exportfs/exportfs.rc.build b/sys/src/cmd/exportfs/exportfs.rc.build new file mode 100644 index 0000000..24a20e6 --- /dev/null +++ b/sys/src/cmd/exportfs/exportfs.rc.build @@ -0,0 +1,14 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + exportfs.c \ + exportsrv.c \ + pattern.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o exportfs +safemove exportfs $JEHANNE/arch/$ARCH/cmd +rm -f *.o diff --git a/sys/src/cmd/grep/build.json b/sys/src/cmd/grep/build.json deleted file mode 100644 index b573572..0000000 --- a/sys/src/cmd/grep/build.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "grep": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/", - "Post": [ - "rm y.tab*" - ], - "Pre": [ - "yacc -d grep.y" - ], - "Program": "grep", - "SourceFiles": [ - "/sys/src/lib/jehanne/lib9.c", - "comp.c", - "main.c", - "sub.c", - "y.tab.c" - ] - } -} diff --git a/sys/src/cmd/grep/grep.rc.build b/sys/src/cmd/grep/grep.rc.build new file mode 100644 index 0000000..22913ce --- /dev/null +++ b/sys/src/cmd/grep/grep.rc.build @@ -0,0 +1,18 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +yacc -d grep.y +rm -f *.tag.* +$CC \ + $JEHANNE/sys/src/lib/jehanne/lib9.c \ + comp.c \ + main.c \ + sub.c \ + y.tab.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o grep +safemove grep $JEHANNE/arch/$ARCH/cmd +rm y.tab* +rm -f *.o diff --git a/sys/src/cmd/hjfs/build.json b/sys/src/cmd/hjfs/build.json deleted file mode 100644 index a98f530..0000000 --- a/sys/src/cmd/hjfs/build.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "hjfs": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/", - "Program": "hjfs", - "SourceFiles": [ - "9p.c", - "auth.c", - "buf.c", - "cons.c", - "conv.c", - "dev.c", - "dump.c", - "fs1.c", - "fs2.c", - "main.c" - ] - } -} diff --git a/sys/src/cmd/hjfs/hjfs.rc.build b/sys/src/cmd/hjfs/hjfs.rc.build new file mode 100644 index 0000000..dce9721 --- /dev/null +++ b/sys/src/cmd/hjfs/hjfs.rc.build @@ -0,0 +1,21 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + 9p.c \ + auth.c \ + buf.c \ + cons.c \ + conv.c \ + dev.c \ + dump.c \ + fs1.c \ + fs2.c \ + main.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o hjfs +safemove hjfs $JEHANNE/arch/$ARCH/cmd +rm -f *.o diff --git a/sys/src/cmd/hmi/build.json b/sys/src/cmd/hmi/build.json deleted file mode 100644 index d42707d..0000000 --- a/sys/src/cmd/hmi/build.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "Aux": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/hmi", - "Projects": [ - "console/screenconsole.json", - "console/comconsole.json", - "console/pipeconsole.json", - "realemu/realemu.json", - "realemu/loadcom.json", - "vga/" - ], - "SourceFilesCmd": [ - "mouse.c" - ] - } -} diff --git a/sys/src/cmd/hmi/console/COMConsole.rc.build b/sys/src/cmd/hmi/console/COMConsole.rc.build new file mode 100644 index 0000000..be04a58 --- /dev/null +++ b/sys/src/cmd/hmi/console/COMConsole.rc.build @@ -0,0 +1,16 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +$CC \ + buffer.c \ + comconsole.c \ + passthrough.c \ + serve9p.c \ + utils.c \ + -9 \ + $CFLAGS \ + -static \ + -l9p2000 \ + -ljehanne \ + -o comconsole +safemove comconsole $JEHANNE/arch/$ARCH/cmd/hmi diff --git a/sys/src/cmd/hmi/console/PipeConsole.rc.build b/sys/src/cmd/hmi/console/PipeConsole.rc.build new file mode 100644 index 0000000..711fb5f --- /dev/null +++ b/sys/src/cmd/hmi/console/PipeConsole.rc.build @@ -0,0 +1,16 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +$CC \ + buffer.c \ + pipeconsole.c \ + passthrough.c \ + serve9p.c \ + utils.c \ + -9 \ + $CFLAGS \ + -static \ + -l9p2000 \ + -ljehanne \ + -o pipeconsole +safemove pipeconsole $JEHANNE/arch/$ARCH/cmd/hmi diff --git a/sys/src/cmd/hmi/console/ScreenConsole.rc.build b/sys/src/cmd/hmi/console/ScreenConsole.rc.build new file mode 100644 index 0000000..41a0e57 --- /dev/null +++ b/sys/src/cmd/hmi/console/ScreenConsole.rc.build @@ -0,0 +1,17 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +$CC \ + buffer.c \ + cga.c \ + screenconsole.c \ + keyboard.c \ + serve9p.c \ + utils.c \ + -9 \ + $CFLAGS \ + -static \ + -l9p2000 \ + -ljehanne \ + -o screenconsole +safemove screenconsole $JEHANNE/arch/$ARCH/cmd/hmi diff --git a/sys/src/cmd/hmi/console/comconsole.json b/sys/src/cmd/hmi/console/comconsole.json deleted file mode 100644 index 038b8eb..0000000 --- a/sys/src/cmd/hmi/console/comconsole.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "Console": { - "Include": [ - "/arch/$ARCH/include/cflags.json" - ], - "Install": "/arch/$ARCH/cmd/hmi", - "Cflags": [ - "-9" - ], - "Oflags": [ - "-static", - "-l9p2000", - "-ljehanne" - ], - "Program": "comconsole", - "SourceFiles": [ - "buffer.c", - "comconsole.c", - "passthrough.c", - "serve9p.c", - "utils.c" - ] - } -} diff --git a/sys/src/cmd/hmi/console/console.rc.build b/sys/src/cmd/hmi/console/console.rc.build new file mode 100644 index 0000000..8f3bf87 --- /dev/null +++ b/sys/src/cmd/hmi/console/console.rc.build @@ -0,0 +1,5 @@ +#!/cmd/rc + +build COMConsole.rc.build +build PipeConsole.rc.build +build ScreenConsole.rc.build diff --git a/sys/src/cmd/hmi/console/pipeconsole.json b/sys/src/cmd/hmi/console/pipeconsole.json deleted file mode 100644 index 1a1496e..0000000 --- a/sys/src/cmd/hmi/console/pipeconsole.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "PipeConsole": { - "Include": [ - "/arch/$ARCH/include/cflags.json" - ], - "Install": "/arch/$ARCH/cmd/hmi", - "Cflags": [ - "-9" - ], - "Oflags": [ - "-static", - "-l9p2000", - "-ljehanne" - ], - "Program": "pipeconsole", - "SourceFiles": [ - "buffer.c", - "pipeconsole.c", - "passthrough.c", - "serve9p.c", - "utils.c" - ] - } -} diff --git a/sys/src/cmd/hmi/console/screenconsole.json b/sys/src/cmd/hmi/console/screenconsole.json deleted file mode 100644 index ad5c833..0000000 --- a/sys/src/cmd/hmi/console/screenconsole.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "ScreenConsole": { - "Include": [ - "/arch/$ARCH/include/cflags.json" - ], - "Install": "/arch/$ARCH/cmd/hmi", - "Cflags": [ - "-9" - ], - "Oflags": [ - "-static", - "-l9p2000", - "-ljehanne" - ], - "Program": "screenconsole", - "SourceFiles": [ - "buffer.c", - "cga.c", - "screenconsole.c", - "keyboard.c", - "serve9p.c", - "utils.c" - ] - } -} diff --git a/sys/src/cmd/hmi/hmi.rc.build b/sys/src/cmd/hmi/hmi.rc.build new file mode 100644 index 0000000..100d099 --- /dev/null +++ b/sys/src/cmd/hmi/hmi.rc.build @@ -0,0 +1,10 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +compileCommands c $JEHANNE/arch/$ARCH/cmd/hmi +rm -f *.o + +build console/ +build realemu/ +build vga/ diff --git a/sys/src/cmd/hmi/realemu/loadcom.json b/sys/src/cmd/hmi/realemu/loadcom.json deleted file mode 100644 index 35e3fa3..0000000 --- a/sys/src/cmd/hmi/realemu/loadcom.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "Loadcom": { - "Include": [ - "../../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/hmi", - "SourceFilesCmd": [ - "loadcom.c" - ] - } -} diff --git a/sys/src/cmd/hmi/realemu/realemu.json b/sys/src/cmd/hmi/realemu/realemu.json deleted file mode 100644 index e3c3fc7..0000000 --- a/sys/src/cmd/hmi/realemu/realemu.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "realemu": { - "Cflags": [ - "-I", "/sys/src/kern/$ARCH/" - ], - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Install": "/arch/$ARCH/cmd/hmi/", - "Program": "realemu", - "SourceFiles": [ - "arg.c", - "debug.c", - "decode.c", - "fmt.c", - "main.c", - "pit.c", - "xec.c" - ] - } -} diff --git a/sys/src/cmd/hmi/realemu/realemu.rc.build b/sys/src/cmd/hmi/realemu/realemu.rc.build new file mode 100644 index 0000000..971175c --- /dev/null +++ b/sys/src/cmd/hmi/realemu/realemu.rc.build @@ -0,0 +1,29 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + loadcom.c \ + -o loadcom \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS +safemove loadcom $JEHANNE/arch/$ARCH/cmd/hmi +rm -f *.o + +rm -f *.tag.* +$CC \ + arg.c \ + debug.c \ + decode.c \ + fmt.c \ + main.c \ + pit.c \ + xec.c \ + -I $JEHANNE/sys/src/kern/amd64 \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o realemu +safemove realemu $JEHANNE/arch/$ARCH/cmd/hmi +rm -f *.o diff --git a/sys/src/cmd/hmi/vga/build.json b/sys/src/cmd/hmi/vga/build.json deleted file mode 100644 index a717a71..0000000 --- a/sys/src/cmd/hmi/vga/build.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "vga": { - "Cflags": [ - "-I", "/sys/src/kern/$ARCH/" - ], - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Install": "/arch/$ARCH/cmd/hmi", - "Program": "vga", - "SourceFiles": [ - "error.c", - "ics534x.c", - "radeon.c", - "s3928.c", - "sc15025.c", - "trio64.c", - "tvp3026.c", - "vga.c", - "vision968.c", - "ch9294.c", - "io.c", - "main.c", - "nvidia.c", - "rgb524.c", - "s3clock.c", - "stg1702.c", - "tvp3020.c", - "tvp3026clock.c", - "virge.c", - "vmware.c", - "clgd542x.c", - "data.c", - "icd2061a.c", - "palette.c", - "rgb524mn.c", - "s3generic.c", - "t2r4.c", - "tvp3025.c", - "vesa.c", - "vision864.c", - "clgd546x.c", - "db.c", - "ics2494.c", - "pci.c", - "s3801.c", - "s3hwgc.c", - "template.c", - "tvp3025clock.c", - "vesadb.c", - "vision964.c" - ] - } -} diff --git a/sys/src/cmd/hmi/vga/vga.rc.build b/sys/src/cmd/hmi/vga/vga.rc.build new file mode 100644 index 0000000..3a7836d --- /dev/null +++ b/sys/src/cmd/hmi/vga/vga.rc.build @@ -0,0 +1,52 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + error.c \ + ics534x.c \ + radeon.c \ + s3928.c \ + sc15025.c \ + trio64.c \ + tvp3026.c \ + vga.c \ + vision968.c \ + ch9294.c \ + io.c \ + main.c \ + nvidia.c \ + rgb524.c \ + s3clock.c \ + stg1702.c \ + tvp3020.c \ + tvp3026clock.c \ + virge.c \ + vmware.c \ + clgd542x.c \ + data.c \ + icd2061a.c \ + palette.c \ + rgb524mn.c \ + s3generic.c \ + t2r4.c \ + tvp3025.c \ + vesa.c \ + vision864.c \ + clgd546x.c \ + db.c \ + ics2494.c \ + pci.c \ + s3801.c \ + s3hwgc.c \ + template.c \ + tvp3025clock.c \ + vesadb.c \ + vision964.c \ + -I $JEHANNE/sys/src/kern/amd64 \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o vga +safemove vga $JEHANNE/arch/$ARCH/cmd/hmi +rm -f *.o diff --git a/sys/src/cmd/hoc/build.json b/sys/src/cmd/hoc/build.json deleted file mode 100644 index 09d83a7..0000000 --- a/sys/src/cmd/hoc/build.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "hoc": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/", - "Post": [ - "rm -f $JEHANNE/sys/src/cmd/hoc/y.tab.[ch]" - ], - "Pre": [ - "yacc -d hoc.y" - ], - "Program": "hoc", - "SourceFiles": [ - "/sys/src/lib/jehanne/lib9.c", - "code.c", - "init.c", - "math.c", - "symbol.c", - "y.tab.c" - ] - } -} diff --git a/sys/src/cmd/hoc/hoc.rc.build b/sys/src/cmd/hoc/hoc.rc.build new file mode 100644 index 0000000..c3c28a9 --- /dev/null +++ b/sys/src/cmd/hoc/hoc.rc.build @@ -0,0 +1,19 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +yacc -d hoc.y +rm -f *.tag.* +$CC \ + $JEHANNE/sys/src/lib/jehanne/lib9.c \ + code.c \ + init.c \ + math.c \ + symbol.c \ + y.tab.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o hoc +safemove hoc $JEHANNE/arch/$ARCH/cmd +rm -f $JEHANNE/sys/src/cmd/hoc/y.tab.[ch] +rm -f *.o diff --git a/sys/src/cmd/ip/build.json b/sys/src/cmd/ip/build.json deleted file mode 100644 index 73431b0..0000000 --- a/sys/src/cmd/ip/build.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "ipcmds": { - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Cflags": [ - "-fno-strict-aliasing" - ], - "Install": "/arch/$ARCH/cmd/ip", - "Projects": [ - "dhcpd/dhcpd.json", - "dhcpd/dhcpleases.json", - "ipconfig/" - ], - "SourceFilesCmd": [ - "ping.c", - "dhcpclient.c", - "gping.c", - "hogports.c", - "linklocal.c", - "listen.c", - "listen1.c", - "rip.c", - "timesync.c", - "traceroute.c", - "trampoline.c" - ] - } -} diff --git a/sys/src/cmd/ip/dhcpd/dhcpd.json b/sys/src/cmd/ip/dhcpd/dhcpd.json deleted file mode 100644 index 58582a0..0000000 --- a/sys/src/cmd/ip/dhcpd/dhcpd.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "dhcpd": { - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Install": "/arch/$ARCH/cmd/ip", - "Program": "dhcpd", - "SourceFiles": [ - "dhcpd.c", - "db.c", - "ndb.c", - "ping.c" - ] - } -} diff --git a/sys/src/cmd/ip/dhcpd/dhcpd.rc.build b/sys/src/cmd/ip/dhcpd/dhcpd.rc.build new file mode 100644 index 0000000..c9e978f --- /dev/null +++ b/sys/src/cmd/ip/dhcpd/dhcpd.rc.build @@ -0,0 +1,28 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + dhcpd.c \ + db.c \ + ndb.c \ + ping.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o dhcpd +safemove dhcpd $JEHANNE/arch/$ARCH/cmd/ip +rm -f *.o + +rm -f *.tag.* +$CC \ + dhcpleases.c \ + db.c \ + ping.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o dhcpleases +safemove dhcpleases $JEHANNE/arch/$ARCH/cmd/ip +rm -f *.o + diff --git a/sys/src/cmd/ip/dhcpd/dhcpleases.json b/sys/src/cmd/ip/dhcpd/dhcpleases.json deleted file mode 100644 index 3035c64..0000000 --- a/sys/src/cmd/ip/dhcpd/dhcpleases.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "dhcpleases": { - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Install": "/arch/$ARCH/cmd/ip", - "Program": "dhcpleases", - "SourceFiles": [ - "dhcpleases.c", - "db.c", - "ping.c" - ] - } -} diff --git a/sys/src/cmd/ip/ip.rc.build b/sys/src/cmd/ip/ip.rc.build new file mode 100644 index 0000000..ce4160b --- /dev/null +++ b/sys/src/cmd/ip/ip.rc.build @@ -0,0 +1,9 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +compileCommands c $JEHANNE/arch/$ARCH/cmd/ip +rm -f *.o + +build dhcpd/ +build ipconfig/ diff --git a/sys/src/cmd/ip/ipconfig/build.json b/sys/src/cmd/ip/ipconfig/build.json deleted file mode 100644 index 1dfcc28..0000000 --- a/sys/src/cmd/ip/ipconfig/build.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "ipconfig": { - "Include": [ - "../../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/ip", - "Program": "ipconfig", - "SourceFiles": [ - "ipv6.c", - "main.c", - "ppp.c" - ] - } -} diff --git a/sys/src/cmd/ip/ipconfig/ipconfig.rc.build b/sys/src/cmd/ip/ipconfig/ipconfig.rc.build new file mode 100644 index 0000000..06148f6 --- /dev/null +++ b/sys/src/cmd/ip/ipconfig/ipconfig.rc.build @@ -0,0 +1,14 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + ipv6.c \ + main.c \ + ppp.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o ipconfig +safemove ipconfig $JEHANNE/arch/$ARCH/cmd/ip +rm -f *.o diff --git a/sys/src/cmd/ip/ipconfig/kipconfig.json b/sys/src/cmd/ip/ipconfig/kipconfig.json deleted file mode 100644 index 2e0a15a..0000000 --- a/sys/src/cmd/ip/ipconfig/kipconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "ipconfig": { - "Include": [ - "../../kernel.json" - ], - "Install": "/arch/$ARCH/cmd/ip", - "Program": "ipconfig", - "SourceFiles": [ - "ipv6.c", - "main.c", - "ppp.c" - ] - } -} diff --git a/sys/src/cmd/kcmds.json b/sys/src/cmd/kcmds.json deleted file mode 100644 index e8421ce..0000000 --- a/sys/src/cmd/kcmds.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "Kcmds": { - "Include": [ - "kernel.json" - ], - "Install": "/arch/$ARCH/cmd/", - "Projects": [ - "/sys/src/cmd/rc/", - "/sys/src/cmd/ip/ipconfig/kipconfig.json" - ], - "SourceFilesCmd": [ - "bind.c", - "mount.c", - "date.c", - "srv.c", - "echo.c", - "ls.c" - ] - } -} diff --git a/sys/src/cmd/kernel.json b/sys/src/cmd/kernel.json deleted file mode 100644 index d936257..0000000 --- a/sys/src/cmd/kernel.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "KernelCmd": { - "Cflags": [ - "-mcmodel=small", - "-O0", - "-fplan9-extensions", - "-fno-builtin", - "-Wall", - "-Wno-main", - "-Wno-missing-braces", - "-Wno-parentheses", - "-Wno-unknown-pragmas", - "-g" - ], - "Libs": [ - "/arch/$ARCH/lib/libString.a", - "/arch/$ARCH/lib/lib9p.a", - "/arch/$ARCH/lib/libndb.a", - "/arch/$ARCH/lib/libauth.a", - "/arch/$ARCH/lib/libbio.a", - "/arch/$ARCH/lib/libip.a", - "/arch/$ARCH/lib/libjehanne.a" - ], - "Oflags": [ - "-static" - ], - "Pre": [ - "rm -f *.o *.tag.*" - ] - } -} diff --git a/sys/src/cmd/ndb/build.json b/sys/src/cmd/ndb/build.json deleted file mode 100644 index 40ec8c9..0000000 --- a/sys/src/cmd/ndb/build.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "ndb": { - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Install": "/arch/$ARCH/cmd/ndb/", - "Projects": [ - "dns.json", - "dnstcp.json", - "dnsdebug.json", - "dnsgetip.json" - ], - "SourceFilesCmd": [ - "cs.c", - "csquery.c", - "dnsquery.c", - "ipquery.c", - "inform.c", - "mkdb.c", - "mkhash.c", - "mkhosts.c", - "query.c" - ] - } -} diff --git a/sys/src/cmd/ndb/dns.json b/sys/src/cmd/ndb/dns.json deleted file mode 100644 index 54290e7..0000000 --- a/sys/src/cmd/ndb/dns.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "dns": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/ndb/", - "Program": "dns", - "SourceFiles": [ - "convDNS2M.c", - "convM2DNS.c", - "dblookup.c", - "dn.c", - "dnarea.c", - "dnnotify.c", - "dnresolve.c", - "dns.c", - "dnserver.c", - "dnudpserver.c", - "idn.c" - ] - } -} diff --git a/sys/src/cmd/ndb/dns.rc.build b/sys/src/cmd/ndb/dns.rc.build new file mode 100644 index 0000000..335bc10 --- /dev/null +++ b/sys/src/cmd/ndb/dns.rc.build @@ -0,0 +1,22 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + convDNS2M.c \ + convM2DNS.c \ + dblookup.c \ + dn.c \ + dnarea.c \ + dnnotify.c \ + dnresolve.c \ + dns.c \ + dnserver.c \ + dnudpserver.c \ + idn.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o dns +safemove dns $JEHANNE/arch/$ARCH/cmd/ndb +rm -f *.o diff --git a/sys/src/cmd/ndb/dnsdebug.json b/sys/src/cmd/ndb/dnsdebug.json deleted file mode 100644 index bfb8df8..0000000 --- a/sys/src/cmd/ndb/dnsdebug.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "dnsdebug": { - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Install": "/arch/$ARCH/cmd/ndb/", - "Program": "dnsdebug", - "SourceFiles": [ - "convDNS2M.c", - "convM2DNS.c", - "dblookup.c", - "dn.c", - "dnarea.c", - "dnresolve.c", - "dnserver.c", - "dnsdebug.c", - "idn.c" - ] - } -} diff --git a/sys/src/cmd/ndb/dnsdebug.rc.build b/sys/src/cmd/ndb/dnsdebug.rc.build new file mode 100644 index 0000000..471721d --- /dev/null +++ b/sys/src/cmd/ndb/dnsdebug.rc.build @@ -0,0 +1,50 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + convDNS2M.c \ + convM2DNS.c \ + dblookup.c \ + dn.c \ + dnarea.c \ + dnresolve.c \ + dnserver.c \ + dnsdebug.c \ + idn.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o dnsdebug +safemove dnsdebug $JEHANNE/arch/$ARCH/cmd/ndb +rm -f *.o *.tag.* + +$CC \ + convDNS2M.c \ + convM2DNS.c \ + dblookup.c \ + dn.c \ + dnarea.c \ + dnresolve.c \ + dnserver.c \ + dnsgetip.c \ + idn.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o dnsgetip +safemove dnsgetip $JEHANNE/arch/$ARCH/cmd/ndb +rm -f *.o *.tag.* + +compileCommands c $JEHANNE/arch/$ARCH/cmd/ndb \ + cs.c \ + csquery.c \ + dnsquery.c \ + ipquery.c \ + inform.c \ + mkdb.c \ + mkhash.c \ + mkhosts.c \ + query.c + +rm -f *.o *.tag.* diff --git a/sys/src/cmd/ndb/dnsgetip.json b/sys/src/cmd/ndb/dnsgetip.json deleted file mode 100644 index dadad6a..0000000 --- a/sys/src/cmd/ndb/dnsgetip.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "dnsdebug": { - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Install": "/arch/$ARCH/cmd/ndb/", - "Program": "dnsgetip", - "SourceFiles": [ - "convDNS2M.c", - "convM2DNS.c", - "dblookup.c", - "dn.c", - "dnarea.c", - "dnresolve.c", - "dnserver.c", - "dnsgetip.c", - "idn.c" - ] - } -} diff --git a/sys/src/cmd/ndb/dnstcp.json b/sys/src/cmd/ndb/dnstcp.json deleted file mode 100644 index 5f3b981..0000000 --- a/sys/src/cmd/ndb/dnstcp.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "dnstcp": { - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Install": "/arch/$ARCH/cmd/ndb/", - "Program": "dnstcp", - "SourceFiles": [ - "convDNS2M.c", - "convM2DNS.c", - "dblookup.c", - "dn.c", - "dnarea.c", - "dnresolve.c", - "dnserver.c", - "dnstcp.c", - "idn.c" - ] - } -} diff --git a/sys/src/cmd/ndb/dnstcp.rc.build b/sys/src/cmd/ndb/dnstcp.rc.build new file mode 100644 index 0000000..72065b1 --- /dev/null +++ b/sys/src/cmd/ndb/dnstcp.rc.build @@ -0,0 +1,20 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + convDNS2M.c \ + convM2DNS.c \ + dblookup.c \ + dn.c \ + dnarea.c \ + dnresolve.c \ + dnserver.c \ + dnstcp.c \ + idn.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o dnstcp +safemove dnstcp $JEHANNE/arch/$ARCH/cmd/ndb +rm -f *.o diff --git a/sys/src/cmd/ndb/ndb.rc.build b/sys/src/cmd/ndb/ndb.rc.build new file mode 100644 index 0000000..27dfd44 --- /dev/null +++ b/sys/src/cmd/ndb/ndb.rc.build @@ -0,0 +1,3 @@ +build dns.rc.build +build dnsdebug.rc.build +build dnstcp.rc.build diff --git a/sys/src/cmd/ns/build.json b/sys/src/cmd/ns/build.json deleted file mode 100644 index ff212ba..0000000 --- a/sys/src/cmd/ns/build.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ns": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/ns/", - "SourceFilesCmd": [ - "cat.c", - "clone.c" - ] - } -} diff --git a/sys/src/cmd/ns/ns.rc.build b/sys/src/cmd/ns/ns.rc.build new file mode 100644 index 0000000..e7e5101 --- /dev/null +++ b/sys/src/cmd/ns/ns.rc.build @@ -0,0 +1,19 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + cat.c \ + -o cat \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS +$CC \ + clone.c \ + -o clone \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS +safemove cat $JEHANNE/arch/$ARCH/cmd/ns +safemove clone $JEHANNE/arch/$ARCH/cmd/ns +rm -f *.o diff --git a/sys/src/cmd/pict/build.json b/sys/src/cmd/pict/build.json deleted file mode 100644 index 2eb363c..0000000 --- a/sys/src/cmd/pict/build.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "Cmd": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/pict/", - "SourceFiles": [ - "torgbv.c", - "totruecolor.c", - "writerawimage.c", - "readjpg.c", - "writejpg.c", - "multichan.c", - "readgif.c", - "writegif.c", - "onechan.c", - "readpng.c", - "writepng.c", - "readppm.c", - "writeppm.c", - "readtif.c", - "writetif.c", - "readyuv.c", - "readbmp.c", - "readtga.c", - "readv210.c" - ], - "SourceFilesCmd": [ - "jpg.c", - "tojpg.c", - "gif.c", - "togif.c", - "ppm.c", - "toppm.c", - "png.c", - "topng.c", - "tif.c", - "totif.c", - "yuv.c", - "ico.c", - "toico.c", - "bmp.c", - "tga.c", - "v210.c" - ] - } -} diff --git a/sys/src/cmd/rc/build.json b/sys/src/cmd/rc/build.json deleted file mode 100644 index c399cce..0000000 --- a/sys/src/cmd/rc/build.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "rc": { - "Cflags": [ - "-9" - ], - "Include": [ - "../kernel.json" - ], - "Post": [ - "rm y.tab* x.tab*" - ], - "Pre": [ - "yacc -d syn.y", - "cp y.tab.h x.tab.h" - ], - "Install": "/arch/$ARCH/cmd/", - "Program": "rc", - "SourceFiles": [ - "/sys/src/lib/jehanne/lib9.c", - "code.c", - "exec.c", - "getflags.c", - "glob.c", - "havefork.c", - "here.c", - "io.c", - "jehanne.c", - "lex.c", - "pcmd.c", - "pfnc.c", - "simple.c", - "subr.c", - "trap.c", - "tree.c", - "var.c", - "y.tab.c" - ] - } -} diff --git a/sys/src/cmd/rc/code.c b/sys/src/cmd/rc/code.c index 76963a8..815f67c 100644 --- a/sys/src/cmd/rc/code.c +++ b/sys/src/cmd/rc/code.c @@ -6,6 +6,10 @@ * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ +/* Portions of this file are Copyright (C) 9front's team. + * See /doc/license/9front-mit for details about the licensing. + * See http://code.9front.org/hg/plan9front/ for a list of authors. + */ #include "rc.h" #include "io.h" @@ -15,6 +19,7 @@ #define c0 t->child[0] #define c1 t->child[1] #define c2 t->child[2] +code *codebuf; int codep, ncode; #define emitf(x) ((void)(codep!=ncode || morecode()), codebuf[codep].f = (x), codep++) #define emiti(x) ((void)(codep!=ncode || morecode()), codebuf[codep].i = (x), codep++) @@ -73,12 +78,8 @@ fnstr(tree *t) { io *f = openstr(); void *v; - extern char nl; - char svnl = nl; - nl = ';'; pfmt(f, "%t", t); - nl = svnl; v = f->strp; f->strp = 0; closeio(f); @@ -88,12 +89,19 @@ fnstr(tree *t) void outcode(tree *t, int eflag) { + static int line; int p, q; tree *tt; + char *f; if(t==0) return; if(t->type!=NOT && t->type!=';') runq->iflast = 0; + if(t->line != line){ + line = t->line; + emitf(Xsrcline); + emiti(line); + } switch(t->type){ default: pfmt(err, "bad type %d in outcode\n", t->type); @@ -104,9 +112,11 @@ outcode(tree *t, int eflag) emitf(Xdol); break; case '"': + emitf(Xmark); emitf(Xmark); outcode(c0, eflag); - emitf(Xqdol); + emitf(Xdol); + emitf(Xqw); break; case SUB: emitf(Xmark); @@ -181,6 +191,12 @@ outcode(tree *t, int eflag) emitf(Xfn); p = emiti(0); emits(fnstr(c1)); + if((f = curfile(runq)) != nil){ + emitf(Xsrcfile); + emits(estrdup(f)); + } + emitf(Xsrcline); + emiti(runq->lexline); outcode(c1, eflag); emitf(Xunlocal); /* get rid of $* */ emitf(Xreturn); @@ -482,10 +498,11 @@ codefree(code *cp) || p->f==Xrdwr || p->f==Xasync || p->f==Xbackq || p->f==Xcase || p->f==Xfalse || p->f==Xfor || p->f==Xjump + || p->f==Xsrcline || p->f==Xsubshell || p->f==Xtrue) p++; else if(p->f==Xdup || p->f==Xpipefd) p+=2; else if(p->f==Xpipe) p+=4; - else if(p->f==Xglobs) free(p[1].s), p+=2; + else if(p->f==Xglobs || p->f==Xsrcfile) free(p[1].s), p+=2; else if(p->f==Xword || p->f==Xdelhere) free((++p)->s); else if(p->f==Xfn){ free(p[2].s); diff --git a/sys/src/cmd/rc/exec.c b/sys/src/cmd/rc/exec.c index 8c513b6..6bc41b0 100644 --- a/sys/src/cmd/rc/exec.c +++ b/sys/src/cmd/rc/exec.c @@ -6,6 +6,10 @@ * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ +/* Portions of this file are Copyright (C) 9front's team. + * See /doc/license/9front-mit for details about the licensing. + * See http://code.9front.org/hg/plan9front/ for a list of authors. + */ #include "rc.h" #include "getflags.h" @@ -23,15 +27,16 @@ start(code *c, int pc, var *local) struct thread *p = new(struct thread); p->code = codecopy(c); + p->line = runq?runq->line:0; p->pc = pc; p->argv = 0; - p->redir = p->startredir = runq?runq->redir:0; + p->redir = p->startredir = runq?runq->redir:nil; p->local = local; - p->cmdfile = 0; + p->cmdfile = nil; p->cmdfd = 0; p->eof = 0; p->iflag = 0; - p->lineno = 1; + p->lineno = runq ? runq->lineno : 1; p->ret = runq; runq = p; } @@ -132,6 +137,21 @@ pushredir(int type, int from, int to) runq->redir = rp; } +void +shuffleredir(void) +{ + redir **rr, *rp; + + rp = runq->redir; + if(rp==0) + return; + runq->redir = rp->next; + rp->next = runq->startredir; + for(rr = &runq->redir; *rr != rp->next; rr = &((*rr)->next)) + ; + *rr = rp; +} + var* newvar(char *name, var *next) { @@ -199,6 +219,8 @@ main(int argc, char *argv[]) bootstrap[i++].f = Xexit; bootstrap[i].i = 0; start(bootstrap, 1, (var *)0); + runq->cmdfile = strdup("rc"); + runq->lexline = 0; /* prime bootstrap argv */ pushlist(); argv0 = estrdup(argvcopy[0]); @@ -232,7 +254,7 @@ main(int argc, char *argv[]) * Xdelfn(name) delete function definition * Xdeltraps(names) delete named traps * Xdol(name) get variable value - * Xqdol(name) concatenate variable components + * Xqw(list) quote list, push result * Xdup[i j] dup file descriptor * Xexit rc exits with status * Xfalse{...} execute {} if false @@ -259,6 +281,8 @@ main(int argc, char *argv[]) * Xunlocal delete local variable * Xword[string] push string * Xwrite(file)[fd] open file to write + * Xsrcline[line] set current line number + * Xsrcfile[file] set current file name */ void @@ -457,6 +481,7 @@ Xreturn(void) turfredir(); while(p->argv) poplist(); codefree(p->code); + free(p->cmdfile); runq = p->ret; free(p); if(runq==0) @@ -698,19 +723,22 @@ Xdol(void) } void -Xqdol(void) +Xqw(void) { - word *a; char *s; + word *a; - if(count(runq->argv->words)!=1){ - Xerror1("variable name not singleton!"); + a = runq->argv->words; + if(a && a->next == 0){ + runq->argv->words = 0; + poplist(); + a->next = runq->argv->words; + runq->argv->words = a; return; } - s = Str(runq->argv->words); - a = vlook(s)->val; + s = list2str(a); poplist(); - Pushword(list2str(a)); + Pushword(s); } word* @@ -789,8 +817,7 @@ Xcount(void) Xerror1("variable name not singleton!"); return; } - s = runq->argv->words->word; - deglob(s); + s = Str(runq->argv->words); n = 0; for(t = s;'0'<=*t && *t<='9';t++) n = n*10+*t-'0'; if(n==0 || *t){ @@ -928,10 +955,8 @@ Xrdcmds(void) Noerror(); if(yyparse()){ if(!p->iflag || p->eof && !Eintr()){ - if(p->cmdfile) - free(p->cmdfile); closeio(p->cmdfd); - Xreturn(); /* should this be omitted? */ + Xreturn(); } else{ if(Eintr()){ @@ -949,13 +974,22 @@ Xrdcmds(void) freenodes(); } +char* +curfile(thread *p) +{ + for(; p != nil; p = p->ret) + if(p->cmdfile != nil) + return p->cmdfile; + return "unknown"; +} + void Xerror(char *s) { if(strcmp(argv0, "rc")==0 || strcmp(argv0, "/cmd/rc")==0) - pfmt(err, "rc: %s: %r\n", s); + pfmt(err, "rc:%d: %s: %r\n", runq->line, s); else - pfmt(err, "rc (%s): %s: %r\n", argv0, s); + pfmt(err, "%s:%d: %s: %r\n", curfile(runq), runq->line, s); flush(err); setstatus("error"); while(!runq->iflag) Xreturn(); @@ -965,9 +999,9 @@ void Xerror1(char *s) { if(strcmp(argv0, "rc")==0 || strcmp(argv0, "/cmd/rc")==0) - pfmt(err, "rc: %s\n", s); + pfmt(err, "rc:%d: %s\n", runq->line, s); else - pfmt(err, "rc (%s): %s\n", argv0, s); + pfmt(err, "%s:%d: %s\n", curfile(runq), runq->line, s); flush(err); setstatus("error"); while(!runq->iflag) Xreturn(); @@ -1024,3 +1058,16 @@ Xglob(void) { globlist(runq->argv->words); } + +void +Xsrcline(void) +{ + runq->line = runq->code[runq->pc++].i; +} + +void +Xsrcfile(void) +{ + free(runq->cmdfile); + runq->cmdfile = strdup(runq->code[runq->pc++].s); +} diff --git a/sys/src/cmd/rc/exec.h b/sys/src/cmd/rc/exec.h index 5cb4d44..4087a9d 100644 --- a/sys/src/cmd/rc/exec.h +++ b/sys/src/cmd/rc/exec.h @@ -6,15 +6,19 @@ * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ +/* Portions of this file are Copyright (C) 9front's team. + * See /doc/license/9front-mit for details about the licensing. + * See http://code.9front.org/hg/plan9front/ for a list of authors. + */ /* * Definitions used in the interpreter */ extern void Xappend(void), Xasync(void), Xbackq(void), Xbang(void), Xclose(void); -extern void Xconc(void), Xcount(void), Xdelfn(void), Xdol(void), Xqdol(void), Xdup(void); +extern void Xconc(void), Xcount(void), Xdelfn(void), Xdol(void), Xqw(void), Xdup(void); extern void Xexit(void), Xfalse(void), Xfn(void), Xfor(void), Xglob(void); extern void Xjump(void), Xmark(void), Xmatch(void), Xpipe(void), Xread(void); -extern void Xrdwr(void); +extern void Xrdwr(void), Xsrcline(void), Xsrcfile(void); extern void Xrdfn(void), Xunredir(void), Xstar(void), Xreturn(void), Xsubshell(void); extern void Xtrue(void), Xword(void), Xglobs(void), Xwrite(void), Xpipefd(void), Xcase(void); extern void Xlocal(void), Xunlocal(void), Xassign(void), Xsimple(void), Xpopm(void); @@ -51,12 +55,14 @@ struct redir{ struct thread{ union code *code; /* code for this thread */ int pc; /* code[pc] is the next instruction */ + int line; /* source code line */ struct list *argv; /* argument stack */ struct redir *redir; /* redirection stack */ struct redir *startredir; /* redir inheritance point */ struct var *local; /* list of local variables */ char *cmdfile; /* file name in Xrdcmd */ struct io *cmdfd; /* file descriptor for Xrdcmd */ + int lexline; /* file descriptor line */ int iflast; /* static `if not' checking */ int eof; /* is cmdfd at eof? */ int iflag; /* interactive? */ @@ -64,7 +70,7 @@ struct thread{ int pid; /* process for Xpipewait to wait for */ char status[NSTATUS]; /* status for Xpipewait */ tree *treenodes; /* tree nodes created by this process */ - thread *ret; /* who continues when this finishes */ + thread *ret; /* who continues when this finishes */ }; thread *runq; code *codecopy(code*); @@ -83,3 +89,4 @@ int execforkexec(void); void execexit(void), execshift(void); void execwait(void), execumask(void), execdot(void), execflag(void); void execfunc(var*), execcmds(io *); +char *curfile(thread*); diff --git a/sys/src/cmd/rc/fns.h b/sys/src/cmd/rc/fns.h index d617e87..c47e715 100644 --- a/sys/src/cmd/rc/fns.h +++ b/sys/src/cmd/rc/fns.h @@ -6,6 +6,10 @@ * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ +/* Portions of this file are Copyright (C) 9front's team. + * See /doc/license/9front-mit for details about the licensing. + * See http://code.9front.org/hg/plan9front/ for a list of authors. + */ void Abort(void); void Closedir(int); @@ -21,15 +25,15 @@ int Globsize(char*); int Isatty(int); void Noerror(void); int Opendir(char*); -int Read(int, void*, int); +long Read(int, void*, long); int Readdir(int, void*, int); -int Seek(int, int, int); +long Seek(int, long, long); void Trapinit(void); void Unlink(char*); void Updenv(void); void Vinit(void); int Waitfor(int, int); -int Write(int, void*, int); +long Write(int, void*, long); void addwaitpid(int); int advance(void); int back(int); @@ -46,7 +50,7 @@ void freewords(word*); word* globlist(word*); int havewaitpid(int); int idchr(int); -void inttoascii(char*, int); +void inttoascii(char*, long); void kinit(void); int mapfd(int); int match(char*, char*, int); @@ -61,9 +65,10 @@ void pushlist(void); void pushredir(int, int, int); word* pushword(char*); void readhere(void); -word* searchpath(char*); +word* searchpath(char*, char*); void setstatus(char*); void setvar(char*, word*); +void shuffleredir(void); void skipnl(void); void start(code*, int, var*); int truestatus(void); diff --git a/sys/src/cmd/rc/glob.c b/sys/src/cmd/rc/glob.c index c9b8c71..b29a8cb 100644 --- a/sys/src/cmd/rc/glob.c +++ b/sys/src/cmd/rc/glob.c @@ -6,6 +6,10 @@ * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ +/* Portions of this file are Copyright (C) 9front's team. + * See /doc/license/9front-mit for details about the licensing. + * See http://code.9front.org/hg/plan9front/ for a list of authors. + */ #include "rc.h" #include "exec.h" @@ -28,13 +32,13 @@ deglob(char *s) return b; } -int +static int globcmp(const void *s, const void *t) { return strcmp(*(char**)s, *(char**)t); } -void +static void globsort(word *left, word *right) { char **list; @@ -69,9 +73,15 @@ globdir(word *list, char *p, char *name, char *namep) { char *t, *newp; int f; - /* scan the pattern looking for a component with a metacharacter in it */ + + /* append slashes, Readdir() already filtered directories */ + while(*p=='/'){ + *namep++=*p++; + *namep='\0'; + } if(*p=='\0') return newword(name, list); + /* scan the pattern looking for a component with a metacharacter in it */ t = namep; newp = p; while(*newp){ diff --git a/sys/src/cmd/rc/havefork.c b/sys/src/cmd/rc/havefork.c index c4ff54a..0ca5de1 100644 --- a/sys/src/cmd/rc/havefork.c +++ b/sys/src/cmd/rc/havefork.c @@ -6,6 +6,10 @@ * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ +/* Portions of this file are Copyright (C) 9front's team. + * See /doc/license/9front-mit for details about the licensing. + * See http://code.9front.org/hg/plan9front/ for a list of authors. + */ #include "rc.h" #include "getflags.h" @@ -194,7 +198,8 @@ Xpipefd(void) default: addwaitpid(pid); sys_close(sidefd); - pushredir(ROPEN, mainfd, mainfd); /* isn't this a noop? */ + pushredir(ROPEN, mainfd, mainfd); + shuffleredir(); /* shuffle redir to bottom of stack for turfredir() */ strcpy(name, Fdprefix); inttoascii(name+strlen(name), mainfd); pushword(name); diff --git a/sys/src/cmd/rc/here.c b/sys/src/cmd/rc/here.c index 4d37218..665d284 100644 --- a/sys/src/cmd/rc/here.c +++ b/sys/src/cmd/rc/here.c @@ -6,6 +6,10 @@ * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ +/* Portions of this file are Copyright (C) 9front's team. + * See /doc/license/9front-mit for details about the licensing. + * See http://code.9front.org/hg/plan9front/ for a list of authors. + */ #include "rc.h" #include "exec.h" @@ -32,10 +36,13 @@ hexnum(char *p, int n) tree* heredoc(tree *tag) { - struct here *h = new(struct here); + struct here *h; - if(tag->type != WORD) + if(tag->type != WORD){ yyerror("Bad here tag"); + return nil; + } + h = new(struct here); h->next = 0; if(here) *ehere = h; diff --git a/sys/src/cmd/rc/jehanne.c b/sys/src/cmd/rc/jehanne.c index 90536b7..0aa7422 100644 --- a/sys/src/cmd/rc/jehanne.c +++ b/sys/src/cmd/rc/jehanne.c @@ -481,20 +481,20 @@ Unlink(char *name) sys_remove(name); } -int -Write(int fd, void *buf, int cnt) +long +Write(int fd, void *buf, long cnt) { return jehanne_write(fd, buf, cnt); } -int -Read(int fd, void *buf, int cnt) +long +Read(int fd, void *buf, long cnt) { return jehanne_read(fd, buf, cnt); } -int -Seek(int fd, int cnt, int whence) +long +Seek(int fd, long cnt, long whence) { return sys_seek(fd, cnt, whence); } diff --git a/sys/src/cmd/rc/lex.c b/sys/src/cmd/rc/lex.c index 1a815b5..0def5f4 100644 --- a/sys/src/cmd/rc/lex.c +++ b/sys/src/cmd/rc/lex.c @@ -6,6 +6,10 @@ * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ +/* Portions of this file are Copyright (C) 9front's team. + * See /doc/license/9front-mit for details about the licensing. + * See http://code.9front.org/hg/plan9front/ for a list of authors. + */ #include "rc.h" #include "exec.h" @@ -34,6 +38,12 @@ int future = EOF; int doprompt = 1; int inquote; int incomm; +int lastc; +int ndot; +int nerror; +int nlexpath; +int lexpathsz; + /* * Look ahead in the input stream */ @@ -48,13 +58,14 @@ nextc(void) /* * Consume the lookahead character. */ - int advance(void) { int c = nextc(); lastc = future; future = EOF; + if(c == '\n') + runq->lexline++; return c; } /* diff --git a/sys/src/cmd/rc/pcmd.c b/sys/src/cmd/rc/pcmd.c index 16f031e..7e0f9e5 100644 --- a/sys/src/cmd/rc/pcmd.c +++ b/sys/src/cmd/rc/pcmd.c @@ -6,11 +6,15 @@ * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ +/* Portions of this file are Copyright (C) 9front's team. + * See /doc/license/9front-mit for details about the licensing. + * See http://code.9front.org/hg/plan9front/ for a list of authors. + */ #include "rc.h" #include "io.h" #include "fns.h" -char nl='\n'; /* change to semicolon for bourne-proofing */ + #define c0 t->child[0] #define c1 t->child[1] #define c2 t->child[2] @@ -85,7 +89,7 @@ pcmd(io *f, tree *t) case ';': if(c0){ if(c1) - pfmt(f, "%t%c%t", c0, nl, c1); + pfmt(f, "%t\n%t", c0, c1); else pfmt(f, "%t", c0); } else pfmt(f, "%t", c1); @@ -115,6 +119,7 @@ pcmd(io *f, tree *t) break; case PIPEFD: case REDIR: + pchr(f, ' '); switch(t->rtype){ case HERE: pchr(f, '<'); diff --git a/sys/src/cmd/rc/pfnc.c b/sys/src/cmd/rc/pfnc.c index 32f9499..0d8f6e5 100644 --- a/sys/src/cmd/rc/pfnc.c +++ b/sys/src/cmd/rc/pfnc.c @@ -6,6 +6,10 @@ * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ +/* Portions of this file are Copyright (C) 9front's team. + * See /doc/license/9front-mit for details about the licensing. + * See http://code.9front.org/hg/plan9front/ for a list of authors. + */ #include "rc.h" #include "exec.h" @@ -60,7 +64,8 @@ struct{ Xglobs, "Xglobs", Xrdfn, "Xrdfn", Xsimple, "Xsimple", - Xqdol, "Xqdol", + Xqw, "Xqw", + Xsrcline, "Xsrcline", 0}; void @@ -70,8 +75,8 @@ pfnc(io *fd, thread *t) void (*fn)(void) = t->code[t->pc].f; list *a; - pfmt(fd, "pid %d cycle %p %d ", getpid(), t->code, t->pc); - for(i = 0; fname[i].f; i++) + pfmt(fd, "%s:%d: pid %d cycle %p %d ", t->cmdfile, t->line, getpid(), t->code, t->pc); + for(i = 0; fname[i].f; i++) if(fname[i].f == fn){ pstr(fd, fname[i].name); break; diff --git a/sys/src/cmd/rc/rc.h b/sys/src/cmd/rc/rc.h index 4314f04..75694c2 100644 --- a/sys/src/cmd/rc/rc.h +++ b/sys/src/cmd/rc/rc.h @@ -6,6 +6,10 @@ * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ +/* Portions of this file are Copyright (C) 9front's team. + * See /doc/license/9front-mit for details about the licensing. + * See http://code.9front.org/hg/plan9front/ for a list of authors. + */ #include #include #include @@ -41,12 +45,14 @@ struct tree{ char *str; int quoted; int iskw; + int line; tree *child[3]; tree *next; }; tree *newtree(void); tree *token(char*, int), *klook(char*), *tree1(int, tree*); tree *tree2(int, tree*, tree*), *tree3(int, tree*, tree*, tree*); +tree* treeeq(tree *c0, tree *c2); tree *mung1(tree*, tree*), *mung2(tree*, tree*, tree*); tree *mung3(tree*, tree*, tree*, tree*), *epimung(tree*, tree*); tree *simplemung(tree*), *heredoc(tree*); @@ -97,8 +103,8 @@ var *gvar[NVAR]; /* hash for globals */ #define new(type) ((type *)emalloc(sizeof(type))) -void *emalloc(int); -void *erealloc(void *, int); +void *emalloc(long); +void *erealloc(void *, long); char *estrdup(char*); #define NOFILE 128 /* should come from */ @@ -125,10 +131,11 @@ int mypid; */ #define onebyte(c) ((c&0x80)==0x00) -char **argp; -char **args; -int nerror; /* number of errors encountered during compilation */ -int doprompt; /* is it time for a prompt? */ +extern char **argp; +extern char **args; +extern int nerror; /* number of errors encountered during compilation */ +extern int doprompt; /* is it time for a prompt? */ + /* * Which fds are the reading/writing end of a pipe? * Unfortunately, this can vary from system to system. @@ -143,7 +150,8 @@ char *Rcmain, *Fdprefix; * How many dot commands have we executed? * Used to ensure that -v flag doesn't print rcmain. */ -int ndot; +extern int ndot; +extern int lastc; +extern int lastword; char *getstatus(void); -int lastc; -int lastword; + diff --git a/sys/src/cmd/rc/rc.rc.build b/sys/src/cmd/rc/rc.rc.build new file mode 100644 index 0000000..d49c5d1 --- /dev/null +++ b/sys/src/cmd/rc/rc.rc.build @@ -0,0 +1,41 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +yacc -d syn.y +cp y.tab.h x.tab.h +rm -f *.o *.tag.* +$CC \ + $JEHANNE/sys/src/lib/jehanne/lib9.c \ + code.c \ + exec.c \ + getflags.c \ + glob.c \ + havefork.c \ + here.c \ + io.c \ + jehanne.c \ + lex.c \ + pcmd.c \ + pfnc.c \ + simple.c \ + subr.c \ + trap.c \ + tree.c \ + var.c \ + y.tab.c \ + -9 \ + '-mcmodel=small' \ + -O0 \ + -fplan9-extensions \ + -fno-builtin \ + -Wall \ + -Wno-main \ + -Wno-missing-braces \ + -Wno-parentheses \ + -Wno-unknown-pragmas \ + -g \ + -ljehanne \ + -static \ + -o rc +safemove rc $JEHANNE/arch/$ARCH/cmd +rm y.tab* x.tab* diff --git a/sys/src/cmd/rc/simple.c b/sys/src/cmd/rc/simple.c index c2b15b6..bcbc7e0 100644 --- a/sys/src/cmd/rc/simple.c +++ b/sys/src/cmd/rc/simple.c @@ -6,6 +6,10 @@ * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ +/* Portions of this file are Copyright (C) 9front's team. + * See /doc/license/9front-mit for details about the licensing. + * See http://code.9front.org/hg/plan9front/ for a list of authors. + */ /* * Maybe `simple' is a misnomer. @@ -21,7 +25,14 @@ int exitnext(void){ union code *c=&runq->code[runq->pc]; - while(c->f==Xpopredir) c++; + while(1){ + if(c->f==Xpopredir || c->f==Xunlocal) + c++; + else if(c->f==Xsrcline || c->f==Xsrcfile) + c += 2; + else + break; + } return c->f==Xexit; } @@ -79,7 +90,6 @@ Xsimple(void) } } } -struct word nullpath = { "", 0}; void doredir(redir *rp) @@ -104,16 +114,18 @@ doredir(redir *rp) } word* -searchpath(char *w) +searchpath(char *w, char *v) { + static struct word nullpath = { "", 0 }; word *path; - if(strncmp(w, "/", 1)==0 - || strncmp(w, "#", 1)==0 - || strncmp(w, "./", 2)==0 - || strncmp(w, "../", 3)==0 - || (path = vlook(ENV_PATH)->val)==0) - path=&nullpath; - return path; + + if(w[0] && w[0] != '/' && w[0] != '#' && + (w[0] != '.' || (w[1] && w[1] != '/' && (w[1] != '.' || w[2] && w[2] != '/')))){ + path = vlook(v)->val; + if(path) + return path; + } + return &nullpath; } void @@ -125,7 +137,7 @@ execexec(void) return; } doredir(runq->redir); - Execute(runq->argv->words, searchpath(runq->argv->words->word)); + Execute(runq->argv->words, searchpath(runq->argv->words->word, ENV_PATH)); poplist(); Xexit(); } @@ -162,24 +174,19 @@ execcd(void) char *dir; setstatus("can't cd"); - cdpath = vlook(ENV_CDPATH)->val; switch(count(a)){ default: pfmt(err, "Usage: cd [directory]\n"); break; case 2: - if(a->next->word[0]=='/' || cdpath==0) - cdpath = &nullpath; - for(; cdpath; cdpath = cdpath->next){ + a = a->next; + for(cdpath = searchpath(a->word, ENV_CDPATH); cdpath; cdpath = cdpath->next){ if(cdpath->word[0] != '\0') - dir = smprint("%s/%s", cdpath->word, - a->next->word); + dir = smprint("%s/%s", cdpath->word, a->word); else - dir = estrdup(a->next->word); - + dir = estrdup(a->word); if(dochdir(dir) >= 0){ - if(cdpath->word[0] != '\0' && - strcmp(cdpath->word, ".") != 0) + if(cdpath->word[0] != '\0' && strcmp(cdpath->word, ".") != 0) pfmt(err, "%s\n", dir); free(dir); setstatus(""); @@ -188,7 +195,7 @@ execcd(void) free(dir); } if(cdpath==0) - pfmt(err, "Can't cd %s: %r\n", a->next->word); + pfmt(err, "Can't cd %s: %r\n", a->word); break; case 1: a = vlook(ENV_HOME)->val; @@ -199,7 +206,7 @@ execcd(void) pfmt(err, "Can't cd %s: %r\n", a->word); } else - pfmt(err, "Can't cd -- $HOME empty\n"); + pfmt(err, "Can't cd -- $%s empty\n", ENV_HOME); break; } poplist(); @@ -273,6 +280,7 @@ void execcmds(io *f) { static int first = 1; + if(first){ rdcmds[0].i = 1; rdcmds[1].f = Xrdcmds; @@ -332,6 +340,7 @@ execdot(void) } else eflagok = 1; + popword(); if(p->argv->words && strcmp(p->argv->words->word, "-i")==0){ iflag = 1; @@ -345,7 +354,7 @@ execdot(void) zero = estrdup(p->argv->words->word); popword(); fd = -1; - for(path = searchpath(zero); path; path = path->next){ + for(path = searchpath(zero, ENV_PATH); path; path = path->next){ if(path->word[0] != '\0') file = smprint("%s/%s", path->word, zero); else @@ -367,11 +376,13 @@ execdot(void) Xerror(".: can't open"); return; } + /* set up for a new command loop */ start(dotcmds, 1, (struct var *)0); pushredir(RCLOSE, fd, 0); runq->cmdfile = zero; runq->cmdfd = openfd(fd); + runq->lexline = 1; runq->iflag = iflag; runq->iflast = 0; /* push $* value */ @@ -461,7 +472,7 @@ execwhatis(void){ /* mildly wrong -- should fork before writing */ break; } if(!bp->name){ - for(path = searchpath(a->word); path; + for(path = searchpath(a->word, ENV_PATH); path; path = path->next){ if(path->word[0] != '\0') file = smprint("%s/%s", diff --git a/sys/src/cmd/rc/subr.c b/sys/src/cmd/rc/subr.c index f3a0d9a..796cfe0 100644 --- a/sys/src/cmd/rc/subr.c +++ b/sys/src/cmd/rc/subr.c @@ -6,6 +6,10 @@ * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ +/* Portions of this file are Copyright (C) 9front's team. + * See /doc/license/9front-mit for details about the licensing. + * See http://code.9front.org/hg/plan9front/ for a list of authors. + */ #include "rc.h" #include "exec.h" @@ -13,20 +17,22 @@ #include "fns.h" void * -emalloc(int n) +emalloc(long n) { void *p = malloc(n); if(p==0) panic("Can't malloc %d bytes", n); + setmalloctag(p, getcallerpc()); return p; } void* -erealloc(void *p, int n) +erealloc(void *p, long n) { p = realloc(p, n); if(p==0 && n!=0) panic("Can't realloc %d bytes\n", n); + setrealloctag(p, getcallerpc()); return p; } @@ -79,7 +85,7 @@ iacvt(int n) } void -inttoascii(char *s, int n) +inttoascii(char *s, long n) { bp = s; iacvt(n); diff --git a/sys/src/cmd/rc/syn.y b/sys/src/cmd/rc/syn.y index 051c9e8..6fea17f 100644 --- a/sys/src/cmd/rc/syn.y +++ b/sys/src/cmd/rc/syn.y @@ -17,7 +17,7 @@ struct tree *tree; }; %type line paren brace body cmdsa cmdsan assign epilog redir -%type cmd simple first word comword keyword words +%type cmd simple first word comword keyword words peq varname %type NOT FOR IN WHILE IF TWIDDLE BANG SUBSHELL SWITCH FN %type WORD REDIR DUP PIPE %% @@ -70,7 +70,9 @@ cmd: {$$=0;} | SUBSHELL cmd {$$=mung1($1, $2);} | FN words brace {$$=tree2(FN, $2, $3);} | FN words {$$=tree1(FN, $2);} +peq: varname '=' word {$$=treeeq($1, $3);} simple: first +| simple peq {$$=tree2(ARGLIST, $1, $2);} | simple word {$$=tree2(ARGLIST, $1, $2);} | simple redir {$$=tree2(ARGLIST, $1, $2);} first: comword @@ -78,11 +80,12 @@ first: comword word: keyword {lastword=1; $1->type=WORD;} | comword | word '^' word {$$=tree2('^', $1, $3);} -comword: '$' word {$$=tree1('$', $2);} +varname: '$' word {$$=tree1('$', $2);} | '$' word SUB words ')' {$$=tree2(SUB, $2, $4);} +| WORD +comword: varname | '"' word {$$=tree1('"', $2);} | COUNT word {$$=tree1(COUNT, $2);} -| WORD | '`' brace {$$=tree2('`', (struct tree*)0, $2);} | '`' word brace {$$=tree2('`', $2, $3);} | '(' words ')' {$$=tree1(PAREN, $2);} diff --git a/sys/src/cmd/rc/tree.c b/sys/src/cmd/rc/tree.c index 3933f50..c2f60a9 100644 --- a/sys/src/cmd/rc/tree.c +++ b/sys/src/cmd/rc/tree.c @@ -6,6 +6,10 @@ * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ +/* Portions of this file are Copyright (C) 9front's team. + * See /doc/license/9front-mit for details about the licensing. + * See http://code.9front.org/hg/plan9front/ for a list of authors. + */ #include "rc.h" #include "exec.h" @@ -25,6 +29,7 @@ newtree(void) t->str = 0; t->child[0] = t->child[1] = t->child[2] = 0; t->next = treenodes; + t->line = runq->lexline; treenodes = t; return t; } @@ -72,6 +77,14 @@ tree3(int type, tree *c0, tree *c1, tree *c2) return t; } +tree* +treeeq(tree *c0, tree *c2) +{ + tree *c1 = token("=", WORD); + return tree2('^', tree2('^', c0, c1), c2); +} + + tree* mung1(tree *t, tree *c0) { diff --git a/sys/src/cmd/rio/build.json b/sys/src/cmd/rio/build.json deleted file mode 100644 index 844b1bf..0000000 --- a/sys/src/cmd/rio/build.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "rio": { - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Install": "/arch/$ARCH/cmd/", - "Program": "rio", - "SourceFiles": [ - "rio.c", - "data.c", - "fsys.c", - "scrl.c", - "time.c", - "util.c", - "wctl.c", - "wind.c", - "xfid.c" - ] - } -} diff --git a/sys/src/cmd/rio/rio.rc.build b/sys/src/cmd/rio/rio.rc.build new file mode 100644 index 0000000..8e38a37 --- /dev/null +++ b/sys/src/cmd/rio/rio.rc.build @@ -0,0 +1,20 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + rio.c \ + data.c \ + fsys.c \ + scrl.c \ + time.c \ + util.c \ + wctl.c \ + wind.c \ + xfid.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o rio +safemove rio $JEHANNE/arch/$ARCH/cmd +rm -f *.o diff --git a/sys/src/cmd/sam/build.json b/sys/src/cmd/sam/build.json deleted file mode 100644 index 4bc4219..0000000 --- a/sys/src/cmd/sam/build.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "sam": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/", - "Program": "sam", - "SourceFiles": [ - "address.c", - "buff.c", - "cmd.c", - "disk.c", - "error.c", - "file.c", - "io.c", - "list.c", - "mesg.c", - "moveto.c", - "multi.c", - "plan9.c", - "rasp.c", - "regexp.c", - "sam.c", - "shell.c", - "string.c", - "sys.c", - "util.c", - "xec.c" - ] - } -} diff --git a/sys/src/cmd/sam/sam.rc.build b/sys/src/cmd/sam/sam.rc.build new file mode 100644 index 0000000..3a9384d --- /dev/null +++ b/sys/src/cmd/sam/sam.rc.build @@ -0,0 +1,31 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + address.c \ + buff.c \ + cmd.c \ + disk.c \ + error.c \ + file.c \ + io.c \ + list.c \ + mesg.c \ + moveto.c \ + multi.c \ + plan9.c \ + rasp.c \ + regexp.c \ + sam.c \ + shell.c \ + string.c \ + sys.c \ + util.c \ + xec.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o sam +safemove sam $JEHANNE/arch/$ARCH/cmd +rm -f *.o diff --git a/sys/src/cmd/samterm/build.json b/sys/src/cmd/samterm/build.json deleted file mode 100644 index 68ae93d..0000000 --- a/sys/src/cmd/samterm/build.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "samterm": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/aux", - "Program": "samterm", - "SourceFiles": [ - "flayer.c", - "icons.c", - "io.c", - "main.c", - "menu.c", - "mesg.c", - "plan9.c", - "rasp.c", - "scroll.c" - ] - } -} diff --git a/sys/src/cmd/samterm/samterm.rc.build b/sys/src/cmd/samterm/samterm.rc.build new file mode 100644 index 0000000..9156d94 --- /dev/null +++ b/sys/src/cmd/samterm/samterm.rc.build @@ -0,0 +1,20 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + flayer.c \ + icons.c \ + io.c \ + main.c \ + menu.c \ + mesg.c \ + plan9.c \ + rasp.c \ + scroll.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o samterm +safemove samterm $JEHANNE/arch/$ARCH/cmd/aux +rm -f *.o diff --git a/sys/src/cmd/sys/build.json b/sys/src/cmd/sys/build.json deleted file mode 100644 index 5c5d847..0000000 --- a/sys/src/cmd/sys/build.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "SystemTools": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/sys/", - "Oflags": [ - "-static", - "-ljehanne" - ], - "Projects": [ - "call/" - ], - "SourceFilesCmd": [ - "ctrace.c" - ] - } -} diff --git a/sys/src/cmd/sys/call/build.json b/sys/src/cmd/sys/call/build.json deleted file mode 100644 index 8badb99..0000000 --- a/sys/src/cmd/sys/call/build.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "syscall": { - "Cflags": [ - "-Wall" - ], - "Include": [ - "../../cmd.json" - ], - "Post": [ - "rm tab.h" - ], - "Pre": [ - "usyscalls tab $JEHANNE/sys/src/sysconf.json > tab.h" - ], - "Install": "/arch/$ARCH/cmd/sys/", - "Program": "call", - "SourceFiles": [ - "syscall.c" - ] - } -} diff --git a/sys/src/cmd/sys/call/call.rc.build b/sys/src/cmd/sys/call/call.rc.build new file mode 100644 index 0000000..7eba55d --- /dev/null +++ b/sys/src/cmd/sys/call/call.rc.build @@ -0,0 +1,15 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +cat tabh.rc.template | template | rc > tab.h +rm -f *.tag.* +$CC \ + syscall.c \ + -Wall \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o call +safemove call $JEHANNE/arch/$ARCH/cmd/sys +rm tab.h +rm -f *.o diff --git a/sys/src/cmd/sys/call/tabh.rc.template b/sys/src/cmd/sys/call/tabh.rc.template new file mode 100644 index 0000000..0a22e7a --- /dev/null +++ b/sys/src/cmd/sys/call/tabh.rc.template @@ -0,0 +1,25 @@ +/* + * This file is part of Jehanne. + * + * Copyright (C) 2022 Giacomo Tesio + * + * Jehanne is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3 of the License. + * + * Jehanne is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jehanne. If not, see . + */ +/* automatically generated by tabh.rc.template */ +#! ifs=' +#! ' +#! CONFIGURATION=`{sed -n '/^$/!{/^#/!p}' $JEHANNE/sys/src/sysconf/syscalls.rc.confs} +#! for (line in $CONFIGURATION){ +#! eval $line +"$NAME", (int(*)()) sys_$NAME, +#! } diff --git a/sys/src/cmd/sys/sys.rc.build b/sys/src/cmd/sys/sys.rc.build new file mode 100644 index 0000000..07a7640 --- /dev/null +++ b/sys/src/cmd/sys/sys.rc.build @@ -0,0 +1,16 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + ctrace.c \ + -o ctrace \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + -static \ + -ljehanne \ + $CMD_OFLAGS +safemove ctrace $JEHANNE/arch/$ARCH/cmd/sys +rm -f *.o + +build call diff --git a/sys/src/cmd/usb/audio/audio.rc.build b/sys/src/cmd/usb/audio/audio.rc.build new file mode 100644 index 0000000..89553ca --- /dev/null +++ b/sys/src/cmd/usb/audio/audio.rc.build @@ -0,0 +1,7 @@ +#!/cmd/rc +. $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$JEHANNE_TOOLCHAIN/cross/posix/bin/x86_64-jehanne-gcc audio.c -o audio -I../lib/ -fstack-check -fstack-protector-all -9 -g -gdwarf-2 -ggdb '-mcmodel=small' -O0 -Wall -Werror -Wno-main -Wno-missing-braces -Wno-parentheses -Wno-unknown-pragmas -L../lib/ -lusb -static -lavl -lcomplete -lcontrol -ldisk -lflate -lframe -lmemdraw -lmemlayer -lmemdraw -ldraw -lplumb -lregexp -lString -l9p -lauth -lauthsrv -lndb -lip -lsec -lauth -lmp -lthread -lbio -l9p2000 -ljehanne +safemove audio $JEHANNE/arch/$ARCH/cmd/usb +rm -f *.o diff --git a/sys/src/cmd/usb/audio/build.json b/sys/src/cmd/usb/audio/build.json deleted file mode 100644 index cce398e..0000000 --- a/sys/src/cmd/usb/audio/build.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "audio": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/usb/", - "SourceFilesCmd": [ - "audio.c" - ] - } -} diff --git a/sys/src/cmd/usb/build.json b/sys/src/cmd/usb/build.json deleted file mode 100644 index b999006..0000000 --- a/sys/src/cmd/usb/build.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "Libusb": { - "Cflags": [ - "-fasm" - ], - "Include": [ - "/sys/src/lib/lib.json" - ], - "Library": "libusb.a", - "Install": "./lib/", - "SourceFiles": [ - "lib/dev.c", - "lib/dump.c", - "lib/parse.c" - ] - }, - "USB": { - "Projects": [ - "audio/", - "disk/", - "ether/", - "joy/", - "kb/", - "ptp/", - "serial/", - "usbd/" - ], - "Post": [ - "git clean -xdf ." - ] - } -} diff --git a/sys/src/cmd/usb/cmd.json b/sys/src/cmd/usb/cmd.json deleted file mode 100644 index b01b55e..0000000 --- a/sys/src/cmd/usb/cmd.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "UsbCmd": { - "Include": [ - "/sys/src/cmd/cmd.json" - ], - "Cflags": [ - "-I../lib/" - ], - "Oflags": [ - "-L../lib/", - "-lusb" - ] - } -} diff --git a/sys/src/cmd/usb/disk/build.json b/sys/src/cmd/usb/disk/build.json deleted file mode 100644 index 553f3c0..0000000 --- a/sys/src/cmd/usb/disk/build.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "disk": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/usb/", - "Program": "disk", - "SourceFiles": [ - "disk.c", - "scsierrs.c", - "scsireq.c" - ] - } -} diff --git a/sys/src/cmd/usb/disk/disk.rc.build b/sys/src/cmd/usb/disk/disk.rc.build new file mode 100644 index 0000000..f8b4f7d --- /dev/null +++ b/sys/src/cmd/usb/disk/disk.rc.build @@ -0,0 +1,7 @@ +#!/cmd/rc +. $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$JEHANNE_TOOLCHAIN/cross/posix/bin/x86_64-jehanne-gcc disk.c scsierrs.c scsireq.c -I../lib/ -fstack-check -fstack-protector-all -9 -g -gdwarf-2 -ggdb '-mcmodel=small' -O0 -Wall -Werror -Wno-main -Wno-missing-braces -Wno-parentheses -Wno-unknown-pragmas -L../lib/ -lusb -static -lavl -lcomplete -lcontrol -ldisk -lflate -lframe -lmemdraw -lmemlayer -lmemdraw -ldraw -lplumb -lregexp -lString -l9p -lauth -lauthsrv -lndb -lip -lsec -lauth -lmp -lthread -lbio -l9p2000 -ljehanne -o disk +safemove disk $JEHANNE/arch/$ARCH/cmd/usb +rm -f *.o diff --git a/sys/src/cmd/usb/ether/build.json b/sys/src/cmd/usb/ether/build.json deleted file mode 100644 index 3f23055..0000000 --- a/sys/src/cmd/usb/ether/build.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "ether": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/usb/", - "Program": "ether", - "SourceFiles": [ - "asix.c", - "aue.c", - "cdc.c", - "ether.c", - "rndis.c", - "smsc.c", - "url.c" - ] - } -} diff --git a/sys/src/cmd/usb/ether/ether.rc.build b/sys/src/cmd/usb/ether/ether.rc.build new file mode 100644 index 0000000..ac15351 --- /dev/null +++ b/sys/src/cmd/usb/ether/ether.rc.build @@ -0,0 +1,7 @@ +#!/cmd/rc +. $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$JEHANNE_TOOLCHAIN/cross/posix/bin/x86_64-jehanne-gcc asix.c aue.c cdc.c ether.c rndis.c smsc.c url.c -I../lib/ -fstack-check -fstack-protector-all -9 -g -gdwarf-2 -ggdb '-mcmodel=small' -O0 -Wall -Werror -Wno-main -Wno-missing-braces -Wno-parentheses -Wno-unknown-pragmas -L../lib/ -lusb -static -lavl -lcomplete -lcontrol -ldisk -lflate -lframe -lmemdraw -lmemlayer -lmemdraw -ldraw -lplumb -lregexp -lString -l9p -lauth -lauthsrv -lndb -lip -lsec -lauth -lmp -lthread -lbio -l9p2000 -ljehanne -o ether +safemove ether $JEHANNE/arch/$ARCH/cmd/usb +rm -f *.o diff --git a/sys/src/cmd/usb/joy/build.json b/sys/src/cmd/usb/joy/build.json deleted file mode 100644 index 4544d7c..0000000 --- a/sys/src/cmd/usb/joy/build.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "joy": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/usb/", - "SourceFilesCmd": [ - "joy.c" - ] - } -} diff --git a/sys/src/cmd/usb/joy/joy.rc.build b/sys/src/cmd/usb/joy/joy.rc.build new file mode 100644 index 0000000..7321aca --- /dev/null +++ b/sys/src/cmd/usb/joy/joy.rc.build @@ -0,0 +1,7 @@ +#!/cmd/rc +. $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$JEHANNE_TOOLCHAIN/cross/posix/bin/x86_64-jehanne-gcc joy.c -o joy -I../lib/ -fstack-check -fstack-protector-all -9 -g -gdwarf-2 -ggdb '-mcmodel=small' -O0 -Wall -Werror -Wno-main -Wno-missing-braces -Wno-parentheses -Wno-unknown-pragmas -L../lib/ -lusb -static -lavl -lcomplete -lcontrol -ldisk -lflate -lframe -lmemdraw -lmemlayer -lmemdraw -ldraw -lplumb -lregexp -lString -l9p -lauth -lauthsrv -lndb -lip -lsec -lauth -lmp -lthread -lbio -l9p2000 -ljehanne +safemove joy $JEHANNE/arch/$ARCH/cmd/usb +rm -f *.o diff --git a/sys/src/cmd/usb/kb/build.json b/sys/src/cmd/usb/kb/build.json deleted file mode 100644 index 1201071..0000000 --- a/sys/src/cmd/usb/kb/build.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "kb": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/usb/", - "SourceFilesCmd": [ - "kb.c" - ] - } -} diff --git a/sys/src/cmd/usb/kb/kb.rc.build b/sys/src/cmd/usb/kb/kb.rc.build new file mode 100644 index 0000000..fcac99a --- /dev/null +++ b/sys/src/cmd/usb/kb/kb.rc.build @@ -0,0 +1,7 @@ +#!/cmd/rc +. $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$JEHANNE_TOOLCHAIN/cross/posix/bin/x86_64-jehanne-gcc kb.c -o kb -I../lib/ -fstack-check -fstack-protector-all -9 -g -gdwarf-2 -ggdb '-mcmodel=small' -O0 -Wall -Werror -Wno-main -Wno-missing-braces -Wno-parentheses -Wno-unknown-pragmas -L../lib/ -lusb -static -lavl -lcomplete -lcontrol -ldisk -lflate -lframe -lmemdraw -lmemlayer -lmemdraw -ldraw -lplumb -lregexp -lString -l9p -lauth -lauthsrv -lndb -lip -lsec -lauth -lmp -lthread -lbio -l9p2000 -ljehanne +safemove kb $JEHANNE/arch/$ARCH/cmd/usb +rm -f *.o diff --git a/sys/src/cmd/usb/libusb.rc.build b/sys/src/cmd/usb/libusb.rc.build new file mode 100644 index 0000000..232a525 --- /dev/null +++ b/sys/src/cmd/usb/libusb.rc.build @@ -0,0 +1,34 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + lib/dev.c \ + lib/dump.c \ + lib/parse.c \ + -fasm \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libusb.a +$AR -rs lib/libusb.a *.o +$RANLIB lib/libusb.a +rm *.o +rm -f *.o *.tag.* +$JEHANNE_TOOLCHAIN/cross/posix/bin/x86_64-jehanne-gcc lib/dev.c lib/dump.c lib/parse.c -fasm -fstack-check -fstack-protector-all -c -9 -g -gdwarf-2 -ggdb '-mcmodel=small' -O0 -Wall -Werror -Wno-main -Wno-missing-braces -Wno-parentheses -Wno-unknown-pragmas +prependLibraryName libusb.a +$JEHANNE_TOOLCHAIN/cross/posix/bin/x86_64-jehanne-ar -rs lib/libusb.a libusb.a-dev.o libusb.a-dump.o libusb.a-parse.o +$JEHANNE_TOOLCHAIN/cross/posix/bin/x86_64-jehanne-ranlib lib/libusb.a +rm *.o +rm -f *.o *.tag.* +$JEHANNE_TOOLCHAIN/cross/posix/bin/x86_64-jehanne-gcc lib/dev.c lib/dump.c lib/parse.c -fasm -fstack-check -fstack-protector-all -c -9 -g -gdwarf-2 -ggdb '-mcmodel=small' -O0 -Wall -Werror -Wno-main -Wno-missing-braces -Wno-parentheses -Wno-unknown-pragmas +prependLibraryName libusb.a +$JEHANNE_TOOLCHAIN/cross/posix/bin/x86_64-jehanne-ar -rs lib/libusb.a libusb.a-dev.o libusb.a-dump.o libusb.a-parse.o +$JEHANNE_TOOLCHAIN/cross/posix/bin/x86_64-jehanne-ranlib lib/libusb.a +rm *.o +rm -f *.o *.tag.* +$JEHANNE_TOOLCHAIN/cross/posix/bin/x86_64-jehanne-gcc lib/dev.c lib/dump.c lib/parse.c -fasm -fstack-check -fstack-protector-all -c -9 -g -gdwarf-2 -ggdb '-mcmodel=small' -O0 -Wall -Werror -Wno-main -Wno-missing-braces -Wno-parentheses -Wno-unknown-pragmas +prependLibraryName libusb.a +$JEHANNE_TOOLCHAIN/cross/posix/bin/x86_64-jehanne-ar -rs lib/libusb.a libusb.a-dev.o libusb.a-dump.o libusb.a-parse.o +$JEHANNE_TOOLCHAIN/cross/posix/bin/x86_64-jehanne-ranlib lib/libusb.a +rm *.o diff --git a/sys/src/cmd/usb/ptp/build.json b/sys/src/cmd/usb/ptp/build.json deleted file mode 100644 index 12a2132..0000000 --- a/sys/src/cmd/usb/ptp/build.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "ptp": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/usb/", - "SourceFilesCmd": [ - "ptp.c" - ] - } -} diff --git a/sys/src/cmd/usb/ptp/ptp.rc.build b/sys/src/cmd/usb/ptp/ptp.rc.build new file mode 100644 index 0000000..f8f16f9 --- /dev/null +++ b/sys/src/cmd/usb/ptp/ptp.rc.build @@ -0,0 +1,7 @@ +#!/cmd/rc +. $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$JEHANNE_TOOLCHAIN/cross/posix/bin/x86_64-jehanne-gcc ptp.c -o ptp -I../lib/ -fstack-check -fstack-protector-all -9 -g -gdwarf-2 -ggdb '-mcmodel=small' -O0 -Wall -Werror -Wno-main -Wno-missing-braces -Wno-parentheses -Wno-unknown-pragmas -L../lib/ -lusb -static -lavl -lcomplete -lcontrol -ldisk -lflate -lframe -lmemdraw -lmemlayer -lmemdraw -ldraw -lplumb -lregexp -lString -l9p -lauth -lauthsrv -lndb -lip -lsec -lauth -lmp -lthread -lbio -l9p2000 -ljehanne +safemove ptp $JEHANNE/arch/$ARCH/cmd/usb +rm -f *.o diff --git a/sys/src/cmd/usb/serial/build.json b/sys/src/cmd/usb/serial/build.json deleted file mode 100644 index e6917f6..0000000 --- a/sys/src/cmd/usb/serial/build.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "serial": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/usb/", - "Program": "serial", - "SourceFiles": [ - "ftdi.c", - "prolific.c", - "serial.c", - "silabs.c", - "ucons.c" - ] - } -} diff --git a/sys/src/cmd/usb/serial/serial.rc.build b/sys/src/cmd/usb/serial/serial.rc.build new file mode 100644 index 0000000..7995a2a --- /dev/null +++ b/sys/src/cmd/usb/serial/serial.rc.build @@ -0,0 +1,7 @@ +#!/cmd/rc +. $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$JEHANNE_TOOLCHAIN/cross/posix/bin/x86_64-jehanne-gcc ftdi.c prolific.c serial.c silabs.c ucons.c -I../lib/ -fstack-check -fstack-protector-all -9 -g -gdwarf-2 -ggdb '-mcmodel=small' -O0 -Wall -Werror -Wno-main -Wno-missing-braces -Wno-parentheses -Wno-unknown-pragmas -L../lib/ -lusb -static -lavl -lcomplete -lcontrol -ldisk -lflate -lframe -lmemdraw -lmemlayer -lmemdraw -ldraw -lplumb -lregexp -lString -l9p -lauth -lauthsrv -lndb -lip -lsec -lauth -lmp -lthread -lbio -l9p2000 -ljehanne -o serial +safemove serial $JEHANNE/arch/$ARCH/cmd/usb +rm -f *.o diff --git a/sys/src/cmd/usb/usb.rc.build b/sys/src/cmd/usb/usb.rc.build new file mode 100644 index 0000000..82f0afa --- /dev/null +++ b/sys/src/cmd/usb/usb.rc.build @@ -0,0 +1,14 @@ +#!/cmd/rc + +build libusb.rc.build + +build audio/ +build disk/ +build ether/ +build joy/ +build kb/ +build ptp/ +build serial/ +build usbd/ + +git clean -xdf . diff --git a/sys/src/cmd/usb/usbd/build.json b/sys/src/cmd/usb/usbd/build.json deleted file mode 100644 index 4e1b31a..0000000 --- a/sys/src/cmd/usb/usbd/build.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "usbd": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/usb/", - "Program": "usbd", - "SourceFiles": [ - "hname.c", - "hub.c", - "usbd.c" - ] - } -} diff --git a/sys/src/cmd/usb/usbd/usbd.rc.build b/sys/src/cmd/usb/usbd/usbd.rc.build new file mode 100644 index 0000000..5874066 --- /dev/null +++ b/sys/src/cmd/usb/usbd/usbd.rc.build @@ -0,0 +1,7 @@ +#!/cmd/rc +. $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$JEHANNE_TOOLCHAIN/cross/posix/bin/x86_64-jehanne-gcc hname.c hub.c usbd.c -I../lib/ -fstack-check -fstack-protector-all -9 -g -gdwarf-2 -ggdb '-mcmodel=small' -O0 -Wall -Werror -Wno-main -Wno-missing-braces -Wno-parentheses -Wno-unknown-pragmas -L../lib/ -lusb -static -lavl -lcomplete -lcontrol -ldisk -lflate -lframe -lmemdraw -lmemlayer -lmemdraw -ldraw -lplumb -lregexp -lString -l9p -lauth -lauthsrv -lndb -lip -lsec -lauth -lmp -lthread -lbio -l9p2000 -ljehanne -o usbd +safemove usbd $JEHANNE/arch/$ARCH/cmd/usb +rm -f *.o diff --git a/sys/src/cmd/vt.rc.build b/sys/src/cmd/vt.rc.build new file mode 100644 index 0000000..46863fd --- /dev/null +++ b/sys/src/cmd/vt.rc.build @@ -0,0 +1,5 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +rm -f *.o diff --git a/sys/src/cmd/vt/build.json b/sys/src/cmd/vt/build.json deleted file mode 100644 index c17e8bc..0000000 --- a/sys/src/cmd/vt/build.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "vt": { - "Include": [ - "../cmd.json" - ], - "Install": "/arch/$ARCH/cmd/", - "Program": "vt", - "SourceFiles": [ - "main.c", - "vt.c", - "fs.c" - ] - } -} diff --git a/sys/src/cmd/vt/vt.rc.build b/sys/src/cmd/vt/vt.rc.build new file mode 100644 index 0000000..2e5583f --- /dev/null +++ b/sys/src/cmd/vt/vt.rc.build @@ -0,0 +1,14 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + main.c \ + vt.c \ + fs.c \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + $CMD_OFLAGS \ + -o vt +safemove vt $JEHANNE/arch/$ARCH/cmd +rm -f *.o diff --git a/sys/src/kern/amd64/amd64.rc.build b/sys/src/kern/amd64/amd64.rc.build new file mode 100644 index 0000000..473546c --- /dev/null +++ b/sys/src/kern/amd64/amd64.rc.build @@ -0,0 +1,433 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +git clean -xdf ./ + + +CONF=Amd64CPU +CONFFILE=`{pwd} +build ../boot/ +build inith.rc.build +DIR_TO_CLEAN=`{pwd} + + +cat ../build/ksyscalls.rc.template | template | rc | sed 's/ ,/,/g; s/ )/)/g' > systab.c +cat ../build/errstrh.rc.template | template | rc > errstr.h +cat ./createSIPIHeader.rc |rc +cat ../build/errorh.rc.template | template | rc > ../port/error.h + +if ( test -d ramdisk ) rm -fr ramdisk +mkdir ramdisk + +CMD_DIR=$JEHANNE/arch/$ARCH/cmd +RAMDISK=( \ + $CMD_DIR/disk/rofs \ +) + +for (file in $RAMDISK) { + NAME=`{basename $file} + $STRIP -o ./ramdisk/$NAME $file +} + +DEVICES=( \ + arch \ + bridge \ + cap \ + cons \ + dup \ + draw \ + env \ + ether \ + ip \ + kprof \ + kbd \ + mouse \ + ninep \ + pci \ + pipe \ + proc \ + root \ + rtc \ + sd \ + self \ + shr \ + srv \ + ssl \ + tls \ + uart \ + usb \ + vga \ +) +LINKS=( \ + ether8139 \ + ether8169 \ + ether82557 \ + ether82563 \ + etherigbe \ + ethermedium \ + loopbackmedium \ + netdevmedium \ + usbuhci \ + usbohci \ + usbehci \ +) +PROTOCOLS=( \ + tcp \ + udp \ + ipifc \ + icmp \ + icmp6 \ + gre \ +) +SDINTERFACES=( \ + sdata \ + sdiahci \ +) +UARTS=( \ + i8250 \ + pci \ +) + +VGA=(vgavesa) + +cat ../build/kernelconf.rc.template | template | rc > autogenerated.c + +$CC \ + autogenerated.c \ + sdata.c \ + cga.c \ + usbehcipc.c \ + usbohci.c \ + usbuhci.c \ + bios32.c \ + devether.c \ + devrtc.c \ + devkbd.c \ + ether8139.c \ + ether8169.c \ + ether82557.c \ + ether82563.c \ + etherigbe.c \ + ethermii.c \ + etherm10g.c \ + pci.c \ + sdiahci.c \ + sdscsi.c \ + uarti8250.c \ + uartpci.c \ + entry.S \ + ec.c \ + l64v.S \ + l64fpu.S \ + cpuidamd64.S \ + l64idt.S \ + l64vsyscall.S \ + acpi.c \ + arch.c \ + archmp.c \ + devarch.c \ + fpu.c \ + hpet.c \ + i8253.c \ + i8259.c \ + lapic.c \ + main.c \ + memory.c \ + mmu.c \ + mp.c \ + msi.c \ + mtrr.c \ + multiboot.c \ + squidboy.c \ + syscall.c \ + systab.c \ + trap.c \ + ../port/devdraw.c \ + ../port/devmouse.c \ + ../port/swcursor.c \ + vgavesa.c \ + screen.c \ + devvga.c \ + mouse.c \ + vga.c \ + vgax.c \ + ../ip/arp.c \ + ../ip/chandial.c \ + ../ip/devip.c \ + ../ip/ethermedium.c \ + ../ip/gre.c \ + ../ip/icmp6.c \ + ../ip/icmp.c \ + ../ip/ipaux.c \ + ../ip/ip.c \ + ../ip/ipifc.c \ + ../ip/iproute.c \ + ../ip/ipv6.c \ + ../ip/loopbackmedium.c \ + ../ip/netdevmedium.c \ + ../ip/netlog.c \ + ../ip/nullmedium.c \ + ../ip/pktmedium.c \ + ../ip/ptclbsum.c \ + ../ip/tcp.c \ + ../ip/udp.c \ + ../port/umem/pages.c \ + ../port/umem/raw.c \ + ../port/umem/segments.c \ + ../port/umem/images.c \ + ../port/alarm.c \ + ../port/alloc.c \ + ../port/allocb.c \ + ../port/awake.c \ + ../port/chan.c \ + ../port/debug.c \ + ../port/dev.c \ + ../port/dev9p.c \ + ../port/devbridge.c \ + ../port/devcap.c \ + ../port/devcons.c \ + ../port/devdup.c \ + ../port/devenv.c \ + ../port/devfs.c \ + ../port/devkprof.c \ + ../port/devpci.c \ + ../port/devpipe.c \ + ../port/devproc.c \ + ../port/devroot.c \ + ../port/devsd.c \ + ../port/devself.c \ + ../port/devshr.c \ + ../port/devsrv.c \ + ../port/devssl.c \ + ../port/devtab.c \ + ../port/devtls.c \ + ../port/devtrace.c \ + ../port/devuart.c \ + ../port/devusb.c \ + ../port/elf64.c \ + ../port/fault.c \ + ../port/getput.c \ + ../port/log.c \ + ../port/taslock.c \ + ../port/mul64fract.c \ + ../port/net.c \ + ../port/netif.c \ + ../port/parse.c \ + ../port/pgrp.c \ + ../port/portclock.c \ + ../port/print.c \ + ../port/proc.c \ + ../port/ps.c \ + ../port/qio.c \ + ../port/qlock.c \ + ../port/random.c \ + ../port/rebootcmd.c \ + ../port/ref.c \ + ../port/sysauth.c \ + ../port/syscallfmt.c \ + ../port/sysfile.c \ + ../port/sysproc.c \ + ../port/tod.c \ + ../port/uidgid.c \ + ../port/usbehci.c \ + ../port/xalloc.c \ + -DKERNEL \ + '-DKERNDATE=1433623937' \ + -9 \ + -c \ + -I. \ + -I$JEHANNE/sys/src/lib/jehanne \ + '-mcmodel=kernel' \ + -O0 \ + -static \ + -fplan9-extensions \ + -mno-red-zone \ + -fstack-protector-all \ + -ffreestanding \ + -fno-builtin \ + -g \ + -fvar-tracking \ + -fvar-tracking-assignments \ + -ffixed-r14 \ + -ffixed-r15 \ + -Wall \ + -W \ + -Wno-sign-compare \ + -Wno-missing-field-initializers \ + -Wno-unused-parameter \ + -Wno-missing-braces \ + -Wno-parentheses \ + -Wno-unknown-pragmas \ + -fasm +$LD -o jehanne \ + autogenerated.o \ + sdata.o \ + cga.o \ + usbehcipc.o \ + usbohci.o \ + usbuhci.o \ + bios32.o \ + devether.o \ + devrtc.o \ + devkbd.o \ + ether8139.o \ + ether8169.o \ + ether82557.o \ + ether82563.o \ + etherigbe.o \ + ethermii.o \ + etherm10g.o \ + pci.o \ + sdiahci.o \ + sdscsi.o \ + uarti8250.o \ + uartpci.o \ + entry.o \ + ec.o \ + l64v.o \ + l64fpu.o \ + cpuidamd64.o \ + l64idt.o \ + l64vsyscall.o \ + acpi.o \ + arch.o \ + archmp.o \ + devarch.o \ + fpu.o \ + hpet.o \ + i8253.o \ + i8259.o \ + lapic.o \ + main.o \ + memory.o \ + mmu.o \ + mp.o \ + msi.o \ + mtrr.o \ + multiboot.o \ + squidboy.o \ + syscall.o \ + systab.o \ + trap.o \ + devdraw.o \ + devmouse.o \ + swcursor.o \ + vgavesa.o \ + screen.o \ + devvga.o \ + mouse.o \ + vga.o \ + vgax.o \ + arp.o \ + chandial.o \ + devip.o \ + ethermedium.o \ + gre.o \ + icmp6.o \ + icmp.o \ + ipaux.o \ + ip.o \ + ipifc.o \ + iproute.o \ + ipv6.o \ + loopbackmedium.o \ + netdevmedium.o \ + netlog.o \ + nullmedium.o \ + pktmedium.o \ + ptclbsum.o \ + tcp.o \ + udp.o \ + pages.o \ + raw.o \ + segments.o \ + images.o \ + alarm.o \ + alloc.o \ + allocb.o \ + awake.o \ + chan.o \ + debug.o \ + dev.o \ + dev9p.o \ + devbridge.o \ + devcap.o \ + devcons.o \ + devdup.o \ + devenv.o \ + devfs.o \ + devkprof.o \ + devpci.o \ + devpipe.o \ + devproc.o \ + devroot.o \ + devsd.o \ + devself.o \ + devshr.o \ + devsrv.o \ + devssl.o \ + devtab.o \ + devtls.o \ + devtrace.o \ + devuart.o \ + devusb.o \ + elf64.o \ + fault.o \ + getput.o \ + log.o \ + taslock.o \ + mul64fract.o \ + net.o \ + netif.o \ + parse.o \ + pgrp.o \ + portclock.o \ + print.o \ + proc.o \ + ps.o \ + qio.o \ + qlock.o \ + random.o \ + rebootcmd.o \ + ref.o \ + sysauth.o \ + syscallfmt.o \ + sysfile.o \ + sysproc.o \ + tod.o \ + uidgid.o \ + usbehci.o \ + xalloc.o \ + -z 'max-page-size=0x1000' \ + -nostdlib -T kernel.ld -g \ + $JEHANNE/arch/$ARCH/lib/klibmemlayer.a \ + $JEHANNE/arch/$ARCH/lib/klibmemdraw.a \ + $JEHANNE/arch/$ARCH/lib/klibdraw.a \ + $JEHANNE/arch/$ARCH/lib/klibip.a \ + $JEHANNE/arch/$ARCH/lib/klibc.a \ + $JEHANNE/arch/$ARCH/lib/klib9p2000.a \ + $JEHANNE/arch/$ARCH/lib/klibsec.a \ + $JEHANNE/arch/$ARCH/lib/klibmp.a \ + $JEHANNE/arch/$ARCH/lib/klibaml.a +safemove jehanne $JEHANNE/arch/$ARCH/kern + +cd $JEHANNE/arch/$ARCH/kern + +# dump assembly +$OBJDUMP -S jehanne > jehanne.asm + +# prepare multiboot kernel (32bit only) +$OBJCOPY -I elf64-x86-64 -O elf32-i386 jehanne jehanne.32bit +#cd $JEHANNE/arch/$ARCH/kern; cp jehanne.32bit $JEHANNE/cfg/pxe/tftpboot + +# create initial ram disk +KERNDIR=$JEHANNE/hacking/bin/ +KERNEL=workhorse.32bit + +find $JEHANNE/arch/$ARCH/cmd -type f | xargs -n 1 strip +strip $JEHANNE/arch/$ARCH/kern/jehanne.32bit +echo /sys/src/kern/boot/createInitRD|runqemu + + +cd $DIR_TO_CLEAN +#git clean -xdf ../ diff --git a/sys/src/kern/amd64/boot-methods.rc.confs b/sys/src/kern/amd64/boot-methods.rc.confs new file mode 100644 index 0000000..1d5f2be --- /dev/null +++ b/sys/src/kern/amd64/boot-methods.rc.confs @@ -0,0 +1,3 @@ +METHOD=tcp ARGS='' +METHOD=rc ARGS='' +METHOD=local ARGS='' diff --git a/sys/src/kern/amd64/build.json b/sys/src/kern/amd64/build.json deleted file mode 100644 index 192406e..0000000 --- a/sys/src/kern/amd64/build.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "A.Kernel": { - "Env": [ - "CONF=Amd64CPU" - ], - "Include": [ - "core.json", - "devdraw.json", - "../ip/include.json", - "../port/include.json" - ], - "Kernel": { - "Config": { - "Code": [ - "int cpuserver = 1;", - "uint32_t kerndate = 1;", - "int printallsyscalls;" - ], - "Dev": [ - "arch", - "bridge", - "cap", - "cons", - "draw", - "dup", - "env", - "ether", - "ip", - "kprof", - "kbd", - "ninep", - "pci", - "pipe", - "proc", - "root", - "rtc", - "sd", - "self", - "shr", - "srv", - "ssl", - "tls", - "uart", - "usb" - ], - "Ip": [ - "tcp", - "udp", - "ipifc", - "icmp", - "icmp6", - "gre" - ], - "Link": [ - "ether8139", - "ether8169", - "ether82557", - "ether82563", - "etherigbe", - "ethermedium", - "loopbackmedium", - "netdevmedium", - "usbuhci", - "usbohci", - "usbehci" - ], - "Sd": [ - "sdata", - "sdiahci" - ], - "Uart": [ - "i8250", - "pci" - ], - "VGA": [ - ] - }, - "Ramfiles": { - "rofs": "/arch/$ARCH/cmd/disk/rofs" - }, - "Systab": "/sys/src/lib/jehanne/9syscall/sys.h" - }, - "Program": "jehanne", - "Install": "/arch/$ARCH/kern/", - "SourceFiles": [ - "autogenerated.c", - "sdata.c", - "cga.c", - "usbehcipc.c", - "usbohci.c", - "usbuhci.c" - ] - }, - "B.AssemblyDump": { - "Pre": [ - "cd $JEHANNE/arch/$ARCH/kern; OBJDUMP=objdump; $TOOLPREFIX$OBJDUMP -S jehanne > jehanne.asm" - ] - }, - "C.Multiboot": { - "Pre": [ - "cd $JEHANNE/arch/$ARCH/kern; OBJCOPY=objcopy; $TOOLPREFIX$OBJCOPY -I elf64-x86-64 -O elf32-i386 jehanne jehanne.32bit", - "#cd $JEHANNE/arch/$ARCH/kern; cp jehanne.32bit $JEHANNE/cfg/pxe/tftpboot" - ] - }, - "D.InitRD": { - "Env": [ - "KERNDIR=$JEHANNE/hacking/bin/", - "KERNEL=workhorse.32bit" - ], - "Pre": [ - "#find $JEHANNE/arch/$ARCH/cmd -type f | xargs -n 1 strip", - "strip $JEHANNE/arch/$ARCH/kern/jehanne.32bit", - "echo /sys/src/kern/boot/createInitRD|runqemu" - ] - }, - "E.Cleanup": { - "Post": [ - "git clean -xdf ../" - ] - } -} diff --git a/sys/src/kern/amd64/clean.json b/sys/src/kern/amd64/clean.json deleted file mode 100644 index 9a41abe..0000000 --- a/sys/src/kern/amd64/clean.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "clean": { - "Pre": [ - "git clean -xdf ./" - ] - } -} diff --git a/sys/src/kern/amd64/core.json b/sys/src/kern/amd64/core.json deleted file mode 100644 index e4d1a8a..0000000 --- a/sys/src/kern/amd64/core.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "core": { - "Kernel" : { - "CodeFile": "autogenerated.c" - }, - "Cflags": [ - "-DKERNEL", - "-DKERNDATE=1433623937", - "-9", - "-c", - "-I.", - "-I$JEHANNE/sys/src/lib/jehanne", - "-mcmodel=kernel", - "-O0", - "-static", - "-fplan9-extensions", - "-mno-red-zone", - "-fstack-protector-all", - "-ffreestanding", - "-fno-builtin", - "-g", - "-fvar-tracking", - "-fvar-tracking-assignments", - "-ffixed-r14", - "-ffixed-r15", - "-Wall", - "-W", - "-Wno-sign-compare", - "-Wno-missing-field-initializers", - "-Wno-unused-parameter", - "-Wno-missing-braces", - "-Wno-parentheses", - "-Wno-unknown-pragmas" - ], - "Libs": [ - "/arch/$ARCH/lib/klibmemlayer.a", - "/arch/$ARCH/lib/klibmemdraw.a", - "/arch/$ARCH/lib/klibdraw.a", - "/arch/$ARCH/lib/klibip.a", - "/arch/$ARCH/lib/klibc.a", - "/arch/$ARCH/lib/klib9p2000.a", - "/arch/$ARCH/lib/klibsec.a", - "/arch/$ARCH/lib/klibmp.a", - "/arch/$ARCH/lib/klibaml.a" - ], - "Oflags": [ - "-z", - "max-page-size=0x1000", - "-nostdlib", - "-g", - "-T", - "kernel.ld" - ], - "Pre": [ - "ksyscalls $JEHANNE/sys/src/sysconf.json > systab.c", - "mksys -o errstr.h '-mode=errstr.h' $JEHANNE/sys/src/sysconf.json", - "./createSIPIHeader.sh" - ], - "Projects": [ - "clean.json", - "../boot/build.json", - "inith.json" - ], - "SourceFiles": [ - "bios32.c", - "devether.c", - "devrtc.c", - "devkbd.c", - "ether8139.c", - "ether8169.c", - "ether82557.c", - "ether82563.c", - "etherigbe.c", - "ethermii.c", - "etherm10g.c", - "pci.c", - "sdiahci.c", - "sdscsi.c", - "uarti8250.c", - "uartpci.c", - "entry.S", - "ec.c", - "l64v.S", - "l64fpu.S", - "cpuidamd64.S", - "l64idt.S", - "l64vsyscall.S", - "acpi.c", - "arch.c", - "archmp.c", - "devarch.c", - "fpu.c", - "hpet.c", - "i8253.c", - "i8259.c", - "lapic.c", - "main.c", - "memory.c", - "mmu.c", - "mp.c", - "msi.c", - "mtrr.c", - "multiboot.c", - "squidboy.c", - "syscall.c", - "systab.c", - "trap.c" - ] - } -} diff --git a/sys/src/kern/amd64/createSIPIHeader.rc b/sys/src/kern/amd64/createSIPIHeader.rc new file mode 100755 index 0000000..f79ff47 --- /dev/null +++ b/sys/src/kern/amd64/createSIPIHeader.rc @@ -0,0 +1,13 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +cd $JEHANNE/sys/src/kern/amd64 + +$CC -c -O0 -static -fplan9-extensions -mno-red-zone -ffreestanding -fno-builtin '-mcmodel=kernel' l64sipi.S +$LD -Ttext 0x00003000 -e 0x00003000 l64sipi.o -o l64sipi +$OBJCOPY -O binary -j .text l64sipi l64sipi.out + +echo 'uint8_t sipihandler[]={' > sipi.h +cat l64sipi.out | hexdump -v -e '7/1 "0x%02x, " 1/1 " 0x%02x,\n"' | sed '$s/0x ,/0x00,/g'>> sipi.h +echo '};' >> sipi.h +#rm l64sipi.out diff --git a/sys/src/kern/amd64/devdraw.json b/sys/src/kern/amd64/devdraw.json deleted file mode 100644 index 88d68ce..0000000 --- a/sys/src/kern/amd64/devdraw.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "DrawingModules": { - "Kernel": { - "Config": { - "Dev": [ - "mouse", - "vga" - ], - "VGA": [ - "vgavesa" - ] - } - }, - "SourceFiles": [ - "../port/devdraw.c", - "../port/devmouse.c", - "../port/swcursor.c", - "vgavesa.c", - "screen.c", - "devvga.c", - "mouse.c", - "vga.c", - "vgax.c" - ] - } -} diff --git a/sys/src/kern/amd64/inith.json b/sys/src/kern/amd64/inith.json deleted file mode 100644 index 0792acd..0000000 --- a/sys/src/kern/amd64/inith.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "inith": { - "Cflags": [ - "-9", - "-g", - "-Wall", - "-Wno-missing-braces", - "-Wno-parentheses", - "-Wno-unknown-pragmas", - "-O0", - "-static", - "-fplan9-extensions", - "-ffreestanding", - "-fno-builtin", - "-Tinit.ld", - "-mcmodel=small" - ], - "Libs": [ - "/arch/$ARCH/lib/libjehanne.a" - ], - "Post": [ - "export TOOL=strip && $TOOLPREFIX$TOOL init", - "elf2c init > init.h" - ], - "Program": "init", - "SourceFiles": [ - "init9.c", - "../port/initcode.c" - ] - } -} diff --git a/sys/src/kern/amd64/inith.rc.build b/sys/src/kern/amd64/inith.rc.build new file mode 100644 index 0000000..68263e2 --- /dev/null +++ b/sys/src/kern/amd64/inith.rc.build @@ -0,0 +1,26 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +# user space bootstrapper (first userspace program run) +$CC \ + init9.c \ + ../port/initcode.c \ + -9 \ + -g \ + -Wall \ + -Wno-missing-braces \ + -Wno-parentheses \ + -Wno-unknown-pragmas \ + -O0 \ + -static \ + -fplan9-extensions \ + -ffreestanding \ + -fno-builtin \ + -Tinit.ld \ + '-mcmodel=small' \ + -ljehanne \ + -o init +$STRIP init + +TARGET=init +cat ../build/inith.rc.template |template|rc > init.h diff --git a/sys/src/kern/amd64/laptop.json b/sys/src/kern/amd64/laptop.json deleted file mode 100644 index c16218e..0000000 --- a/sys/src/kern/amd64/laptop.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "A.Kernel": { - "Env": [ - "CONF=Amd64CPU" - ], - "Include": [ - "core.json", - "devdraw.json", - "../ip/include.json", - "../port/include.json" - ], - "Kernel": { - "Config": { - "Code": [ - "int cpuserver = 1;", - "uint32_t kerndate = 1;", - "int printallsyscalls;" - ], - "Dev": [ - "arch", - "bridge", - "cap", - "cons", - "draw", - "dup", - "env", - "ether", - "ip", - "kprof", - "ninep", - "pci", - "pipe", - "proc", - "root", - "rtc", - "sd", - "shr", - "srv", - "ssl", - "tls", - "usb" - ], - "Ip": [ - "tcp", - "udp", - "ipifc", - "icmp", - "icmp6", - "gre" - ], - "Link": [ - "ether8139", - "ether8169", - "ether82557", - "ether82563", - "etherigbe", - "ethermedium", - "loopbackmedium", - "netdevmedium", - "usbuhci", - "usbohci", - "usbehci" - ], - "Sd": [ - "sdiahci" - ], - "Uart": [ - "pci" - ], - "VGA": [ - ] - }, - "Ramfiles": { - "rofs": "/arch/$ARCH/cmd/disk/rofs" - }, - "Systab": "/sys/src/lib/jehanne/9syscall/sys.h" - }, - "Post": [ - "#strip $JEHANNE/arch/$ARCH/kern/jehanne" - ], - "Program": "jehanne", - "Install": "/arch/$ARCH/kern/", - "SourceFiles": [ - "autogenerated.c", - "cga.c", - "usbehcipc.c", - "usbohci.c", - "usbuhci.c" - ] - }, - "C.Multiboot": { - "Pre": [ - "cd $JEHANNE/arch/$ARCH/kern; OBJCOPY=objcopy; $TOOLPREFIX$OBJCOPY -I elf64-x86-64 -O elf32-i386 jehanne jehanne.32bit", - "#cd $JEHANNE/arch/$ARCH/kern; cp jehanne.32bit $JEHANNE/cfg/pxe/tftpboot" - ] - }, - "D.InitRD": { - "Env": [ - "KERNDIR=$JEHANNE/hacking/bin/", - "KERNEL=workhorse.32bit" - ], - "Pre": [ - "find $JEHANNE/arch/$ARCH/cmd -type f | xargs -n 1 strip", - "echo /sys/src/kern/boot/createInitRD|runqemu" - ] - }, - "E.Cleanup": { - "Post": [ - "git clean -xdf ../" - ] - } -} diff --git a/sys/src/kern/amd64/ramdisk/rofs b/sys/src/kern/amd64/ramdisk/rofs new file mode 100755 index 0000000000000000000000000000000000000000..46033a45146c294d70d1168c85401986058255b8 GIT binary patch literal 121864 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 systab.c +cat ../build/errstrh.rc.template | template | rc > errstr.h +cat ./createSIPIHeader.rc |rc +cat ../build/errorh.rc.template | template | rc > ../port/error.h + +if ( test -d ramdisk ) rm -fr ramdisk +mkdir ramdisk + +CMD_DIR=$JEHANNE/arch/$ARCH/cmd +RAMDISK=( \ + $CMD_DIR/mkdir \ + $CMD_DIR/test \ + $CMD_DIR/sleep \ + $CMD_DIR/bind \ + $CMD_DIR/disk/mkrofs \ + $CMD_DIR/disk/rofs \ + $CMD_DIR/cat \ + $CMD_DIR/date \ + $CMD_DIR/echo \ + $CMD_DIR/auth/factotum \ + $CMD_DIR/disk/fdisk \ + $CMD_DIR/ip/ipconfig \ + $CMD_DIR/ls \ + $CMD_DIR/mount \ + $CMD_DIR/disk/prep \ + $CMD_DIR/rc \ + $CMD_DIR/ps \ + $CMD_DIR/ed \ + $CMD_DIR/hmi/comconsole \ + $CMD_DIR/srv \ +) + +for (file in $RAMDISK) { + NAME=`{basename $file} + $STRIP -o ./ramdisk/$NAME $file +} + +$STRIP -o ./ramdisk/boot $JEHANNE/sys/src/kern/boot/boot$CONF.elf.out +cp $JEHANNE/arch/rc/lib/rcmain ./ramdisk/ +cp $JEHANNE/hacking/nvram ./ramdisk/ + +DEVICES=( \ + arch \ + bridge \ + cap \ + cons \ + dup \ + env \ + ether \ + ip \ + ninep \ + pci \ + pipe \ + proc \ + root \ + sd \ + self \ + shr \ + srv \ + uart \ +) +LINKS=( \ + ether8139 \ + ether8169 \ + ether82557 \ + ether82563 \ + etherigbe \ + ethermedium \ + loopbackmedium \ + netdevmedium \ + usbuhci \ + usbohci \ + usbehci \ +) +PROTOCOLS=( \ + tcp \ + udp \ + ipifc \ + icmp \ + icmp6 \ + gre \ +) +SDINTERFACES=( \ + sdata \ + sdiahci \ +) +UARTS=( \ + i8250 \ + pci \ +) + + +cat ../build/kernelconf.rc.template | template | rc > autogenerated.c + +$CC \ + autogenerated.c \ + sdata.c \ + cga.c \ + usbehcipc.c \ + usbohci.c \ + usbuhci.c \ + bios32.c \ + devether.c \ + devrtc.c \ + devkbd.c \ + ether8139.c \ + ether8169.c \ + ether82557.c \ + ether82563.c \ + etherigbe.c \ + ethermii.c \ + etherm10g.c \ + pci.c \ + sdiahci.c \ + sdscsi.c \ + uarti8250.c \ + uartpci.c \ + entry.S \ + ec.c \ + l64v.S \ + l64fpu.S \ + cpuidamd64.S \ + l64idt.S \ + l64vsyscall.S \ + acpi.c \ + arch.c \ + archmp.c \ + devarch.c \ + fpu.c \ + hpet.c \ + i8253.c \ + i8259.c \ + lapic.c \ + main.c \ + memory.c \ + mmu.c \ + mp.c \ + msi.c \ + mtrr.c \ + multiboot.c \ + squidboy.c \ + syscall.c \ + systab.c \ + trap.c \ + ../ip/arp.c \ + ../ip/chandial.c \ + ../ip/devip.c \ + ../ip/ethermedium.c \ + ../ip/gre.c \ + ../ip/icmp6.c \ + ../ip/icmp.c \ + ../ip/ipaux.c \ + ../ip/ip.c \ + ../ip/ipifc.c \ + ../ip/iproute.c \ + ../ip/ipv6.c \ + ../ip/loopbackmedium.c \ + ../ip/netdevmedium.c \ + ../ip/netlog.c \ + ../ip/nullmedium.c \ + ../ip/pktmedium.c \ + ../ip/ptclbsum.c \ + ../ip/tcp.c \ + ../ip/udp.c \ + ../port/umem/pages.c \ + ../port/umem/raw.c \ + ../port/umem/segments.c \ + ../port/umem/images.c \ + ../port/alarm.c \ + ../port/alloc.c \ + ../port/allocb.c \ + ../port/awake.c \ + ../port/chan.c \ + ../port/debug.c \ + ../port/dev.c \ + ../port/dev9p.c \ + ../port/devbridge.c \ + ../port/devcap.c \ + ../port/devcons.c \ + ../port/devdup.c \ + ../port/devenv.c \ + ../port/devfs.c \ + ../port/devkprof.c \ + ../port/devpci.c \ + ../port/devpipe.c \ + ../port/devproc.c \ + ../port/devroot.c \ + ../port/devsd.c \ + ../port/devself.c \ + ../port/devshr.c \ + ../port/devsrv.c \ + ../port/devssl.c \ + ../port/devtab.c \ + ../port/devtls.c \ + ../port/devtrace.c \ + ../port/devuart.c \ + ../port/devusb.c \ + ../port/elf64.c \ + ../port/fault.c \ + ../port/getput.c \ + ../port/log.c \ + ../port/taslock.c \ + ../port/mul64fract.c \ + ../port/net.c \ + ../port/netif.c \ + ../port/parse.c \ + ../port/pgrp.c \ + ../port/portclock.c \ + ../port/print.c \ + ../port/proc.c \ + ../port/ps.c \ + ../port/qio.c \ + ../port/qlock.c \ + ../port/random.c \ + ../port/rebootcmd.c \ + ../port/ref.c \ + ../port/sysauth.c \ + ../port/syscallfmt.c \ + ../port/sysfile.c \ + ../port/sysproc.c \ + ../port/tod.c \ + ../port/uidgid.c \ + ../port/usbehci.c \ + ../port/xalloc.c \ + -DKERNEL \ + '-DKERNDATE=1433623937' \ + -9 \ + -c \ + -I. \ + -I$JEHANNE/sys/src/lib/jehanne \ + '-mcmodel=kernel' \ + -O0 \ + -static \ + -fplan9-extensions \ + -mno-red-zone \ + -fstack-protector-all \ + -ffreestanding \ + -fno-builtin \ + -g \ + -fvar-tracking \ + -fvar-tracking-assignments \ + -ffixed-r14 \ + -ffixed-r15 \ + -Wall \ + -W \ + -Wno-sign-compare \ + -Wno-missing-field-initializers \ + -Wno-unused-parameter \ + -Wno-missing-braces \ + -Wno-parentheses \ + -Wno-unknown-pragmas \ + -fasm +$LD -o workhorse \ + autogenerated.o \ + sdata.o \ + cga.o \ + usbehcipc.o \ + usbohci.o \ + usbuhci.o \ + bios32.o \ + devether.o \ + devrtc.o \ + devkbd.o \ + ether8139.o \ + ether8169.o \ + ether82557.o \ + ether82563.o \ + etherigbe.o \ + ethermii.o \ + etherm10g.o \ + pci.o \ + sdiahci.o \ + sdscsi.o \ + uarti8250.o \ + uartpci.o \ + entry.o \ + ec.o \ + l64v.o \ + l64fpu.o \ + cpuidamd64.o \ + l64idt.o \ + l64vsyscall.o \ + acpi.o \ + arch.o \ + archmp.o \ + devarch.o \ + fpu.o \ + hpet.o \ + i8253.o \ + i8259.o \ + lapic.o \ + main.o \ + memory.o \ + mmu.o \ + mp.o \ + msi.o \ + mtrr.o \ + multiboot.o \ + squidboy.o \ + syscall.o \ + systab.o \ + trap.o \ + arp.o \ + chandial.o \ + devip.o \ + ethermedium.o \ + gre.o \ + icmp6.o \ + icmp.o \ + ipaux.o \ + ip.o \ + ipifc.o \ + iproute.o \ + ipv6.o \ + loopbackmedium.o \ + netdevmedium.o \ + netlog.o \ + nullmedium.o \ + pktmedium.o \ + ptclbsum.o \ + tcp.o \ + udp.o \ + pages.o \ + raw.o \ + segments.o \ + images.o \ + alarm.o \ + alloc.o \ + allocb.o \ + awake.o \ + chan.o \ + debug.o \ + dev.o \ + dev9p.o \ + devbridge.o \ + devcap.o \ + devcons.o \ + devdup.o \ + devenv.o \ + devfs.o \ + devkprof.o \ + devpci.o \ + devpipe.o \ + devproc.o \ + devroot.o \ + devsd.o \ + devself.o \ + devshr.o \ + devsrv.o \ + devssl.o \ + devtab.o \ + devtls.o \ + devtrace.o \ + devuart.o \ + devusb.o \ + elf64.o \ + fault.o \ + getput.o \ + log.o \ + taslock.o \ + mul64fract.o \ + net.o \ + netif.o \ + parse.o \ + pgrp.o \ + portclock.o \ + print.o \ + proc.o \ + ps.o \ + qio.o \ + qlock.o \ + random.o \ + rebootcmd.o \ + ref.o \ + sysauth.o \ + syscallfmt.o \ + sysfile.o \ + sysproc.o \ + tod.o \ + uidgid.o \ + usbehci.o \ + xalloc.o \ + -z 'max-page-size=0x1000' \ + -nostdlib -T kernel.ld -g \ + $JEHANNE/arch/$ARCH/lib/klibmemlayer.a \ + $JEHANNE/arch/$ARCH/lib/klibmemdraw.a \ + $JEHANNE/arch/$ARCH/lib/klibdraw.a \ + $JEHANNE/arch/$ARCH/lib/klibip.a \ + $JEHANNE/arch/$ARCH/lib/klibc.a \ + $JEHANNE/arch/$ARCH/lib/klib9p2000.a \ + $JEHANNE/arch/$ARCH/lib/klibsec.a \ + $JEHANNE/arch/$ARCH/lib/klibmp.a \ + $JEHANNE/arch/$ARCH/lib/klibaml.a +OBJCOPY=objcopy; $TOOLPREFIX$OBJCOPY -I elf64-x86-64 -O elf32-i386 workhorse $JEHANNE/hacking/bin/workhorse.32bit +safemove workhorse $JEHANNE/hacking/bin/ #decomment to debug workhorse with gdb + +git clean -xdf ../ diff --git a/sys/src/kern/boot/boot.rc.build b/sys/src/kern/boot/boot.rc.build new file mode 100644 index 0000000..baa8143 --- /dev/null +++ b/sys/src/kern/boot/boot.rc.build @@ -0,0 +1,20 @@ +#!/cmd/rc +. $JEHANNE/arch/rc/lib/build/utils.rc + +build bootlib.rc.build + +$CC \ + printstub.c \ + boot$CONF.c \ + $CFLAGS \ + -L . \ + -lboot \ + -lip \ + -lauth \ + -ljehanne \ + -static \ + -o boot$CONF.elf.out +rm *.a + +# the following line was here for no reason: nobody in kernel link it +#data2c ramfs_boot$ARCH^cpu_ ../boot/boot$CONF.elf.out >> ../$ARCH/autogenerated.c diff --git a/sys/src/kern/boot/bootlib.rc.build b/sys/src/kern/boot/bootlib.rc.build new file mode 100644 index 0000000..30ab734 --- /dev/null +++ b/sys/src/kern/boot/bootlib.rc.build @@ -0,0 +1,32 @@ +#!/cmd/rc +. $JEHANNE/arch/rc/lib/build/utils.rc + +echo CONF $CONF +if ( ~ 0 $#CONF ) { echo Error: missing CONF environment variable && exit 1 } +cat ../build/bootCPUc.rc.template|template|rc > boot$CONF.c +#[ ! -f boot$CONF.elf.out ] || rm *.elf.out +rm -f *.o *.tag.* +$CC \ + aux.c \ + bootauth.c \ + boot.c \ + bootcache.c \ + bootip.c \ + bootrc.c \ + embed.c \ + local.c \ + paq.c \ + sac.c \ + settime.c \ + paths$CONF.c \ + -c \ + -static \ + -fplan9-extensions \ + -ffreestanding \ + -fno-builtin \ + $STACKCHECK_CFLAGS \ + $CFLAGS +prependLibraryName libboot.a +$AR -rs $JEHANNE/sys/src/kern/boot/libboot.a libboot.a-*.o +$RANLIB $JEHANNE/sys/src/kern/boot/libboot.a +rm *.o diff --git a/sys/src/kern/boot/build.json b/sys/src/kern/boot/build.json deleted file mode 100644 index 6274411..0000000 --- a/sys/src/kern/boot/build.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "A.Lib": { - "Cflags": [ - "-g", - "-Wall", - "-Wno-missing-braces", - "-Wno-parentheses", - "-Wno-unknown-pragmas", - "-O0", - "-static", - "-fplan9-extensions", - "-ffreestanding", - "-fno-builtin" - ], - "Include": [ - "/sys/src/lib/lib.json" - ], - "Install": "/sys/src/kern/boot", - "Library": "libboot.a", - "Pre": [ - "if [ x$CONF = x ]; then echo Error: missing CONF environment variable && exit 1; fi", - "mksys -o boot$CONF.c '-mode=bootamd64cpu.c' $JEHANNE/sys/src/sysconf.json", - "#[ ! -f boot$CONF.elf.out ] || rm *.elf.out" - ], - "SourceFiles": [ - "aux.c", - "bootauth.c", - "boot.c", - "bootcache.c", - "bootip.c", - "bootrc.c", - "embed.c", - "local.c", - "paq.c", - "sac.c", - "settime.c", - "paths$CONF.c" - ] - }, - "B.Exec": { - "Cflags": [ - "-9" - ], - "Include": [ - "/arch/$ARCH/include/cflags.json" - ], - "Libs": [ - "./libboot.a", - "/arch/$ARCH/lib/libip.a", - "/arch/$ARCH/lib/libauth.a", - "/arch/$ARCH/lib/libjehanne.a" - ], - "Oflags": [ - "-static" - ], - "Post": [ - "rm *.a", - "data2c ramfs_bootamd64cpu_ ../boot/boot$CONF.elf.out >> ../amd64/autogenerated.c" - ], - "Program": "boot$CONF.elf.out", - "SourceFiles": [ - "printstub.c", - "boot$CONF.c" - ] - } -} diff --git a/sys/src/kern/build/README.txt b/sys/src/kern/build/README.txt new file mode 100644 index 0000000..71d72f2 --- /dev/null +++ b/sys/src/kern/build/README.txt @@ -0,0 +1,2 @@ +Build tools for the kernel + diff --git a/sys/src/kern/build/bootCPUc.rc.template b/sys/src/kern/build/bootCPUc.rc.template new file mode 100644 index 0000000..b51edbd --- /dev/null +++ b/sys/src/kern/build/bootCPUc.rc.template @@ -0,0 +1,46 @@ +/* + * This file is part of Jehanne. + * + * Copyright (C) 2022 Giacomo Tesio + * + * Jehanne is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3 of the License. + * + * Jehanne is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jehanne. If not, see . + */ +/* automatically generated by bootCPUc.rc.template */ + +#include +#include + +#include "../boot/boot.h" + +Method method[] = { +#! ifs=' +#! ' +#! CONFIGURATION=`{sed -n '/^$/!{/^#/!p}' $JEHANNE/sys/src/kern/$ARCH/boot-methods.rc.confs} +#! for (line in $CONFIGURATION){ +#! eval $line + { "$METHOD", config$METHOD, connect$METHOD, "$ARGS", }, +#! } + { nil }, +}; + +int cpuflag = 1; +char* rootdir = "/root"; +char* bootdisk = "#S/sdE0/"; +extern void boot(int, char**); + +void +main(int argc, char **argv) +{ + boot(argc, argv); +} +int (*cfs)(int) = 0; diff --git a/sys/src/kern/build/errorh.rc.template b/sys/src/kern/build/errorh.rc.template new file mode 100644 index 0000000..0ffcc11 --- /dev/null +++ b/sys/src/kern/build/errorh.rc.template @@ -0,0 +1,26 @@ +/* + * This file is part of Jehanne. + * + * Copyright (C) 2022 Giacomo Tesio + * + * Jehanne is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3 of the License. + * + * Jehanne is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jehanne. If not, see . + */ +/* automatically generated by errstrh.rc.template */ +#! ifs=' +#! ' +#! CONFIGURATION=`{sed -n '/^$/!{/^#/!p}' $JEHANNE/sys/src/sysconf/errors.rc.confs} +#! for (line in $CONFIGURATION){ +#! eval $line +extern char $NAME[]; /* $MSG */ +#! } + diff --git a/sys/src/kern/build/errstrh.rc.template b/sys/src/kern/build/errstrh.rc.template new file mode 100644 index 0000000..864a251 --- /dev/null +++ b/sys/src/kern/build/errstrh.rc.template @@ -0,0 +1,26 @@ +/* + * This file is part of Jehanne. + * + * Copyright (C) 2022 Giacomo Tesio + * + * Jehanne is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3 of the License. + * + * Jehanne is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jehanne. If not, see . + */ +/* automatically generated by errstrh.rc.template */ +#! ifs=' +#! ' +#! CONFIGURATION=`{sed -n '/^$/!{/^#/!p}' $JEHANNE/sys/src/sysconf/errors.rc.confs} +#! for (line in $CONFIGURATION){ +#! eval $line +char $NAME[] = "$MSG"; +#! } + diff --git a/sys/src/kern/build/inith.rc.template b/sys/src/kern/build/inith.rc.template new file mode 100644 index 0000000..f77a953 --- /dev/null +++ b/sys/src/kern/build/inith.rc.template @@ -0,0 +1,57 @@ +/* + * This file is part of Jehanne. + * + * Copyright (C) 2022 Giacomo Tesio + * + * Jehanne is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3 of the License. + * + * Jehanne is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jehanne. If not, see . + */ +/* automatically generated by /sys/src/kern/build/inith.rc.template */ +#! fn base10 { +#! seq -f%0.0f $1 $1 +#! } +#! CODE=`{$READELF -W -l init|grep LOAD|sed 's/R E/R_E/'|grep R_E} +#! CODE_START=`{base10 $CODE(3)} + +int init_code_start = $CODE_START; +int init_code_end = $CODE_START + $CODE(6); +int init_code_len = $CODE(6); +uint8_t init_code_out[] = { +#! hexdump -s $CODE(2) -n $CODE(5) -v \ +#! -e '1/1 " 0x%02x, " 6/1 "0x%02x, " 1/1 " 0x%02x,\n"' \ +#! init | sed '$s/0x ,//g' +}; + +#! DATA=`{$READELF -W -l init|grep LOAD|grep RW} +#! PAGE_SIZE=`{base10 $DATA(8)} +#! DATA_START=`{base10 $DATA(3)} +#! DATA_PAGE_START=`{echo $DATA_START d $PAGE_SIZE '%-p'|dc} +#! DATA_FILE_START=`{base10 $DATA(2)} +#! DATA_PADDING=`{echo $DATA_START $DATA_PAGE_START '-p'|dc} +#! DATA_MEM_LENGTH=`{base10 $DATA(6)} +#! DATA_MEM_LENGTH=`{echo $DATA_MEM_LENGTH $DATA_PADDING '+p'|dc} +#! DATA_FILE_LENGTH=`{base10 $DATA(5)} +#! TRAILING_ZEROS=`{echo `{base10 $DATA(6)} `{base10 $DATA(5)} '-p'|dc} +int init_data_start = $DATA_PAGE_START; +int init_data_end = $DATA_PAGE_START + $DATA_MEM_LENGTH; +int init_data_len = $DATA_MEM_LENGTH; +uint8_t init_data_out[] = { +#! hexdump -n $DATA_PADDING -v \ +#! -e '1/1 " 0x%02x, " 6/1 "0x%02x, " 1/1 " 0x%02x,\n"' \ +#! /dev/zero | sed '$s/ 0x ,//g' +#! hexdump -s $DATA_FILE_START -n $DATA_FILE_LENGTH -v \ +#! -e '1/1 " 0x%02x, " 6/1 "0x%02x, " 1/1 " 0x%02x,\n"' \ +#! init | sed '$s/ 0x ,//g' +#! hexdump -n $TRAILING_ZEROS -v \ +#! -e '1/1 " 0x%02x, " 6/1 "0x%02x, " 1/1 " 0x%02x,\n"' \ +#! /dev/zero | sed '$s/ 0x ,//g' +}; diff --git a/sys/src/kern/build/kernelconf.rc.template b/sys/src/kern/build/kernelconf.rc.template new file mode 100644 index 0000000..5549d61 --- /dev/null +++ b/sys/src/kern/build/kernelconf.rc.template @@ -0,0 +1,145 @@ +/* + * This file is part of Jehanne. + * + * Copyright (C) 2022 Giacomo Tesio + * + * Jehanne is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3 of the License. + * + * Jehanne is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jehanne. If not, see . + */ +#include "u.h" +#include "../port/lib.h" +#include "mem.h" +#include "dat.h" +#include "fns.h" +#include "../port/error.h" +#include "io.h" + +void +rdb(void) +{ + splhi(); + iprint("rdb...not installed\n"); + for(;;); +} + +#! for (file in ./ramdisk/*) { +#! FNAME=`{basename $file} +#! FSIZE=`{cat $file|wc -c} +static unsigned char ramfs_$FNAME^_code[] = { +#! cat $file | +#! hexdump -v -e '1/1 " 0x%02x, " 6/1 "0x%02x, " 1/1 " 0x%02x,\n"' | +#! sed '$s/0x ,/0x00,/g' + 0x00, +}; +int ramfs_$FNAME^_len = $FSIZE; +#! } + +#! for (device in $DEVICES) { +extern Dev $device^devtab; +#! } + +Dev *devtab[] = { +#! for (device in $DEVICES) { + &$device^devtab, +#! } + nil, +}; + +#! for (driver in $LINKS) { +extern void $driver^link(void); +#! } + +void +links(void) +{ + +#! for (file in ./ramdisk/*) { +#! FNAME=`{basename $file} + addbootfile("$FNAME^", ramfs_$FNAME^_code, ramfs_$FNAME^_len); +#! } + +#! for (driver in $LINKS) { + $driver^link(); +#! } +} + +#include "../ip/ip.h" + +#! for (protocol in $PROTOCOLS) { +extern void $protocol^init(Fs*); +#! } + +void (*ipprotoinit[])(Fs*) = { +#! for (protocol in $PROTOCOLS) { + $protocol^init, +#! } + nil, +}; + +#include "../port/sd.h" + +#! for (interface in $SDINTERFACES) { +extern SDifc $interface^ifc; +#! } + +SDifc* sdifc[] = { +#! for (interface in $SDINTERFACES) { + &$interface^ifc, +#! } + nil, +}; + +#! for (interface in $UARTS) { +extern PhysUart $interface^physuart; +#! } + +PhysUart* physuart[] = { +#! for (interface in $UARTS) { + &$interface^physuart, +#! } + nil, +}; + +#define Image IMAGE +#include +#include +#include +#include "screen.h" + +#! for (driver in $VGA) { +extern VGAdev $driver^dev; +#! } + +VGAdev* vgadev[] = { +#! for (driver in $VGA) { + &$driver^dev, +#! } + nil, +}; + +#! for (driver in $VGA) { +extern VGAcur $driver^cur; +#! } + +VGAcur* vgacur[] = { +#! for (driver in $VGA) { + &$driver^cur, +#! } + nil, +}; + +int cpuserver = 1; +uint32_t kerndate = 1; +int printallsyscalls; + +char* conffile = "$CONFFILE"; + diff --git a/sys/src/kern/build/ksyscalls.rc.template b/sys/src/kern/build/ksyscalls.rc.template new file mode 100644 index 0000000..a750fa8 --- /dev/null +++ b/sys/src/kern/build/ksyscalls.rc.template @@ -0,0 +1,292 @@ +/* + * This file is part of Jehanne. + * + * Copyright (C) 2022 Giacomo Tesio + * + * Jehanne is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3 of the License. + * + * Jehanne is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jehanne. If not, see . + */ +/* automatically generated by ksyscalls.rc.template */ +#include "u.h" +#include "../port/lib.h" +#include "mem.h" +#include "dat.h" +#include "fns.h" +#include "../port/error.h" +#include "ureg.h" + +extern void fmtrwdata(Fmt* f, char* a, int n); +extern void fmtuserstring(Fmt* f, const char* a); +extern void fmtuserstringlist(Fmt* f, const char** argv); + +#! . ../$ARCH/registry-$ARCH.rc.conf +#! ifs=' +#! ' +#! CONFIGURATION=`{sed -n '/^$/!{/^#/!p}' $JEHANNE/sys/src/sysconf/syscalls.rc.confs} +#! for (line in $CONFIGURATION){ +#! eval $line +#! OTHERARGS=() +#! if( ! ~ 1 $#ARGS){ +#! OTHERARGS=(', '^$ARGS(2-)) +#! } +extern $RET sys$NAME($ARGS(1) $"OTHERARGS); +#! } + +#! for (line in $CONFIGURATION){ +#! eval $line +#! CALLARGS=() +static void +wrap_$NAME^(ScRet* ret, Ureg* ureg) +{ +#! for(idx in `{seq $#ARGS}){ +#! CALLARGS=($CALLARGS a$idx) + $ARGS($idx) a$idx; +#! } + +#! for(idx in `{seq $#ARGS}){ + a$idx = ($ARGS($idx))ureg->$UREG($idx); +#! } + +#! OTHERARGS=() +#! if( ! ~ 1 $#CALLARGS){ +#! OTHERARGS=', '^$CALLARGS(2-) +#! } + + ret->$$RET = sys$NAME($CALLARGS(1) $"OTHERARGS); +} +#! } + +int nsyscall = $#CONFIGURATION; + +ScRet +default_syscall_ret(int syscall) +{ + static ScRet zero; + ScRet ret = zero; + switch(syscall){ +#! for (line in $CONFIGURATION){ +#! eval $line + case $ID: + ret.$$RET = ($RET)-1; + break; +#! } + + default: + ret.vl = -1; + break; + } + return ret; +} + +char* +syscall_name(int syscall) +{ + switch(syscall){ +#! for (line in $CONFIGURATION){ +#! eval $line + case $ID: + return "$NAME"; +#! } + + default: + return nil; + } +} + +void +dispatch_syscall(int syscall, Ureg* ureg, ScRet* ret) +{ + switch(syscall){ +#! for (line in $CONFIGURATION){ +#! eval $line + case $ID: + wrap_$NAME(ret, ureg); + break; +#! } + default: + panic("dispatch_syscall: bad sys call number %d pc %#p\n", syscall, ureg->ip); + } +} + +#! for (line in $CONFIGURATION){ +#! eval $line +static void +enter_$NAME(Fmt* fmt, Ureg* ureg) +{ +#! for(idx in `{seq $#ARGS}){ +#! CALLARGS=($CALLARGS a$idx) + $ARGS($idx) a$idx; +#! } + +#! for(idx in `{seq $#ARGS}){ + a$idx = ($ARGS($idx))ureg->$UREG($idx); +#! } + + jehanne_fmtprint(fmt, "$NAME %#p >", ureg->ip); + if(up->notified) + jehanne_fmtprint(fmt, "!"); +#! for(idx in `{seq $#ARGS}){ +#! if( ~ $NAME pwrite && ~ $idx 2 ) { + fmtrwdata(fmt, (char*)a2, MIN(a3, 64)); +#! } +#! if not switch($ARGS($idx)) { +#! case 'int'; + jehanne_fmtprint(fmt, " %d", a$idx); +#! case 'int32_t'; + jehanne_fmtprint(fmt, " %d", a$idx); +#! case 'unsigned int'; + jehanne_fmtprint(fmt, " %#ux", a$idx); +#! case 'uint32_t'; + jehanne_fmtprint(fmt, " %#ux", a$idx); +#! case 'long'; + jehanne_fmtprint(fmt, " %lld", a$idx); +#! case 'int64_t'; + jehanne_fmtprint(fmt, " %lld", a$idx); +#! case 'unsigned long'; + jehanne_fmtprint(fmt, " %#lud", a$idx); +#! case 'uint64_t'; + jehanne_fmtprint(fmt, " %#lud", a$idx); +#! case 'void*'; + jehanne_fmtprint(fmt, " %#p", a$idx); +#! case 'uint8_t*'; + jehanne_fmtprint(fmt, " %#p", a$idx); +#! case 'const void*'; + jehanne_fmtprint(fmt, " %#p", a$idx); +#! case 'const uint8_t*'; + jehanne_fmtprint(fmt, " %#p", a$idx); +#! case 'int32_t*'; + jehanne_fmtprint(fmt, " %#p(%d)", a$idx, a$idx); +#! case 'int*'; + jehanne_fmtprint(fmt, " %#p(%d)", a$idx, a$idx); +#! case 'const int32_t*'; + jehanne_fmtprint(fmt, " %#p(%d)", a$idx, a$idx); +#! case 'const int*'; + jehanne_fmtprint(fmt, " %#p(%d)", a$idx, a$idx); +#! case 'const char*'; + fmtuserstring(fmt, a$idx); +#! case 'char*'; + fmtuserstring(fmt, a$idx); +#! case 'const char**'; + fmtuserstringlist(fmt, a$idx); +#! case 'char**'; + fmtuserstringlist(fmt, a$idx); +#! } +#! } + + jehanne_fmtprint(fmt, "\n"); +} +#! } + +char* +syscallfmt(int syscall, Ureg* ureg) +{ + Fmt fmt; + jehanne_fmtstrinit(&fmt); + jehanne_fmtprint(&fmt, "%d %s ", up->pid, up->text); + + switch(syscall){ +#! for (line in $CONFIGURATION){ +#! eval $line + case $ID: + enter_$NAME^(&fmt, ureg); + break; +#! } + default: + panic("syscallfmt: bad sys call number %d pc %#p\n", syscall, ureg->ip); + } + + return jehanne_fmtstrflush(&fmt); +} + +#! for (line in $CONFIGURATION){ +#! eval $line +static void +exit_$NAME^(Fmt* fmt, Ureg* ureg, ScRet* ret) +{ + jehanne_fmtprint(fmt, "$NAME %#p <", ureg->ip); + if(up->notified) + jehanne_fmtprint(fmt, "!"); +#! switch($RET) { +#! case 'int': + jehanne_fmtprint(fmt, " %d", ret->$$RET); +#! case 'int32_t': + jehanne_fmtprint(fmt, " %d", ret->$$RET); +#! case 'unsigned int': + jehanne_fmtprint(fmt, " %#ux", ret->$$RET); +#! case 'uint32_t': + jehanne_fmtprint(fmt, " %#ux", ret->$$RET); +#! case 'long': + jehanne_fmtprint(fmt, " %lld", ret->$$RET); +#! case 'int64_t': + jehanne_fmtprint(fmt, " %lld", ret->$$RET); +#! case 'unsigned long': + jehanne_fmtprint(fmt, " %#llud", ret->$$RET); +#! case 'uint64_t': + jehanne_fmtprint(fmt, " %#llud", ret->$$RET); +#! case 'void': + jehanne_fmtprint(fmt, " %#llud", ret->$$RET); +#! case 'void*': + jehanne_fmtprint(fmt, " %#p", ret->$$RET); +#! case 'uintptr_t': + jehanne_fmtprint(fmt, " %#p", ret->$$RET); +#! case 'const void*': + jehanne_fmtprint(fmt, " %#p", ret->$$RET); +#! case 'const uintptr_t': + jehanne_fmtprint(fmt, " %#p", ret->$$RET); +#! case 'int32_t*': + jehanne_fmtprint(fmt, " %#p(%d)", ret->$$RET, *ret->$$RET); +#! case 'int*': + jehanne_fmtprint(fmt, " %#p(%d)", ret->$$RET, *ret->$$RET); +#! case 'const int32_t*': + jehanne_fmtprint(fmt, " %#p(%d)", ret->$$RET, *ret->$$RET); +#! case 'const int*': + jehanne_fmtprint(fmt, " %#p(%d)", ret->$$RET, *ret->$$RET); +#! } +#! switch($NAME) { +#! case pread: + fmtrwdata(fmt, (char*)ureg->$UREG(2), MIN(ureg->$UREG(3), 64)); +#! case fd2path: + fmtrwdata(fmt, (char*)ureg->$UREG(2), MIN(ureg->$UREG(3), 64)); +#! case await: + fmtrwdata(fmt, (char*)ureg->$UREG(1), MIN(ureg->$UREG(2), 64)); +#! case errstr: + fmtrwdata(fmt, (char*)ureg->$UREG(1), MIN(ureg->$UREG(2), 64)); +#! } +} +#! } + +char* +sysretfmt(int syscall, Ureg* ureg, ScRet* ret, uint64_t start, uint64_t stop) +{ + Fmt fmt; + jehanne_fmtstrinit(&fmt); + jehanne_fmtprint(&fmt, "%d %s ", up->pid, up->text); + + switch(syscall){ +#! for (line in $CONFIGURATION){ +#! eval $line + case $ID: + exit_$NAME^(&fmt, ureg, ret); + break; +#! } + default: + panic("sysretfmt: bad sys call number %d pc %#p\n", syscall, ureg->ip); + } + + if(0 > ret->vl){ + jehanne_fmtprint(&fmt, " %s %#llud %#llud\n", up->syserrstr, start, stop-start); + } else { + jehanne_fmtprint(&fmt, " \"\" %#llud %#llud\n", start, stop-start); + } + + return jehanne_fmtstrflush(&fmt); +} diff --git a/sys/src/kern/ip/include.json b/sys/src/kern/ip/include.json deleted file mode 100644 index 929f814..0000000 --- a/sys/src/kern/ip/include.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "ip": { - "Deferred": [ - "../ip/inferno.c", - "../ip/ipmux.c", - "../ip/rudp.c" - ], - "SourceFiles": [ - "../ip/arp.c", - "../ip/chandial.c", - "../ip/devip.c", - "../ip/ethermedium.c", - "../ip/gre.c", - "../ip/icmp6.c", - "../ip/icmp.c", - "../ip/ipaux.c", - "../ip/ip.c", - "../ip/ipifc.c", - "../ip/iproute.c", - "../ip/ipv6.c", - "../ip/loopbackmedium.c", - "../ip/netdevmedium.c", - "../ip/netlog.c", - "../ip/nullmedium.c", - "../ip/pktmedium.c", - "../ip/ptclbsum.c", - "../ip/tcp.c", - "../ip/udp.c" - ] - } -} diff --git a/sys/src/kern/port/include.json b/sys/src/kern/port/include.json deleted file mode 100644 index abff8a7..0000000 --- a/sys/src/kern/port/include.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "port": { - "Cflags": [ - "-fasm" - ], - "Pre": [ - "mksys -o ../port/error.h '-mode=error.h' $JEHANNE/sys/src/sysconf.json" - ], - "SourceFiles": [ - "../port/umem/pages.c", - "../port/umem/raw.c", - "../port/umem/segments.c", - "../port/umem/images.c", - - "../port/alarm.c", - "../port/alloc.c", - "../port/allocb.c", - "../port/awake.c", - "../port/chan.c", - "../port/debug.c", - "../port/dev.c", - "../port/dev9p.c", - "../port/devbridge.c", - "../port/devcap.c", - "../port/devcons.c", - "../port/devdup.c", - "../port/devenv.c", - "../port/devfs.c", - "../port/devkprof.c", - "../port/devpci.c", - "../port/devpipe.c", - "../port/devproc.c", - "../port/devroot.c", - "../port/devsd.c", - "../port/devself.c", - "../port/devshr.c", - "../port/devsrv.c", - "../port/devssl.c", - "../port/devtab.c", - "../port/devtls.c", - "../port/devtrace.c", - "../port/devuart.c", - "../port/devusb.c", - "../port/elf64.c", - "../port/fault.c", - "../port/getput.c", - "../port/log.c", - "../port/taslock.c", - "../port/mul64fract.c", - "../port/net.c", - "../port/netif.c", - "../port/parse.c", - "../port/pgrp.c", - "../port/portclock.c", - "../port/print.c", - "../port/proc.c", - "../port/ps.c", - "../port/qio.c", - "../port/qlock.c", - "../port/random.c", - "../port/rebootcmd.c", - "../port/ref.c", - "../port/sysauth.c", - "../port/syscallfmt.c", - "../port/sysfile.c", - "../port/sysproc.c", - "../port/tod.c", - "../port/uidgid.c", - "../port/usbehci.c", - "../port/xalloc.c" - ] - } -} diff --git a/sys/src/lib/9p/9p.rc.build b/sys/src/lib/9p/9p.rc.build new file mode 100644 index 0000000..42a966a --- /dev/null +++ b/sys/src/lib/9p/9p.rc.build @@ -0,0 +1,29 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + auth.c \ + dirread.c \ + fid.c \ + file.c \ + intmap.c \ + listen.c \ + mem.c \ + queue.c \ + req.c \ + parse.c \ + post.c \ + rfork.c \ + srv.c \ + thread.c \ + uid.c \ + util.c \ + -DPORTABLE_SYSCALLS \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName lib9p.a +$AR -rs $JEHANNE/arch/$ARCH/lib/lib9p.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/lib9p.a +rm *.o diff --git a/sys/src/lib/9p/build.json b/sys/src/lib/9p/build.json deleted file mode 100644 index 7aa43af..0000000 --- a/sys/src/lib/9p/build.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "lib9p": { - "Cflags": [ - "-DPORTABLE_SYSCALLS" - ], - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "lib9p.a", - "SourceFiles": [ - "auth.c", - "dirread.c", - "fid.c", - "file.c", - "intmap.c", - "listen.c", - "mem.c", - "queue.c", - "req.c", - "parse.c", - "post.c", - "rfork.c", - "srv.c", - "thread.c", - "uid.c", - "util.c" - ] - } -} diff --git a/sys/src/lib/9p2000/9p2000.rc.build b/sys/src/lib/9p2000/9p2000.rc.build new file mode 100644 index 0000000..dbc0185 --- /dev/null +++ b/sys/src/lib/9p2000/9p2000.rc.build @@ -0,0 +1,30 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + convM2S.c \ + convS2M.c \ + fcallfmt.c \ + read9pmsg.c \ + -fasm \ + $KLIB_CFLAGS +prependLibraryName klib9p2000.a +$AR -rs $JEHANNE/arch/$ARCH/lib/klib9p2000.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/klib9p2000.a +rm *.o + +rm -f *.o *.tag.* +$CC \ + convM2S.c \ + convS2M.c \ + fcallfmt.c \ + read9pmsg.c \ + -fasm \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName lib9p2000.a +$AR -rs $JEHANNE/arch/$ARCH/lib/lib9p2000.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/lib9p2000.a +rm *.o diff --git a/sys/src/lib/9p2000/build.json b/sys/src/lib/9p2000/build.json deleted file mode 100644 index 6792cce..0000000 --- a/sys/src/lib/9p2000/build.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "9p2000": { - "Cflags": [ - "-fasm" - ], - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "lib9p2000.a", - "SourceFiles": [ - "convM2S.c", - "convS2M.c", - "fcallfmt.c", - "read9pmsg.c" - ] - } -} diff --git a/sys/src/lib/9p2000/klib9p2000.json b/sys/src/lib/9p2000/klib9p2000.json deleted file mode 100644 index c55fb30..0000000 --- a/sys/src/lib/9p2000/klib9p2000.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "9p2000": { - "Cflags": [ - "-fasm" - ], - "Include": [ - "../klib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "klib9p2000.a", - "SourceFiles": [ - "convM2S.c", - "convS2M.c", - "fcallfmt.c", - "read9pmsg.c" - ] - } -} diff --git a/sys/src/lib/9p2000/klib9p2000.rc.build b/sys/src/lib/9p2000/klib9p2000.rc.build new file mode 100644 index 0000000..4ae3528 --- /dev/null +++ b/sys/src/lib/9p2000/klib9p2000.rc.build @@ -0,0 +1,14 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + convM2S.c \ + convS2M.c \ + fcallfmt.c \ + read9pmsg.c \ + $KLIB_CFLAGS +prependLibraryName klib9p2000.a +$AR -rs $JEHANNE/arch/$ARCH/lib/klib9p2000.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/klib9p2000.a +rm *.o diff --git a/sys/src/lib/String/String.rc.build b/sys/src/lib/String/String.rc.build new file mode 100644 index 0000000..90fb4bc --- /dev/null +++ b/sys/src/lib/String/String.rc.build @@ -0,0 +1,29 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + s_alloc.c \ + s_append.c \ + s_array.c \ + s_copy.c \ + s_getline.c \ + s_grow.c \ + s_memappend.c \ + s_nappend.c \ + s_parse.c \ + s_putc.c \ + s_rdinstack.c \ + s_read.c \ + s_read_line.c \ + s_reset.c \ + s_terminate.c \ + s_tolower.c \ + s_unique.c \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libString.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libString.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libString.a +rm *.o diff --git a/sys/src/lib/String/build.json b/sys/src/lib/String/build.json deleted file mode 100644 index 84d0c49..0000000 --- a/sys/src/lib/String/build.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "libString": { - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libString.a", - "SourceFiles": [ - "s_alloc.c", - "s_append.c", - "s_array.c", - "s_copy.c", - "s_getline.c", - "s_grow.c", - "s_memappend.c", - "s_nappend.c", - "s_parse.c", - "s_putc.c", - "s_rdinstack.c", - "s_read.c", - "s_read_line.c", - "s_reset.c", - "s_terminate.c", - "s_tolower.c", - "s_unique.c" - ] - } -} diff --git a/sys/src/lib/aml/aml.rc.build b/sys/src/lib/aml/aml.rc.build new file mode 100644 index 0000000..cd6fe23 --- /dev/null +++ b/sys/src/lib/aml/aml.rc.build @@ -0,0 +1,18 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + aml.c \ + amlalloc.c \ + amldelay.c \ + amlmapio.c \ + amlunmapio.c \ + -fasm \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libaml.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libaml.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libaml.a +rm *.o diff --git a/sys/src/lib/aml/build.json b/sys/src/lib/aml/build.json deleted file mode 100644 index 325db1a..0000000 --- a/sys/src/lib/aml/build.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "Libaml": { - "Cflags": [ - "-fasm" - ], - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libaml.a", - "SourceFiles": [ - "aml.c", - "amlalloc.c", - "amldelay.c", - "amlmapio.c", - "amlunmapio.c" - ] - } -} diff --git a/sys/src/lib/aml/klibaml.json b/sys/src/lib/aml/klibaml.json deleted file mode 100644 index 7857e5f..0000000 --- a/sys/src/lib/aml/klibaml.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "KernelLibaml": { - "Cflags": [ - "-fasm" - ], - "Include": [ - "../klib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "klibaml.a", - "SourceFiles": [ - "aml.c", - "amlalloc.c", - "amldelay.c", - "amlmapio.c", - "amlunmapio.c" - ] - } -} diff --git a/sys/src/lib/aml/klibaml.rc.build b/sys/src/lib/aml/klibaml.rc.build new file mode 100644 index 0000000..95902e3 --- /dev/null +++ b/sys/src/lib/aml/klibaml.rc.build @@ -0,0 +1,16 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + aml.c \ + amlalloc.c \ + amldelay.c \ + amlmapio.c \ + amlunmapio.c \ + -fasm \ + $KLIB_CFLAGS +prependLibraryName klibaml.a +$AR -rs $JEHANNE/arch/$ARCH/lib/klibaml.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/klibaml.a +rm *.o diff --git a/sys/src/lib/auth/auth.rc.build b/sys/src/lib/auth/auth.rc.build new file mode 100644 index 0000000..49d5a4d --- /dev/null +++ b/sys/src/lib/auth/auth.rc.build @@ -0,0 +1,28 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + amount.c \ + amount_getkey.c \ + attr.c \ + auth_attr.c \ + auth_challenge.c \ + auth_chuid.c \ + auth_getkey.c \ + auth_getuserpasswd.c \ + auth_proxy.c \ + auth_respond.c \ + auth_rpc.c \ + auth_userpasswd.c \ + auth_wep.c \ + login.c \ + newns.c \ + noworld.c \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libauth.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libauth.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libauth.a +rm *.o diff --git a/sys/src/lib/auth/build.json b/sys/src/lib/auth/build.json deleted file mode 100644 index efcb868..0000000 --- a/sys/src/lib/auth/build.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "libauth": { - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libauth.a", - "SourceFiles": [ - "amount.c", - "amount_getkey.c", - "attr.c", - "auth_attr.c", - "auth_challenge.c", - "auth_chuid.c", - "auth_getkey.c", - "auth_getuserpasswd.c", - "auth_proxy.c", - "auth_respond.c", - "auth_rpc.c", - "auth_userpasswd.c", - "auth_wep.c", - "login.c", - "newns.c", - "noworld.c" - ] - } -} diff --git a/sys/src/lib/authsrv/authsrv.rc.build b/sys/src/lib/authsrv/authsrv.rc.build new file mode 100644 index 0000000..7a549b3 --- /dev/null +++ b/sys/src/lib/authsrv/authsrv.rc.build @@ -0,0 +1,32 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + _asgetpakkey.c \ + _asgetticket.c \ + _asgetresp.c \ + _asrequest.c \ + _asrdresp.c \ + authpak.c \ + authdial.c \ + convA2M.c \ + convM2A.c \ + convM2PR.c \ + convM2T.c \ + convM2TR.c \ + convPR2M.c \ + convT2M.c \ + convTR2M.c \ + form1.c \ + nvcsum.c \ + passtokey.c \ + readnvram.c \ + -fno-strict-aliasing \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libauthsrv.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libauthsrv.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libauthsrv.a +rm *.o diff --git a/sys/src/lib/authsrv/build.json b/sys/src/lib/authsrv/build.json deleted file mode 100644 index 7dbbf97..0000000 --- a/sys/src/lib/authsrv/build.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "libauthsrv": { - "Include": [ - "../lib.json" - ], - "Cflags": [ - "-fno-strict-aliasing" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libauthsrv.a", - "SourceFiles": [ - "_asgetpakkey.c", - "_asgetticket.c", - "_asgetresp.c", - "_asrequest.c", - "_asrdresp.c", - "authpak.c", - "authdial.c", - "convA2M.c", - "convM2A.c", - "convM2PR.c", - "convM2T.c", - "convM2TR.c", - "convPR2M.c", - "convT2M.c", - "convTR2M.c", - "form1.c", - "nvcsum.c", - "passtokey.c", - "readnvram.c" - ] - } -} diff --git a/sys/src/lib/avl/avl.rc.build b/sys/src/lib/avl/avl.rc.build new file mode 100644 index 0000000..6ea5db7 --- /dev/null +++ b/sys/src/lib/avl/avl.rc.build @@ -0,0 +1,13 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + avl.c \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libavl.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libavl.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libavl.a +rm *.o diff --git a/sys/src/lib/avl/build.json b/sys/src/lib/avl/build.json deleted file mode 100644 index d2cf031..0000000 --- a/sys/src/lib/avl/build.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "libavl": { - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libavl.a", - "SourceFiles": [ - "avl.c" - ] - } -} diff --git a/sys/src/lib/bio/bio.rc.build b/sys/src/lib/bio/bio.rc.build new file mode 100644 index 0000000..8029ee5 --- /dev/null +++ b/sys/src/lib/bio/bio.rc.build @@ -0,0 +1,29 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + bbuffered.c \ + bfildes.c \ + bflush.c \ + bgetrune.c \ + bgetc.c \ + bgetd.c \ + binit.c \ + boffset.c \ + bprint.c \ + bputrune.c \ + bputc.c \ + brdline.c \ + brdstr.c \ + bread.c \ + bseek.c \ + bwrite.c \ + bvprint.c \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libbio.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libbio.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libbio.a +rm *.o diff --git a/sys/src/lib/bio/build.json b/sys/src/lib/bio/build.json deleted file mode 100644 index 337c1d5..0000000 --- a/sys/src/lib/bio/build.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "libbio": { - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libbio.a", - "SourceFiles": [ - "bbuffered.c", - "bfildes.c", - "bflush.c", - "bgetrune.c", - "bgetc.c", - "bgetd.c", - "binit.c", - "boffset.c", - "bprint.c", - "bputrune.c", - "bputc.c", - "brdline.c", - "brdstr.c", - "bread.c", - "bseek.c", - "bwrite.c", - "bvprint.c" - ] - } -} diff --git a/sys/src/lib/complete/build.json b/sys/src/lib/complete/build.json deleted file mode 100644 index 2c261df..0000000 --- a/sys/src/lib/complete/build.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "libcomplete": { - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libcomplete.a", - "SourceFiles": [ - "complete.c" - ] - } -} diff --git a/sys/src/lib/complete/complete.rc.build b/sys/src/lib/complete/complete.rc.build new file mode 100644 index 0000000..ae1cc08 --- /dev/null +++ b/sys/src/lib/complete/complete.rc.build @@ -0,0 +1,13 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + complete.c \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libcomplete.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libcomplete.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libcomplete.a +rm *.o diff --git a/sys/src/lib/control/build.json b/sys/src/lib/control/build.json deleted file mode 100644 index 1510142..0000000 --- a/sys/src/lib/control/build.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "libcontrol": { - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libcontrol.a", - "SourceFiles": [ - "box.c", - "button.c", - "cache.c", - "control.c", - "entry.c", - "group.c", - "keyboard.c", - "label.c", - "menu.c", - "radiobutton.c", - "slider.c", - "tabs.c", - "text.c", - "textbutton.c", - "textbutton3.c" - ] - } -} diff --git a/sys/src/lib/control/control.rc.build b/sys/src/lib/control/control.rc.build new file mode 100644 index 0000000..8bc0af0 --- /dev/null +++ b/sys/src/lib/control/control.rc.build @@ -0,0 +1,27 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + box.c \ + button.c \ + cache.c \ + control.c \ + entry.c \ + group.c \ + keyboard.c \ + label.c \ + menu.c \ + radiobutton.c \ + slider.c \ + tabs.c \ + text.c \ + textbutton.c \ + textbutton3.c \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libcontrol.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libcontrol.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libcontrol.a +rm *.o diff --git a/sys/src/lib/disk/build.json b/sys/src/lib/disk/build.json deleted file mode 100644 index 03b2a39..0000000 --- a/sys/src/lib/disk/build.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "libdisk": { - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libdisk.a", - "SourceFiles": [ - "disk.c", - "proto.c", - "scsi.c", - "scsierrs.c" - ] - } -} diff --git a/sys/src/lib/disk/disk.rc.build b/sys/src/lib/disk/disk.rc.build new file mode 100644 index 0000000..98e3faa --- /dev/null +++ b/sys/src/lib/disk/disk.rc.build @@ -0,0 +1,16 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + disk.c \ + proto.c \ + scsi.c \ + scsierrs.c \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libdisk.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libdisk.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libdisk.a +rm *.o diff --git a/sys/src/lib/draw/build.json b/sys/src/lib/draw/build.json deleted file mode 100644 index 640f2ee..0000000 --- a/sys/src/lib/draw/build.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "Libdraw": { - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libdraw.a", - "SourceFiles": [ - "alloc.c", - "allocimagemix.c", - "arith.c", - "bezier.c", - "border.c", - "buildfont.c", - "bytesperline.c", - "chan.c", - "cloadimage.c", - "computil.c", - "creadimage.c", - "debug.c", - "defont.c", - "draw.c", - "drawrepl.c", - "egetrect.c", - "ellipse.c", - "emenuhit.c", - "event.c", - "fmt.c", - "font.c", - "freesubfont.c", - "getdefont.c", - "getrect.c", - "getsubfont.c", - "icossin.c", - "icossin2.c", - "init.c", - "keyboard.c", - "line.c", - "menuhit.c", - "mkfont.c", - "mouse.c", - "newwindow.c", - "openfont.c", - "poly.c", - "loadimage.c", - "readcolmap.c", - "readimage.c", - "readsubfont.c", - "rectclip.c", - "replclipr.c", - "rgb.c", - "scroll.c", - "string.c", - "stringbg.c", - "stringsubfont.c", - "stringwidth.c", - "subfont.c", - "subfontcache.c", - "subfontname.c", - "unloadimage.c", - "namedimage.c", - "window.c", - "writecolmap.c", - "writeimage.c", - "writesubfont.c" - ] - } -} diff --git a/sys/src/lib/draw/draw.rc.build b/sys/src/lib/draw/draw.rc.build new file mode 100644 index 0000000..59a388f --- /dev/null +++ b/sys/src/lib/draw/draw.rc.build @@ -0,0 +1,69 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + alloc.c \ + allocimagemix.c \ + arith.c \ + bezier.c \ + border.c \ + buildfont.c \ + bytesperline.c \ + chan.c \ + cloadimage.c \ + computil.c \ + creadimage.c \ + debug.c \ + defont.c \ + draw.c \ + drawrepl.c \ + egetrect.c \ + ellipse.c \ + emenuhit.c \ + event.c \ + fmt.c \ + font.c \ + freesubfont.c \ + getdefont.c \ + getrect.c \ + getsubfont.c \ + icossin.c \ + icossin2.c \ + init.c \ + keyboard.c \ + line.c \ + menuhit.c \ + mkfont.c \ + mouse.c \ + newwindow.c \ + openfont.c \ + poly.c \ + loadimage.c \ + readcolmap.c \ + readimage.c \ + readsubfont.c \ + rectclip.c \ + replclipr.c \ + rgb.c \ + scroll.c \ + string.c \ + stringbg.c \ + stringsubfont.c \ + stringwidth.c \ + subfont.c \ + subfontcache.c \ + subfontname.c \ + unloadimage.c \ + namedimage.c \ + window.c \ + writecolmap.c \ + writeimage.c \ + writesubfont.c \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libdraw.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libdraw.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libdraw.a +rm *.o diff --git a/sys/src/lib/draw/klibdraw.json b/sys/src/lib/draw/klibdraw.json deleted file mode 100644 index 5c7feb3..0000000 --- a/sys/src/lib/draw/klibdraw.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "KernelLibdraw": { - "Include": [ - "../klib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "klibdraw.a", - "SourceFiles": [ - "alloc.c", - "allocimagemix.c", - "arith.c", - "bezier.c", - "border.c", - "buildfont.c", - "bytesperline.c", - "chan.c", - "cloadimage.c", - "computil.c", - "creadimage.c", - "debug.c", - "defont.c", - "draw.c", - "drawrepl.c", - "egetrect.c", - "ellipse.c", - "emenuhit.c", - "fmt.c", - "font.c", - "freesubfont.c", - "getdefont.c", - "getrect.c", - "icossin.c", - "icossin2.c", - "line.c", - "menuhit.c", - "mkfont.c", - "poly.c", - "loadimage.c", - "readcolmap.c", - "readimage.c", - "rectclip.c", - "replclipr.c", - "rgb.c", - "scroll.c", - "string.c", - "stringbg.c", - "stringsubfont.c", - "stringwidth.c", - "subfont.c", - "subfontcache.c", - "subfontname.c", - "window.c" - ] - } -} diff --git a/sys/src/lib/draw/klibdraw.rc.build b/sys/src/lib/draw/klibdraw.rc.build new file mode 100644 index 0000000..9a5c33a --- /dev/null +++ b/sys/src/lib/draw/klibdraw.rc.build @@ -0,0 +1,54 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + alloc.c \ + allocimagemix.c \ + arith.c \ + bezier.c \ + border.c \ + buildfont.c \ + bytesperline.c \ + chan.c \ + cloadimage.c \ + computil.c \ + creadimage.c \ + debug.c \ + defont.c \ + draw.c \ + drawrepl.c \ + egetrect.c \ + ellipse.c \ + emenuhit.c \ + fmt.c \ + font.c \ + freesubfont.c \ + getdefont.c \ + getrect.c \ + icossin.c \ + icossin2.c \ + line.c \ + menuhit.c \ + mkfont.c \ + poly.c \ + loadimage.c \ + readcolmap.c \ + readimage.c \ + rectclip.c \ + replclipr.c \ + rgb.c \ + scroll.c \ + string.c \ + stringbg.c \ + stringsubfont.c \ + stringwidth.c \ + subfont.c \ + subfontcache.c \ + subfontname.c \ + window.c \ + $KLIB_CFLAGS +prependLibraryName klibdraw.a +$AR -rs $JEHANNE/arch/$ARCH/lib/klibdraw.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/klibdraw.a +rm *.o diff --git a/sys/src/lib/flate/build.json b/sys/src/lib/flate/build.json deleted file mode 100644 index 42baa88..0000000 --- a/sys/src/lib/flate/build.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "libflate": { - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libflate.a", - "SourceFiles": [ - "deflate.c", - "deflatezlib.c", - "deflateblock.c", - "deflatezlibblock.c", - "inflate.c", - "inflatezlib.c", - "inflateblock.c", - "inflatezlibblock.c", - "flateerr.c", - "crc.c", - "adler.c" - ] - } -} diff --git a/sys/src/lib/flate/flate.rc.build b/sys/src/lib/flate/flate.rc.build new file mode 100644 index 0000000..08113ba --- /dev/null +++ b/sys/src/lib/flate/flate.rc.build @@ -0,0 +1,23 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + deflate.c \ + deflatezlib.c \ + deflateblock.c \ + deflatezlibblock.c \ + inflate.c \ + inflatezlib.c \ + inflateblock.c \ + inflatezlibblock.c \ + flateerr.c \ + crc.c \ + adler.c \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libflate.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libflate.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libflate.a +rm *.o diff --git a/sys/src/lib/frame/build.json b/sys/src/lib/frame/build.json deleted file mode 100644 index 124184d..0000000 --- a/sys/src/lib/frame/build.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "libframe": { - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libframe.a", - "SourceFiles": [ - "frbox.c", - "frdraw.c", - "frdelete.c", - "frinit.c", - "frinsert.c", - "frptofchar.c", - "frselect.c", - "frstr.c", - "frutil.c" - ] - } -} diff --git a/sys/src/lib/frame/frame.rc.build b/sys/src/lib/frame/frame.rc.build new file mode 100644 index 0000000..937e6b9 --- /dev/null +++ b/sys/src/lib/frame/frame.rc.build @@ -0,0 +1,21 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + frbox.c \ + frdraw.c \ + frdelete.c \ + frinit.c \ + frinsert.c \ + frptofchar.c \ + frselect.c \ + frstr.c \ + frutil.c \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libframe.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libframe.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libframe.a +rm *.o diff --git a/sys/src/lib/ip/build.json b/sys/src/lib/ip/build.json deleted file mode 100644 index 916e284..0000000 --- a/sys/src/lib/ip/build.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "Libip": { - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libip.a", - "SourceFiles": [ - "eipfmt.c", - "equivip.c", - "parseip.c", - "parseether.c", - "myetheraddr.c", - "myipaddr.c", - "classmask.c", - "bo.c", - "readipifc.c", - "ipaux.c", - "ptclbsum.c" - ] - } -} diff --git a/sys/src/lib/ip/ip.rc.build b/sys/src/lib/ip/ip.rc.build new file mode 100644 index 0000000..f868e63 --- /dev/null +++ b/sys/src/lib/ip/ip.rc.build @@ -0,0 +1,23 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + eipfmt.c \ + equivip.c \ + parseip.c \ + parseether.c \ + myetheraddr.c \ + myipaddr.c \ + classmask.c \ + bo.c \ + readipifc.c \ + ipaux.c \ + ptclbsum.c \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libip.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libip.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libip.a +rm *.o diff --git a/sys/src/lib/ip/klibip.json b/sys/src/lib/ip/klibip.json deleted file mode 100644 index 1409271..0000000 --- a/sys/src/lib/ip/klibip.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "KernelLibip": { - "Include": [ - "../klib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "klibip.a", - "SourceFiles": [ - "eipfmt.c", - "equivip.c", - "parseip.c", - "parseether.c", - "myipaddr.c", - "classmask.c", - "bo.c", - "ipaux.c", - "ptclbsum.c" - ] - } -} diff --git a/sys/src/lib/ip/klibip.rc.build b/sys/src/lib/ip/klibip.rc.build new file mode 100644 index 0000000..22da906 --- /dev/null +++ b/sys/src/lib/ip/klibip.rc.build @@ -0,0 +1,19 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + eipfmt.c \ + equivip.c \ + parseip.c \ + parseether.c \ + myipaddr.c \ + classmask.c \ + bo.c \ + ipaux.c \ + ptclbsum.c \ + $KLIB_CFLAGS +prependLibraryName klibip.a +$AR -rs $JEHANNE/arch/$ARCH/lib/klibip.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/klibip.a +rm *.o diff --git a/sys/src/lib/ip/libip.json b/sys/src/lib/ip/libip.json deleted file mode 100644 index 916e284..0000000 --- a/sys/src/lib/ip/libip.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "Libip": { - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libip.a", - "SourceFiles": [ - "eipfmt.c", - "equivip.c", - "parseip.c", - "parseether.c", - "myetheraddr.c", - "myipaddr.c", - "classmask.c", - "bo.c", - "readipifc.c", - "ipaux.c", - "ptclbsum.c" - ] - } -} diff --git a/sys/src/lib/jehanne/CrtFiles.rc.build b/sys/src/lib/jehanne/CrtFiles.rc.build new file mode 100644 index 0000000..ed98653 --- /dev/null +++ b/sys/src/lib/jehanne/CrtFiles.rc.build @@ -0,0 +1,14 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + amd64/crt0.s \ + amd64/crti.s \ + amd64/crtn.s \ + -fasm \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +cp *.o $JEHANNE/arch/$ARCH/lib/ +rm *.o diff --git a/sys/src/lib/jehanne/build.json b/sys/src/lib/jehanne/build.json deleted file mode 100644 index b1b9b03..0000000 --- a/sys/src/lib/jehanne/build.json +++ /dev/null @@ -1,245 +0,0 @@ -{ - "CrtFiles": { - "Cflags": [ - "-fasm" - ], - "Include": [ - "../lib.json" - ], - "Post": [ - "cp crt0.o crti.o crtn.o $JEHANNE/arch/$ARCH/lib/" - ], - "SourceFiles": [ - "$ARCH/crt0.s", - "$ARCH/crti.s", - "$ARCH/crtn.s" - ] - }, - "LibJehanne": { - "Cflags": [ - "-fasm" - ], - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libjehanne.a", - "Pre": [ - "usyscalls header $JEHANNE/sys/src/sysconf.json > $JEHANNE/arch/amd64/include/syscalls.h", - "usyscalls code $JEHANNE/sys/src/sysconf.json > $JEHANNE/sys/src/lib/jehanne/amd64/syscalls.c" - ], - "Post": [ - "TOOL=ar; $TOOLPREFIX$TOOL rcs $JEHANNE/arch/$ARCH/lib/libssp.a", - "TOOL=ar; $TOOLPREFIX$TOOL rcs $JEHANNE/arch/$ARCH/lib/libssp_nonshared.a" - ], - "SourceFiles": [ - "9sys/access.c", - "9sys/announce.c", - "9sys/awakened.c", - "9sys/chdir.c", - "9sys/convD2M.c", - "9sys/convM2D.c", - "9sys/cputime.c", - "9sys/ctime.c", - "9sys/dial.c", - "9sys/dirfstat.c", - "9sys/dirfwstat.c", - "9sys/dirmodefmt.c", - "9sys/dirread.c", - "9sys/dirstat.c", - "9sys/dirwstat.c", - "9sys/dup.c", - "9sys/fork.c", - "9sys/getnetconninfo.c", - "9sys/getenv.c", - "9sys/getmainpid.c", - "9sys/getpid.c", - "9sys/getppid.c", - "9sys/getwd.c", - "9sys/iounit.c", - "9sys/nsec.c", - "9sys/nulldir.c", - "9sys/ocreate.c", - "9sys/pexec.c", - "9sys/pipe.c", - "9sys/postnote.c", - "9sys/privalloc.c", - "9sys/pushssl.c", - "9sys/putenv.c", - "9sys/qlock.c", - "9sys/read.c", - "9sys/rerrstr.c", - "9sys/segbrk.c", - "9sys/segattach.c", - "9sys/setnetmtpt.c", - "9sys/sleep.c", - "9sys/stat.c", - "9sys/sysfatal.c", - "9sys/syslog.c", - "9sys/sysname.c", - "9sys/time.c", - "9sys/times.c", - "9sys/tm2sec.c", - "9sys/truerand.c", - "9sys/tsemacquire.c", - "9sys/wait.c", - "9sys/waitpid.c", - "9sys/werrstr.c", - "9sys/write.c", - "apw/abort.c", - "apw/div.c", - "apw/eprintf.c", - "apw/exit.c", - "apw/system.c", - "fmt/dofmt.c", - "fmt/dorfmt.c", - "fmt/errfmt.c", - "fmt/fltfmt.c", - "fmt/fmt.c", - "fmt/fmtfd.c", - "fmt/fmtlock.c", - "fmt/fmtprint.c", - "fmt/fmtquote.c", - "fmt/fmtrune.c", - "fmt/fmtstr.c", - "fmt/fmtvprint.c", - "fmt/fprint.c", - "fmt/print.c", - "fmt/runefmtstr.c", - "fmt/runeseprint.c", - "fmt/runesmprint.c", - "fmt/runesnprint.c", - "fmt/runesprint.c", - "fmt/runevseprint.c", - "fmt/runevsmprint.c", - "fmt/runevsnprint.c", - "fmt/seprint.c", - "fmt/smprint.c", - "fmt/snprint.c", - "fmt/sprint.c", - "fmt/vfprint.c", - "fmt/vseprint.c", - "fmt/vsmprint.c", - "fmt/vsnprint.c", - "port/_assert.c", - "port/abs.c", - "port/asin.c", - "port/atan.c", - "port/atan2.c", - "port/atexit.c", - "port/atnotify.c", - "port/atof.c", - "port/atol.c", - "port/atoll.c", - "port/bsearch.c", - "port/cistrcmp.c", - "port/cistrncmp.c", - "port/cistrstr.c", - "port/charstod.c", - "port/cleanname.c", - "port/ctype.c", - "port/encodefmt.c", - "port/execl.c", - "port/exits.c", - "port/exp.c", - "port/fabs.c", - "port/floor.c", - "port/fmod.c", - "port/frand.c", - "port/frexp.c", - "port/getfields.c", - "port/getuser.c", - "port/hangup.c", - "port/hypot.c", - "port/lnrand.c", - "port/lock.c", - "port/log.c", - "port/lrand.c", - "port/malloc.c", - "port/memccpy.c", - "port/memchr.c", - "port/memcmp.c", - "port/memmove.c", - "port/memset.c", - "port/mktemp.c", - "port/muldiv.c", - "port/nan.c", - "port/needsrcquote.c", - "port/netmkaddr.c", - "port/nrand.c", - "port/ntruerand.c", - "port/perror.c", - "port/pool.c", - "port/pow.c", - "port/pow10.c", - "port/qsort.c", - "port/quote.c", - "port/rand.c", - "port/readn.c", - "port/rune.c", - "port/runebase.c", - "port/runebsearch.c", - "port/runestrcat.c", - "port/runestrchr.c", - "port/runestrcmp.c", - "port/runestrcpy.c", - "port/runestrecpy.c", - "port/runestrdup.c", - "port/runestrncat.c", - "port/runestrncmp.c", - "port/runestrncpy.c", - "port/runestrrchr.c", - "port/runestrlen.c", - "port/runestrstr.c", - "port/runetype.c", - "port/sin.c", - "port/sinh.c", - "port/strcat.c", - "port/strchr.c", - "port/strcmp.c", - "port/strcpy.c", - "port/strecpy.c", - "port/strcspn.c", - "port/strdup.c", - "port/strlen.c", - "port/strncat.c", - "port/strncmp.c", - "port/strncpy.c", - "port/strpbrk.c", - "port/strrchr.c", - "port/strspn.c", - "port/strstr.c", - "port/strtod.c", - "port/strtok.c", - "port/strtol.c", - "port/strtoll.c", - "port/strtoul.c", - "port/strtoull.c", - "port/tan.c", - "port/tanh.c", - "port/tokenize.c", - "port/toupper.c", - "port/utfecpy.c", - "port/utflen.c", - "port/utfnlen.c", - "port/utfrune.c", - "port/utfrrune.c", - "port/utfutf.c", - "port/u16.c", - "port/u32.c", - "port/u64.c", - "$ARCH/initlib.c", - "$ARCH/syscalls.c", - "$ARCH/notejmp.c", - "$ARCH/cycles.c", - "$ARCH/argv0.c", - "$ARCH/rdpmc.c", - "$ARCH/setjmp.s", - "$ARCH/stackchk.c", - "$ARCH/getfcr.s", - "$ARCH/sqrt.s", - "$ARCH/tas.s", - "$ARCH/atom.s" - ] - } -} diff --git a/sys/src/lib/jehanne/jehanne.rc.build b/sys/src/lib/jehanne/jehanne.rc.build new file mode 100644 index 0000000..faa3c50 --- /dev/null +++ b/sys/src/lib/jehanne/jehanne.rc.build @@ -0,0 +1,226 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +build CrtFiles.rc.build + +cat syscallh.rc.template | template | rc | sed 's/ ,/,/g; s/ )/)/g' > $JEHANNE/arch/$ARCH/include/syscalls.h +cat syscallc.rc.template | template | rc | sed 's/ ,/,/g; s/ )/)/g' > $JEHANNE/sys/src/lib/jehanne/$ARCH/syscalls.c +rm -f *.o *.tag.* +$CC \ + 9sys/access.c \ + 9sys/announce.c \ + 9sys/awakened.c \ + 9sys/chdir.c \ + 9sys/convD2M.c \ + 9sys/convM2D.c \ + 9sys/cputime.c \ + 9sys/ctime.c \ + 9sys/dial.c \ + 9sys/dirfstat.c \ + 9sys/dirfwstat.c \ + 9sys/dirmodefmt.c \ + 9sys/dirread.c \ + 9sys/dirstat.c \ + 9sys/dirwstat.c \ + 9sys/dup.c \ + 9sys/fork.c \ + 9sys/getnetconninfo.c \ + 9sys/getenv.c \ + 9sys/getmainpid.c \ + 9sys/getpid.c \ + 9sys/getppid.c \ + 9sys/getwd.c \ + 9sys/iounit.c \ + 9sys/nsec.c \ + 9sys/nulldir.c \ + 9sys/ocreate.c \ + 9sys/pexec.c \ + 9sys/pipe.c \ + 9sys/postnote.c \ + 9sys/privalloc.c \ + 9sys/pushssl.c \ + 9sys/putenv.c \ + 9sys/qlock.c \ + 9sys/read.c \ + 9sys/rerrstr.c \ + 9sys/segbrk.c \ + 9sys/segattach.c \ + 9sys/setnetmtpt.c \ + 9sys/sleep.c \ + 9sys/stat.c \ + 9sys/sysfatal.c \ + 9sys/syslog.c \ + 9sys/sysname.c \ + 9sys/time.c \ + 9sys/times.c \ + 9sys/tm2sec.c \ + 9sys/truerand.c \ + 9sys/tsemacquire.c \ + 9sys/wait.c \ + 9sys/waitpid.c \ + 9sys/werrstr.c \ + 9sys/write.c \ + apw/abort.c \ + apw/div.c \ + apw/eprintf.c \ + apw/exit.c \ + apw/system.c \ + fmt/dofmt.c \ + fmt/dorfmt.c \ + fmt/errfmt.c \ + fmt/fltfmt.c \ + fmt/fmt.c \ + fmt/fmtfd.c \ + fmt/fmtlock.c \ + fmt/fmtprint.c \ + fmt/fmtquote.c \ + fmt/fmtrune.c \ + fmt/fmtstr.c \ + fmt/fmtvprint.c \ + fmt/fprint.c \ + fmt/print.c \ + fmt/runefmtstr.c \ + fmt/runeseprint.c \ + fmt/runesmprint.c \ + fmt/runesnprint.c \ + fmt/runesprint.c \ + fmt/runevseprint.c \ + fmt/runevsmprint.c \ + fmt/runevsnprint.c \ + fmt/seprint.c \ + fmt/smprint.c \ + fmt/snprint.c \ + fmt/sprint.c \ + fmt/vfprint.c \ + fmt/vseprint.c \ + fmt/vsmprint.c \ + fmt/vsnprint.c \ + port/_assert.c \ + port/abs.c \ + port/asin.c \ + port/atan.c \ + port/atan2.c \ + port/atexit.c \ + port/atnotify.c \ + port/atof.c \ + port/atol.c \ + port/atoll.c \ + port/bsearch.c \ + port/cistrcmp.c \ + port/cistrncmp.c \ + port/cistrstr.c \ + port/charstod.c \ + port/cleanname.c \ + port/ctype.c \ + port/encodefmt.c \ + port/execl.c \ + port/exits.c \ + port/exp.c \ + port/fabs.c \ + port/floor.c \ + port/fmod.c \ + port/frand.c \ + port/frexp.c \ + port/getfields.c \ + port/getuser.c \ + port/hangup.c \ + port/hypot.c \ + port/lnrand.c \ + port/lock.c \ + port/log.c \ + port/lrand.c \ + port/malloc.c \ + port/memccpy.c \ + port/memchr.c \ + port/memcmp.c \ + port/memmove.c \ + port/memset.c \ + port/mktemp.c \ + port/muldiv.c \ + port/nan.c \ + port/needsrcquote.c \ + port/netmkaddr.c \ + port/nrand.c \ + port/ntruerand.c \ + port/perror.c \ + port/pool.c \ + port/pow.c \ + port/pow10.c \ + port/qsort.c \ + port/quote.c \ + port/rand.c \ + port/readn.c \ + port/rune.c \ + port/runebase.c \ + port/runebsearch.c \ + port/runestrcat.c \ + port/runestrchr.c \ + port/runestrcmp.c \ + port/runestrcpy.c \ + port/runestrecpy.c \ + port/runestrdup.c \ + port/runestrncat.c \ + port/runestrncmp.c \ + port/runestrncpy.c \ + port/runestrrchr.c \ + port/runestrlen.c \ + port/runestrstr.c \ + port/runetype.c \ + port/sin.c \ + port/sinh.c \ + port/strcat.c \ + port/strchr.c \ + port/strcmp.c \ + port/strcpy.c \ + port/strecpy.c \ + port/strcspn.c \ + port/strdup.c \ + port/strlen.c \ + port/strncat.c \ + port/strncmp.c \ + port/strncpy.c \ + port/strpbrk.c \ + port/strrchr.c \ + port/strspn.c \ + port/strstr.c \ + port/strtod.c \ + port/strtok.c \ + port/strtol.c \ + port/strtoll.c \ + port/strtoul.c \ + port/strtoull.c \ + port/tan.c \ + port/tanh.c \ + port/tokenize.c \ + port/toupper.c \ + port/utfecpy.c \ + port/utflen.c \ + port/utfnlen.c \ + port/utfrune.c \ + port/utfrrune.c \ + port/utfutf.c \ + port/u16.c \ + port/u32.c \ + port/u64.c \ + amd64/initlib.c \ + amd64/syscalls.c \ + amd64/notejmp.c \ + amd64/cycles.c \ + amd64/argv0.c \ + amd64/rdpmc.c \ + amd64/setjmp.s \ + amd64/stackchk.c \ + amd64/getfcr.s \ + amd64/sqrt.s \ + amd64/tas.s \ + amd64/atom.s \ + -fasm \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libjehanne.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libjehanne.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libjehanne.a +$AR rcs $JEHANNE/arch/$ARCH/lib/libssp.a +$AR rcs $JEHANNE/arch/$ARCH/lib/libssp_nonshared.a +rm *.o diff --git a/sys/src/lib/jehanne/klibc.json b/sys/src/lib/jehanne/klibc.json deleted file mode 100644 index 9c05fe2..0000000 --- a/sys/src/lib/jehanne/klibc.json +++ /dev/null @@ -1,150 +0,0 @@ -{ - "KernelLibc": { - "Cflags": [ - "-DKERNEL", - "-fasm" - ], - "Include": [ - "../klib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "klibc.a", - "Pre": [ - "usyscalls header $JEHANNE/sys/src/sysconf.json > $JEHANNE/arch/amd64/include/syscalls.h", - "usyscalls code $JEHANNE/sys/src/sysconf.json > $JEHANNE/sys/src/lib/jehanne/amd64/syscalls.c" - ], - "SourceFiles": [ - "9sys/convD2M.c", - "9sys/convM2D.c", - "fmt/dofmt.c", - "fmt/dorfmt.c", - "fmt/errfmt.c", - "fmt/fltfmt.c", - "fmt/fmt.c", - "fmt/fmtfd.c", - "fmt/fmtlock.c", - "fmt/fmtprint.c", - "fmt/fmtquote.c", - "fmt/fmtrune.c", - "fmt/fmtstr.c", - "fmt/fmtvprint.c", - "fmt/runefmtstr.c", - "fmt/runeseprint.c", - "fmt/runesmprint.c", - "fmt/runesnprint.c", - "fmt/runesprint.c", - "fmt/runevseprint.c", - "fmt/runevsmprint.c", - "fmt/runevsnprint.c", - "fmt/seprint.c", - "fmt/smprint.c", - "fmt/snprint.c", - "fmt/sprint.c", - "fmt/vseprint.c", - "fmt/vsmprint.c", - "fmt/vsnprint.c", - "port/_assert.c", - "port/abs.c", - "port/asin.c", - "port/atan.c", - "port/atan2.c", - "port/atof.c", - "port/atol.c", - "port/atoll.c", - "port/cistrcmp.c", - "port/cistrncmp.c", - "port/cistrstr.c", - "port/charstod.c", - "port/cleanname.c", - "port/ctype.c", - "port/encodefmt.c", - "port/exp.c", - "port/fabs.c", - "port/floor.c", - "port/fmod.c", - "port/frand.c", - "port/frexp.c", - "port/getfields.c", - "port/hypot.c", - "port/lnrand.c", - "port/log.c", - "port/lrand.c", - "port/memccpy.c", - "port/memchr.c", - "port/memcmp.c", - "port/memmove.c", - "port/memset.c", - "port/muldiv.c", - "port/nan.c", - "port/needsrcquote.c", - "port/netmkaddr.c", - "port/nrand.c", - "port/ntruerand.c", - "port/pool.c", - "port/pow.c", - "port/pow10.c", - "port/qsort.c", - "port/quote.c", - "port/rand.c", - "port/rune.c", - "port/runebase.c", - "port/runebsearch.c", - "port/runestrcat.c", - "port/runestrchr.c", - "port/runestrcmp.c", - "port/runestrcpy.c", - "port/runestrecpy.c", - "port/runestrdup.c", - "port/runestrncat.c", - "port/runestrncmp.c", - "port/runestrncpy.c", - "port/runestrrchr.c", - "port/runestrlen.c", - "port/runestrstr.c", - "port/runetype.c", - "port/sin.c", - "port/sinh.c", - "port/strcat.c", - "port/strchr.c", - "port/strcmp.c", - "port/strcpy.c", - "port/strecpy.c", - "port/strcspn.c", - "port/strdup.c", - "port/strlen.c", - "port/strncat.c", - "port/strncmp.c", - "port/strncpy.c", - "port/strpbrk.c", - "port/strrchr.c", - "port/strspn.c", - "port/strstr.c", - "port/strtod.c", - "port/strtok.c", - "port/strtol.c", - "port/strtoll.c", - "port/strtoul.c", - "port/strtoull.c", - "port/tan.c", - "port/tanh.c", - "port/tokenize.c", - "port/toupper.c", - "port/utfecpy.c", - "port/utflen.c", - "port/utfnlen.c", - "port/utfrune.c", - "port/utfrrune.c", - "port/utfutf.c", - "port/u16.c", - "port/u32.c", - "port/u64.c", - "$ARCH/argv0.c", - "$ARCH/cycles.c", - "$ARCH/rdpmc.c", - "$ARCH/setjmp.s", - "$ARCH/sqrt.s", - "$ARCH/stackchk.c", - "$ARCH/tas.s" - ] - } -} diff --git a/sys/src/lib/jehanne/klibc.rc.build b/sys/src/lib/jehanne/klibc.rc.build new file mode 100644 index 0000000..5d0db2e --- /dev/null +++ b/sys/src/lib/jehanne/klibc.rc.build @@ -0,0 +1,145 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +cat syscallh.rc.template | template | rc | sed 's/ ,/,/g; s/ )/)/g' > $JEHANNE/arch/$ARCH/include/syscalls.h +cat syscallc.rc.template | template | rc | sed 's/ ,/,/g; s/ )/)/g' > $JEHANNE/sys/src/lib/jehanne/$ARCH/syscalls.c +rm -f *.o *.tag.* + + +$CC \ + 9sys/convD2M.c \ + 9sys/convM2D.c \ + fmt/dofmt.c \ + fmt/dorfmt.c \ + fmt/errfmt.c \ + fmt/fltfmt.c \ + fmt/fmt.c \ + fmt/fmtfd.c \ + fmt/fmtlock.c \ + fmt/fmtprint.c \ + fmt/fmtquote.c \ + fmt/fmtrune.c \ + fmt/fmtstr.c \ + fmt/fmtvprint.c \ + fmt/runefmtstr.c \ + fmt/runeseprint.c \ + fmt/runesmprint.c \ + fmt/runesnprint.c \ + fmt/runesprint.c \ + fmt/runevseprint.c \ + fmt/runevsmprint.c \ + fmt/runevsnprint.c \ + fmt/seprint.c \ + fmt/smprint.c \ + fmt/snprint.c \ + fmt/sprint.c \ + fmt/vseprint.c \ + fmt/vsmprint.c \ + fmt/vsnprint.c \ + port/_assert.c \ + port/abs.c \ + port/asin.c \ + port/atan.c \ + port/atan2.c \ + port/atof.c \ + port/atol.c \ + port/atoll.c \ + port/cistrcmp.c \ + port/cistrncmp.c \ + port/cistrstr.c \ + port/charstod.c \ + port/cleanname.c \ + port/ctype.c \ + port/encodefmt.c \ + port/exp.c \ + port/fabs.c \ + port/floor.c \ + port/fmod.c \ + port/frand.c \ + port/frexp.c \ + port/getfields.c \ + port/hypot.c \ + port/lnrand.c \ + port/log.c \ + port/lrand.c \ + port/memccpy.c \ + port/memchr.c \ + port/memcmp.c \ + port/memmove.c \ + port/memset.c \ + port/muldiv.c \ + port/nan.c \ + port/needsrcquote.c \ + port/netmkaddr.c \ + port/nrand.c \ + port/ntruerand.c \ + port/pool.c \ + port/pow.c \ + port/pow10.c \ + port/qsort.c \ + port/quote.c \ + port/rand.c \ + port/rune.c \ + port/runebase.c \ + port/runebsearch.c \ + port/runestrcat.c \ + port/runestrchr.c \ + port/runestrcmp.c \ + port/runestrcpy.c \ + port/runestrecpy.c \ + port/runestrdup.c \ + port/runestrncat.c \ + port/runestrncmp.c \ + port/runestrncpy.c \ + port/runestrrchr.c \ + port/runestrlen.c \ + port/runestrstr.c \ + port/runetype.c \ + port/sin.c \ + port/sinh.c \ + port/strcat.c \ + port/strchr.c \ + port/strcmp.c \ + port/strcpy.c \ + port/strecpy.c \ + port/strcspn.c \ + port/strdup.c \ + port/strlen.c \ + port/strncat.c \ + port/strncmp.c \ + port/strncpy.c \ + port/strpbrk.c \ + port/strrchr.c \ + port/strspn.c \ + port/strstr.c \ + port/strtod.c \ + port/strtok.c \ + port/strtol.c \ + port/strtoll.c \ + port/strtoul.c \ + port/strtoull.c \ + port/tan.c \ + port/tanh.c \ + port/tokenize.c \ + port/toupper.c \ + port/utfecpy.c \ + port/utflen.c \ + port/utfnlen.c \ + port/utfrune.c \ + port/utfrrune.c \ + port/utfutf.c \ + port/u16.c \ + port/u32.c \ + port/u64.c \ + $ARCH/argv0.c \ + $ARCH/cycles.c \ + $ARCH/rdpmc.c \ + $ARCH/setjmp.s \ + $ARCH/sqrt.s \ + $ARCH/stackchk.c \ + $ARCH/tas.s \ + $KLIB_CFLAGS +prependLibraryName klibc.a +$AR -rs $JEHANNE/arch/$ARCH/lib/klibc.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/klibc.a +rm *.o diff --git a/sys/src/lib/jehanne/syscallc.rc.template b/sys/src/lib/jehanne/syscallc.rc.template new file mode 100644 index 0000000..a3d8eca --- /dev/null +++ b/sys/src/lib/jehanne/syscallc.rc.template @@ -0,0 +1,60 @@ +/* + * This file is part of Jehanne. + * + * Copyright (C) 2022 Giacomo Tesio + * + * Jehanne is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3 of the License. + * + * Jehanne is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jehanne. If not, see . + */ +/* automatically generated by syscallc.rc.template */ + +#define PORTABLE_SYSCALLS +#include + +#! fn setClobbers { +#! if( ! ~ $"CLOBBERS *"memory" && ~ $1 *'*' && ! ~ $1 const*) { +#! CLOBBERS=$CLOBBERS', "memory"' +#! } +#! } +#! ifs=' +#! ' +#! CONFIGURATION=`{sed -n '/^$/!{/^#/!p}' $JEHANNE/sys/src/sysconf/syscalls.rc.confs} +#! for (line in $CONFIGURATION){ +#! eval $line +#! ID='$'$ID +#! CLOBBERS='"cc", "rcx", "r11"' +#! CALLARGS=$ARGS(1)^' a1' +#! setClobbers $ARGS(1) +#! if( ! ~ 1 $#ARGS){ +#! for(idx in `{seq 2 $#ARGS}){ +#! CALLARGS=$CALLARGS^', '^$ARGS($idx)^' a'^$idx +#! setClobbers $ARGS($idx) +#! } +#! } + +#pragma weak sys_$NAME +$RET +sys_$NAME^($CALLARGS) +{ + register $RET __ret asm ("rax"); + __asm__ __volatile__ ( + "movq %%rcx, %%r10" "\n\t" + "movq $ID, %%rax" "\n\t" + "syscall" + : "=r" (__ret) + : /* args are ready */ + : $CLOBBERS + ); + return __ret; +} + +#! } diff --git a/sys/src/lib/jehanne/syscallh.rc.template b/sys/src/lib/jehanne/syscallh.rc.template new file mode 100644 index 0000000..9a3f726 --- /dev/null +++ b/sys/src/lib/jehanne/syscallh.rc.template @@ -0,0 +1,51 @@ +/* + * This file is part of Jehanne. + * + * Copyright (C) 2022 Giacomo Tesio + * + * Jehanne is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3 of the License. + * + * Jehanne is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jehanne. If not, see . + */ +/* automatically generated by syscallh.rc.template */ + +#! fn toPascalCase { +#! sed 's/^\(.\)\(.\+\)/echo -n \1 | tr a-z A-Z; echo \2/g' | rc +#! } + +typedef enum Syscalls +{ +#! ifs=' +#! ' +#! CONFIGURATION=`{sed -n '/^$/!{/^#/!p}' $JEHANNE/sys/src/sysconf/syscalls.rc.confs} +#! for (line in $CONFIGURATION){ +#! eval $line +#! ENUM_NAME=Sys`{echo $NAME|toPascalCase} + $ENUM_NAME = $ID, +#! } +} Syscalls; + +#ifndef KERNEL + +#! . $JEHANNE/sys/src/kern/$ARCH/registry-$ARCH.rc.conf +#! ifs=' +#! ' +#! CONFIGURATION=`{sed -n '/^$/!{/^#/!p}' $JEHANNE/sys/src/sysconf/syscalls.rc.confs} +#! for (line in $CONFIGURATION){ +#! eval $line +#! OTHERARGS=() +#! if( ! ~ 1 $#ARGS){ +#! OTHERARGS=(', '^$ARGS(2-)) +#! } +extern $RET sys_$NAME($ARGS(1) $"OTHERARGS); +#! } + +#endif diff --git a/sys/src/lib/klib.json b/sys/src/lib/klib.json deleted file mode 100644 index 61686e9..0000000 --- a/sys/src/lib/klib.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "KernelLibs": { - "Cflags": [ - "-DKERNEL", - "-c", - "-mcmodel=kernel", - "-O0", - "-fplan9-extensions", - "-ffreestanding", - "-fstack-protector-all", - "-fno-builtin", - "-Wall", - "-Wno-missing-braces", - "-Wno-parentheses", - "-Wno-unknown-pragmas", - "-Wuninitialized", - "-g" - ], - "Oflags": [ - "-static" - ], - "Post": [ - "rm *.o" - ], - "Pre": [ - "rm -f *.o *.tag.*" - ] - } -} diff --git a/sys/src/lib/klibs.json b/sys/src/lib/klibs.json deleted file mode 100644 index b6cf29a..0000000 --- a/sys/src/lib/klibs.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "klibs": { - "Projects": [ - "/sys/src/lib/jehanne/klibc.json", - "/sys/src/lib/9p2000/klib9p2000.json", - "/sys/src/lib/ip/klibip.json", - "/sys/src/lib/draw/klibdraw.json", - "/sys/src/lib/memdraw/klibmemdraw.json", - "/sys/src/lib/memlayer/klibmemlayer.json", - "/sys/src/lib/mp/klibmp.json", - "/sys/src/lib/sec/klibsec.json", - "/sys/src/lib/aml/klibaml.json" - ] - } -} diff --git a/sys/src/lib/klibs.rc.build b/sys/src/lib/klibs.rc.build new file mode 100644 index 0000000..8337ccf --- /dev/null +++ b/sys/src/lib/klibs.rc.build @@ -0,0 +1,13 @@ +#!/cmd/rc + +mkdir -p $JEHANNE/arch/$ARCH/lib + +build jehanne/klibc.rc.build +build 9p2000/klib9p2000.rc.build +build ip/klibip.rc.build +build draw/klibdraw.rc.build +build memdraw/klibmemdraw.rc.build +build memlayer/klibmemlayer.rc.build +build mp/klibmp.rc.build +build sec/klibsec.rc.build +build aml/klibaml.rc.build diff --git a/sys/src/lib/lib.json b/sys/src/lib/lib.json deleted file mode 100644 index 562adc0..0000000 --- a/sys/src/lib/lib.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "Libs": { - "Include": [ - "/arch/$ARCH/include/cflags.json" - ], - "Cflags": [ - "-fstack-check", - "-fstack-protector-all", - "-c" - ], - "Oflags": [ - "-static" - ], - "Post": [ - "rm *.o" - ], - "Pre": [ - "rm -f *.o *.tag.*" - ] - } -} diff --git a/sys/src/lib/libs.json b/sys/src/lib/libs.json deleted file mode 100644 index d6e4f16..0000000 --- a/sys/src/lib/libs.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "libs.json": { - "Projects": [ - "/sys/src/lib/jehanne/", - "/sys/src/lib/9p2000", - "/sys/src/lib/ip/", - "/sys/src/lib/draw/", - "/sys/src/lib/9p/", - "/sys/src/lib/String/", - "/sys/src/lib/aml/", - "/sys/src/lib/auth/", - "/sys/src/lib/authsrv/", - "/sys/src/lib/avl/", - "/sys/src/lib/bio/", - "/sys/src/lib/complete/", - "/sys/src/lib/control/", - "/sys/src/lib/disk/", - "/sys/src/lib/flate/", - "/sys/src/lib/frame/", - "/sys/src/lib/memdraw/", - "/sys/src/lib/memlayer/", - "/sys/src/lib/mp/", - "/sys/src/lib/ndb/", - "/sys/src/lib/plumb/", - "/sys/src/lib/regexp/", - "/sys/src/lib/sec/", - "/sys/src/lib/thread/", - "/sys/src/lib/posix/" - ] - } -} diff --git a/sys/src/lib/libs.rc.build b/sys/src/lib/libs.rc.build new file mode 100644 index 0000000..384d45b --- /dev/null +++ b/sys/src/lib/libs.rc.build @@ -0,0 +1,29 @@ +#!/cmd/rc + +mkdir -p $JEHANNE/arch/$ARCH/lib + +build jehanne/ +build 9p2000 +build ip/ +build draw/ +build 9p/ +build String/ +build aml/ +build auth/ +build authsrv/ +build avl/ +build bio/ +build complete/ +build control/ +build disk/ +build flate/ +build frame/ +build memdraw/ +build memlayer/ +build mp/ +build ndb/ +build plumb/ +build regexp/ +build sec/ +build thread/ +build posix/ diff --git a/sys/src/lib/memdraw/build.json b/sys/src/lib/memdraw/build.json deleted file mode 100644 index 170f138..0000000 --- a/sys/src/lib/memdraw/build.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "libmemdraw": { - "Include": [ - "../lib.json" - ], - "Cflags": [ - "-fno-strict-aliasing" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libmemdraw.a", - "SourceFiles": [ - "alloc.c", - "arc.c", - "cload.c", - "cmap.c", - "cread.c", - "defont.c", - "draw.c", - "ellipse.c", - "fillpoly.c", - "hwdraw.c", - "iprint.c", - "line.c", - "load.c", - "openmemsubfont.c", - "poly.c", - "read.c", - "string.c", - "subfont.c", - "unload.c", - "write.c" - ] - } -} diff --git a/sys/src/lib/memdraw/klibmemdraw.json b/sys/src/lib/memdraw/klibmemdraw.json deleted file mode 100644 index 3346bfd..0000000 --- a/sys/src/lib/memdraw/klibmemdraw.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "KernelLibmemdraw": { - "Include": [ - "../klib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "klibmemdraw.a", - "SourceFiles": [ - "alloc.c", - "arc.c", - "cload.c", - "cmap.c", - "cread.c", - "defont.c", - "draw.c", - "ellipse.c", - "fillpoly.c", - "hwdraw.c", - "iprint.c", - "line.c", - "load.c", - "poly.c", - "read.c", - "string.c", - "subfont.c", - "unload.c" - ] - } -} diff --git a/sys/src/lib/memdraw/klibmemdraw.rc.build b/sys/src/lib/memdraw/klibmemdraw.rc.build new file mode 100644 index 0000000..bae3197 --- /dev/null +++ b/sys/src/lib/memdraw/klibmemdraw.rc.build @@ -0,0 +1,28 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + alloc.c \ + arc.c \ + cload.c \ + cmap.c \ + cread.c \ + defont.c \ + draw.c \ + ellipse.c \ + fillpoly.c \ + hwdraw.c \ + iprint.c \ + line.c \ + load.c \ + poly.c \ + read.c \ + string.c \ + subfont.c \ + unload.c \ + $KLIB_CFLAGS +prependLibraryName klibmemdraw.a +$AR -rs $JEHANNE/arch/$ARCH/lib/klibmemdraw.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/klibmemdraw.a +rm *.o diff --git a/sys/src/lib/memdraw/memdraw.rc.build b/sys/src/lib/memdraw/memdraw.rc.build new file mode 100644 index 0000000..54fef44 --- /dev/null +++ b/sys/src/lib/memdraw/memdraw.rc.build @@ -0,0 +1,33 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + alloc.c \ + arc.c \ + cload.c \ + cmap.c \ + cread.c \ + defont.c \ + draw.c \ + ellipse.c \ + fillpoly.c \ + hwdraw.c \ + iprint.c \ + line.c \ + load.c \ + openmemsubfont.c \ + poly.c \ + read.c \ + string.c \ + subfont.c \ + unload.c \ + write.c \ + -fno-strict-aliasing \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libmemdraw.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libmemdraw.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libmemdraw.a +rm *.o diff --git a/sys/src/lib/memlayer/build.json b/sys/src/lib/memlayer/build.json deleted file mode 100644 index 824bb7a..0000000 --- a/sys/src/lib/memlayer/build.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "libmemlayer": { - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libmemlayer.a", - "SourceFiles": [ - "draw.c", - "lalloc.c", - "layerop.c", - "ldelete.c", - "lhide.c", - "line.c", - "load.c", - "lorigin.c", - "lsetrefresh.c", - "ltofront.c", - "ltorear.c", - "unload.c" - ] - } -} diff --git a/sys/src/lib/memlayer/klibmemlayer.json b/sys/src/lib/memlayer/klibmemlayer.json deleted file mode 100644 index 03d08c0..0000000 --- a/sys/src/lib/memlayer/klibmemlayer.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "KernelLibmemlayer": { - "Include": [ - "../klib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "klibmemlayer.a", - "SourceFiles": [ - "draw.c", - "lalloc.c", - "layerop.c", - "ldelete.c", - "lhide.c", - "line.c", - "load.c", - "lorigin.c", - "lsetrefresh.c", - "ltofront.c", - "ltorear.c", - "unload.c" - ] - } -} diff --git a/sys/src/lib/memlayer/klibmemlayer.rc.build b/sys/src/lib/memlayer/klibmemlayer.rc.build new file mode 100644 index 0000000..da198ee --- /dev/null +++ b/sys/src/lib/memlayer/klibmemlayer.rc.build @@ -0,0 +1,22 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + draw.c \ + lalloc.c \ + layerop.c \ + ldelete.c \ + lhide.c \ + line.c \ + load.c \ + lorigin.c \ + lsetrefresh.c \ + ltofront.c \ + ltorear.c \ + unload.c \ + $KLIB_CFLAGS +prependLibraryName klibmemlayer.a +$AR -rs $JEHANNE/arch/$ARCH/lib/klibmemlayer.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/klibmemlayer.a +rm *.o diff --git a/sys/src/lib/memlayer/memlayer.rc.build b/sys/src/lib/memlayer/memlayer.rc.build new file mode 100644 index 0000000..c69b205 --- /dev/null +++ b/sys/src/lib/memlayer/memlayer.rc.build @@ -0,0 +1,24 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + draw.c \ + lalloc.c \ + layerop.c \ + ldelete.c \ + lhide.c \ + line.c \ + load.c \ + lorigin.c \ + lsetrefresh.c \ + ltofront.c \ + ltorear.c \ + unload.c \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libmemlayer.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libmemlayer.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libmemlayer.a +rm *.o diff --git a/sys/src/lib/mp/build.json b/sys/src/lib/mp/build.json deleted file mode 100644 index 0ef90aa..0000000 --- a/sys/src/lib/mp/build.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "libmp": { - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libmp.a", - "SourceFiles": [ - "port/betomp.c", - "port/cnfield.c", - "port/crt.c", - "port/gmfield.c", - "port/letomp.c", - "port/mpadd.c", - "port/mpaux.c", - "port/mpcmp.c", - "port/mpdigdiv.c", - "port/mpdiv.c", - "port/mpexp.c", - "port/mpextendedgcd.c", - "port/mpfactorial.c", - "port/mpfield.c", - "port/mpfmt.c", - "port/mpinvert.c", - "port/mpleft.c", - "port/mplogic.c", - "port/mpmod.c", - "port/mpmodop.c", - "port/mpmul.c", - "port/mpnrand.c", - "port/mprand.c", - "port/mpright.c", - "port/mpsel.c", - "port/mpsub.c", - "port/mptobe.c", - "port/mptober.c", - "port/mptoi.c", - "port/mptole.c", - "port/mptolel.c", - "port/mptoui.c", - "port/mptouv.c", - "port/mptov.c", - "port/mpvecadd.c", - "port/mpveccmp.c", - "port/mpvecdigmuladd.c", - "port/mpvecsub.c", - "port/mpvectscmp.c", - "port/strtomp.c" - ] - } -} diff --git a/sys/src/lib/mp/klibmp.json b/sys/src/lib/mp/klibmp.json deleted file mode 100644 index 79b5508..0000000 --- a/sys/src/lib/mp/klibmp.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "libmp": { - "Include": [ - "../klib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "klibmp.a", - "SourceFiles": [ - "port/betomp.c", - "port/cnfield.c", - "port/crt.c", - "port/gmfield.c", - "port/letomp.c", - "port/mpadd.c", - "port/mpaux.c", - "port/mpcmp.c", - "port/mpdigdiv.c", - "port/mpdiv.c", - "port/mpexp.c", - "port/mpextendedgcd.c", - "port/mpfactorial.c", - "port/mpfield.c", - "port/mpfmt.c", - "port/mpinvert.c", - "port/mpleft.c", - "port/mplogic.c", - "port/mpmod.c", - "port/mpmodop.c", - "port/mpmul.c", - "port/mpnrand.c", - "port/mprand.c", - "port/mpright.c", - "port/mpsel.c", - "port/mpsub.c", - "port/mptobe.c", - "port/mptober.c", - "port/mptoi.c", - "port/mptole.c", - "port/mptolel.c", - "port/mptoui.c", - "port/mptouv.c", - "port/mptov.c", - "port/mpvecadd.c", - "port/mpveccmp.c", - "port/mpvecdigmuladd.c", - "port/mpvecsub.c", - "port/mpvectscmp.c", - "port/strtomp.c" - ] - } -} diff --git a/sys/src/lib/mp/klibmp.rc.build b/sys/src/lib/mp/klibmp.rc.build new file mode 100644 index 0000000..ad44706 --- /dev/null +++ b/sys/src/lib/mp/klibmp.rc.build @@ -0,0 +1,50 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + port/betomp.c \ + port/cnfield.c \ + port/crt.c \ + port/gmfield.c \ + port/letomp.c \ + port/mpadd.c \ + port/mpaux.c \ + port/mpcmp.c \ + port/mpdigdiv.c \ + port/mpdiv.c \ + port/mpexp.c \ + port/mpextendedgcd.c \ + port/mpfactorial.c \ + port/mpfield.c \ + port/mpfmt.c \ + port/mpinvert.c \ + port/mpleft.c \ + port/mplogic.c \ + port/mpmod.c \ + port/mpmodop.c \ + port/mpmul.c \ + port/mpnrand.c \ + port/mprand.c \ + port/mpright.c \ + port/mpsel.c \ + port/mpsub.c \ + port/mptobe.c \ + port/mptober.c \ + port/mptoi.c \ + port/mptole.c \ + port/mptolel.c \ + port/mptoui.c \ + port/mptouv.c \ + port/mptov.c \ + port/mpvecadd.c \ + port/mpveccmp.c \ + port/mpvecdigmuladd.c \ + port/mpvecsub.c \ + port/mpvectscmp.c \ + port/strtomp.c \ + $KLIB_CFLAGS +prependLibraryName klibmp.a +$AR -rs $JEHANNE/arch/$ARCH/lib/klibmp.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/klibmp.a +rm *.o diff --git a/sys/src/lib/mp/mp.rc.build b/sys/src/lib/mp/mp.rc.build new file mode 100644 index 0000000..34fe088 --- /dev/null +++ b/sys/src/lib/mp/mp.rc.build @@ -0,0 +1,52 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + port/betomp.c \ + port/cnfield.c \ + port/crt.c \ + port/gmfield.c \ + port/letomp.c \ + port/mpadd.c \ + port/mpaux.c \ + port/mpcmp.c \ + port/mpdigdiv.c \ + port/mpdiv.c \ + port/mpexp.c \ + port/mpextendedgcd.c \ + port/mpfactorial.c \ + port/mpfield.c \ + port/mpfmt.c \ + port/mpinvert.c \ + port/mpleft.c \ + port/mplogic.c \ + port/mpmod.c \ + port/mpmodop.c \ + port/mpmul.c \ + port/mpnrand.c \ + port/mprand.c \ + port/mpright.c \ + port/mpsel.c \ + port/mpsub.c \ + port/mptobe.c \ + port/mptober.c \ + port/mptoi.c \ + port/mptole.c \ + port/mptolel.c \ + port/mptoui.c \ + port/mptouv.c \ + port/mptov.c \ + port/mpvecadd.c \ + port/mpveccmp.c \ + port/mpvecdigmuladd.c \ + port/mpvecsub.c \ + port/mpvectscmp.c \ + port/strtomp.c \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libmp.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libmp.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libmp.a +rm *.o diff --git a/sys/src/lib/ndb/build.json b/sys/src/lib/ndb/build.json deleted file mode 100644 index ab3ab13..0000000 --- a/sys/src/lib/ndb/build.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "libndb": { - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libndb.a", - "SourceFiles": [ - "csgetval.c", - "csipinfo.c", - "dnsquery.c", - "ipattr.c", - "ndbaux.c", - "ndbcache.c", - "ndbcat.c", - "ndbconcatenate.c", - "ndbdiscard.c", - "ndbfree.c", - "ndbgetipaddr.c", - "ndbgetval.c", - "ndbhash.c", - "ndbipinfo.c", - "ndblookval.c", - "ndbopen.c", - "ndbparse.c", - "ndbreorder.c", - "ndbsubstitute.c" - ] - } -} diff --git a/sys/src/lib/ndb/libndb.json b/sys/src/lib/ndb/libndb.json deleted file mode 100644 index ab3ab13..0000000 --- a/sys/src/lib/ndb/libndb.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "libndb": { - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libndb.a", - "SourceFiles": [ - "csgetval.c", - "csipinfo.c", - "dnsquery.c", - "ipattr.c", - "ndbaux.c", - "ndbcache.c", - "ndbcat.c", - "ndbconcatenate.c", - "ndbdiscard.c", - "ndbfree.c", - "ndbgetipaddr.c", - "ndbgetval.c", - "ndbhash.c", - "ndbipinfo.c", - "ndblookval.c", - "ndbopen.c", - "ndbparse.c", - "ndbreorder.c", - "ndbsubstitute.c" - ] - } -} diff --git a/sys/src/lib/ndb/ndb.rc.build b/sys/src/lib/ndb/ndb.rc.build new file mode 100644 index 0000000..a055cb0 --- /dev/null +++ b/sys/src/lib/ndb/ndb.rc.build @@ -0,0 +1,31 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + csgetval.c \ + csipinfo.c \ + dnsquery.c \ + ipattr.c \ + ndbaux.c \ + ndbcache.c \ + ndbcat.c \ + ndbconcatenate.c \ + ndbdiscard.c \ + ndbfree.c \ + ndbgetipaddr.c \ + ndbgetval.c \ + ndbhash.c \ + ndbipinfo.c \ + ndblookval.c \ + ndbopen.c \ + ndbparse.c \ + ndbreorder.c \ + ndbsubstitute.c \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libndb.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libndb.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libndb.a +rm *.o diff --git a/sys/src/lib/plumb/build.json b/sys/src/lib/plumb/build.json deleted file mode 100644 index 224733e..0000000 --- a/sys/src/lib/plumb/build.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "libplumb": { - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libplumb.a", - "SourceFiles": [ - "event.c", - "mesg.c", - "plumbsendtext.c" - ] - } -} diff --git a/sys/src/lib/plumb/plumb.rc.build b/sys/src/lib/plumb/plumb.rc.build new file mode 100644 index 0000000..826a44f --- /dev/null +++ b/sys/src/lib/plumb/plumb.rc.build @@ -0,0 +1,15 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + event.c \ + mesg.c \ + plumbsendtext.c \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libplumb.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libplumb.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libplumb.a +rm *.o diff --git a/sys/src/lib/posix/SignalHelper.rc.build b/sys/src/lib/posix/SignalHelper.rc.build new file mode 100644 index 0000000..bb54c38 --- /dev/null +++ b/sys/src/lib/posix/SignalHelper.rc.build @@ -0,0 +1,15 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.tag.* +$CC \ + posixly.c \ + -o posixly \ + $STACKCHECK_CFLAGS \ + $CFLAGS \ + -static \ + -lposix \ + -l9p2000 \ + -ljehanne +safemove posixly $JEHANNE/arch/$ARCH/cmd/sys +rm -f *.o diff --git a/sys/src/lib/posix/build.json b/sys/src/lib/posix/build.json deleted file mode 100644 index 3bb9c35..0000000 --- a/sys/src/lib/posix/build.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "LibPosix": { - "Cflags": [ - "-DPORTABLE_SYSCALLS", - "-DARCH=\"$ARCH\"", - "-fasm", - "-I." - ], - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libposix.a", - "SourceFiles": [ - "environment.c", - "errors.c", - "fcntl.c", - "files.c", - "ids.c", - "initlib.c", - "kill.c", - "links.c", - "memory.c", - "others.c", - "processes.c", - "sigchlds.c", - "signals.c", - "sigqueue.c", - "sigsets.c", - "sigsuspend.c", - "sysconf.c", - "termios.c", - "timers.c" - ] - }, - "SignalHelper": { - "Include": [ - "../../cmd/cmd.json" - ], - "Install": "/arch/$ARCH/cmd/sys/", - "Oflags": [ - "-static", - "-lposix", - "-l9p2000", - "-ljehanne" - ], - "SourceFilesCmd": [ - "posixly.c" - ] - } -} diff --git a/sys/src/lib/posix/posix.rc.build b/sys/src/lib/posix/posix.rc.build new file mode 100644 index 0000000..2f1b6eb --- /dev/null +++ b/sys/src/lib/posix/posix.rc.build @@ -0,0 +1,37 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + environment.c \ + errors.c \ + fcntl.c \ + files.c \ + ids.c \ + initlib.c \ + kill.c \ + links.c \ + memory.c \ + others.c \ + processes.c \ + sigchlds.c \ + signals.c \ + sigqueue.c \ + sigsets.c \ + sigsuspend.c \ + sysconf.c \ + termios.c \ + timers.c \ + -DPORTABLE_SYSCALLS \ + '-DARCH="amd64"' \ + -fasm \ + -I. \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libposix.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libposix.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libposix.a +rm *.o + +build SignalHelper.rc.build diff --git a/sys/src/lib/regexp/build.json b/sys/src/lib/regexp/build.json deleted file mode 100644 index 0fdb3a1..0000000 --- a/sys/src/lib/regexp/build.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "libregexp": { - "Include": [ - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libregexp.a", - "SourceFiles": [ - "regcomp.c", - "regerror.c", - "regexec.c", - "regsub.c", - "regaux.c", - "rregexec.c", - "rregsub.c" - ] - } -} diff --git a/sys/src/lib/regexp/regexp.rc.build b/sys/src/lib/regexp/regexp.rc.build new file mode 100644 index 0000000..289aa16 --- /dev/null +++ b/sys/src/lib/regexp/regexp.rc.build @@ -0,0 +1,19 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + regcomp.c \ + regerror.c \ + regexec.c \ + regsub.c \ + regaux.c \ + rregexec.c \ + rregsub.c \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libregexp.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libregexp.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libregexp.a +rm *.o diff --git a/sys/src/lib/sec/build.json b/sys/src/lib/sec/build.json deleted file mode 100644 index a38f4ea..0000000 --- a/sys/src/lib/sec/build.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "libsec": { - "Include": [ - "../lib.json" - ], - "Cflags": [ - "-I../mp/port/" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libsec.a", - "SourceFiles": [ - "port/aes.c", - "port/aes_gcm.c", - "port/aes_xts.c", - "port/blowfish.c", - "port/ccpoly.c", - "port/chacha.c", - "port/crypt.c", - "port/curve25519.c", - "port/curve25519_dh.c", - "port/decodepem.c", - "port/des3CBC.c", - "port/des3ECB.c", - "port/des.c", - "port/desCBC.c", - "port/desECB.c", - "port/desmodes.c", - "port/dh.c", - "port/dsaalloc.c", - "port/dsagen.c", - "port/dsaprimes.c", - "port/dsaprivtopub.c", - "port/dsasign.c", - "port/dsaverify.c", - "port/ecc.c", - "port/egalloc.c", - "port/egdecrypt.c", - "port/egencrypt.c", - "port/eggen.c", - "port/egprivtopub.c", - "port/egsign.c", - "port/egverify.c", - "port/fastrand.c", - "port/genprime.c", - "port/genrandom.c", - "port/gensafeprime.c", - "port/genstrongprime.c", - "port/hkdf.c", - "port/hmac.c", - "port/jacobian.c", - "port/md4.c", - "port/md5block.c", - "port/md5.c", - "port/md5pickle.c", - "port/nfastrand.c", - "port/pbkdf2.c", - "port/poly1305.c", - "port/prng.c", - "port/probably_prime.c", - "port/rc4.c", - "port/readcert.c", - "port/ripemd.c", - "port/rsaalloc.c", - "port/rsadecrypt.c", - "port/rsaencrypt.c", - "port/rsafill.c", - "port/rsagen.c", - "port/rsaprivtopub.c", - "port/salsa.c", - "port/secp256k1.c", - "port/secp256r1.c", - "port/sha1block.c", - "port/sha1.c", - "port/sha1pickle.c", - "port/sha2_128.c", - "port/sha2_64.c", - "port/sha2block128.c", - "port/sha2block64.c", - "port/smallprimes.c", - "port/thumb.c", - "port/tlshand.c", - "port/tsmemcmp.c", - "port/x509.c" - ] - } -} diff --git a/sys/src/lib/sec/klibsec.json b/sys/src/lib/sec/klibsec.json deleted file mode 100644 index afc24f6..0000000 --- a/sys/src/lib/sec/klibsec.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "Kernellibsec": { - "Include": [ - "../klib.json" - ], - "Cflags": [ - "-I../mp/port/" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "klibsec.a", - "SourceFiles": [ - "port/aes.c", - "port/aes_gcm.c", - "port/aes_xts.c", - "port/blowfish.c", - "port/ccpoly.c", - "port/chacha.c", - "port/curve25519.c", - "port/curve25519_dh.c", - "port/decodepem.c", - "port/des3CBC.c", - "port/des3ECB.c", - "port/des.c", - "port/desCBC.c", - "port/desECB.c", - "port/desmodes.c", - "port/dh.c", - "port/dsaalloc.c", - "port/dsagen.c", - "port/dsaprimes.c", - "port/dsaprivtopub.c", - "port/dsasign.c", - "port/dsaverify.c", - "port/ecc.c", - "port/egalloc.c", - "port/egdecrypt.c", - "port/egencrypt.c", - "port/eggen.c", - "port/egprivtopub.c", - "port/egsign.c", - "port/egverify.c", - "port/fastrand.c", - "port/genprime.c", - "port/gensafeprime.c", - "port/genstrongprime.c", - "port/hkdf.c", - "port/hmac.c", - "port/jacobian.c", - "port/md4.c", - "port/md5block.c", - "port/md5.c", - "port/md5pickle.c", - "port/nfastrand.c", - "port/pbkdf2.c", - "port/poly1305.c", - "port/prng.c", - "port/probably_prime.c", - "port/rc4.c", - "port/ripemd.c", - "port/rsaalloc.c", - "port/rsadecrypt.c", - "port/rsaencrypt.c", - "port/rsafill.c", - "port/rsagen.c", - "port/rsaprivtopub.c", - "port/salsa.c", - "port/secp256k1.c", - "port/secp256r1.c", - "port/sha1block.c", - "port/sha1.c", - "port/sha1pickle.c", - "port/sha2_128.c", - "port/sha2_64.c", - "port/sha2block128.c", - "port/sha2block64.c", - "port/smallprimes.c", - "port/thumb.c", - "port/tsmemcmp.c", - "port/x509.c" - ] - } -} diff --git a/sys/src/lib/sec/klibsec.rc.build b/sys/src/lib/sec/klibsec.rc.build new file mode 100644 index 0000000..5daa41a --- /dev/null +++ b/sys/src/lib/sec/klibsec.rc.build @@ -0,0 +1,79 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + port/aes.c \ + port/aes_gcm.c \ + port/aes_xts.c \ + port/blowfish.c \ + port/ccpoly.c \ + port/chacha.c \ + port/curve25519.c \ + port/curve25519_dh.c \ + port/decodepem.c \ + port/des3CBC.c \ + port/des3ECB.c \ + port/des.c \ + port/desCBC.c \ + port/desECB.c \ + port/desmodes.c \ + port/dh.c \ + port/dsaalloc.c \ + port/dsagen.c \ + port/dsaprimes.c \ + port/dsaprivtopub.c \ + port/dsasign.c \ + port/dsaverify.c \ + port/ecc.c \ + port/egalloc.c \ + port/egdecrypt.c \ + port/egencrypt.c \ + port/eggen.c \ + port/egprivtopub.c \ + port/egsign.c \ + port/egverify.c \ + port/fastrand.c \ + port/genprime.c \ + port/gensafeprime.c \ + port/genstrongprime.c \ + port/hkdf.c \ + port/hmac.c \ + port/jacobian.c \ + port/md4.c \ + port/md5block.c \ + port/md5.c \ + port/md5pickle.c \ + port/nfastrand.c \ + port/pbkdf2.c \ + port/poly1305.c \ + port/prng.c \ + port/probably_prime.c \ + port/rc4.c \ + port/ripemd.c \ + port/rsaalloc.c \ + port/rsadecrypt.c \ + port/rsaencrypt.c \ + port/rsafill.c \ + port/rsagen.c \ + port/rsaprivtopub.c \ + port/salsa.c \ + port/secp256k1.c \ + port/secp256r1.c \ + port/sha1block.c \ + port/sha1.c \ + port/sha1pickle.c \ + port/sha2_128.c \ + port/sha2_64.c \ + port/sha2block128.c \ + port/sha2block64.c \ + port/smallprimes.c \ + port/thumb.c \ + port/tsmemcmp.c \ + port/x509.c \ + -I../mp/port/ \ + $KLIB_CFLAGS +prependLibraryName klibsec.a +$AR -rs $JEHANNE/arch/$ARCH/lib/klibsec.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/klibsec.a +rm *.o diff --git a/sys/src/lib/sec/sec.rc.build b/sys/src/lib/sec/sec.rc.build new file mode 100644 index 0000000..caa6459 --- /dev/null +++ b/sys/src/lib/sec/sec.rc.build @@ -0,0 +1,85 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + port/aes.c \ + port/aes_gcm.c \ + port/aes_xts.c \ + port/blowfish.c \ + port/ccpoly.c \ + port/chacha.c \ + port/crypt.c \ + port/curve25519.c \ + port/curve25519_dh.c \ + port/decodepem.c \ + port/des3CBC.c \ + port/des3ECB.c \ + port/des.c \ + port/desCBC.c \ + port/desECB.c \ + port/desmodes.c \ + port/dh.c \ + port/dsaalloc.c \ + port/dsagen.c \ + port/dsaprimes.c \ + port/dsaprivtopub.c \ + port/dsasign.c \ + port/dsaverify.c \ + port/ecc.c \ + port/egalloc.c \ + port/egdecrypt.c \ + port/egencrypt.c \ + port/eggen.c \ + port/egprivtopub.c \ + port/egsign.c \ + port/egverify.c \ + port/fastrand.c \ + port/genprime.c \ + port/genrandom.c \ + port/gensafeprime.c \ + port/genstrongprime.c \ + port/hkdf.c \ + port/hmac.c \ + port/jacobian.c \ + port/md4.c \ + port/md5block.c \ + port/md5.c \ + port/md5pickle.c \ + port/nfastrand.c \ + port/pbkdf2.c \ + port/poly1305.c \ + port/prng.c \ + port/probably_prime.c \ + port/rc4.c \ + port/readcert.c \ + port/ripemd.c \ + port/rsaalloc.c \ + port/rsadecrypt.c \ + port/rsaencrypt.c \ + port/rsafill.c \ + port/rsagen.c \ + port/rsaprivtopub.c \ + port/salsa.c \ + port/secp256k1.c \ + port/secp256r1.c \ + port/sha1block.c \ + port/sha1.c \ + port/sha1pickle.c \ + port/sha2_128.c \ + port/sha2_64.c \ + port/sha2block128.c \ + port/sha2block64.c \ + port/smallprimes.c \ + port/thumb.c \ + port/tlshand.c \ + port/tsmemcmp.c \ + port/x509.c \ + -I../mp/port/ \ + $STACKCHECK_CFLAGS \ + -c \ + $CFLAGS +prependLibraryName libsec.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libsec.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libsec.a +rm *.o diff --git a/sys/src/lib/thread/build.json b/sys/src/lib/thread/build.json deleted file mode 100644 index a690318..0000000 --- a/sys/src/lib/thread/build.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "libthread": { - "Include": [ - "/arch/$ARCH/include/cflags.json", - "../lib.json" - ], - "Install": "/arch/$ARCH/lib/", - "Library": "libthread.a", - "SourceFiles": [ - "$ARCH.c", - "channel.c", - "chanprint.c", - "create.c", - "debug.c", - "dial.c", - "exec.c", - "exit.c", - "id.c", - "iocall.c", - "ioclose.c", - "iodial.c", - "ioopen.c", - "ioproc.c", - "ioread.c", - "ioreadn.c", - "iosleep.c", - "iowrite.c", - "kill.c", - "lib.c", - "main.c", - "note.c", - "ref.c", - "rendez.c", - "sched.c" - ] - } -} diff --git a/sys/src/lib/thread/thread.rc.build b/sys/src/lib/thread/thread.rc.build new file mode 100644 index 0000000..32ec464 --- /dev/null +++ b/sys/src/lib/thread/thread.rc.build @@ -0,0 +1,37 @@ +#!/cmd/rc +if ( ~ 0 $#BUILD_INITIALIZED ) . $JEHANNE/arch/rc/lib/build/utils.rc + +rm -f *.o *.tag.* +$CC \ + amd64.c \ + channel.c \ + chanprint.c \ + create.c \ + debug.c \ + dial.c \ + exec.c \ + exit.c \ + id.c \ + iocall.c \ + ioclose.c \ + iodial.c \ + ioopen.c \ + ioproc.c \ + ioread.c \ + ioreadn.c \ + iosleep.c \ + iowrite.c \ + kill.c \ + lib.c \ + main.c \ + note.c \ + ref.c \ + rendez.c \ + sched.c \ + $CFLAGS \ + $STACKCHECK_CFLAGS \ + -c +prependLibraryName libthread.a +$AR -rs $JEHANNE/arch/$ARCH/lib/libthread.a *.o +$RANLIB $JEHANNE/arch/$ARCH/lib/libthread.a +rm *.o diff --git a/sys/src/sysconf.json b/sys/src/sysconf.json deleted file mode 100644 index 2f186d0..0000000 --- a/sys/src/sysconf.json +++ /dev/null @@ -1,606 +0,0 @@ -{ - "Bootmethods": [ - { - "Arg": "", - "Config": "configtcp", - "Connect": "connecttcp", - "Name": "tcp" - }, - { - "Arg": "", - "Config": "configrc", - "Connect": "connectrc", - "Name": "rc" - }, - { - "Arg": "", - "Config": "configlocal", - "Connect": "connectlocal", - "Name": "local" - } - ], - "Syscalls": [ - { - "Args": [ - "char*", - "int" - ], - "Id": 1, - "Name": "await", - "Ret": [ - "int" - ] - }, - { - "Args": [ - "long" - ], - "Id": 2, - "Name": "awake", - "Ret": [ - "long" - ] - }, - { - "Args": [ - "const char*", - "const char*", - "int" - ], - "Id": 3, - "Name": "bind", - "Ret": [ - "int" - ] - }, - { - "Args": [ - "int" - ], - "Id": 4, - "Name": "close", - "Ret": [ - "long" - ] - }, - { - "Args": [ - "const char*", - "long", - "long" - ], - "Id": 5, - "Name": "create", - "Ret": [ - "long" - ] - }, - { - "Args": [ - "char*", - "int" - ], - "Id": 6, - "Name": "errstr", - "Ret": [ - "int" - ] - }, - { - "Args": [ - "const char*", - "const char**" - ], - "Id": 7, - "Name": "exec", - "Ret": [ - "uintptr_t" - ] - }, - { - "Args": [ - "const char*" - ], - "Id": 8, - "Name": "_exits", - "Ret": [ - "int" - ] - }, - { - "Args": [ - "int", - "const char*" - ], - "Id": 9, - "Name": "fauth", - "Ret": [ - "int" - ] - }, - { - "Args": [ - "int32_t", - "char*", - "uint32_t" - ], - "Id": 10, - "Name": "fd2path", - "Ret": [ - "int32_t" - ] - }, - { - "Args": [ - "int", - "uint8_t*", - "int" - ], - "Id": 11, - "Name": "fstat", - "Ret": [ - "long" - ] - }, - { - "Args": [ - "int", - "int", - "const char*", - "int" - ], - "Id": 12, - "Name": "fversion", - "Ret": [ - "int" - ] - }, - { - "Args": [ - "int32_t", - "const uint8_t*", - "uint32_t" - ], - "Id": 13, - "Name": "fwstat", - "Ret": [ - "long" - ] - }, - { - "Args": [ - "int", - "int", - "const char*", - "uint32_t", - "const char*", - "int" - ], - "Id": 14, - "Name": "mount", - "Ret": [ - "int" - ] - }, - { - "Args": [ - "int" - ], - "Id": 15, - "Name": "noted", - "Ret": [ - "int" - ] - }, - { - "Args": [ - "const void*" - ], - "Id": 16, - "Name": "notify", - "Ret": [ - "int" - ] - }, - { - "Args": [ - "const char*", - "uint32_t" - ], - "Id": 17, - "Name": "open", - "Ret": [ - "long" - ] - }, - { - "Args": [ - "int", - "void*", - "long", - "long" - ], - "Id": 18, - "Name": "pread", - "Ret": [ - "long" - ] - }, - { - "Args": [ - "int", - "const void*", - "long", - "long" - ], - "Id": 19, - "Name": "pwrite", - "Ret": [ - "long" - ] - }, - { - "Args": [ - "const char*" - ], - "Id": 20, - "Name": "remove", - "Ret": [ - "long" - ] - }, - { - "Args": [ - "const void*", - "void*" - ], - "Id": 21, - "Name": "rendezvous", - "Ret": [ - "void*" - ] - }, - { - "Args": [ - "uint32_t" - ], - "Id": 22, - "Name": "rfork", - "Ret": [ - "int" - ] - }, - { - "Args": [ - "int", - "long", - "int" - ], - "Id": 23, - "Name": "seek", - "Ret": [ - "long" - ] - }, - { - "Args": [ - "int*", - "int" - ], - "Id": 24, - "Name": "semacquire", - "Ret": [ - "int" - ] - }, - { - "Args": [ - "int*", - "int" - ], - "Id": 25, - "Name": "semrelease", - "Ret": [ - "int" - ] - }, - { - "Args": [ - "const char*", - "const char*" - ], - "Id": 26, - "Name": "unmount", - "Ret": [ - "int" - ] - }, - { - "Args": [ - "unsigned long" - ], - "Id": 27, - "Name": "alarm", - "Ret": [ - "long" - ] - } - ], - "Syserrors": [ - { - "Id": 0, - "Name": "Ebadarg", - "String": "bad arg in system call" - }, - { - "Id": 1, - "Name": "Ebadchar", - "String": "bad character in file name" - }, - { - "Id": 2, - "Name": "Ebadctl", - "String": "bad process or channel control request" - }, - { - "Id": 3, - "Name": "Ebadexec", - "String": "exec header invalid" - }, - { - "Id": 4, - "Name": "Ebadfd", - "String": "fd out of range or not open" - }, - { - "Id": 5, - "Name": "Ebadip", - "String": "bad ip address syntax" - }, - { - "Id": 6, - "Name": "Ebadsharp", - "String": "unknown device in # filename" - }, - { - "Id": 7, - "Name": "Ebadspec", - "String": "bad attach specifier" - }, - { - "Id": 8, - "Name": "Ebadstat", - "String": "malformed stat buffer" - }, - { - "Id": 9, - "Name": "Ebadusefd", - "String": "inappropriate use of fd" - }, - { - "Id": 10, - "Name": "Ecmdargs", - "String": "wrong #args in control message" - }, - { - "Id": 11, - "Name": "Econinuse", - "String": "connection in use" - }, - { - "Id": 12, - "Name": "Econrefused", - "String": "connection refused" - }, - { - "Id": 13, - "Name": "Edirseek", - "String": "seek in directory" - }, - { - "Id": 14, - "Name": "Eexist", - "String": "file already exists" - }, - { - "Id": 15, - "Name": "Efilename", - "String": "file name syntax" - }, - { - "Id": 16, - "Name": "Egreg", - "String": "ken has left the building" - }, - { - "Id": 17, - "Name": "Ehungup", - "String": "i/o on hungup channel" - }, - { - "Id": 18, - "Name": "Eintr", - "String": "interrupted" - }, - { - "Id": 19, - "Name": "Einuse", - "String": "device or object already in use" - }, - { - "Id": 20, - "Name": "Eio", - "String": "i/o error" - }, - { - "Id": 21, - "Name": "Eioload", - "String": "i/o error in demand load" - }, - { - "Id": 22, - "Name": "Eisdir", - "String": "file is a directory" - }, - { - "Id": 23, - "Name": "Eismtpt", - "String": "is a mount point" - }, - { - "Id": 24, - "Name": "Eisstream", - "String": "seek on a stream" - }, - { - "Id": 25, - "Name": "Emount", - "String": "inconsistent mount" - }, - { - "Id": 26, - "Name": "Emountrpc", - "String": "mount rpc error" - }, - { - "Id": 27, - "Name": "Emouseset", - "String": "mount rpc error" - }, - { - "Id": 28, - "Name": "Enegoff", - "String": "negative i/o offset" - }, - { - "Id": 29, - "Name": "Enoattach", - "String": "mount/attach disallowed" - }, - { - "Id": 30, - "Name": "Enochild", - "String": "no living children" - }, - { - "Id": 31, - "Name": "Enocreate", - "String": "mounted directory forbids creation" - }, - { - "Id": 32, - "Name": "Enodev", - "String": "no free devices" - }, - { - "Id": 33, - "Name": "Enoerror", - "String": "no error" - }, - { - "Id": 34, - "Name": "Enofd", - "String": "no free file descriptors" - }, - { - "Id": 35, - "Name": "Enomem", - "String": "kernel allocate failed" - }, - { - "Id": 36, - "Name": "Enonexist", - "String": "file does not exist" - }, - { - "Id": 37, - "Name": "Enoport", - "String": "network port not available" - }, - { - "Id": 38, - "Name": "Enoreg", - "String": "process has no saved registers" - }, - { - "Id": 39, - "Name": "Enoswap", - "String": "swap space full" - }, - { - "Id": 40, - "Name": "Enotdir", - "String": "not a directory" - }, - { - "Id": 41, - "Name": "Enovmem", - "String": "virtual memory allocation failed" - }, - { - "Id": 42, - "Name": "Eperm", - "String": "permission denied" - }, - { - "Id": 43, - "Name": "Eprocdied", - "String": "process exited" - }, - { - "Id": 44, - "Name": "Eshort", - "String": "i/o count too small" - }, - { - "Id": 45, - "Name": "Eshortstat", - "String": "stat buffer too small" - }, - { - "Id": 46, - "Name": "Eshutdown", - "String": "device shut down" - }, - { - "Id": 47, - "Name": "Esoverlap", - "String": "segments overlap" - }, - { - "Id": 48, - "Name": "Etimedout", - "String": "connection timed out" - }, - { - "Id": 49, - "Name": "Etoobig", - "String": "read or write too large" - }, - { - "Id": 50, - "Name": "Etoosmall", - "String": "read or write too small" - }, - { - "Id": 51, - "Name": "Eunion", - "String": "not in union" - }, - { - "Id": 52, - "Name": "Eunmount", - "String": "not mounted" - }, - { - "Id": 53, - "Name": "Ememinuse", - "String": "cannot free memory used by other processes" - }, - { - "Id": 54, - "Name": "Etoolong", - "String": "name too long" - } - ] -} diff --git a/sys/src/sysconf/bootmethods.conf b/sys/src/sysconf/bootmethods.conf new file mode 100644 index 0000000..8a37c73 --- /dev/null +++ b/sys/src/sysconf/bootmethods.conf @@ -0,0 +1,3 @@ +tcp configtcp connecttcp +rc configrc connectrc +local configlocal connectlocal diff --git a/sys/src/sysconf/errors.rc.confs b/sys/src/sysconf/errors.rc.confs new file mode 100644 index 0000000..123b37b --- /dev/null +++ b/sys/src/sysconf/errors.rc.confs @@ -0,0 +1,55 @@ +CODE=1; NAME=Ebadarg; MSG='bad arg in system call' +CODE=2; NAME=Ebadchar; MSG='bad character in file name' +CODE=3; NAME=Ebadctl; MSG='bad process or channel control request' +CODE=4; NAME=Ebadexec; MSG='exec header invalid' +CODE=5; NAME=Ebadfd; MSG='fd out of range or not open' +CODE=6; NAME=Ebadip; MSG='bad ip address syntax' +CODE=7; NAME=Ebadsharp; MSG='unknown device in # filename' +CODE=8; NAME=Ebadspec; MSG='bad attach specifier' +CODE=9; NAME=Ebadstat; MSG='malformed stat buffer' +CODE=10; NAME=Ebadusefd; MSG='inappropriate use of fd' +CODE=11; NAME=Ecmdargs; MSG='wrong #args in control message' +CODE=12; NAME=Econinuse; MSG='connection in use' +CODE=13; NAME=Econrefused; MSG='connection refused' +CODE=14; NAME=Edirseek; MSG='seek in directory' +CODE=15; NAME=Eexist; MSG='file already exists' +CODE=16; NAME=Efilename; MSG='file name syntax' +CODE=17; NAME=Egreg; MSG='ken has left the building' +CODE=18; NAME=Ehungup; MSG='i/o on hungup channel' +CODE=19; NAME=Eintr; MSG='interrupted' +CODE=20; NAME=Einuse; MSG='device or object already in use' +CODE=21; NAME=Eio; MSG='i/o error' +CODE=22; NAME=Eioload; MSG='i/o error in demand load' +CODE=23; NAME=Eisdir; MSG='file is a directory' +CODE=24; NAME=Eismtpt; MSG='is a mount point' +CODE=25; NAME=Eisstream; MSG='seek on a stream' +CODE=26; NAME=Emount; MSG='inconsistent mount' +CODE=27; NAME=Emountrpc; MSG='mount rpc error' +CODE=28; NAME=Emouseset; MSG='mount rpc error' +CODE=29; NAME=Enegoff; MSG='negative i/o offset' +CODE=30; NAME=Enoattach; MSG='mount/attach disallowed' +CODE=31; NAME=Enochild; MSG='no living children' +CODE=32; NAME=Enocreate; MSG='mounted directory forbids creation' +CODE=33; NAME=Enodev; MSG='no free devices' +CODE=34; NAME=Enoerror; MSG='no error' +CODE=35; NAME=Enofd; MSG='no free file descriptors' +CODE=36; NAME=Enomem; MSG='kernel allocate failed' +CODE=37; NAME=Enonexist; MSG='file does not exist' +CODE=38; NAME=Enoport; MSG='network port not available' +CODE=39; NAME=Enoreg; MSG='process has no saved registers' +CODE=40; NAME=Enoswap; MSG='swap space full' +CODE=41; NAME=Enotdir; MSG='not a directory' +CODE=42; NAME=Enovmem; MSG='virtual memory allocation failed' +CODE=43; NAME=Eperm; MSG='permission denied' +CODE=44; NAME=Eprocdied; MSG='process exited' +CODE=45; NAME=Eshort; MSG='i/o count too small' +CODE=46; NAME=Eshortstat; MSG='stat buffer too small' +CODE=47; NAME=Eshutdown; MSG='device shut down' +CODE=48; NAME=Esoverlap; MSG='segments overlap' +CODE=49; NAME=Etimedout; MSG='connection timed out' +CODE=50; NAME=Etoobig; MSG='read or write too large' +CODE=51; NAME=Etoosmall; MSG='read or write too small' +CODE=52; NAME=Eunion; MSG='not in union' +CODE=53; NAME=Eunmount; MSG='not mounted' +CODE=54; NAME=Ememinuse; MSG='cannot free memory used by other processes' +CODE=55; NAME=Etoolong; MSG='name too long' diff --git a/sys/src/sysconf/syscalls.rc.confs b/sys/src/sysconf/syscalls.rc.confs new file mode 100644 index 0000000..1002d29 --- /dev/null +++ b/sys/src/sysconf/syscalls.rc.confs @@ -0,0 +1,27 @@ +ID=1; NAME=await; RET=int; ARGS=('char*' 'int') +ID=2; NAME=awake; RET=long; ARGS=('long') +ID=3; NAME=bind; RET=int; ARGS=('const char*' 'const char*' 'int') +ID=4; NAME=close; RET=long; ARGS=('int') +ID=5; NAME=create; RET=long; ARGS=('const char*' 'long' 'long') +ID=6; NAME=errstr; RET=int; ARGS=('char*' 'int') +ID=7; NAME=exec; RET=uintptr_t; ARGS=('const char*' 'const char**') +ID=8; NAME=_exits; RET=int; ARGS=('const char*') +ID=9; NAME=fauth; RET=int; ARGS=('int' 'const char*') +ID=10; NAME=fd2path; RET=int32_t; ARGS=('int32_t' 'char*' 'uint32_t') +ID=11; NAME=fstat; RET=long; ARGS=('int' 'uint8_t*' 'int') +ID=12; NAME=fversion; RET=int; ARGS=('int' 'int' 'const char*' 'int') +ID=13; NAME=fwstat; RET=long; ARGS=('int32_t' 'const uint8_t*' 'uint32_t') +ID=14; NAME=mount; RET=int; ARGS=('int' 'int' 'const char*' 'uint32_t' 'const char*' 'int') +ID=15; NAME=noted; RET=int; ARGS=('int') +ID=16; NAME=notify; RET=int; ARGS=('const void*') +ID=17; NAME=open; RET=long; ARGS=('const char*' 'uint32_t') +ID=18; NAME=pread; RET=long; ARGS=('int' 'void*' 'long' 'long') +ID=19; NAME=pwrite; RET=long; ARGS=('int' 'const void*' 'long' 'long') +ID=20; NAME=remove; RET=long; ARGS=('const char*') +ID=21; NAME=rendezvous; RET=void*; ARGS=('const void*' 'void*') +ID=22; NAME=rfork; RET=int; ARGS=('uint32_t') +ID=23; NAME=seek; RET=long; ARGS=('int' 'long' 'int') +ID=24; NAME=semacquire; RET=int; ARGS=('int*' 'int') +ID=25; NAME=semrelease; RET=int; ARGS=('int*' 'int') +ID=26; NAME=unmount; RET=int; ARGS=('const char*' 'const char*') +ID=27; NAME=alarm; RET=long; ARGS=('unsigned long')