2
0
فهرست منبع

First shot at Makefile for making all js files from st files using jtalkc compiler script.

Göran Krampe 13 سال پیش
والد
کامیت
7f413caa20
1فایلهای تغییر یافته به همراه94 افزوده شده و 0 حذف شده
  1. 94 0
      st/Makefile

+ 94 - 0
st/Makefile

@@ -0,0 +1,94 @@
+# Where we find the current runnable code and where we put our js files when we are done
+JS	:= ../js/
+
+# The compiler script
+JTALKC	:= ../bin/jtalkc
+
+# Generic flags to JTALKC
+FLAGS   := -g
+
+# The js files that are hand written and we use "as is"
+CORE    := boot.js init.js
+
+# All corresponding js filenames for every st file available
+# In other words, if we have Kernel.st and Parser.st, then OBJECTS will be "Kernel.js Parser.js"
+OBJECTS := $(patsubst %.st,%.js,$(wildcard *.st))
+
+# Default make targets
+all: jtalk.deploy.js jtalk.js
+
+# Step by step
+#
+# First we copy the core javascript files from current working files
+# into this directory. These files are hand written.
+boot.js:
+	cp ../js/boot.js ../js/init.js .
+
+
+# Then we compile Kernel.st using boot.js, Kernel.js, init.js
+# $< means the first dependency - in other words Kernel.st
+Kernel.js: Kernel.st $(CORE)
+	$(JTALKC) $(FLAGS) $<
+
+# ...then Parser, but using the new Kernel from step above.
+# We only need to depend on Kernel.js since it in turn depends on CORE.
+Parser.js: Parser.st Kernel.js
+	$(JTALKC) $(FLAGS) $<
+
+# ...and Compiler, but using the new Parser and Kernel from above.
+# We only need to depend on Parser.js since it in turn depends on Kernel.js, CORE etc
+Compiler.js: Compiler.st Parser.js
+	$(JTALKC) $(FLAGS) $<
+
+# ...now that we have a new Kernel/Parser/Compiler we use them
+# to compile the rest of st files that only depend on Compiler, like
+# for example Canvas.js and Benchfib.js
+%.js: %.st Compiler.js 
+	$(JTALKC) $(FLAGS) $<
+
+# But there are some dependencies to care for:
+# JQuery uses Canvas
+JQuery.js: JQuery.st Canvas.js
+	$(JTALKC) $(FLAGS) -l Canvas.js $<
+
+# IDE uses JQuery
+IDE.js: IDE.st JQuery.js
+	$(JTALKC) $(FLAGS) -l Canvas.js,JQuery.js $<
+
+# The SUnit TestRunner uses UI stuff from IDE.
+SUnit.js: SUnit.st IDE.js
+	$(JTALKC) $(FLAGS) -l Canvas.js,JQuery.js,IDE.js $<
+
+# Some Examples use SUnit
+Examples.js: Examples.st SUnit.js
+	$(JTALKC) $(FLAGS) -l Canvas.js,JQuery.js,IDE.js,SUnit.js $<
+
+# Complete Jtalk, here we give -J (will include all  libs for Jtalk IDE),
+# push it all through Closure (-O) and add init.js at end (-I).
+jtalk.js: $(OBJECTS)
+	$(JTALKC) -J -O -I jtalk
+
+
+# Only Jtalk Kernel and compiled without -g. Thus we need to clean first to remake
+# all dependencies with new FLAGS.
+# Then we give -K (will include up to Compiler), push it all through Closure (-O)
+# and add init.js at end (-I).
+jtalk.deploy.js: FLAGS =
+jtalk.deploy.js: cleanobjects $(OBJECTS)
+	$(JTALKC) -K -O -I jtalk.deploy.js
+
+
+# Installing is simply copying all js files to js directory.
+install: all
+	cp *.js $(JS)
+
+# And cleaning
+clean: cleanobjects cleanjtalk
+
+.PHONY: cleanobjects
+cleanobjects:
+	rm -f $(OBJECTS)
+
+.PHONY: cleanjtalk
+cleanjtalk:
+	rm -f jtalk.js jtalk.deploy.js