BUILD 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416
  1. load("//sys/src/FLAGS", "LIB_COMPILER_FLAGS")
  2. load("//sys/src/BUILD", "LIBS", "KLIBS")
  3. CORE_SRCS = [
  4. "entry.S",
  5. "vsvm.c",
  6. "l64v.S",
  7. "l64fpu.S",
  8. "cpuidamd64.S",
  9. "l64acidt.S",
  10. "l64idt.S",
  11. "l64vsyscall.S",
  12. "acore.c",
  13. "apic.c",
  14. "arch.c",
  15. "archamd64.c",
  16. "asm.c",
  17. "backtrace.c",
  18. "//sys/src/9/port/devbridge.c",
  19. "coreboot.c",
  20. "ctype.c",
  21. "devarch.c",
  22. "//sys/src/9/port/devdraw.c",
  23. "//sys/src/9/port/devmouse.c",
  24. "//sys/src/9/port/devpci.c",
  25. "devpmc.c",
  26. "fpu.c",
  27. "i8254.c",
  28. "i8259.c",
  29. "ioapic.c",
  30. "//sys/src/9/port/log.c",
  31. "main.c",
  32. "map.c",
  33. "memory.c",
  34. "mmu.c",
  35. "mpacpi.c",
  36. "mp.c",
  37. "msi.c",
  38. "multiboot.c",
  39. "physalloc.c",
  40. "pmcio.c",
  41. "qmalloc.c",
  42. "sipi.c",
  43. "syscall.c",
  44. "systab.c",
  45. "tcore.c",
  46. "trap.c",
  47. "//sys/src/9/port/usbehci.c",
  48. ]
  49. PORT_SRCS = [
  50. "//sys/src/9/port/alarm.c",
  51. "//sys/src/9/port/allocb.c",
  52. "//sys/src/9/port/cache.c",
  53. "//sys/src/9/port/chan.c",
  54. "//sys/src/9/port/cpu_buffer.c",
  55. "//sys/src/9/port/dev.c",
  56. "//sys/src/9/port/devcap.c",
  57. "//sys/src/9/port/devcons.c",
  58. "//sys/src/9/port/devcoreboot.c",
  59. "//sys/src/9/port/devdup.c",
  60. "//sys/src/9/port/devenv.c",
  61. "//sys/src/9/port/devether.c",
  62. "//sys/src/9/port/devfdmux.c",
  63. "//sys/src/9/port/devkprof.c",
  64. "//sys/src/9/port/devkbin.c",
  65. "//sys/src/9/port/devmnt.c",
  66. "//sys/src/9/port/devmntn.c",
  67. "//sys/src/9/port/devpipe.c",
  68. "//sys/src/9/port/devproc.c",
  69. "//sys/src/9/port/devregress.c",
  70. "//sys/src/9/port/devroot.c",
  71. "//sys/src/9/port/devsd.c",
  72. "//sys/src/9/port/devsegment.c",
  73. "//sys/src/9/port/devsrv.c",
  74. "//sys/src/9/port/devssl.c",
  75. "//sys/src/9/port/devtls.c",
  76. "//sys/src/9/port/devtab.c",
  77. "//sys/src/9/port/devtrace.c",
  78. "//sys/src/9/port/devuart.c",
  79. "//sys/src/9/port/devwd.c",
  80. "//sys/src/9/port/devws.c",
  81. "//sys/src/9/port/edf.c",
  82. "//sys/src/9/port/elf64.c",
  83. "//sys/src/9/port/ethermii.c",
  84. "//sys/src/9/port/fault.c",
  85. "//sys/src/9/port/fortuna.c",
  86. "//sys/src/9/port/getput.c",
  87. "//sys/src/9/port/hexdump.c",
  88. "//sys/src/9/port/image.c",
  89. "//sys/src/9/port/kdebug.c",
  90. "//sys/src/9/port/ipchecksum.c",
  91. "//sys/src/9/port/mul64fract.c",
  92. "//sys/src/9/port/netif.c",
  93. "//sys/src/9/port/page.c",
  94. "//sys/src/9/port/pager.c",
  95. "//sys/src/9/port/parse.c",
  96. "//sys/src/9/port/pgrp.c",
  97. "//sys/src/9/port/portclock.c",
  98. "//sys/src/9/port/print.c",
  99. "//sys/src/9/port/proc.c",
  100. "//sys/src/9/port/ps.c",
  101. "//sys/src/9/port/qio.c",
  102. "//sys/src/9/port/qlock.c",
  103. "//sys/src/9/port/random.c",
  104. "//sys/src/9/port/rebootcmd.c",
  105. "//sys/src/9/port/rmap.c",
  106. "//sys/src/9/port/sdscsi.c",
  107. "//sys/src/9/port/segment.c",
  108. "//sys/src/9/port/sysauth.c",
  109. "//sys/src/9/port/syscallfmt.c",
  110. "//sys/src/9/port/sysfile.c",
  111. "//sys/src/9/port/sysproc.c",
  112. "//sys/src/9/port/sysseg.c",
  113. "//sys/src/9/port/syszio.c",
  114. "//sys/src/9/port/taslock.c",
  115. "//sys/src/9/port/tod.c",
  116. "//sys/src/9/port/watermarks.c",
  117. ]
  118. IP_SRCS = [
  119. "//sys/src/9/ip/arp.c",
  120. "//sys/src/9/ip/chandial.c",
  121. "//sys/src/9/ip/devip.c",
  122. "//sys/src/9/ip/ethermedium.c",
  123. "//sys/src/9/ip/gre.c",
  124. "//sys/src/9/ip/icmp6.c",
  125. "//sys/src/9/ip/icmp.c",
  126. "//sys/src/9/ip/inferno.c",
  127. "//sys/src/9/ip/ipaux.c",
  128. "//sys/src/9/ip/ip.c",
  129. "//sys/src/9/ip/ipifc.c",
  130. "//sys/src/9/ip/ipmux.c",
  131. "//sys/src/9/ip/iproute.c",
  132. "//sys/src/9/ip/ipv6.c",
  133. "//sys/src/9/ip/loopbackmedium.c",
  134. "//sys/src/9/ip/netdevmedium.c",
  135. "//sys/src/9/ip/netlog.c",
  136. "//sys/src/9/ip/nullmedium.c",
  137. "//sys/src/9/ip/pktmedium.c",
  138. "//sys/src/9/ip/ptclbsum.c",
  139. "//sys/src/9/ip/rudp.c",
  140. "//sys/src/9/ip/tcp.c",
  141. "//sys/src/9/ip/udp.c",
  142. ]
  143. AMD64_SRCS = [
  144. "amd64cpu.c",
  145. "cga.c",
  146. "devacpi.c",
  147. "devusb.c",
  148. "devvga.c",
  149. "ether8139.c",
  150. "ether82563.c",
  151. "mouse.c",
  152. "screen.c",
  153. "usbehcipc.c",
  154. "usbohci.c",
  155. "usbuhci.c",
  156. "vga.c",
  157. "vgax.c",
  158. ]
  159. # don't want to start with a number
  160. I386_SRCS = [
  161. "//sys/src/9/386/devrtc.c",
  162. "//sys/src/9/386/ether8169.c",
  163. "//sys/src/9/386/ether82557.c",
  164. "//sys/src/9/386/etherigbe.c",
  165. "//sys/src/9/386/etherm10g.c",
  166. "//sys/src/9/386/i8042.c",
  167. "//sys/src/9/386/pci.c",
  168. "//sys/src/9/386/sdiahci.c",
  169. "//sys/src/9/386/uarti8250.c",
  170. "//sys/src/9/386/uartpci.c",
  171. "//sys/src/9/386/vgavesa.c",
  172. ]
  173. AMD64SRCS = AMD64_SRCS + CORE_SRCS + I386_SRCS + IP_SRCS + PORT_SRCS
  174. strip(
  175. name="boot",
  176. deps=[
  177. "//sys/src/9/boot:bootamd64cpu",
  178. ],
  179. )
  180. mk_sys(
  181. name="error",
  182. mode="error.h",
  183. arch="amd64",
  184. sysconf="//sys/src/sysconf.json",
  185. )
  186. mk_sys(
  187. name="sys",
  188. mode="sys.h",
  189. arch="amd64",
  190. sysconf="//sys/src/sysconf.json",
  191. )
  192. mk_sys(
  193. name="systab",
  194. mode="systab.c",
  195. arch="amd64",
  196. sysconf="//sys/src/sysconf.json",
  197. )
  198. mk_sys(
  199. name="errstr",
  200. mode="errstr.h",
  201. sysconf="//sys/src/sysconf.json",
  202. )
  203. HRVYDEPS =[
  204. ":amd64cpu",
  205. ":error",
  206. ":errstr",
  207. ":systab",
  208. ":sys",
  209. ":inith",
  210. ]
  211. cc_binary(
  212. name="harvey",
  213. copts=[
  214. # "-c", this is always on
  215. "-std=c11",
  216. "-mcmodel=kernel",
  217. "-O0",
  218. "-static",
  219. "-mno-red-zone",
  220. "-ffreestanding",
  221. "-fno-builtin",
  222. "-DKERNDATE=1433623937",
  223. "-g",
  224. "-Wall",
  225. "-W",
  226. "-Wno-unused-function",
  227. "-Wno-sign-compare",
  228. "-Wno-missing-field-initializers",
  229. "-Wno-unused-parameter",
  230. "-Wno-missing-braces",
  231. "-Wno-parentheses",
  232. "-Wno-unknown-pragmas",
  233. "-D__HARVEY__",
  234. "-U_LINUX",
  235. "-U__linux__",
  236. "-fasm",
  237. ],
  238. srcs=AMD64SRCS,
  239. includes=[
  240. "//sys/include",
  241. "//amd64/include",
  242. "//sys/src/9/amd64",
  243. "//sys/src/9/port",
  244. ],
  245. deps= HRVYDEPS + KLIBS,
  246. alwayslink=true, #this is not necessary as klibs are hardcoded to be alwayslinked
  247. ld="kernel.ld",
  248. linkopts=[
  249. "-z",
  250. "max-page-size=0x1000",
  251. "-nostdlib",
  252. "-g",
  253. "-T",
  254. ]
  255. )
  256. KERNEL_DEPS = [
  257. "//sys/src/cmd:bind",
  258. ":boot",
  259. "//sys/src/cmd:cat",
  260. "//sys/src/cmd:date",
  261. "//sys/src/cmd:echo",
  262. "//sys/src/cmd/auth/factotum:factotum",
  263. "//sys/src/cmd/disk/prep:fdisk",
  264. "//sys/src/cmd/fossil:fossil",
  265. "//sys/src/cmd/ip/ipconfig:ipconfig",
  266. "//sys/src/cmd:ls",
  267. "//sys/src/cmd:mount",
  268. # nvram FILE ADDED
  269. "//sys/src/cmd/disk/prep:prep",
  270. "//sys/src/cmd/rc:rc",
  271. "//sys/src/cmd:ps",
  272. "//sys/src/cmd:ed",
  273. # rcmain FILE ADDED
  274. "//sys/src/cmd/aux/console:screenconsole",
  275. "//sys/src/cmd/aux/realemu:realemu",
  276. "//sys/src/cmd/aux/vga:vga",
  277. "//sys/src/cmd:srv",
  278. # startdisk FILE ADDED
  279. "//sys/src/cmd/usb/usbd:usbd",
  280. "//sys/src/cmd/venti/srv:venti",
  281. "//sys/src/cmd:ratrace",
  282. ]
  283. config(
  284. name="amd64cpu",
  285. deps=KERNEL_DEPS,
  286. code=[
  287. "int cpuserver = 1;",
  288. "uint32_t kerndate = 1;",
  289. ],
  290. ramfiles=[
  291. "//util/nvram",
  292. "//rc/lib/rcmain",
  293. "//sys/src/9/amd64/startdisk",
  294. ],
  295. dev=[
  296. "acpi",
  297. "arch",
  298. "cap",
  299. "cons",
  300. "coreboot",
  301. "draw",
  302. "dup",
  303. "env",
  304. "fdmux",
  305. "ether",
  306. "ip",
  307. "kbin",
  308. "kprof",
  309. "mnt",
  310. "mntn",
  311. "mouse",
  312. "pci",
  313. "pipe",
  314. "proc",
  315. "regress",
  316. "root",
  317. "rtc",
  318. "sd",
  319. "segment",
  320. "srv",
  321. "ssl",
  322. "tls",
  323. "uart",
  324. "ws",
  325. "usb",
  326. "vga",
  327. ],
  328. ip=[
  329. "tcp",
  330. "udp",
  331. "ipifc",
  332. "icmp",
  333. "icmp6",
  334. "gre",
  335. ],
  336. link=[
  337. "ether8169",
  338. "ether82557",
  339. "ether82563",
  340. "etherigbe",
  341. "ether8139",
  342. "ethermedium",
  343. "loopbackmedium",
  344. "netdevmedium",
  345. "usbuhci",
  346. "usbohci",
  347. "usbehci",
  348. ],
  349. sd=[
  350. "sdiahci",
  351. ],
  352. uart=[
  353. "i8250",
  354. "pci",
  355. ],
  356. vga=[
  357. "vgavesa",
  358. ],
  359. )
  360. elf_to_c(
  361. name="inith",
  362. deps=[
  363. ":init",
  364. ],
  365. elf="bin/init",
  366. )
  367. cc_binary(
  368. name="init",
  369. copts=[
  370. "-c",
  371. "-g",
  372. "-Wall",
  373. "-Wno-missing-braces",
  374. "-Wno-parentheses",
  375. "-Wno-unknown-pragmas",
  376. "-O0",
  377. "-static",
  378. "-mno-red-zone",
  379. "-ffreestanding",
  380. "-fno-builtin",
  381. "-mcmodel=small",
  382. ],
  383. deps=[
  384. "//sys/src/libc:libc",
  385. ],
  386. includes=[
  387. "//sys/include",
  388. "//amd64/include",
  389. ],
  390. linkopts=[
  391. "-e_main",
  392. "-static",
  393. "-Ttext=0x200020",
  394. ],
  395. srcs=[
  396. "init9.c",
  397. "//sys/src/9/port/initcode.c",
  398. ]
  399. )