|  | @@ -1,129 +0,0 @@
 | 
	
		
			
				|  |  | -#
 | 
	
		
			
				|  |  | -# 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:
 | 
	
		
			
				|  |  | -	cp ../js/$@ .
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -# generate the parser
 | 
	
		
			
				|  |  | -# $@ is the target
 | 
	
		
			
				|  |  | -# $< is the prerequisite
 | 
	
		
			
				|  |  | -parser.js: ../js/parser.pegjs
 | 
	
		
			
				|  |  | -	pegjs --track-line-and-column --cache -e smalltalk.parser $< $@
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -# 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.st: Importer-Exporter.st Compiler-Exceptions.st Compiler-Core.st \
 | 
	
		
			
				|  |  | -    Compiler-AST.st Compiler-Semantic.st Compiler-IR.st Compiler-Inlining.st \
 | 
	
		
			
				|  |  | -    Compiler-Interpreter.st
 | 
	
		
			
				|  |  | -	echo "Smalltalk current createPackage: 'Compiler' properties: #{}!" >$@
 | 
	
		
			
				|  |  | -	sed -e '/^Smalltalk current createPackage:.*!$$/ d' \
 | 
	
		
			
				|  |  | -      -e 's/package: '"'[^':]*'"'!/package:'"'Compiler'"'!/' \
 | 
	
		
			
				|  |  | -      -e 's/ methodsFor: '"'[^']*'"'!$$/ methodsFor: '"'"'*Compiler'"'"'!/' \
 | 
	
		
			
				|  |  | -      $^ >>$@
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Compiler.js: Compiler.st Kernel-Objects.js Kernel-Classes.js Kernel-Methods.js Kernel-Collections.js \
 | 
	
		
			
				|  |  | -	Kernel-Exceptions.js Kernel-Transcript.js
 | 
	
		
			
				|  |  | -	$(AMBERC) $(FLAGS) -l Importer-Exporter,Compiler-Exceptions,Compiler-Core,Compiler-AST,Compiler-Semantic,Compiler-IR,Compiler-Inlining $<
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -# ...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 Compiler.js
 | 
	
		
			
				|  |  | -	$(AMBERC) $(FLAGS) $<
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -# IDE uses JQuery
 | 
	
		
			
				|  |  | -IDE.js: IDE.st Canvas.js Compiler.js
 | 
	
		
			
				|  |  | -	$(AMBERC) $(FLAGS) -l Canvas $<
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -TrySmalltalk.js: TrySmalltalk.st IDE.js Compiler.js
 | 
	
		
			
				|  |  | -	$(AMBERC) $(FLAGS) -l Canvas,IDE $<
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -# Some Examples use SUnit and also IDE
 | 
	
		
			
				|  |  | -Examples.js: Examples.st SUnit.js IDE.js Compiler.js
 | 
	
		
			
				|  |  | -	$(AMBERC) $(FLAGS) -l SUnit,Canvas,IDE $<
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -# Tests typically also use SUnit
 | 
	
		
			
				|  |  | -Kernel-Tests.js: Kernel-Tests.st SUnit.js Compiler.js
 | 
	
		
			
				|  |  | -	$(AMBERC) $(FLAGS) -l SUnit $<
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Compiler-Tests.js: Compiler-Tests.st SUnit.js Compiler.js
 | 
	
		
			
				|  |  | -	$(AMBERC) $(FLAGS) -l SUnit $<
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -SUnit-Tests.js: SUnit-Tests.st SUnit.js Compiler.js
 | 
	
		
			
				|  |  | -	$(AMBERC) $(FLAGS) -l SUnit $<
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -# Documentation
 | 
	
		
			
				|  |  | -Documentation.js: Documentation.st Canvas.js Compiler.js
 | 
	
		
			
				|  |  | -	$(AMBERC) $(FLAGS) -l Canvas $<;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -#Helios
 | 
	
		
			
				|  |  | -Helios-Core.js: Helios-Core.st Canvas.js Compiler.js
 | 
	
		
			
				|  |  | -	$(AMBERC) $(FLAGS) -l Canvas $<;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Helios-Browser.js: Helios-Browser.st Helios-Core.js Compiler.js
 | 
	
		
			
				|  |  | -	$(AMBERC) $(FLAGS) -l Helios-Core $<;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -# 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
 |