Makefile 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #
  2. # This Makefile takes .st files in the jtalk/st directory and produces compiled
  3. # javascript files from them, for both debug and deployment.
  4. #
  5. # Where we find the current runnable code and where we put our js files on install
  6. JS := ../js/
  7. # The compiler script
  8. JTALKC := ../bin/jtalkc
  9. # Generic flags to JTALKC
  10. FLAGS := -d
  11. # All corresponding js filenames for every st file available
  12. # In other words, if we have Kernel.st and Compiler.st, then OBJECTS will be "Kernel.js Compiler.js"
  13. OBJECTS := $(patsubst %.st,%.js,$(wildcard *.st))
  14. # Default make target since it is the first target in this Makefile
  15. all: Examples.js
  16. # Step by step
  17. #
  18. # First we copy the core javascript files from current working files
  19. # into this directory. These files are hand written. $@ is the target name.
  20. boot.js init.js:
  21. cp ../js/$@ .
  22. # Then we compile Kernel.st depending on having using boot.js and init.js
  23. # $< means the first dependency - in other words Kernel.st
  24. Kernel.js: Kernel.st boot.js init.js
  25. $(JTALKC) $(FLAGS) $<
  26. # ...and Compiler, but using the new Kernel from above.
  27. # We only need to depend on Kernel.js since it in turn depends on Kernel.js, boot.js etc
  28. Compiler.js: Compiler.st Kernel.js
  29. $(JTALKC) $(FLAGS) $<
  30. # ...now that we have a new Kernel/Parser/Compiler we use them
  31. # to compile the rest of st files presuming that they only depend on Compiler, like
  32. # for example Canvas.js and Benchfib.js.
  33. %.js: %.st Compiler.js
  34. $(JTALKC) $(FLAGS) $<
  35. # But for some libraries there are dependencies to care for. Then
  36. # we need to use -l so that the compiler first loads that library
  37. # before compiling the .st file. Otherwise bindings will fail.
  38. #
  39. # JQuery uses Canvas
  40. JQuery.js: JQuery.st Canvas.js
  41. $(JTALKC) $(FLAGS) -l Canvas $<
  42. # IDE uses JQuery
  43. IDE.js: IDE.st JQuery.js
  44. $(JTALKC) $(FLAGS) -l Canvas,JQuery $<
  45. # The SUnit TestRunner uses UI stuff from IDE.
  46. SUnit.js: SUnit.st IDE.js
  47. $(JTALKC) $(FLAGS) -l Canvas,JQuery,IDE $<
  48. # Some Examples use SUnit
  49. Examples.js: Examples.st SUnit.js
  50. $(JTALKC) $(FLAGS) -l Canvas,JQuery,IDE,SUnit $<;
  51. # Installing is simply copying all js files to js directory.
  52. install: all
  53. cp *.js $(JS)
  54. # And cleaning is trivial also
  55. clean:
  56. rm -f *.js;
  57. # These three are phony
  58. .PHONY: all install clean