|  | # ---------------------------------------------------- | 
|  | # Application version | 
|  | # ---------------------------------------------------- | 
|  |  | 
|  | APP_NAME=$(PACKAGE_NAME) | 
|  | VSN=$(PACKAGE_VERSION) | 
|  |  | 
|  | # ---------------------------------------------------- | 
|  | # FLAGS | 
|  | # ---------------------------------------------------- | 
|  |  | 
|  | ERL_FLAGS = | 
|  | ERL_INCLUDE = -I../include | 
|  | ERL_BEHAV_PATH = -pz ../ebin | 
|  | ERL_COMPILE_FLAGS = $(ERL_INCLUDE) $(ERL_BEHAV_PATH) | 
|  |  | 
|  | EBIN ?= ../ebin | 
|  | ESRC ?= . | 
|  | EMULATOR = beam | 
|  |  | 
|  | ERLC_WFLAGS = -W | 
|  | ERLC = erlc $(ERLC_WFLAGS) $(ERLC_FLAGS) | 
|  | ERL = erl -boot start_clean | 
|  |  | 
|  | $(EBIN)/%.beam: $(ESRC)/%.erl | 
|  | @echo "   ERLC  $<" | 
|  | @$(ERLC) $(ERL_FLAGS) $(ERL_COMPILE_FLAGS) -o$(EBIN) $< | 
|  |  | 
|  | .erl.beam: | 
|  | $(ERLC) $(ERL_FLAGS) $(ERL_COMPILE_FLAGS) -o$(dir $@) $< | 
|  |  | 
|  | # ---------------------------------------------------- | 
|  | # Target Specs | 
|  | # ---------------------------------------------------- | 
|  |  | 
|  | MODULES = $(shell find . -name \*.erl | sed 's:^\./::' | sed 's/\.erl//') | 
|  | MODULES_STRING_LIST = $(shell find . -name \*.erl | sed 's:^\./::' | sed 's/\.erl/,/') | 
|  | BEHAV_MODULES = $(shell find . -name \*.erl | xargs grep -l behaviour_info | sed 's:^\./::' | sed 's/\.erl//') | 
|  |  | 
|  | ERL_FILES= $(MODULES:%=%.erl) | 
|  | DOC_FILES=$(ERL_FILES) | 
|  |  | 
|  | APP_FILE= $(APP_NAME).app | 
|  | APP_SRC= $(APP_FILE).src | 
|  | APP_TARGET= $(EBIN)/$(APP_FILE) | 
|  |  | 
|  | BEAMS= $(MODULES:%=$(EBIN)/%.$(EMULATOR)) | 
|  | BEHAV_BEAMS= $(BEHAV_MODULES:%=$(EBIN)/%.$(EMULATOR)) | 
|  | TARGET_FILES= $(BEHAV_BEAMS) $(BEAMS) $(APP_TARGET) $(APPUP_TARGET) | 
|  |  | 
|  | # ---------------------------------------------------- | 
|  | # Targets | 
|  | # ---------------------------------------------------- | 
|  |  | 
|  | all debug opt: $(EBIN) $(TARGET_FILES) | 
|  |  | 
|  | # Note: In the open-source build clean must not destroy the preloaded | 
|  | # beam files. | 
|  | clean: | 
|  | rm -f $(TARGET_FILES) | 
|  | rm -f *~ | 
|  | rm -f core | 
|  | rm -rf $(EBIN) | 
|  | rm -rf *html | 
|  |  | 
|  | $(EBIN): | 
|  | mkdir $(EBIN) | 
|  |  | 
|  | dialyzer: $(TARGET_FILES) | 
|  | dialyzer --src -r . $(ERL_INCLUDE) | 
|  |  | 
|  | # ---------------------------------------------------- | 
|  | # Special Build Targets | 
|  | # ---------------------------------------------------- | 
|  |  | 
|  | $(APP_TARGET): $(APP_SRC) $(BEAMS) | 
|  | sed -e 's;%VSN%;$(VSN);' \ | 
|  | -e 's;%APP_NAME%;$(APP_NAME);' \ | 
|  | -e 's;%MODULES%;%MODULES%$(MODULES_STRING_LIST);' \ | 
|  | $< > $<".tmp" | 
|  | sed -e 's/%MODULES%\(.*\),/\1/' \ | 
|  | $<".tmp" > $@ | 
|  | rm $<".tmp" |