BUILD 8.3 KB

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