Files
openlayers/Makefile
Tim Schaub e57f8b45a6 Merge pull request #78 from geops/api-docs-jsdoc
Taking over new template from jsdoc but keep modifications by OpenLayers as much as possible
2012-10-31 13:38:24 -07:00

146 lines
5.2 KiB
Makefile

BRANCH = $(shell git rev-parse --abbrev-ref HEAD)
JSDOC = jsdoc
PHANTOMJS = phantomjs
PLOVR_JAR = bin/plovr-eba786b34df9.jar
SPEC = $(shell find test/spec -name \*.js)
SRC = $(shell find externs src/ol -name \*.js)
EXPORTS = $(filter-out src/objectliterals.exports, $(shell find src -name \*.exports))
INTERNAL_SRC = \
build/src/internal/src/requireall.js \
build/src/internal/src/types.js
EXTERNAL_SRC = \
build/src/external/externs/types.js \
build/src/external/src/exports.js \
build/src/external/src/types.js
EXAMPLES_SRC = $(filter-out $(shell find examples -name \*.combined.js) examples/Jugl.js examples/example-list.js,$(shell find examples -name \*.js))
EXAMPLES = $(filter-out examples/example-list.html,$(shell find examples -maxdepth 1 -name \*.html))
comma := ,
empty :=
space := $(empty) $(empty)
.PHONY: all
all: build-all build examples
.PHONY: precommit
precommit: lint build-all test doc build build-examples
.PHONY: build
build: build/ol.css build/ol.js
build/ol.css: build/ol.js
touch $@
build/ol.js: $(PLOVR_JAR) $(SRC) $(EXTERNAL_SRC) base.json build/ol.json
java -jar $(PLOVR_JAR) build build/ol.json >$@ || ( rm -f $@ ; false )
@echo $@ "uncompressed:" $$(wc -c <$@) bytes
@echo $@ " compressed:" $$(gzip -9 -c <$@ | wc -c) bytes
.PHONY: build-all
build-all: build/ol-all.js
build/ol-all.js: $(PLOVR_JAR) $(SRC) $(INTERNAL_SRC) base.json build/ol-all.json
java -jar $(PLOVR_JAR) build build/ol-all.json >$@ || ( rm -f $@ ; false )
build/src/external/externs/types.js: bin/generate-exports src/objectliterals.exports
mkdir -p $(dir $@)
bin/generate-exports --externs src/objectliterals.exports >$@ || ( rm -f $@ ; false )
build/src/external/src/exports.js: bin/generate-exports src/objectliterals.exports $(EXPORTS)
mkdir -p $(dir $@)
bin/generate-exports --exports src/objectliterals.exports $(EXPORTS) >$@ || ( rm -f $@ ; false )
build/src/external/src/types.js: bin/generate-exports src/objectliterals.exports
mkdir -p $(dir $@)
bin/generate-exports --typedef src/objectliterals.exports >$@ || ( rm -f $@ ; false )
build/src/internal/src/requireall.js: bin/generate-requireall $(SRC)
mkdir -p $(dir $@)
bin/generate-requireall --require=goog.dom src/ol >$@ || ( rm -f $@ ; false )
build/src/internal/src/types.js: bin/generate-exports src/objectliterals.exports
mkdir -p $(dir $@)
bin/generate-exports --typedef src/objectliterals.exports >$@ || ( rm -f $@ ; false )
.PHONY: build-examples
build-examples: examples $(subst .html,.combined.js,$(EXAMPLES))
.PHONY: examples
examples: examples/example-list.js $(subst .html,.json,$(EXAMPLES))
examples/example-list.js: bin/exampleparser.py $(EXAMPLES)
bin/exampleparser.py examples examples
examples/%.json: Makefile base.json
echo "{\"id\": \"$(basename $(notdir $@))\", \"inherits\": \"../base.json\", \"inputs\": [\"$(subst .json,.js,$@)\", \"build/src/internal/src/types.js\"]}" > $@
examples/%.combined.js: $(PLOVR_JAR) $(SRC) $(INTERNAL_SRC) base.json examples/%.js
java -jar $(PLOVR_JAR) build $(subst .combined.js,.json,$@) >$@ || ( rm -f $@ ; false )
@echo $@ "uncompressed:" $$(wc -c <$@) bytes
@echo $@ " compressed:" $$(gzip -9 -c <$@ | wc -c) bytes
.PHONY: serve
serve: $(PLOVR_JAR) $(INTERNAL_SRC) examples
java -jar $(PLOVR_JAR) serve build/*.json examples/*.json
.PHONY: serve-precommit
serve-precommit: $(PLOVR_JAR) $(INTERNAL_SRC)
java -jar $(PLOVR_JAR) serve build/ol-all.json
.PHONY: lint
lint: build/lint-src-timestamp build/lint-spec-timestamp
build/lint-src-timestamp: $(SRC) $(INTERNAL_SRC) $(EXTERNAL_SRC) $(EXAMPLES_SRC)
gjslint --strict --limited_doc_files=$(subst $(space),$(comma),$(shell find externs build/src/external/externs -name \*.js)) $(SRC) $(INTERNAL_SRC) $(EXTERNAL_SRC) $(EXAMPLES_SRC) && touch $@
build/lint-spec-timestamp: $(SPEC)
gjslint $(SPEC) && touch $@
.PHONY: plovr
plovr: $(PLOVR_JAR)
$(PLOVR_JAR):
curl https://plovr.googlecode.com/files/$(notdir $@) >$@
.PHONY: gh-pages
gh-pages:
bin/git-update-ghpages openlayers/ol3 -i build/gh-pages/$(BRANCH) -p $(BRANCH)
.PHONY: doc
doc: build/jsdoc-$(BRANCH)-timestamp
build/jsdoc-$(BRANCH)-timestamp: $(SRC) $(shell find doc/template -type f)
mkdir -p build/gh-pages/$(BRANCH)/apidoc
$(JSDOC) -t doc/template -r src -d build/gh-pages/$(BRANCH)/apidoc doc/index.md
touch $@
.PHONY: hostexamples
hostexamples: build examples
mkdir -p build/gh-pages/$(BRANCH)/examples
mkdir -p build/gh-pages/$(BRANCH)/build
cp $(EXAMPLES) $(subst .html,.js,$(EXAMPLES)) examples/style.css build/gh-pages/$(BRANCH)/examples/
cp build/loader_hosted_examples.js build/gh-pages/$(BRANCH)/examples/loader.js
cp build/ol.js build/ol.css build/gh-pages/$(BRANCH)/build/
cp examples/example-list.html build/gh-pages/$(BRANCH)/examples/index.html
cp examples/example-list.js examples/example-list.xml examples/Jugl.js build/gh-pages/$(BRANCH)/examples/
.PHONY: test
test: $(INTERNAL_SRC)
$(PHANTOMJS) test/phantom-jasmine/run_jasmine_test.coffee test/ol.html
clean:
rm -f build/jsdoc-*-timestamp
rm -f build/lint-spec-timestamp
rm -f build/lint-src-timestamp
rm -f build/ol.css
rm -f build/ol.js
rm -f build/ol-all.js
rm -rf build/src
rm -f examples/*.json
rm -f examples/*.combined.js
rm -f examples/example-list.js
rm -f examples/example-list.xml
rm -rf build/apidoc
reallyclean: clean
rm -f $(PLOVR_JAR)