1
0
Fork 0
easejs/Makefile.am

157 lines
4.4 KiB
Makefile
Raw Normal View History

## ease.js Makefile.am
#
# Copyright (C) 2013 Mike Gerwitz
#
# This file is part of GNU ease.js.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
##
# see README
SUBDIRS = doc
EXTRA_DIST = AUTHORS NEWS ChangeLog README.md README.hacking \
build lib test index.js package.json \
tools/combine tools/mkexterns tools/rmtrail \
tools/signchk tools/browser-test.html tools/combine-order.js \
tools/combine-test.tpl tools/combine.tpl tools/externs-global.js \
tools/externs.js tools/license-min.tpl tools/license.tpl \
tools/linechk-ignores
path_build = $(top_builddir)/build
path_tools = $(top_builddir)/tools
path_lib = $(top_builddir)/lib
path_test = $(top_builddir)/test
path_doc = $(top_builddir)/doc
path_combine_output = $(path_build)/ease.js
path_combine_output_full = $(path_build)/ease-full.js
path_browser_test = $(path_tools)/browser-test.html
src_js = @SRC_JS@
path_externs_internal = $(path_build)/externs-internal.js
combine = $(path_tools)/combine
compiler = @CCJAR@
MKDIR_P = @MKDIR_P@
.PHONY: mkbuild combine min doc check test test-suite perf FORCE
default: combine
mkbuild: $(path_build)
# create build dir
$(path_build):
$(MKDIR_P) "$(path_build)"
combine: $(path_combine_output) $(path_build)/browser-test.html
# combine all modules into easily redistributable ease.js file (intended for
# browser)
$(path_combine_output): $(src_js) | mkbuild
$(combine) > "$(path_combine_output)"
$(path_combine_output_full): $(src_js) $(src_tests) | mkbuild
INC_TEST=1 "$(combine)" > "${path_combine_output_full}"
$(path_build)/browser-test.html: $(path_browser_test) | $(path_combine_output_full)
cp -f "$(path_browser_test)" $@
$(path_build)/browser-test-min.html: $(path_browser_test) | $(path_combine_output_full)
cat "$(path_browser_test)" | sed 's/ease-full\.js/ease-full\.min\.js/' > $@
# minification process uses Google Closure compiler
min: $(path_build)/ease.min.js $(path_build)/ease-full.min.js \
$(path_build)/browser-test-min.html | combine
build/%.min.js: build/%.js $(path_tools)/externs-global.js $(path_externs_internal)
if HAS_JAVA
if HAS_CCJAR
cat $(path_tools)/license-min.tpl > $@
$(JAVA) -jar $(compiler) \
--externs $(path_tools)/externs-global.js \
--externs $(path_build)/externs-internal.js \
--js $< >> $@ || rm $@
else
@echo "cannot create $@:"
@echo " please download closure-compiler.jar and re-run ./configure"
@exit 1
endif
else
@echo "Please install a Java virtual machine (e.g. openjdk)"
@exit 1
endif
# externs for compilation process
$(path_externs_internal): | mkbuild
$(path_tools)/mkexterns > $@
doc:
$(MAKE) -C "$(path_doc)"
html-single:
$(MAKE) -C "$(path_doc)" html-single
test: check
check: @SRC_TESTS@ test-suite
# performance tests
perf: @PERF_TESTS@
perf-%.js: FORCE
if HAS_NODE
@$(NODE) $@
else
@echo "Node.js must be installed in order to run performance tests"
@exit 1
endif
# test cases (old format)
test/%.js: FORCE
NODE_PATH="$(path_test):$(NODE_PATH)" $(NODE) --stack_trace_limit=20 "$@"
test/test-%: FORCE
./"$@"
# test suite (new format)
test-suite:
if HAS_NODE
@echo "ease.js Test Suite"
@echo
@NODE_PATH="$(path_test):$(NODE_PATH)" $(NODE) --stack_trace_limit=20 \
$(path_test)/runner.js @TEST_CASES@
else
@echo "Node.js must be installed in order to run the test suite"
@exit 1
endif
# generate the familiar files that automake normally checks for
dist-hook: AUTHORS NEWS ChangeLog
cp $? $(distdir)
AUTHORS: FORCE
$(path_tools)/gitlog-to-authors > AUTHORS
NEWS: FORCE
$(path_tools)/gitlog-to-news $(path_tools)/news-ignore > NEWS
ChangeLog: FORCE
$(path_tools)/gitlog-to-changelog \
--strip-cherry-pick \
--format=%s \
-- \
--no-merges \
> ChangeLog
clean-local:
-rm -rf "$(path_build)"
-rm -f AUTHORS NEWS ChangeLog
distclean-local:
-rm -f package.json
maintainer-clean-local:
-rm -f "$(compiler)"