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