123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- #
- # This Makefile takes .st files in the amber/st directory and produces compiled
- # javascript files from them, for both debug and deployment.
- #
- # Where we find the current runnable code and where we put our js files on install
- JS := ../js/
- # The compiler script
- AMBERC := ../bin/amberc
- # Generic flags to AMBERC
- FLAGS := -d
- # All corresponding js filenames for every st file available
- # In other words, if we have Kernel.st and Compiler.st, then OBJECTS will be "Kernel.js Compiler.js"
- OBJECTS := $(patsubst %.st,%.js,$(wildcard *.st))
- # Default make target since it is the first target in this Makefile
- all: $(OBJECTS)
- # Step by step
- #
- # First we copy the core javascript files from current working files
- # into this directory. These files are hand written or generated using
- # other tools (parser.js). $@ is the target name.
- boot.js init.js parser.js:
- cp ../js/$@ .
- # Then we compile Kernel-*.st files depending on having boot.js, init.js and parser.js
- # $< means the first dependency - in other words Kernel-*.st
- Kernel-Objects.js: Kernel-Objects.st boot.js init.js parser.js
- $(AMBERC) $(FLAGS) $<
- Kernel-Classes.js: Kernel-Classes.st boot.js init.js parser.js
- $(AMBERC) $(FLAGS) $<
- Kernel-Methods.js: Kernel-Methods.st boot.js init.js parser.js
- $(AMBERC) $(FLAGS) $<
- Kernel-Collections.js: Kernel-Collections.st boot.js init.js parser.js
- $(AMBERC) $(FLAGS) $<
- Kernel-Exceptions.js: Kernel-Exceptions.st boot.js init.js parser.js
- $(AMBERC) $(FLAGS) $<
- Kernel-Transcript.js: Kernel-Transcript.st boot.js init.js parser.js
- $(AMBERC) $(FLAGS) $<
- Kernel-Announcements.js: Kernel-Announcements.st boot.js init.js parser.js
- $(AMBERC) $(FLAGS) $<
- # ...and Compiler, but using the new Kernel from above.
- # We only need to depend on Kernel js files since it in turn depends on boot.js etc
- Compiler.js: Compiler.st Kernel-Objects.js Kernel-Classes.js Kernel-Methods.js Kernel-Collections.js \
- Kernel-Exceptions.js Kernel-Transcript.js
- $(AMBERC) $(FLAGS) $<
- # ...now that we have a new Kernel and Compiler we use them
- # to compile the rest of st files presuming that they only depend on Kernel, like
- # for example Canvas.js and Benchfib.js.
- %.js: %.st Compiler.js
- $(AMBERC) $(FLAGS) $<
- # But for some libraries there are more dependencies to care for. Then
- # we need to use -l so that the compiler first loads that library
- # before compiling the .st file. Otherwise bindings will fail.
- #
- # NOTE: With the new dependency model in class Package etc this will change!
- #
- Canvas.js: Canvas.st
- $(AMBERC) $(FLAGS) $<
- # IDE uses JQuery
- IDE.js: IDE.st Canvas.js
- $(AMBERC) $(FLAGS) -l Canvas $<
- TrySmalltalk.js: TrySmalltalk.st IDE.js
- $(AMBERC) $(FLAGS) -l Canvas,IDE $<
- # Some Examples use SUnit and also IDE
- Examples.js: Examples.st SUnit.js IDE.js
- $(AMBERC) $(FLAGS) -l SUnit,Canvas,IDE $<
- # Tests typically also use SUnit
- Kernel-Tests.js: Kernel-Tests.st SUnit.js
- $(AMBERC) $(FLAGS) -l SUnit $<
- # Documentation
- Documentation.js: Documentation.st Canvas.js
- $(AMBERC) $(FLAGS) -l Canvas $<;
- # Installing is simply copying all js files to js directory.
- install: all
- cp *.js $(JS)
- # And cleaning is trivial also
- clean:
- rm -f *.js
- # These three are phony
- .PHONY: all install clean
|