| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 99 | 
1 files changed, 65 insertions, 34 deletions
@@ -1,57 +1,88 @@  ################################################################################ -## CONFIG ###################################################################### +## USER CONFIGURATION OPTIONS ##################################################  ################################################################################ -MODULES ?= battlemap db -MODULES_DIR ?= ${CURDIR}/src +## Main Directories +SRC_DIR ?= ${CURDIR}/src +CONFIG_DIR ?= ${CURDIR}/conf + +## Optional Directories +BIN_DIR ?= ${CURDIR}/ebin +INCLUDE_DIR ?= ${CURDIR}/include +WWW_DIR ?= ${CURDIR}/www +LOG_DIR ?= ${CURDIR}/log + +## Binaries +YAWS ?= yaws +YAWS_OPTS ?= + +ERLC ?= erlc +ERLC_OPTS ?= + +ERL ?= erl +ERL_OPTS ?= + +DIALYZER ?= dialyzer +DIALYZER_OPTS ?= + +M4 ?= m4 +M4_OPTS ?= + +## Filenames +DIALYZER_PLT_FILE ?= tacticians-server.plt -YAWS_CONFIG_TEMPLATE ?= ${CURDIR}/conf/yaws.conf.m4 -YAWS_API_HEADER ?= /my/src/yaws/include/yaws_api.hrl  ################################################################################  ## MAKEFILE MAGIC ##############################################################  ################################################################################ -MODULES_SRC = $(addprefix $(MODULES_DIR)/,$(MODULES)) +## General +OPTIONAL_DIRS = $(BIN_DIR) $(INCLUDE_DIR) $(WWW_DIR) $(LOG_DIR) + +## Preprocessor +PREPROCESSOR_CONFIG_FILES = $(shell find $(CONFIG_DIR) -name "*.m4.conf") +PREPROCESSABLE_FILES = $(shell find ${CURDIR} -name "*.m4") +PREPROCESSED_FILES = $(patsubst %.m4,%,$(PREPROCESSABLE_FILES)) + +## Erlang +ERL_SRC_FILES = $(shell find $(SRC_DIR) -name "*.erl") +ERL_BIN_FILES = $(patsubst %.erl,$(BIN_DIR)/%.beam,$(notdir $(ERL_SRC_FILES))) + +## Yaws +REQUIRED_HEADERS = $(INCLUDE_DIR)/yaws_api.hrl  ################################################################################  ## SANITY CHECKS ###############################################################  ################################################################################ -MISSING_MODULES_DIR = \ -	$(filter-out $(wildcard $(MODULES_SRC)),$(MODULES_SRC)) - -ifneq ($(MISSING_MODULES_DIR),) -$(error "The following modules are missing: $(MISSING_MODULES_DIR)") -endif  ################################################################################  ## TARGET RULES ################################################################  ################################################################################ -export - -all: -	for module in $(MODULES_SRC) ; do \ -		$(MAKE) -C $$module all; \ -	done +all: build -debug: -	for module in $(MODULES_SRC) ; do \ -		$(MAKE) -C $$module debug ; \ -	done +debug: debug_run -build: -	for module in $(MODULES_SRC) ; do \ -		$(MAKE) -C $$module build ; \ -	done +build: $(OPTIONAL_DIRS) $(REQUIRED_HEADERS) $(PREPROCESSED_FILES) $(ERL_BIN_FILES) -run_battlemap: -	$(MAKE) -C $(MODULES_DIR)/battlemap/ run - -run_db: -	$(MAKE) -C $(MODULES_DIR)/db/ run +run: yaws_run  clean: -	for module in $(MODULES_SRC) ; do \ -		$(MAKE) -C $$module clean; \ -	done +	# Preprocessor +	rm -rf $(PREPROCESSED_FILES) +	# Erlang +	rm -rf $(BIN_DIR)/* + +reset: +	# Preprocessor +	rm -rf $(PREPROCESSED_FILES) +	rm -rf $(OPTIONAL_DIRS)  ################################################################################  ## INTERNAL RULES ##############################################################  ################################################################################ +$(PREPROCESSED_FILES): %: $(PREPROCESSOR_CONFIG_FILES) %.m4 +	$(M4) -P $^ > $@ + +$(OPTIONAL_DIRS): %: +	mkdir -p $@ + +.SECONDEXPANSION: +$(ERL_BIN_FILES): $(BIN_DIR)/%.beam: $$(shell find $(SRC_DIR) -name "%.erl") +	$(ERLC) $(ERLC_OPTS) -o $(BIN_DIR) $<  | 


