| # ---------------------------------------------------- |
| # 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" |