aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/makefile.cargo
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/makefile.cargo')
-rw-r--r--components/script/makefile.cargo45
1 files changed, 45 insertions, 0 deletions
diff --git a/components/script/makefile.cargo b/components/script/makefile.cargo
new file mode 100644
index 00000000000..652bcab9000
--- /dev/null
+++ b/components/script/makefile.cargo
@@ -0,0 +1,45 @@
+# Recursive wildcard function
+# http://blog.jgc.org/2011/07/gnu-make-recursive-wildcard-function.html
+rwildcard=$(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) \
+ $(filter $(subst *,%,$2),$d))
+
+PYTHON = $(shell which python2.7 2>/dev/null || echo python)
+BINDINGS_SRC = $(shell pwd)/dom/bindings/codegen
+WEBIDLS_SRC = $(shell pwd)/dom/webidls
+WEBIDLS = $(call rwildcard,$(WEBIDLS_SRC),*.webidl)
+BINDINGS = $(patsubst %.webidl,%Binding.rs,$(WEBIDLS))
+AUTOGEN_SRC = $(foreach var,$(BINDINGS),$(subst $(WEBIDLS_SRC),$(BINDINGS_SRC)/Bindings,$(var)))
+
+CACHE_DIR = $(BINDINGS_SRC)/_cache
+
+bindinggen_dependencies := $(addprefix $(BINDINGS_SRC)/,BindingGen.py Bindings.conf Configuration.py CodegenRust.py parser/WebIDL.py ParserResults.pkl Bindings/.done)
+
+globalgen_dependencies := $(addprefix $(BINDINGS_SRC)/,GlobalGen.py Bindings.conf Configuration.py CodegenRust.py parser/WebIDL.py) $(CACHE_DIR)/.done $(BINDINGS_SRC)/Bindings/.done
+
+.PHONY: all
+all: $(AUTOGEN_SRC)
+
+$(BINDINGS_SRC)/Bindings/.done:
+ mkdir -p $(BINDINGS_SRC)/Bindings
+ touch $@
+
+$(CACHE_DIR)/.done:
+ mkdir -p $(CACHE_DIR)
+ touch $@
+
+$(BINDINGS_SRC)/ParserResults.pkl: $(globalgen_dependencies) $(WEBIDLS)
+ $(PYTHON) $(BINDINGS_SRC)/pythonpath.py \
+ -I$(BINDINGS_SRC)/parser -I$(BINDINGS_SRC)/ply \
+ -D$(BINDINGS_SRC) \
+ $(BINDINGS_SRC)/GlobalGen.py $(BINDINGS_SRC)/Bindings.conf . \
+ --cachedir=$(CACHE_DIR) \
+ $(WEBIDLS)
+
+$(AUTOGEN_SRC): $(BINDINGS_SRC)/Bindings/%Binding.rs: $(bindinggen_dependencies) \
+ $(addprefix $(WEBIDLS_SRC)/,%.webidl)
+ $(PYTHON) $(BINDINGS_SRC)/pythonpath.py \
+ -I$(BINDINGS_SRC)/parser -I$(BINDINGS_SRC)/ply \
+ -D$(BINDINGS_SRC) \
+ $(BINDINGS_SRC)/BindingGen.py \
+ $(BINDINGS_SRC)/Bindings.conf Bindings/$*Binding $(addprefix $(WEBIDLS_SRC)/,$*.webidl)
+ touch $@