BUILD 9.4 KB

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