| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 | ## 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 installJS	:= ../js/# The compiler scriptAMBERC	:= ../bin/amberc# Generic flags to AMBERCFLAGS   := -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 Makefileall: $(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-*.stKernel-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 etcCompiler.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 JQueryIDE.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 IDEExamples.js: Examples.st SUnit.js IDE.js	$(AMBERC) $(FLAGS) -l SUnit,Canvas,IDE $<# Tests typically also use SUnitKernel-Tests.js: Kernel-Tests.st SUnit.js	$(AMBERC) $(FLAGS) -l SUnit $<Compiler-Tests.js: Compiler-Tests.st SUnit.js	$(AMBERC) $(FLAGS) -l SUnit $<# DocumentationDocumentation.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 alsoclean:	rm -f *.js# These three are phony.PHONY: all install clean
 |