Makefile 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. CLOSURE=closure-compiler/compiler.jar
  2. BROWSER=chromium
  3. all: build/v86_all.js
  4. browser: build/v86_all.js
  5. # Used for nodejs builds and in order to profile code.
  6. # `debug` gives identifiers a readable name, make sure it doesn't have any side effects.
  7. CLOSURE_READABLE=--formatting PRETTY_PRINT --debug
  8. CLOSURE_SOURCE_MAP=\
  9. --source_map_format V3\
  10. --create_source_map '%outname%.map'
  11. #--jscomp_error reportUnknownTypes\
  12. CLOSURE_FLAGS=\
  13. --compilation_level ADVANCED_OPTIMIZATIONS\
  14. --externs src/externs.js\
  15. --warning_level VERBOSE\
  16. --jscomp_off uselessCode\
  17. --jscomp_error accessControls\
  18. --jscomp_error ambiguousFunctionDecl\
  19. --jscomp_error checkEventfulObjectDisposal\
  20. --jscomp_error checkRegExp\
  21. --jscomp_error checkTypes\
  22. --jscomp_error checkVars\
  23. --jscomp_error conformanceViolations\
  24. --jscomp_error const\
  25. --jscomp_error constantProperty\
  26. --jscomp_error deprecated\
  27. --jscomp_error deprecatedAnnotations\
  28. --jscomp_error duplicateMessage\
  29. --jscomp_error es3\
  30. --jscomp_error es5Strict\
  31. --jscomp_error externsValidation\
  32. --jscomp_error fileoverviewTags\
  33. --jscomp_error globalThis\
  34. --jscomp_error inferredConstCheck\
  35. --jscomp_error internetExplorerChecks\
  36. --jscomp_error invalidCasts\
  37. --jscomp_error misplacedTypeAnnotation\
  38. --jscomp_error missingGetCssName\
  39. --jscomp_error missingProperties\
  40. --jscomp_error missingReturn\
  41. --jscomp_error msgDescriptions\
  42. --jscomp_error newCheckTypes\
  43. --jscomp_error nonStandardJsDocs\
  44. --jscomp_error suspiciousCode\
  45. --jscomp_error strictModuleDepCheck\
  46. --jscomp_error typeInvalidation\
  47. --jscomp_error undefinedNames\
  48. --jscomp_error undefinedVars\
  49. --jscomp_error unknownDefines\
  50. --jscomp_error unnecessaryCasts\
  51. --jscomp_error visibility\
  52. --use_types_for_optimization\
  53. --summary_detail_level 3\
  54. --language_in ECMASCRIPT5_STRICT
  55. #--new_type_inf\
  56. TRANSPILE_ES6_FLAGS=\
  57. --language_in ECMASCRIPT6_STRICT\
  58. --language_out ECMASCRIPT5_STRICT\
  59. CORE_FILES=src/const.js src/io.js src/main.js src/lib.js src/fpu.js src/ide.js src/pci.js src/floppy.js src/memory.js\
  60. src/dma.js src/pit.js src/vga.js src/ps2.js src/pic.js src/rtc.js src/uart.js src/hpet.js src/acpi.js src/apic.js\
  61. src/state.js src/ne2k.js src/virtio.js src/bus.js src/log.js\
  62. src/cpu.js src/translate.js src/modrm.js src/string.js src/arith.js src/misc_instr.js src/instructions.js src/debug.js
  63. LIB_FILES=lib/9p.js lib/filesystem.js lib/jor1k.js lib/marshall.js lib/utf8.js
  64. BROWSER_FILES=src/browser/screen.js\
  65. src/browser/keyboard.js src/browser/mouse.js src/browser/serial.js\
  66. src/browser/network.js src/browser/lib.js src/browser/starter.js src/browser/worker_bus.js
  67. build/v86_all.js: $(CLOSURE) src/*.js src/browser/*.js lib/*.js
  68. mkdir -p build
  69. -ls -lh build/v86_all.js
  70. java -jar $(CLOSURE) \
  71. --js_output_file build/v86_all.js\
  72. --define=DEBUG=false\
  73. $(CLOSURE_SOURCE_MAP)\
  74. $(CLOSURE_FLAGS)\
  75. $(TRANSPILE_ES6_FLAGS)\
  76. --js $(CORE_FILES)\
  77. --js $(LIB_FILES)\
  78. --js $(BROWSER_FILES)\
  79. --js src/browser/main.js
  80. echo '//# sourceMappingURL=v86_all.js.map' >> build/v86_all.js
  81. ls -lh build/v86_all.js
  82. build/libv86.js: $(CLOSURE) src/*.js lib/*.js src/browser/*.js
  83. mkdir -p build
  84. -ls -lh build/libv86.js
  85. java -jar $(CLOSURE) \
  86. --js_output_file build/libv86.js\
  87. --define=DEBUG=false\
  88. $(CLOSURE_FLAGS)\
  89. $(TRANSPILE_ES6_FLAGS)\
  90. --output_wrapper ';(function(){%output%})();'\
  91. --js $(CORE_FILES)\
  92. --js $(BROWSER_FILES)\
  93. --js $(LIB_FILES)
  94. ls -lh build/libv86.js
  95. clean:
  96. rm build/libv86.js
  97. rm build/v86_all.js
  98. run:
  99. python2 -m SimpleHTTPServer 2> /dev/null
  100. #sleep 1
  101. #$(BROWSER) http://localhost:8000/index.html &
  102. update_version:
  103. set -e ;\
  104. COMMIT=`git log --format="%h" -n 1` ;\
  105. DATE=`git log --date="format:%b %e, %Y %H:%m" --format="%cd" -n 1` ;\
  106. SEARCH='<code>Version: <a href="https://github.com/copy/v86/commits/[a-f0-9]\+">[a-f0-9]\+</a> ([^(]\+)</a></code>' ;\
  107. REPLACE='<code>Version: <a href="https://github.com/copy/v86/commits/'$$COMMIT'">'$$COMMIT'</a> ('$$DATE')</a></code>' ;\
  108. sed -i "s@$$SEARCH@$$REPLACE@g" index.html ;\
  109. grep $$COMMIT index.html
  110. $(CLOSURE):
  111. wget -P closure-compiler http://dl.google.com/closure-compiler/compiler-latest.zip
  112. unzip -d closure-compiler closure-compiler/compiler-latest.zip compiler.jar
  113. test: build/libv86.js
  114. ./tests/full/run.js