Переглянути джерело

build: move to harvey_binary type

this is going to look like a big commit but it isn't. All it does
is move binary configurations for builds to sys/src/harvey.BUILD
where it defines a harvey_binary macro.

the macro should be used for all std executables by

load("//sys/src/harvey.BUILD", "harvey_build")

harvey_binary(
    name="echo",
    srcs=[
        "echo.c"
    ],
)

this PR also aims to clean up the strip commands in
sys/src/9/amd64/BUILD by moving the option into the cc_binary
rule and stripping by default for harvey_binary macro

Signed-off-by: Sevki <s@sevki.org>
Sevki 7 роки тому
батько
коміт
3fc9674560

+ 79 - 6
BUILD

@@ -6,19 +6,86 @@ objcopy(
 	infile="elf64-x86-64",
 	outfile="elf32-i386",
 )
+
 kernel(
 	name="kernel",
 	deps=[
 		":harvey",
 		"//sys/src/9/amd64:init",
-		"//sys/src/9/amd64:echo",
-		"//sys/src/9/amd64:ls",
-		"//sys/src/9/amd64:cat",
-		"//sys/src/9/amd64:date",
-		"//sys/src/9/amd64:ipconfig",
+		"//sys/src/cmd:echo",
+		"//sys/src/cmd:ls",
+		"//sys/src/cmd:cat",
+		"//sys/src/cmd:date",
+		"//sys/src/cmd/ip/ipconfig:ipconfig",
+		"//sys/src/cmd/auth/factotum:factotum",
 		"//sys/src/cmd/acme:acme",
+		"//sys/src/cmd:mount",
+		"//sys/src/cmd:srv",
+		"//sys/src/cmd:ed",
+		"//sys/src/cmd:ratrace",
+		"//sys/src/cmd:ps",
+		"//sys/src/libc:libc",
+		"//sys/src/libip:libip",
+		"//sys/src/libdraw:libdraw",
+		"//sys/src/lib9p:lib9p",
+		"//sys/src/libString:libString",
+		"//sys/src/libauth:libauth",
+		"//sys/src/libauthsrv:libauthsrv",
+		"//sys/src/libbin:libbin",
+		"//sys/src/libbio:libbio",
+		"//sys/src/libcomplete:libcomplete",
+		"//sys/src/libcontrol:libcontrol",
+		"//sys/src/libdisk:libdisk",
+		"//sys/src/libflate:libflate",
+		"//sys/src/libframe:libframe",
+		"//sys/src/libgeometry:libgeometry",
+		"//sys/src/libhttpd:libhttpd",
+		"//sys/src/liblex:liblex",
+		"//sys/src/libmach:libmach",
+		"//sys/src/libmemdraw:libmemdraw",
+		"//sys/src/libmemlayer:libmemlayer",
+		"//sys/src/libmp:libmp",
+		"//sys/src/libndb:libndb",
+		"//sys/src/liboventi:liboventi",
+		"//sys/src/libplumb:libplumb",
+		"//sys/src/libregexp:libregexp",
+		"//sys/src/libsec:libsec",
+		"//sys/src/libstdio:libstdio",
+		"//sys/src/libthread:libthread",
+		"//sys/src/libusb:libusb",
+		"//sys/src/libventi:libventi",
 	],
 	installs={
+		"amd64/lib/libc.a": "lib/libc.a",
+		"amd64/lib/libip.a": "lib/libip.a",
+		"amd64/lib/libdraw.a": "lib/libdraw.a",
+		"amd64/lib/lib9p.a": "lib/lib9p.a",
+		"amd64/lib/libString.a": "lib/libString.a",
+		"amd64/lib/libauth.a": "lib/libauth.a",
+		"amd64/lib/libauthsrv.a": "lib/libauthsrv.a",
+		"amd64/lib/libbin.a": "lib/libbin.a",
+		"amd64/lib/libbio.a": "lib/libbio.a",
+		"amd64/lib/libcomplete.a": "lib/libcomplete.a",
+		"amd64/lib/libcontrol.a": "lib/libcontrol.a",
+		"amd64/lib/libdisk.a": "lib/libdisk.a",
+		"amd64/lib/libflate.a": "lib/libflate.a",
+		"amd64/lib/libframe.a": "lib/libframe.a",
+		"amd64/lib/libgeometry.a": "lib/libgeometry.a",
+		"amd64/lib/libhttpd.a": "lib/libhttpd.a",
+		"amd64/lib/liblex.a": "lib/liblex.a",
+		"amd64/lib/libmach.a": "lib/libmach.a",
+		"amd64/lib/libmemdraw.a": "lib/libmemdraw.a",
+		"amd64/lib/libmemlayer.a": "lib/libmemlayer.a",
+		"amd64/lib/libmp.a": "lib/libmp.a",
+		"amd64/lib/libndb.a": "lib/libndb.a",
+		"amd64/lib/liboventi.a": "lib/liboventi.a",
+		"amd64/lib/libplumb.a": "lib/libplumb.a",
+		"amd64/lib/libregexp.a": "lib/libregexp.a",
+		"amd64/lib/libsec.a": "lib/libsec.a",
+		"amd64/lib/libstdio.a": "lib/libstdio.a",
+		"amd64/lib/libthread.a": "lib/libthread.a",
+		"amd64/lib/libusb.a": "lib/libusb.a",
+		"amd64/lib/libventi.a": "lib/libventi.a",
 		"amd64/harvey": "bin/harvey",
 		"amd64/bin/init": "bin/init",
 		"amd64/bin/echo": "bin/echo",
@@ -27,5 +94,11 @@ kernel(
 		"amd64/bin/date": "bin/date",
 		"amd64/bin/ipconfig": "bin/ipconfig",
 		"amd64/bin/acme": "bin/acme",
+		"amd64/bin/factotum": "bin/factotum",
+		"amd64/bin/mount": "bin/mount",
+		"amd64/bin/srv": "bin/srv",
+		"amd64/bin/ed": "bin/ed",
+		"amd64/bin/ratrace": "bin/ratrace",
+		"amd64/bin/ps": "bin/ps",
 	},
-)
+)

