| summaryrefslogtreecommitdiff | 
diff options
| -rw-r--r-- | src/battlemap/Makefile | 87 | ||||
| -rw-r--r-- | src/battlemap/mk/debug.mk | 39 | ||||
| -rw-r--r-- | src/battlemap/mk/erlang.mk | 28 | ||||
| -rw-r--r-- | src/battlemap/mk/preprocessor.mk | 28 | ||||
| -rw-r--r-- | src/battlemap/mk/yaws.mk | 28 | ||||
| -rw-r--r-- | src/battlemap/module.conf | 0 | 
6 files changed, 163 insertions, 47 deletions
| diff --git a/src/battlemap/Makefile b/src/battlemap/Makefile index c5bb150..4eca95a 100644 --- a/src/battlemap/Makefile +++ b/src/battlemap/Makefile @@ -1,15 +1,18 @@ -## Directories -SRC_DIR ?= src -BIN_DIR ?= ebin -CONF_DIR ?= conf -INCLUDE_DIR ?= include -UNUSED_WWW_DIR ?= www - +################################################################################ +## CONFIG ###################################################################### +################################################################################  YAWS_CONF ?= $(CONF_DIR)/yaws.conf  YAWS_API_HEADER ?= /my/src/yaws/include/yaws_api.hrl  DIALYZER_PLT_FILE ?= tacticians-server.plt +## Main Directories +SRC_DIR ?= src +CONF_DIR ?= conf +#### Optional Dirs +BIN_DIR ?= ebin +INCLUDE_DIR ?= include +  ## Binaries  YAWS ?= yaws  ERLC ?= erlc @@ -17,56 +20,46 @@ ERLC_OPTS ?=  DIALYZER ?= dialyzer  ################################################################################ +## MAKEFILE MAGIC ############################################################## +################################################################################ +OPTIONAL_DIRS = $(BIN_DIR) $(INCLUDE_DIR)  REQUIRED_HEADERS = $(INCLUDE_DIR)/yaws_api.hrl -SRC_FILES = $(wildcard $(SRC_DIR)/*.erl) -MODULES = $(patsubst %.erl,%,$(SRC_FILES)) -SUB_DIRS = $(filter-out $(MODULES),$(sort $(dir $(wildcard $(SRC_DIR)/*/)))) -BIN_FILES = $(patsubst $(SRC_DIR)/%.erl,$(BIN_DIR)/%.beam,$(SRC_FILES)) +################################################################################ +## SANITY CHECKS ############################################################### +################################################################################ +YAWS_API_HEADER ?= /my/src/yaws/include/yaws_api.hrl +DIALYZER_PLT_FILE ?= tacticians-server.plt + +## Main Directories +SRC_DIR ?= src +CONF_DIR ?= conf -export  ################################################################################ -all: -	for subdir in $(SUB_DIRS) ; do \ -		echo "Building dir $$subdir" ; \ -		$(MAKE) build SRC_DIR=$$subdir || exit 1;\ -	done +## INCLUDES #################################################################### +################################################################################ +main_target: all -debug: $(DIALYZER_PLT_FILE) -	$(MAKE) build_debug -	$(DIALYZER) --check_plt --plt $(DIALYZER_PLT_FILE) -	$(DIALYZER) --get_warnings $(SRC_DIR)/*.erl $(SRC_DIR)/*/*.erl \ -		--src --plt $(DIALYZER_PLT_FILE) +include ${CURDIR}/mk/debug.mk +include ${CURDIR}/mk/erlang.mk +include ${CURDIR}/mk/preprocessor.mk +include ${CURDIR}/mk/yaws.mk +################################################################################ +## TARGET RULES ################################################################ +################################################################################ +all: build -build_debug: -	$(MAKE) clean -	$(MAKE) ERLC_OPTS=+debug_info +debug: debug_run -build: $(BIN_DIR) $(REQUIRED_HEADERS) $(BIN_FILES) +build: $(PREPROCESSOR_RESULT) $(ERLANG_RESULT) -run: all $(UNUSED_WWW_DIR) -	$(YAWS) --conf $(YAWS_CONF) +run: yaws_run  clean:  	rm -rf $(BIN_DIR)/* -$(DIALYZER_PLT_FILE): -	$(DIALYZER) --build_plt --apps erts kernel stdlib jiffy --output_plt $@ -	$(MAKE) build_debug -	$(DIALYZER) --add_to_plt --plt $@ -r $(BIN_DIR) - -$(INCLUDE_DIR)/yaws_api.hrl: $(YAWS_API_HEADER) $(INCLUDE_DIR) -	cp $< $@ - -$(BIN_DIR): -	mkdir -p $@ - -$(UNUSED_WWW_DIR): -	mkdir -p $@ - -$(INCLUDE_DIR): +################################################################################ +## INTERNAL RULES ############################################################## +################################################################################ +$(OPTIONAL_DIRS): %:  	mkdir -p $@ - -.SECONDEXPANSION: -$(BIN_FILES): $(BIN_DIR)/%.beam : $(SRC_DIR)/%.erl $$(wildcard $$(SRC_DIR)/%/.) -	$(ERLC) $(ERLC_OPTS) -o $(BIN_DIR) $< diff --git a/src/battlemap/mk/debug.mk b/src/battlemap/mk/debug.mk new file mode 100644 index 0000000..2b98ff3 --- /dev/null +++ b/src/battlemap/mk/debug.mk @@ -0,0 +1,39 @@ +################################################################################ +## CONFIG ###################################################################### +################################################################################ +DIALYZER_PLT_FILE ?= tacticians-server.plt +DIALYZER ?= dialyzer + +################################################################################ +## MAKEFILE MAGIC ############################################################## +################################################################################ +SRC_FILES ?= $(wildcard $(SRC_DIR)/*.erl $(SRC_DIR)/*/*.erl) + +################################################################################ +## SANITY CHECKS ############################################################### +################################################################################ + +################################################################################ +## TARGET RULES ################################################################ +################################################################################ +DEBUG_RESULT = $(DIALYZER_PLT_FILE) + +debug_rebuild: +	$(MAKE) clean +	$(MAKE) ERLC_OPTS=+debug_info + +################################################################################ +## INTERNAL RULES ############################################################## +################################################################################ +ifeq ($(wildcard $(DIALYZER_PLT_FILE)),) +debug_run: +	$(DIALYZER) --build_plt --apps erts kernel stdlib jiffy --output_plt $@ +	$(MAKE) debug_rebuild +	$(DIALYZER) --add_to_plt --plt $@ -r $(BIN_DIR) +else +debug_run: +	$(MAKE) debug_rebuild +	$(DIALYZER) --check_plt --plt $(DIALYZER_PLT_FILE) +	$(DIALYZER) --get_warnings $(SRC_DIR)/*.erl $(SRC_DIR)/*/*.erl \ +		--src --plt $(DIALYZER_PLT_FILE) +endif diff --git a/src/battlemap/mk/erlang.mk b/src/battlemap/mk/erlang.mk new file mode 100644 index 0000000..9150f63 --- /dev/null +++ b/src/battlemap/mk/erlang.mk @@ -0,0 +1,28 @@ +################################################################################ +## CONFIG ###################################################################### +################################################################################ +ERLC ?= erlc +ERLC_OPTS ?= + +################################################################################ +## MAKEFILE MAGIC ############################################################## +################################################################################ +SRC_FILES ?= $(wildcard $(SRC_DIR)/*.erl $(SRC_DIR)/*/*.erl) +BIN_FILES = \ +	$(patsubst %.erl,$(BIN_DIR)/%.beam,$(notdir $(SRC_FILES))) + +################################################################################ +## SANITY CHECKS ############################################################### +################################################################################ + +################################################################################ +## TARGET RULES ################################################################ +################################################################################ +ERLANG_RESULT = $(BIN_DIR) $(BIN_FILES) + +################################################################################ +## INTERNAL RULES ############################################################## +################################################################################ +.SECONDEXPANSION: +$(BIN_FILES): $(BIN_DIR)/%.beam : $$(wildcard $(SRC_DIR)/*/%.erl $(SRC_DIR)/%.erl) +	$(ERLC) $(ERLC_OPTS) -o $(BIN_DIR) $< diff --git a/src/battlemap/mk/preprocessor.mk b/src/battlemap/mk/preprocessor.mk new file mode 100644 index 0000000..2b332a4 --- /dev/null +++ b/src/battlemap/mk/preprocessor.mk @@ -0,0 +1,28 @@ +################################################################################ +## CONFIG ###################################################################### +################################################################################ +CONFIG_FILE ?= ${CURDIR}/module.conf + +################################################################################ +## MAKEFILE MAGIC ############################################################## +################################################################################ +PREPROCESSOR_FILES = $(shell find ${CURDIR} -name "*.m4") +PREPROCESSED_FILES = $(patsubst %.m4,%,$(PREPROCESSOR_FILES)) + +################################################################################ +## SANITY CHECKS ############################################################### +################################################################################ +ifeq ($(wildcard $(CONFIG_FILE)),) +$(error "Missing CONFIG_FILE ($(CONFIG_FILE)).") +endif + +################################################################################ +## TARGET RULES ################################################################ +################################################################################ +PREPROCESSOR_RESULT = $(PREPROCESSED_FILES) + +################################################################################ +## INTERNAL RULES ############################################################## +################################################################################ +$(PREPROCESSED_FILES): %: $(CONFIG_FILE) %.m4 +	m4 -P $^ > $@ diff --git a/src/battlemap/mk/yaws.mk b/src/battlemap/mk/yaws.mk new file mode 100644 index 0000000..0c479bf --- /dev/null +++ b/src/battlemap/mk/yaws.mk @@ -0,0 +1,28 @@ +################################################################################ +## CONFIG ###################################################################### +################################################################################ +YAWS_CONF ?= $(CONF_DIR)/yaws.conf +YAWS_API_HEADER ?= /my/src/yaws/include/yaws_api.hrl + +YAWS ?= yaws + +################################################################################ +## MAKEFILE MAGIC ############################################################## +################################################################################ + +################################################################################ +## SANITY CHECKS ############################################################### +################################################################################ +YAWS_API_HEADER ?= /my/src/yaws/include/yaws_api.hrl + +################################################################################ +## TARGET RULES ################################################################ +################################################################################ +yaws_run: all $(UNUSED_WWW_DIR) +	$(YAWS) --conf $(YAWS_CONF) + +################################################################################ +## INTERNAL RULES ############################################################## +################################################################################ +$(INCLUDE_DIR)/yaws_api.hrl: $(YAWS_API_HEADER) $(INCLUDE_DIR) +	cp $< $@ diff --git a/src/battlemap/module.conf b/src/battlemap/module.conf new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/battlemap/module.conf | 


