blob: 9d6fcdb004fdf7ed93b3544b093b23f41bce8055 [file] [log] [blame]
# ----------------------------------------------------
# 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"