0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-14 12:20:24 +00:00
cowboy/Makefile
Loïc Hoguin d8be610d4c Stop using rebar in the Makefile
First and foremost: yes, you can still use Cowboy as a rebar dependency.
This commit only removes the use of rebar when *developing* Cowboy, not
when *using* Cowboy.

Over the past two years I went from very happy with rebar to unsatisfied
and most recently found it counter productive in many ways, from having
insane default configuration to various unefficient operations. The earlier
reversal from 'rebar ct' to 'ct_run' made my workflow much more natural,
as I always needed to look at 'logs/raw.log' to find out what was wrong,
anyway. Why not let 'ct_run' output it directly instead? Removing rebar
made my life easier.

If you wonder why I don't patch rebar, there's two reasons. First is that
the direction taken by rebar isn't compatible with my views, and this
would be a huge fight to steer it in another direction. I got other,
more important fights to make. Second is that I'd rather patch OTP so
that everyone benefits from it, not just users of rebar.

Anyway this isn't my personal blog so I will stop babbling here. There's
a few important things to note relative to this commit:

 *  You don't need rebar to work on Cowboy anymore
 *  The eunit tests are now ran through common_test

Ping me if it doesn't work out for you.
2013-01-05 17:25:04 +01:00

74 lines
1.6 KiB
Makefile

# See LICENSE for licensing information.
PROJECT = cowboy
RANCH_VSN = 0.6.0
ERLC_OPTS = -Werror +debug_info +warn_export_all # +bin_opt_info +warn_missing_spec
.PHONY: all clean-all app clean docs clean-docs tests autobahn build-plt dialyze
# Application.
all: app
clean-all: clean clean-docs
rm -f .$(PROJECT).plt
rm -rf deps logs
deps/ranch:
@mkdir -p deps/
git clone -n -- https://github.com/extend/ranch.git deps/ranch
cd deps/ranch ; git checkout -q $(RANCH_VSN)
MODULES = $(shell ls src/*.erl | sed 's/src\///;s/\.erl/,/' | sed '$$s/.$$//')
app: deps/ranch
@cd deps/ranch ; make
@mkdir -p ebin/
@cat src/cowboy.app.src \
| sed 's/{modules, \[\]}/{modules, \[$(MODULES)\]}/' \
> ebin/cowboy.app
erlc -v $(ERLC_OPTS) -o ebin/ -pa ebin/ src/cowboy_middleware.erl src/*.erl
clean:
-@cd deps/ranch && make clean
rm -rf ebin/
rm -f test/*.beam
rm -f erl_crash.dump
# Documentation.
docs: clean-docs
erl -noshell -eval 'edoc:application(cowboy, ".", []), init:stop().'
clean-docs:
rm -f doc/*.css
rm -f doc/*.html
rm -f doc/*.png
rm -f doc/edoc-info
# Tests.
CT_RUN = ct_run \
-pa ebin deps/*/ebin \
-dir test \
-logdir logs \
-cover test/cover.spec
tests: ERLC_OPTS += -DTEST=1
tests: clean app
@mkdir -p logs/
@$(CT_RUN) -suite eunit_SUITE http_SUITE ws_SUITE
autobahn:
@mkdir -p logs/
@$(CT_RUN) -suite autobahn_SUITE
# Dialyzer.
build-plt: app
@dialyzer --build_plt --output_plt .$(PROJECT).plt \
--apps kernel stdlib sasl inets crypto public_key ssl deps/ranch
dialyze:
@dialyzer --src src --plt .$(PROJECT).plt --no_native \
-Werror_handling -Wrace_conditions -Wunmatched_returns # -Wunderspecs