2009-06-18 17:32:56 +08:00
|
|
|
|
2009-09-22 21:59:30 +08:00
|
|
|
TMPDIR ?= /tmp
|
|
|
|
|
|
|
|
|
|
RABBITMQ_NODENAME ?= rabbit
|
|
|
|
|
RABBITMQ_SERVER_START_ARGS ?=
|
|
|
|
|
RABBITMQ_MNESIA_DIR ?= $(TMPDIR)/rabbitmq-$(RABBITMQ_NODENAME)-mnesia
|
|
|
|
|
RABBITMQ_LOG_BASE ?= $(TMPDIR)
|
2008-12-09 19:41:52 +08:00
|
|
|
|
2008-07-03 20:35:11 +08:00
|
|
|
SOURCE_DIR=src
|
|
|
|
|
EBIN_DIR=ebin
|
|
|
|
|
INCLUDE_DIR=include
|
|
|
|
|
SOURCES=$(wildcard $(SOURCE_DIR)/*.erl)
|
2009-01-14 03:00:50 +08:00
|
|
|
BEAM_TARGETS=$(EBIN_DIR)/rabbit_framing.beam $(patsubst $(SOURCE_DIR)/%.erl, $(EBIN_DIR)/%.beam,$(SOURCES))
|
|
|
|
|
TARGETS=$(EBIN_DIR)/rabbit.app $(BEAM_TARGETS)
|
2008-07-03 20:35:11 +08:00
|
|
|
WEB_URL=http://stage.rabbitmq.com/
|
2008-12-09 03:44:27 +08:00
|
|
|
MANPAGES=$(patsubst %.pod, %.gz, $(wildcard docs/*.[0-9].pod))
|
2008-07-03 20:35:11 +08:00
|
|
|
|
2008-12-17 17:57:32 +08:00
|
|
|
PYTHON=python
|
|
|
|
|
|
2008-07-03 20:35:11 +08:00
|
|
|
ifndef USE_SPECS
|
|
|
|
|
# our type specs rely on features / bug fixes in dialyzer that are
|
2009-08-18 00:02:01 +08:00
|
|
|
# only available in R13B upwards (R13B is eshell 5.7.1)
|
2008-07-03 20:35:11 +08:00
|
|
|
#
|
|
|
|
|
# NB: the test assumes that version number will only contain single digits
|
2009-08-18 00:02:01 +08:00
|
|
|
USE_SPECS=$(shell if [ $$(erl -noshell -eval 'io:format(erlang:system_info(version)), halt().') \> "5.7.0" ]; then echo "true"; else echo "false"; fi)
|
2008-07-03 20:35:11 +08:00
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
#other args: +native +"{hipe,[o3,verbose]}" -Ddebug=true +debug_info +no_strict_record_tests
|
|
|
|
|
ERLC_OPTS=-I $(INCLUDE_DIR) -o $(EBIN_DIR) -Wall -v +debug_info $(shell [ $(USE_SPECS) = "true" ] && echo "-Duse_specs")
|
|
|
|
|
|
|
|
|
|
VERSION=0.0.0
|
|
|
|
|
TARBALL_NAME=rabbitmq-server-$(VERSION)
|
2008-11-08 01:42:54 +08:00
|
|
|
TARGET_SRC_DIR=dist/$(TARBALL_NAME)
|
2008-07-03 20:35:11 +08:00
|
|
|
|
|
|
|
|
SIBLING_CODEGEN_DIR=../rabbitmq-codegen/
|
|
|
|
|
AMQP_CODEGEN_DIR=$(shell [ -d $(SIBLING_CODEGEN_DIR) ] && echo $(SIBLING_CODEGEN_DIR) || echo codegen)
|
|
|
|
|
AMQP_SPEC_JSON_PATH=$(AMQP_CODEGEN_DIR)/amqp-0.8.json
|
|
|
|
|
|
2008-12-09 20:03:50 +08:00
|
|
|
ERL_CALL=erl_call -sname $(RABBITMQ_NODENAME) -e
|
2008-07-03 20:35:11 +08:00
|
|
|
|
|
|
|
|
all: $(TARGETS)
|
|
|
|
|
|
2009-01-15 09:23:29 +08:00
|
|
|
$(EBIN_DIR)/rabbit.app: $(EBIN_DIR)/rabbit_app.in $(BEAM_TARGETS) generate_app
|
2009-01-14 03:00:50 +08:00
|
|
|
escript generate_app $(EBIN_DIR) < $< > $@
|
|
|
|
|
|
2009-01-08 23:09:01 +08:00
|
|
|
$(EBIN_DIR)/gen_server2.beam: $(SOURCE_DIR)/gen_server2.erl
|
2008-07-03 20:35:11 +08:00
|
|
|
erlc $(ERLC_OPTS) $<
|
2009-01-08 23:09:01 +08:00
|
|
|
|
|
|
|
|
$(EBIN_DIR)/%.beam: $(SOURCE_DIR)/%.erl $(INCLUDE_DIR)/rabbit_framing.hrl $(INCLUDE_DIR)/rabbit.hrl $(EBIN_DIR)/gen_server2.beam
|
|
|
|
|
erlc $(ERLC_OPTS) -pa $(EBIN_DIR) $<
|
|
|
|
|
# ERLC_EMULATOR="erl -smp" erlc $(ERLC_OPTS) -pa $(EBIN_DIR) $<
|
2008-07-03 20:35:11 +08:00
|
|
|
|
2008-12-12 21:13:01 +08:00
|
|
|
$(INCLUDE_DIR)/rabbit_framing.hrl: codegen.py $(AMQP_CODEGEN_DIR)/amqp_codegen.py $(AMQP_SPEC_JSON_PATH)
|
2009-01-10 02:06:57 +08:00
|
|
|
$(PYTHON) codegen.py header $(AMQP_SPEC_JSON_PATH) $@
|
2008-12-12 21:13:01 +08:00
|
|
|
|
|
|
|
|
$(SOURCE_DIR)/rabbit_framing.erl: codegen.py $(AMQP_CODEGEN_DIR)/amqp_codegen.py $(AMQP_SPEC_JSON_PATH)
|
2009-01-10 02:06:57 +08:00
|
|
|
$(PYTHON) codegen.py body $(AMQP_SPEC_JSON_PATH) $@
|
2008-07-03 20:35:11 +08:00
|
|
|
|
2009-01-15 22:33:28 +08:00
|
|
|
dialyze: $(BEAM_TARGETS)
|
2008-08-05 18:56:57 +08:00
|
|
|
dialyzer -c $?
|
2008-07-03 20:35:11 +08:00
|
|
|
|
2009-07-20 16:10:12 +08:00
|
|
|
clean:
|
2008-07-03 20:35:11 +08:00
|
|
|
rm -f $(EBIN_DIR)/*.beam
|
2009-09-21 15:21:34 +08:00
|
|
|
rm -f $(EBIN_DIR)/rabbit.app $(EBIN_DIR)/rabbit.boot $(EBIN_DIR)/rabbit.script $(EBIN_DIR)/rabbit.rel
|
2008-07-03 20:35:11 +08:00
|
|
|
rm -f $(INCLUDE_DIR)/rabbit_framing.hrl $(SOURCE_DIR)/rabbit_framing.erl codegen.pyc
|
2008-12-09 03:44:27 +08:00
|
|
|
rm -f docs/*.[0-9].gz
|
2008-07-03 20:35:11 +08:00
|
|
|
|
2009-07-16 21:34:29 +08:00
|
|
|
cleandb:
|
2009-06-12 23:05:46 +08:00
|
|
|
rm -rf $(RABBITMQ_MNESIA_DIR)/*
|
2008-07-03 20:35:11 +08:00
|
|
|
|
|
|
|
|
############ various tasks to interact with RabbitMQ ###################
|
|
|
|
|
|
2008-12-09 19:41:52 +08:00
|
|
|
BASIC_SCRIPT_ENVIRONMENT_SETTINGS=\
|
|
|
|
|
RABBITMQ_NODE_IP_ADDRESS="$(RABBITMQ_NODE_IP_ADDRESS)" \
|
|
|
|
|
RABBITMQ_NODE_PORT="$(RABBITMQ_NODE_PORT)" \
|
|
|
|
|
RABBITMQ_LOG_BASE="$(RABBITMQ_LOG_BASE)" \
|
|
|
|
|
RABBITMQ_MNESIA_DIR="$(RABBITMQ_MNESIA_DIR)"
|
|
|
|
|
|
2008-07-03 20:35:11 +08:00
|
|
|
run: all
|
2008-12-09 19:41:52 +08:00
|
|
|
$(BASIC_SCRIPT_ENVIRONMENT_SETTINGS) \
|
2009-09-21 16:18:03 +08:00
|
|
|
RABBITMQ_ALLOW_INPUT=true \
|
2008-12-09 19:41:52 +08:00
|
|
|
RABBITMQ_SERVER_START_ARGS="$(RABBITMQ_SERVER_START_ARGS) -s rabbit" \
|
|
|
|
|
./scripts/rabbitmq-server
|
2008-07-03 20:35:11 +08:00
|
|
|
|
|
|
|
|
run-node: all
|
2008-12-09 19:41:52 +08:00
|
|
|
$(BASIC_SCRIPT_ENVIRONMENT_SETTINGS) \
|
|
|
|
|
RABBITMQ_NODE_ONLY=true \
|
2009-09-21 16:18:03 +08:00
|
|
|
RABBITMQ_ALLOW_INPUT=true \
|
2008-12-09 19:41:52 +08:00
|
|
|
RABBITMQ_SERVER_START_ARGS="$(RABBITMQ_SERVER_START_ARGS)" \
|
|
|
|
|
./scripts/rabbitmq-server
|
2008-07-03 20:35:11 +08:00
|
|
|
|
|
|
|
|
run-tests: all
|
|
|
|
|
echo "rabbit_tests:all_tests()." | $(ERL_CALL)
|
|
|
|
|
|
2009-04-15 19:41:31 +08:00
|
|
|
start-background-node:
|
2008-12-09 19:41:52 +08:00
|
|
|
$(BASIC_SCRIPT_ENVIRONMENT_SETTINGS) \
|
|
|
|
|
RABBITMQ_NODE_ONLY=true \
|
2009-08-18 00:02:01 +08:00
|
|
|
RABBITMQ_SERVER_START_ARGS="$(RABBITMQ_SERVER_START_ARGS) -detached" \
|
|
|
|
|
./scripts/rabbitmq-server ; sleep 1
|
2008-07-03 20:35:11 +08:00
|
|
|
|
|
|
|
|
start-rabbit-on-node: all
|
|
|
|
|
echo "rabbit:start()." | $(ERL_CALL)
|
|
|
|
|
|
|
|
|
|
stop-rabbit-on-node: all
|
|
|
|
|
echo "rabbit:stop()." | $(ERL_CALL)
|
|
|
|
|
|
|
|
|
|
force-snapshot: all
|
|
|
|
|
echo "rabbit_persister:force_snapshot()." | $(ERL_CALL)
|
|
|
|
|
|
|
|
|
|
stop-node:
|
|
|
|
|
-$(ERL_CALL) -q
|
|
|
|
|
|
2009-08-14 19:42:48 +08:00
|
|
|
# code coverage will be created for subdirectory "ebin" of COVER_DIR
|
|
|
|
|
COVER_DIR=.
|
2009-07-21 19:30:02 +08:00
|
|
|
|
2008-07-03 20:35:11 +08:00
|
|
|
start-cover: all
|
2009-07-21 19:30:02 +08:00
|
|
|
echo "cover:start(), rabbit_misc:enable_cover([\"$(COVER_DIR)\"])." | $(ERL_CALL)
|
2008-07-03 20:35:11 +08:00
|
|
|
|
|
|
|
|
stop-cover: all
|
|
|
|
|
echo "rabbit_misc:report_cover(), cover:stop()." | $(ERL_CALL)
|
|
|
|
|
cat cover/summary.txt
|
|
|
|
|
|
|
|
|
|
########################################################################
|
|
|
|
|
|
|
|
|
|
srcdist: distclean
|
2008-11-08 01:42:54 +08:00
|
|
|
mkdir -p $(TARGET_SRC_DIR)/codegen
|
|
|
|
|
cp -r ebin src include LICENSE LICENSE-MPL-RabbitMQ $(TARGET_SRC_DIR)
|
|
|
|
|
cp INSTALL.in $(TARGET_SRC_DIR)/INSTALL
|
|
|
|
|
elinks -dump -no-references -no-numbering $(WEB_URL)install.html \
|
|
|
|
|
>> $(TARGET_SRC_DIR)/INSTALL
|
2009-01-15 23:35:40 +08:00
|
|
|
cp README.in $(TARGET_SRC_DIR)/README
|
2008-11-08 01:42:54 +08:00
|
|
|
elinks -dump -no-references -no-numbering $(WEB_URL)build-server.html \
|
|
|
|
|
>> $(TARGET_SRC_DIR)/BUILD
|
2009-08-06 22:15:12 +08:00
|
|
|
sed -i.save 's/%%VSN%%/$(VERSION)/' $(TARGET_SRC_DIR)/ebin/rabbit_app.in && rm -f $(TARGET_SRC_DIR)/ebin/rabbit_app.in.save
|
2008-12-09 03:41:43 +08:00
|
|
|
|
2008-11-08 01:42:54 +08:00
|
|
|
cp -r $(AMQP_CODEGEN_DIR)/* $(TARGET_SRC_DIR)/codegen/
|
2009-07-29 16:57:30 +08:00
|
|
|
cp codegen.py Makefile generate_app calculate-relative $(TARGET_SRC_DIR)
|
2008-11-08 01:42:54 +08:00
|
|
|
|
|
|
|
|
cp -r scripts $(TARGET_SRC_DIR)
|
|
|
|
|
cp -r docs $(TARGET_SRC_DIR)
|
|
|
|
|
chmod 0755 $(TARGET_SRC_DIR)/scripts/*
|
2008-07-03 20:35:11 +08:00
|
|
|
|
|
|
|
|
(cd dist; tar -zcf $(TARBALL_NAME).tar.gz $(TARBALL_NAME))
|
|
|
|
|
(cd dist; zip -r $(TARBALL_NAME).zip $(TARBALL_NAME))
|
2008-11-08 01:42:54 +08:00
|
|
|
rm -rf $(TARGET_SRC_DIR)
|
2008-07-03 20:35:11 +08:00
|
|
|
|
|
|
|
|
distclean: clean
|
2009-08-18 18:10:40 +08:00
|
|
|
$(MAKE) -C $(AMQP_CODEGEN_DIR) distclean
|
2008-07-03 20:35:11 +08:00
|
|
|
rm -rf dist
|
2008-12-12 23:00:47 +08:00
|
|
|
find . -regex '.*\(~\|#\|\.swp\|\.dump\)' -exec rm {} \;
|
2008-07-03 20:35:11 +08:00
|
|
|
|
2008-12-09 03:44:27 +08:00
|
|
|
%.gz: %.pod
|
2008-12-11 00:12:41 +08:00
|
|
|
pod2man \
|
2009-02-18 06:06:17 +08:00
|
|
|
-n `echo $$(basename $*) | sed -e 's/\.[[:digit:]]\+//'` \
|
2008-12-11 00:12:41 +08:00
|
|
|
-s `echo $$(basename $*) | sed -e 's/.*\.\([^.]\+\)/\1/'` \
|
|
|
|
|
-c "RabbitMQ AMQP Server" \
|
|
|
|
|
-d "" \
|
|
|
|
|
-r "" \
|
|
|
|
|
$< | gzip --best > $@
|
2008-12-09 03:44:27 +08:00
|
|
|
|
|
|
|
|
docs_all: $(MANPAGES)
|
|
|
|
|
|
2009-07-29 16:57:30 +08:00
|
|
|
install: SCRIPTS_REL_PATH=$(shell ./calculate-relative $(TARGET_DIR)/sbin $(SBIN_DIR))
|
|
|
|
|
install: all docs_all install_dirs
|
2008-07-03 20:35:11 +08:00
|
|
|
@[ -n "$(TARGET_DIR)" ] || (echo "Please set TARGET_DIR."; false)
|
|
|
|
|
@[ -n "$(SBIN_DIR)" ] || (echo "Please set SBIN_DIR."; false)
|
2008-08-07 20:16:21 +08:00
|
|
|
@[ -n "$(MAN_DIR)" ] || (echo "Please set MAN_DIR."; false)
|
2008-12-09 03:41:43 +08:00
|
|
|
|
2008-11-08 01:42:54 +08:00
|
|
|
mkdir -p $(TARGET_DIR)
|
|
|
|
|
cp -r ebin include LICENSE LICENSE-MPL-RabbitMQ INSTALL $(TARGET_DIR)
|
2008-07-03 20:35:11 +08:00
|
|
|
|
|
|
|
|
chmod 0755 scripts/*
|
2009-07-29 19:50:02 +08:00
|
|
|
for script in rabbitmq-env rabbitmq-server rabbitmqctl rabbitmq-multi rabbitmq-activate-plugins; do \
|
2009-07-29 16:57:30 +08:00
|
|
|
cp scripts/$$script $(TARGET_DIR)/sbin; \
|
|
|
|
|
[ -e $(SBIN_DIR)/$$script ] || ln -s $(SCRIPTS_REL_PATH)/$$script $(SBIN_DIR)/$$script; \
|
2009-08-18 19:56:32 +08:00
|
|
|
done
|
2008-12-09 03:44:27 +08:00
|
|
|
for section in 1 5; do \
|
|
|
|
|
mkdir -p $(MAN_DIR)/man$$section; \
|
|
|
|
|
for manpage in docs/*.$$section.pod; do \
|
2008-12-10 23:40:10 +08:00
|
|
|
cp docs/`basename $$manpage .pod`.gz $(MAN_DIR)/man$$section; \
|
2008-12-09 03:44:27 +08:00
|
|
|
done; \
|
2008-08-07 20:16:21 +08:00
|
|
|
done
|
2009-07-29 16:57:30 +08:00
|
|
|
|
|
|
|
|
install_dirs:
|
|
|
|
|
mkdir -p $(SBIN_DIR)
|
|
|
|
|
mkdir -p $(TARGET_DIR)/sbin
|