summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile36
-rw-r--r--erlang.mk129
-rw-r--r--priv/bullet.js13
-rw-r--r--rebar.config10
4 files changed, 143 insertions, 45 deletions
diff --git a/Makefile b/Makefile
index 7fa3502..0e5d78e 100644
--- a/Makefile
+++ b/Makefile
@@ -1,36 +1,12 @@
# See LICENSE for licensing information.
-DIALYZER = dialyzer
-REBAR = rebar
+PROJECT = bullet
-all: app
+# Dependencies.
-app: deps
- @$(REBAR) compile
+DEPS = cowboy
+dep_cowboy = https://github.com/extend/cowboy.git 0.8.4
-deps:
- @$(REBAR) get-deps
+# Standard targets.
-clean:
- @$(REBAR) clean
- rm -f test/*.beam
- rm -f erl_crash.dump
-
-tests: clean app eunit ct
-
-eunit:
- @$(REBAR) eunit skip_deps=true
-
-ct:
- @$(REBAR) ct skip_deps=true
-
-build-plt:
- @$(DIALYZER) --build_plt --output_plt .bullet_dialyzer.plt \
- --apps kernel stdlib deps/cowboy
-
-dialyze:
- @$(DIALYZER) --src src --plt .bullet_dialyzer.plt -Werror_handling \
- -Wrace_conditions -Wunmatched_returns # -Wunderspecs
-
-docs:
- @$(REBAR) doc skip_deps=true
+include erlang.mk
diff --git a/erlang.mk b/erlang.mk
new file mode 100644
index 0000000..0ac0f3f
--- /dev/null
+++ b/erlang.mk
@@ -0,0 +1,129 @@
+# Copyright (c) 2013, Loïc Hoguin <[email protected]>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+# Verbosity and tweaks.
+
+V ?= 0
+
+appsrc_verbose_0 = @echo " APP " $(PROJECT).app.src;
+appsrc_verbose = $(appsrc_verbose_$(V))
+
+erlc_verbose_0 = @echo " ERLC " $(?F);
+erlc_verbose = $(erlc_verbose_$(V))
+
+gen_verbose_0 = @echo " GEN " $@;
+gen_verbose = $(gen_verbose_$(V))
+
+.PHONY: all clean-all app clean deps clean-deps docs clean-docs \
+ build-tests tests build-plt dialyze
+
+# Deps directory.
+
+DEPS_DIR ?= $(CURDIR)/deps
+export DEPS_DIR
+
+ALL_DEPS_DIRS = $(addprefix $(DEPS_DIR)/,$(DEPS))
+
+# Application.
+
+ERLC_OPTS ?= -Werror +debug_info +warn_export_all +warn_export_vars \
+ +warn_shadow_vars +warn_obsolete_guard # +bin_opt_info +warn_missing_spec
+COMPILE_FIRST ?=
+COMPILE_FIRST_PATHS = $(addprefix src/,$(addsuffix .erl,$(COMPILE_FIRST)))
+
+all: deps app
+
+clean-all: clean clean-deps clean-docs
+ $(gen_verbose) rm -rf .$(PROJECT).plt $(DEPS_DIR) logs
+
+MODULES = $(shell ls src/*.erl | sed 's/src\///;s/\.erl/,/' | sed '$$s/.$$//')
+
+app: ebin/$(PROJECT).app
+ $(appsrc_verbose) cat src/$(PROJECT).app.src \
+ | sed 's/{modules, \[\]}/{modules, \[$(MODULES)\]}/' \
+ > ebin/$(PROJECT).app
+
+ebin/$(PROJECT).app: src/*.erl
+ @mkdir -p ebin/
+ $(erlc_verbose) ERL_LIBS=deps erlc -v $(ERLC_OPTS) -o ebin/ -pa ebin/ \
+ $(COMPILE_FIRST_PATHS) $?
+
+clean:
+ $(gen_verbose) rm -rf ebin/ test/*.beam erl_crash.dump
+
+# Dependencies.
+
+define get_dep =
+ @mkdir -p $(DEPS_DIR)
+ git clone -n -- $(word 1,$(dep_$(1))) $(DEPS_DIR)/$(1)
+ cd $(DEPS_DIR)/$(1) ; git checkout -q $(word 2,$(dep_$(1)))
+endef
+
+define dep_target =
+$(DEPS_DIR)/$(1):
+ $(call get_dep,$(1))
+endef
+
+$(foreach dep,$(DEPS),$(eval $(call dep_target,$(dep))))
+
+deps: $(ALL_DEPS_DIRS)
+ @for dep in $(ALL_DEPS_DIRS) ; do $(MAKE) -C $$dep; done
+
+clean-deps:
+ @for dep in $(ALL_DEPS_DIRS) ; do $(MAKE) -C $$dep clean; done
+
+# Documentation.
+
+docs: clean-docs
+ $(gen_verbose) erl -noshell \
+ -eval 'edoc:application($(PROJECT), ".", []), init:stop().'
+
+clean-docs:
+ $(gen_verbose) rm -f doc/*.css doc/*.html doc/*.png doc/edoc-info
+
+# Tests.
+
+build-tests:
+ $(gen_verbose) erlc -v $(ERLC_OPTS) -o test/ \
+ $(wildcard test/*.erl test/*/*.erl) -pa ebin/
+
+CT_RUN = ct_run \
+ -no_auto_compile \
+ -noshell \
+ -pa ebin $(DEPS_DIR)/*/ebin \
+ -dir test \
+ -logdir logs
+# -cover test/cover.spec
+
+CT_SUITES ?=
+CT_SUITES_FULL = $(addsuffix _SUITE,$(CT_SUITES))
+
+tests: ERLC_OPTS += -DTEST=1 +'{parse_transform, eunit_autoexport}'
+tests: clean clean-deps deps app build-tests
+ @mkdir -p logs/
+ @$(CT_RUN) -suite $(CT_SUITES_FULL)
+ $(gen_verbose) rm -f test/*.beam
+
+# Dialyzer.
+
+PLT_APPS ?=
+DIALYZER_OPTS ?= -Werror_handling -Wrace_conditions \
+ -Wunmatched_returns # -Wunderspecs
+
+build-plt: deps app
+ @dialyzer --build_plt --output_plt .$(PROJECT).plt \
+ --apps erts kernel stdlib $(PLT_APPS) $(ALL_DEPS_DIRS)
+
+dialyze:
+ @dialyzer --src src --plt .$(PROJECT).plt --no_native $(DIALYZER_OPTS)
diff --git a/priv/bullet.js b/priv/bullet.js
index 19d294d..50686f6 100644
--- a/priv/bullet.js
+++ b/priv/bullet.js
@@ -45,26 +45,26 @@
@see https://bugzilla.mozilla.org/show_bug.cgi?id=662554
*/
websocket: function(){
- var ret = false;
+ var transport = null;
if (options !== undefined && options.disableWebSocket) {
return false;
}
if (window.WebSocket){
- ret = window.WebSocket;
+ transport = window.WebSocket;
}
if (window.MozWebSocket
&& navigator.userAgent.indexOf("Firefox/6.0") == -1){
- ret = window.MozWebSocket;
+ transport = window.MozWebSocket;
}
- if (ret){
- return {'heart': true, 'transport': ret};
+ if (transport){
+ return {'heart': true, 'transport': transport};
}
- return false;
+ return null;
},
eventsource: function(){
@@ -262,6 +262,7 @@
return;
}
+ transport = null;
clearInterval(heartbeat);
if (readyState == CLOSING){
diff --git a/rebar.config b/rebar.config
index 4c98aa4..79e21c5 100644
--- a/rebar.config
+++ b/rebar.config
@@ -1,12 +1,4 @@
-{cover_enabled, true}.
{deps, [
{cowboy, ".*",
- {git, "git://github.com/extend/cowboy.git", {tag, "0.8.0"}}}
-]}.
-{eunit_opts, [verbose, {report, {eunit_surefire, [{dir, "."}]}}]}.
-{erl_opts, [
-%% bin_opt_info,
-%% warn_missing_spec,
- warnings_as_errors,
- warn_export_all
+ {git, "git://github.com/extend/cowboy.git", {tag, "0.8.4"}}}
]}.