+ 21 - 151
sys/src/9/amd64/BUILD

@@ -178,143 +178,13 @@ I386_SRCS = [
 
 AMD64SRCS = AMD64_SRCS + CORE_SRCS + I386_SRCS + IP_SRCS + PORT_SRCS
 
-strip(
-	name="bind",
-	deps=[
-		"//sys/src/cmd:bind",
-	],
-)
-
-strip(
-	name="prep",
-	deps=[
-		"//sys/src/cmd/disk/prep:prep",
-	],
-)
 strip(
 	name="boot",
 	deps=[
 		"//sys/src/9/boot:bootamd64cpu",
 	],
 )
-strip(
-	name="cat",
-	deps=[
-		"//sys/src/cmd:cat",
-	],
-)
-strip(
-	name="date",
-	deps=[
-		"//sys/src/cmd:date",
-	],
-)
-strip(
-	name="echo",
-	deps=[
-		"//sys/src/cmd:echo",
-	],
-)
-strip(
-	name="factotum",
-	deps=[
-		"//sys/src/cmd/auth/factotum:factotum",
-	],
-)
-strip(
-	name="fdisk",
-	deps=[
-		"//sys/src/cmd/disk/prep:fdisk",
-	],
-)
-strip(
-	name="ipconfig",
-	deps=[
-		"//sys/src/cmd/ip/ipconfig:ipconfig",
-	],
-)
-strip(
-	name="screenconsole",
-	deps=[
-		"//sys/src/cmd/aux/console:screenconsole",
-	],
-)
-strip(
-	name="ls",
-	deps=[
-		"//sys/src/cmd:ls",
-	],
-)
-strip(
-	name="mount",
-	deps=[
-		"//sys/src/cmd:mount",
-	],
-)
-strip(
-	name="rc",
-	deps=[
-		"//sys/src/cmd/rc:rc",
-	],
-)
-strip(
-	name="ps",
-	deps=[
-		"//sys/src/cmd:ps",
-	],
-)
-strip(
-	name="ed",
-	deps=[
-		"//sys/src/cmd:ed",
-	],
-)
-strip(
-	name="realemu",
-	deps=[
-		"//sys/src/cmd/aux/realemu:realemu",
-	],
-)
-strip(
-	name="vga",
-	deps=[
-		"//sys/src/cmd/aux/vga:vga",
-	],
-)
-strip(
-	name="srv",
-	deps=[
-		"//sys/src/cmd:srv",
-	],
-)
-
-strip(
-	name="usbd",
-	deps=[
-		"//sys/src/cmd/usb/usbd:usbd",
-	],
-)
-
-strip(
-	name="venti",
-	deps=[
-		"//sys/src/cmd/venti/srv:venti",
-	],
-)
 
-strip(
-	name="fossil",
-	deps=[
-		"//sys/src/cmd/fossil:fossil",
-	],
-)
-
-strip(
-	name="ratrace",
-	deps=[
-		"//sys/src/cmd:ratrace",
-	],
-)
 mk_sys(
 	name="error",
 	mode="error.h",
@@ -398,31 +268,31 @@ cc_binary(
 )
 
 KERNEL_DEPS = [
-	":bind",
+	"//sys/src/cmd:bind",
 	":boot",
-	":cat",
-	":date",
-	":echo",
-	":factotum",
-	":fdisk",
-	":fossil",
-	":ipconfig",
-	":ls",
-	":mount",
+	"//sys/src/cmd:cat",
+	"//sys/src/cmd:date",
+	"//sys/src/cmd:echo",
+	"//sys/src/cmd/auth/factotum:factotum",
+	"//sys/src/cmd/disk/prep:fdisk",
+	"//sys/src/cmd/fossil:fossil",
+	"//sys/src/cmd/ip/ipconfig:ipconfig",
+	"//sys/src/cmd:ls",
+	"//sys/src/cmd:mount",
 # nvram FILE ADDED
-	":prep",
-	":rc",
-	":ps",
-	":ed",
+	"//sys/src/cmd/disk/prep:prep",
+	"//sys/src/cmd/rc:rc",
+	"//sys/src/cmd:ps",
+	"//sys/src/cmd:ed",
 # rcmain FILE ADDED
-	":screenconsole",
-	":realemu",
-	":vga",
-	":srv",
+	"//sys/src/cmd/aux/console:screenconsole",
+	"//sys/src/cmd/aux/realemu:realemu",
+	"//sys/src/cmd/aux/vga:vga",
+	"//sys/src/cmd:srv",
 # startdisk FILE ADDED
-	":usbd",
-	":venti",
-	":ratrace",
+	"//sys/src/cmd/usb/usbd:usbd",
+	"//sys/src/cmd/venti/srv:venti",
+	"//sys/src/cmd:ratrace",
 ]
 
 config(

+ 71 - 180
sys/src/cmd/BUILD

@@ -1,195 +1,86 @@
 load('//sys/src/FLAGS', "LIB_COMPILER_FLAGS", "CMD_LINK_OPTS")
+load('//sys/src/harvey.BUILD', "harvey_binary")
 
-# Order of libs
-# "/$ARCH/lib/libString.a",
-# "/$ARCH/lib/lib9p.a",
-# "/$ARCH/lib/libndb.a",
-# "/$ARCH/lib/libauth.a",
-# "/$ARCH/lib/libbio.a",
-# "/$ARCH/lib/libip.a",
-# "/$ARCH/lib/libc.a"
+CMD_SRCS = [
+	"echo.c",
+	"cat.c",
+	"date.c",
+	"bind.c",
+]
 
-CMDS=[
-        "//sys/src/cmd/acme:acme",
-        "//sys/src/cmd/rc:rc",
-        "//sys/src/cmd/ip/ipconfig:ipconfig",
-        ":echo",
-        ":mount",
-        ":date",
-        ":srv",
-        ":ls",
-        ":bind",
-    ]
+[harvey_binary(
+	name=c[:-2],
+	srcs=[c],
+) for c in CMD_SRCS]
 
-group(
-    name="cmds",
-    deps=CMDS
+harvey_binary(
+	name="mount",
+	srcs=[
+		"mount.c"
+	],
+	deps=[
+		"//sys/src/libauth:libauth",
+		"//sys/src/libc:libc",
+	],
 )
 
-cc_binary(
-    name="echo",
-    copts=LIB_COMPILER_FLAGS,
-    srcs=[
-        "echo.c"
-    ],
-    deps=[
-        "//sys/src/libc:libc",
-    ],
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    linkopts=CMD_LINK_OPTS
+harvey_binary(
+	name="srv",
+	srcs=[
+		"srv.c"
+	],
+	deps=[
+		"//sys/src/libauth:libauth",
+		"//sys/src/libc:libc",
+	]
 )
 
-cc_binary(
-    name="mount",
-    copts=LIB_COMPILER_FLAGS,
-    srcs=[
-        "mount.c"
-    ],
-    deps=[
-        "//sys/src/libauth:libauth",
-        "//sys/src/libc:libc",
-    ],
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    linkopts=CMD_LINK_OPTS
-)
-
-cc_binary(
-    name="date",
-    copts=LIB_COMPILER_FLAGS,
-    srcs=[
-        "date.c"
-    ],
-    deps=[
-        "//sys/src/libc:libc",
-    ],
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    linkopts=CMD_LINK_OPTS
+harvey_binary(
+	name="ls",
+	srcs=[
+		"ls.c"
+	],
+	deps=[
+		"//sys/src/libbio:libbio",
+		"//sys/src/libc:libc",
+	],
 )
 
-cc_binary(
-    name="cat",
-    copts=LIB_COMPILER_FLAGS,
-    srcs=[
-        "cat.c"
-    ],
-    deps=[
-        "//sys/src/libc:libc",
-    ],
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    linkopts=CMD_LINK_OPTS
+harvey_binary(
+	name="ps",
+	srcs=[
+		"ps.c"
+	],
+	deps=[
+		"//sys/src/libbio:libbio",
+		"//sys/src/libc:libc",
+	],
 )
 
-cc_binary(
-    name="bind",
-    copts=LIB_COMPILER_FLAGS,
-    srcs=[
-        "bind.c"
-    ],
-    deps=[
-        "//sys/src/libc:libc",
-    ],
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    linkopts=CMD_LINK_OPTS
-)
+harvey_binary(
+	name="ed",
+	srcs=[
+		"ed.c"
+	],
+	deps=[
+		"//sys/src/libregexp:libregexp",
+		"//sys/src/libbio:libbio",
+		"//sys/src/libc:libc",
+	],
+	includes=[
+		"//sys/include",
+		"//amd64/include",
+		"//sys/src/libregexp",
+	],
+ )
 
-cc_binary(
-    name="srv",
-    copts=LIB_COMPILER_FLAGS,
-    srcs=[
-        "srv.c"
-    ],
-    deps=[
-        "//sys/src/libauth:libauth",
+harvey_binary(
+	name="ratrace",
+	srcs=[
+		"ratrace.c"
+	],
+	deps=[
+        "//sys/src/libthread:libthread",
         "//sys/src/libc:libc",
-    ],
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    linkopts=CMD_LINK_OPTS
-)
-
-cc_binary(
-    name="ls",
-    copts=LIB_COMPILER_FLAGS,
-    srcs=[
-        "ls.c"
-    ],
-    deps=[
-        "//sys/src/libbio:libbio",
-        "//sys/src/libc:libc",
-    ],
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    linkopts=CMD_LINK_OPTS
-)
-
-cc_binary(
-    name="ps",
-    copts=LIB_COMPILER_FLAGS,
-    srcs=[
-        "ps.c"
-    ],
-    deps=[
-        "//sys/src/libbio:libbio",
-        "//sys/src/libc:libc",
-    ],
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    linkopts=CMD_LINK_OPTS
-)
-
-cc_binary(
-    name="ed",
-    copts=LIB_COMPILER_FLAGS,
-    srcs=[
-        "ed.c"
-    ],
-    deps=[
-     	"//sys/src/libregexp:libregexp",
-        "//sys/src/libbio:libbio",
-        "//sys/src/libc:libc",
-    ],
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-        "//sys/src/libregexp",
-    ],
-    linkopts=CMD_LINK_OPTS
-)
-
-cc_binary(
-    name="ratrace",
-    copts=LIB_COMPILER_FLAGS,
-    srcs=[
-        "ratrace.c"
-    ],
-    deps=[
-	"//sys/src/libthread:libthread",
-	"//sys/src/libc:libc",
-    ],
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    linkopts=CMD_LINK_OPTS
+	]
 )

+ 34 - 40
sys/src/cmd/acme/BUILD

@@ -1,42 +1,36 @@
-load('//sys/src/FLAGS', "LIB_COMPILER_FLAGS", "CMD_LINK_OPTS")
+load('//sys/src/harvey.BUILD', "harvey_binary")
 
-cc_binary(
-    name="acme",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=[
-        "//sys/src/libcomplete:libcomplete",
-        "//sys/src/libframe:libframe",
-        "//sys/src/libdraw:libdraw",
-        "//sys/src/libplumb:libplumb",
-        "//sys/src/libthread:libthread",
-        "//sys/src/libbio:libbio",
-        "//sys/src/libc:libc"
-    ],
-    srcs=[
-        "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"
-    ],
-    linkopts=CMD_LINK_OPTS
+harvey_binary(
+	name="acme",
+	deps=[
+		"//sys/src/libcomplete:libcomplete",
+		"//sys/src/libframe:libframe",
+		"//sys/src/libdraw:libdraw",
+		"//sys/src/libplumb:libplumb",
+		"//sys/src/libthread:libthread",
+		"//sys/src/libbio:libbio",
+		"//sys/src/libc:libc"
+	],
+	srcs=[
+		"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"
+	],
 )

+ 2 - 8
sys/src/cmd/auth/factotum/BUILD

@@ -1,13 +1,7 @@
-load("//sys/src/FLAGS", "LIB_COMPILER_FLAGS", "CMD_DEPS")
+load("//sys/src/harvey.BUILD", "harvey_binary")
 
-cc_binary(
+harvey_binary(
     name="factotum",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=CMD_DEPS,
     srcs=[
         "apop.c",
         "chap.c",

+ 42 - 63
sys/src/cmd/aux/console/BUILD

@@ -1,8 +1,7 @@
-load("//sys/src/FLAGS", "LIB_COMPILER_FLAGS")
+load('//sys/src/harvey.BUILD', "harvey_binary")
 
-cc_binary(
+harvey_binary(
     name="consoles",
-    copts=LIB_COMPILER_FLAGS,
     includes=[
         "//sys/include",
         "//amd64/include",
@@ -13,67 +12,47 @@ cc_binary(
         "screenconsole",
     ],
 )
-cc_binary(
-    name="console",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    linkopts=[
-        "static",
-        "e_main",
-        "lc",
-    ],
-    srcs=[
-        "buffer.c",
-        "comconsole.c",
-        "passthrough.c",
-        "serve9p.c",
-        "utils.c",
+harvey_binary(
+	name="console",
+	deps=[
+		"//sys/src/libc:libc",
+	],
+	srcs=[
+		"buffer.c",
+		"comconsole.c",
+		"passthrough.c",
+		"serve9p.c",
+		"utils.c",
     ],
 )
-cc_binary(
-    name="pipeconsole",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    srcs=[
-        "buffer.c",
-        "pipeconsole.c",
-        "passthrough.c",
-        "serve9p.c",
-        "utils.c",
-    ],
-    linkopts=[
-        "static",
-        "e_main",
-        "lc",
-    ],
+
+
+harvey_binary(
+	name="pipeconsole",
+	deps=[
+		"//sys/src/libc:libc",
+	],
+	srcs=[
+		"buffer.c",
+		"pipeconsole.c",
+		"passthrough.c",
+		"serve9p.c",
+		"utils.c",
+	],
 )
-cc_binary(
-    name="screenconsole",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=[
-        "//sys/src/libc:libc",
-    ],
-    linkopts=[
-        "-static",
-        "-e_main",
-    ],
-    srcs=[
-        "buffer.c",
-        "cga.c",
-        "screenconsole.c",
-        "keyboard.c",
-        "passthrough.c",
-        "serve9p.c",
-        "utils.c",
-    ],
+
+harvey_binary(
+	name="screenconsole",
+	deps=[
+		"//sys/src/libc:libc",
+	],
+	srcs=[
+        		"buffer.c",
+		"cga.c",
+		"screenconsole.c",
+		"keyboard.c",
+		"passthrough.c",
+		"serve9p.c",
+		"utils.c",
+	],
 )

+ 2 - 5
sys/src/cmd/aux/realemu/BUILD

@@ -1,16 +1,13 @@
-load("//sys/src/FLAGS", "CMD_LINK_OPTS", "CMD_DEPS", "LIB_COMPILER_FLAGS")
+load('//sys/src/harvey.BUILD', "harvey_binary")
 
-cc_binary(
+harvey_binary(
 	name = "realemu",
-	copts =LIB_COMPILER_FLAGS,
 	includes=[
 		"//amd64/include",
 		"//sys/include",
 		"//sys/src/cmd/aux/realemu",
 	 	"//.",
 	],
-	deps=CMD_DEPS,
-	linkopts=CMD_LINK_OPTS,
 	srcs = [
 		"arg.c",
 		"debug.c",

+ 2 - 5
sys/src/cmd/aux/vga/BUILD

@@ -1,15 +1,12 @@
-load("//sys/src/FLAGS", "CMD_LINK_OPTS", "CMD_DEPS", "LIB_COMPILER_FLAGS")
+load('//sys/src/harvey.BUILD', "harvey_binary")
 
-cc_binary(
+harvey_binary(
 	name = "vga",
-	copts = LIB_COMPILER_FLAGS,
     	includes=[
 		"//amd64/include",
 		"//sys/include",
 		"//.",
 	],
-	deps=CMD_DEPS,
-	linkopts=CMD_LINK_OPTS,
 	srcs = [
 		"error.c",
 		"ics534x.c",

+ 18 - 25
sys/src/cmd/disk/9660/BUILD

@@ -1,28 +1,21 @@
-load("//sys/src/FLAGS", "LIB_COMPILER_FLAGS", "CMD_DEPS", "CMD_LINK_OPTS")
+load('//sys/src/harvey.BUILD', "harvey_binary")
 
-cc_binary(
-    name="dump9660",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=CMD_DEPS,
-    linkopts=CMD_LINK_OPTS,
-    srcs=[
-        "boot.c",
-        "cdrdwr.c",
-        "conform.c",
-        "direc.c",
-        "dump.c",
-        "dump9660.c",
-        "ichar.c",
-        "jchar.c",
-        "path.c",
-        "plan9.c",
-        "rune.c",
-        "sysuse.c",
-        "util.c",
-        "write.c",
+harvey_binary(
+	name="dump9660",
+	srcs=[
+		"boot.c",
+		"cdrdwr.c",
+		"conform.c",
+		"direc.c",
+		"dump.c",
+		"dump9660.c",
+		"ichar.c",
+		"jchar.c",
+		"path.c",
+		"plan9.c",
+		"rune.c",
+		"sysuse.c",
+		"util.c",
+		"write.c",
     ],
 )

+ 14 - 84
sys/src/cmd/disk/BUILD

@@ -1,85 +1,15 @@
-load("//sys/src/FLAGS", "LIB_COMPILER_FLAGS", "CMD_DEPS", "CMD_LINK_OPTS")
-
-cc_binary(
-    name="format",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=CMD_DEPS,
-    linkopts=CMD_LINK_OPTS,
-    srcs=[
-        "format.c",
-    ],
-)
-
-cc_binary(
-    name="exsort",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=CMD_DEPS,
-    linkopts=CMD_LINK_OPTS,
-    srcs=[
-        "exsort.c",
-    ],
-)
-
-cc_binary(
-    name="mbr",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=CMD_DEPS,
-    linkopts=CMD_LINK_OPTS,
-    srcs=[
-        "mbr.c",
-    ],
-)
-
-cc_binary(
-    name="mkext",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=CMD_DEPS,
-    linkopts=CMD_LINK_OPTS,
-    srcs=[
-        "mkext.c",
-    ],
-)
-
-cc_binary(
-    name="mkfs",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=CMD_DEPS,
-    linkopts=CMD_LINK_OPTS,
-    srcs=[
-        "mkfs.c",
-    ],
-)
-
-cc_binary(
-    name="partfs",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=CMD_DEPS,
-    linkopts=CMD_LINK_OPTS,
-    srcs=[
+load('//sys/src/harvey.BUILD', "harvey_binary")
+
+DISK_SRCS=[
+	"format.c",
+	"exsort.c",
+	"mbr.c",
+	"mkext.c",
+	"mkfs.c",
         "partfs.c",
-    ],
-)
+]
+
+[harvey_binary(
+	name=d[:-2],
+	srcs=[d],
+) for d in DISK_SRCS]

+ 5 - 7
sys/src/cmd/disk/prep/BUILD

@@ -1,36 +1,34 @@
-load("//sys/src/FLAGS", "LIB_COMPILER_FLAGS", "CMD_DEPS", "CMD_LINK_OPTS")
+load('//sys/src/harvey.BUILD', "harvey_binary", "CMD_DEPS")
+
 CALC = [
     ":calc"
 ]
 
 PREP_DEPS = CALC + CMD_DEPS
 
-cc_binary(
+harvey_binary(
     name="fdisk",
-    copts=LIB_COMPILER_FLAGS,
     includes=[
         "//sys/include",
         "//amd64/include",
         "//sys/src/cmd/disk/prep",
     ],
     deps=PREP_DEPS,
-    linkopts=CMD_LINK_OPTS,
     srcs=[
         "fdisk.c",
         "edit.c",
         "y.tab.c",
     ],
 )
-cc_binary(
+
+harvey_binary(
     name="prep",
-    copts=LIB_COMPILER_FLAGS,
     includes=[
         "//sys/include",
         "//amd64/include",
         "//sys/src/cmd/disk/prep",
     ],
     deps=PREP_DEPS,
-    linkopts=CMD_LINK_OPTS,
     srcs=[
         "prep.c",
         "edit.c",

+ 5 - 27
sys/src/cmd/fossil/BUILD

@@ -1,12 +1,7 @@
-load("//sys/src/FLAGS", "LIB_COMPILER_FLAGS", "CMD_DEPS", "CMD_LINK_OPTS")
+load('//sys/src/harvey.BUILD', "harvey_binary")
 
-cc_binary(
+harvey_binary(
 	name = "flchk",
-        copts = LIB_COMPILER_FLAGS,
-        includes=[
-            "//sys/include",
-            "//amd64/include",
-        ],
 	srcs = [
 		"9p.c",
 		"9auth.c",
@@ -38,13 +33,8 @@ cc_binary(
 		"walk.c",
 	],
 )
-cc_binary(
+harvey_binary(
 	name = "flfmt",
-        copts = LIB_COMPILER_FLAGS,
-        includes=[
-            "//sys/include",
-            "//amd64/include",
-        ],
 	srcs = [
 		"9p.c",
 		"9auth.c",
@@ -77,15 +67,8 @@ cc_binary(
 		"walk.c",
 	],
 )
-cc_binary(
+harvey_binary(
 	name = "fossil",
-        copts = LIB_COMPILER_FLAGS,
-        includes=[
-            "//sys/include",
-            "//amd64/include",
-        ],
-	linkopts=CMD_LINK_OPTS,
-	deps=CMD_DEPS,
 	srcs = [
 		"9p.c",
 		"9auth.c",
@@ -117,13 +100,8 @@ cc_binary(
 		"walk.c",
 	],
 )
-cc_binary(
+harvey_binary(
 	name = "last",
-        copts = LIB_COMPILER_FLAGS,
-        includes=[
-            "//sys/include",
-            "//amd64/include",
-        ],
 	srcs = [
 		"9p.c",
 		"9auth.c",

+ 6 - 24
sys/src/cmd/ip/ipconfig/BUILD

@@ -1,4 +1,4 @@
-load("//sys/src/FLAGS", "CMD_LINK_OPTS", "LIB_COMPILER_FLAGS")
+load('//sys/src/harvey.BUILD', "harvey_binary")
 
 CMD_DEPS = [
     "//sys/src/libString:libString",
@@ -10,21 +10,12 @@ CMD_DEPS = [
     "//sys/src/libc:libc"
 ]
 
-cc_binary(
+harvey_binary(
 	name="ipconfig",
-	copts=[
-		"-c",
-		"-std=c11",
-		"-mcmodel=small",
-		"-O0",
-		"-mno-red-zone",
-		"-ffreestanding",
-		"-fno-builtin",
-		"-Wall",
-		"-Wno-missing-braces",
-		"-Wno-parentheses",
-		"-Wno-unknown-pragmas",
-		"-g",
+  srcs=[
+		"ipv6.c",
+		"main.c",
+		"ppp.c",
 	],
 	includes=[
 		"//sys/include",
@@ -32,13 +23,4 @@ cc_binary(
 		"//sys/src/cmd/ip/ipconfig",
 	],
 	deps=CMD_DEPS,
-	linkopts=[
-		"-static",
-		"-e_main",
-	],
-	srcs=[
-		"ipv6.c",
-		"main.c",
-		"ppp.c",
-	],
 )

+ 36 - 41
sys/src/cmd/rc/BUILD

@@ -1,46 +1,41 @@
-load('//sys/src/FLAGS', "LIB_COMPILER_FLAGS")
+load('//sys/src/harvey.BUILD', "harvey_binary")
 
-cc_binary(
-    name="rc",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-        "//sys/src/cmd/rc"
-    ],
-    deps=[
-        ":syn",
-        "//sys/src/libip:libip",
-        "//sys/src/libbio:libbio",
-        "//sys/src/libauth:libauth",
-        "//sys/src/libndb:libndb",
-        "//sys/src/libString:libString",
-        "//sys/src/lib9p:lib9p",
-        "//sys/src/libc:libc",
-    ],
-    linkopts=[
-        "-static",
-        "-e_main"
-    ],
+harvey_binary(
+	name="rc",
+	includes=[
+		"//sys/include",
+		"//amd64/include",
+		"//sys/src/cmd/rc"
+	],
+	deps=[
+		":syn",
+		"//sys/src/libip:libip",
+		"//sys/src/libbio:libbio",
+		"//sys/src/libauth:libauth",
+		"//sys/src/libndb:libndb",
+		"//sys/src/libString:libString",
+		"//sys/src/lib9p:lib9p",
+		"//sys/src/libc:libc",
+	],
     srcs=[
-        "code.c",
-        "exec.c",
-        "getflags.c",
-        "glob.c",
-        "havefork.c",
-        "here.c",
-        "io.c",
-        "lex.c",
-        "pcmd.c",
-        "pfnc.c",
-        "plan9.c",
-        "simple.c",
-        "subr.c",
-        "trap.c",
-        "tree.c",
-        "var.c",
-        "x.tab.c",
-    ]
+		"code.c",
+		"exec.c",
+		"getflags.c",
+		"glob.c",
+		"havefork.c",
+		"here.c",
+		"io.c",
+		"lex.c",
+		"pcmd.c",
+		"pfnc.c",
+		"plan9.c",
+		"simple.c",
+		"subr.c",
+		"trap.c",
+		"tree.c",
+		"var.c",
+		"x.tab.c",
+	],
 )
 
 yacc(

+ 3 - 6
sys/src/cmd/usb/usbd/BUILD

@@ -1,27 +1,24 @@
-load("//sys/src/FLAGS",  "CMD_DEPS", "CMD_LINK_OPTS", "LIB_COMPILER_FLAGS")
+load("//sys/src/harvey.BUILD",  "CMD_DEPS", "harvey_binary")
 
 DEPS =[
 	":devtab",
 	"//sys/src/libusb:libusb",
 ]
 
-USBD_DEPS = DEPS+ CMD_DEPS 
 
-cc_binary(
+harvey_binary(
 	name = "usbd",
-	copts = LIB_COMPILER_FLAGS,
+	deps=DEPS+ CMD_DEPS,
 	includes=[
 		"//sys/include",
 		"//amd64/include",
 		"//sys/src/cmd/usb/usbd",
 	],
-	deps=USBD_DEPS,
 	srcs = [
 		"usbd.c",
 		"dev.c",
 		"devtab.c",
 	],
-	linkopts=CMD_LINK_OPTS,
 )
 
 usb(

+ 17 - 136
sys/src/cmd/venti/BUILD

@@ -1,138 +1,19 @@
-load("//sys/src/FLAGS", "LIB_COMPILER_FLAGS", "CMD_DEPS", "CMD_LINK_OPTS")
+load('//sys/src/harvey.BUILD', "harvey_binary")
 
-cc_binary(
-    name="copy",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=CMD_DEPS,
-    linkopts=CMD_LINK_OPTS,
-    srcs=[
-        "copy.c",
-    ],
-)
-cc_binary(
-    name="read",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=CMD_DEPS,
-    linkopts=CMD_LINK_OPTS,
-    srcs=[
-        "read.c",
-    ],
-)
+VENTI_SRCS=[
+	"copy.c",
+	"read.c",
+	"ro.c",
+	"sync.c",
+	"write.c",
+	"devnull.c",
+	"mkroot.c",
+	"randtest.c",
+	"readlist.c",
+	"root.c",
+]
 
-cc_binary(
-    name="ro",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=CMD_DEPS,
-    linkopts=CMD_LINK_OPTS,
-    srcs=[
-        "ro.c",
-    ],
-)
-
-cc_binary(
-    name="sync",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=CMD_DEPS,
-    linkopts=CMD_LINK_OPTS,
-    srcs=[
-        "sync.c",
-    ],
-)
-
-cc_binary(
-    name="write",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=CMD_DEPS,
-    linkopts=CMD_LINK_OPTS,
-    srcs=[
-        "write.c",
-    ],
-)
-
-cc_binary(
-    name="devnull",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=CMD_DEPS,
-    linkopts=CMD_LINK_OPTS,
-    srcs=[
-        "devnull.c",
-    ],
-)
-
-cc_binary(
-    name="mkroot",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=CMD_DEPS,
-    linkopts=CMD_LINK_OPTS,
-    srcs=[
-        "mkroot.c",
-    ],
-)
-
-cc_binary(
-    name="randtest",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=CMD_DEPS,
-    linkopts=CMD_LINK_OPTS,
-    srcs=[
-        "randtest.c",
-    ],
-)
-cc_binary(
-    name="readlist",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=CMD_DEPS,
-    linkopts=CMD_LINK_OPTS,
-    srcs=[
-        "readlist.c",
-    ],
-)
-cc_binary(
-    name="root",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=CMD_DEPS,
-    linkopts=CMD_LINK_OPTS,
-    srcs=[
-        "root.c",
-    ],
-)
+[harvey_binary(
+	name=v[:-2],
+	srcs=[v],
+) for v in VENTI_SRCS]

+ 3 - 11
sys/src/cmd/venti/srv/BUILD

@@ -1,4 +1,4 @@
-load("//sys/src/FLAGS", "LIB_COMPILER_FLAGS", "CMD_DEPS", "CMD_LINK_OPTS")
+load("//sys/src/harvey.BUILD",  "CMD_DEPS", "harvey_binary", "LIB_COMPILER_FLAGS")
 
 cc_library(
 	name = "libvs",
@@ -51,18 +51,10 @@ DEPS = [
 	":libvs",
 ]
 
-VENTI_DEPS =DEPS +CMD_DEPS 
-
-cc_binary(
+harvey_binary(
 	name = "venti",
-	copts = LIB_COMPILER_FLAGS,
-	includes=[
-		"//sys/include",
-		"//amd64/include",
-	],
+	deps =DEPS +CMD_DEPS,
 	srcs=[
 		"venti.c"
 	],
-	linkopts = CMD_LINK_OPTS,
-	deps =VENTI_DEPS,
 )

+ 38 - 40
sys/src/cmd/zenith/BUILD

@@ -1,42 +1,40 @@
-load('//sys/src/FLAGS', "LIB_COMPILER_FLAGS", "CMD_LINK_OPTS")
+load('//sys/src/harvey.BUILD', "harvey_binary")
 
-cc_binary(
-    name="zenith",
-    copts=LIB_COMPILER_FLAGS,
-    includes=[
-        "//sys/include",
-        "//amd64/include",
-    ],
-    deps=[
-        "//sys/src/libcomplete:libcomplete",
-        "//sys/src/libframe:libframe",
-        "//sys/src/libdraw:libdraw",
-        "//sys/src/libplumb:libplumb",
-        "//sys/src/libthread:libthread",
-        "//sys/src/libbio:libbio",
-        "//sys/src/libc:libc"
-    ],
-    srcs=[
-        "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"
-    ],
-    linkopts=CMD_LINK_OPTS
+harvey_binary(
+	name="zenith",
+	includes=[
+		"//sys/include",
+		"//amd64/include",
+	],
+	deps=[
+		"//sys/src/libcomplete:libcomplete",
+		"//sys/src/libframe:libframe",
+		"//sys/src/libdraw:libdraw",
+		"//sys/src/libplumb:libplumb",
+		"//sys/src/libthread:libthread",
+		"//sys/src/libbio:libbio",
+		"//sys/src/libc:libc"
+	],
+	srcs=[
+		"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"
+	],
 )

+ 84 - 0
sys/src/harvey.BUILD

@@ -0,0 +1,84 @@
+CMD_DEPS = [
+	"//sys/src/libavl:libavl",
+	"//sys/src/libcomplete:libcomplete",
+	"//sys/src/libcontrol:libcontrol",
+	"//sys/src/libdisk:libdisk",
+	"//sys/src/libflate:libflate",
+	"//sys/src/libframe:libframe",
+	"//sys/src/libgeometry:libgeometry",
+	"//sys/src/libhttpd:libhttpd",
+	"//sys/src/libbin:libbin",
+	"//sys/src/liblex:liblex",
+	"//sys/src/libmemdraw:libmemdrawiprint",
+	"//sys/src/libmemlayer:libmemlayer",
+	"//sys/src/libmemdraw:libmemdraw",
+	"//sys/src/libdraw:libdraw",
+	"//sys/src/libplumb:libplumb",
+	"//sys/src/libregexp:libregexp",
+	"//sys/src/libstdio:libstdio",
+	"//sys/src/libString:libString",
+	"//sys/src/liboventi:liboventi",
+	"//sys/src/lib9p:lib9p",
+	"//sys/src/libauth:libauth",
+	"//sys/src/libauthsrv:libauthsrv",
+	"//sys/src/libndb:libndb",
+	"//sys/src/libip:libip",
+	"//sys/src/libventi:libventi",
+	"//sys/src/libsec:libsec",
+	"//sys/src/libmp:libmp",
+	"//sys/src/libthread:libthread",
+	"//sys/src/libmach:libmach",
+	"//sys/src/libbio:libbio",
+	"//sys/src/libc:libc",
+]
+
+CMD_LINK_OPTS = [
+	"-static",
+	"-e_main",
+]
+
+KLIB_COMPILER_FLAGS = [
+	"-mcmodel=kernel",
+	"-O0",
+	"-mno-red-zone",
+	"-ffreestanding",
+	"-fno-builtin",
+	"-Wall",
+	"-Wno-missing-braces",
+	"-Wno-parentheses",
+	"-Wno-unknown-pragmas",
+	"-Wuninitialized",
+	"-g",
+]
+
+LIB_COMPILER_FLAGS = [
+	"-std=c11",
+	"-fasm",
+	"-c",
+	"-ffreestanding",
+	"-fno-builtin",
+	"-fno-omit-frame-pointer",
+	"-g",
+	"-gdwarf-2",
+	"-ggdb",
+	"-mcmodel=small",
+	"-mno-red-zone",
+	"-O0",
+	"-static",
+	"-Wall",
+	"-Wno-missing-braces",
+	"-Wno-parentheses",
+	"-Wno-unknown-pragmas"
+]
+
+
+harvey_binary = cc_binary(
+	copts=LIB_COMPILER_FLAGS,
+	includes=[
+		"//sys/include",
+		"//amd64/include",
+	],
+	deps=CMD_DEPS,
+	strip=true,
+	linkopts=CMD_LINK_OPTS
+)