BUILD 9.9 KB

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