#################################################
## Top level Makefile for DSMCC module
#################################################

include ../android_setenv.sh

export MODULE_NAME := dsmcc

# Setup default directory locations
export MODULE_ROOT:=$(shell pwd)
export DTVKIT_OUTPUT_DIR?=$(MODULE_ROOT)/build
export OBJ_BUILD_PATH=$(DTVKIT_OUTPUT_DIR)/obj
export INC_BUILD_PATH=$(DTVKIT_OUTPUT_DIR)/inc

# Ensure optimisation and debug variables have default values
export DTVKIT_OPTIMISATION_OPTION?=-O2
export DTVKIT_DSMCC_DEBUG_LEVEL?=0
export DTVKIT_DSMCC_DEBUG_MASK?=0x0000

MODULE_LIB = $(DTVKIT_OUTPUT_DIR)/bin/lib$(MODULE_NAME).a

DTVKIT_INSTALL_DIR ?= $(MODULE_ROOT)/install

INSTALL_LIB_PATH=$(DTVKIT_INSTALL_DIR)/lib
INSTALL_INC_PATH=$(DTVKIT_INSTALL_DIR)/include/$(MODULE_NAME)
INSTALL_DOC_PATH=$(DTVKIT_INSTALL_DIR)/doc/$(MODULE_NAME)
INSTALL_AUX_PATH=$(DTVKIT_INSTALL_DIR)/share/$(MODULE_NAME)

SUBMODULES = dscore dsiq dsfm dsmain

export SUBMODULES

.PHONY:  default inform clean force

QUIET ?= @
ifeq ($(QUIET),@)
 QS = -s
endif

default: $(MODULE_LIB)

inform:
	@echo Building $(MODULE_LIB)

$(MODULE_LIB) : inform $(SUBMODULES:%=$(OBJ_BUILD_PATH)/%/objs.mk)
	@$(MAKE) $(QS) -f linkall.mak LIB=$@
	@echo Finished $@

$(OBJ_BUILD_PATH)/%/objs.mk: force
	@$(MAKE) $(QS) -C source/$* TRGT=$@

clean: $(SUBMODULES:%=clean_%)
	@rm -f $(MODULE_LIB)
	-rmdir $(DTVKIT_OUTPUT_DIR)/bin
	-rmdir $(DTVKIT_OUTPUT_DIR)

clean_% : source/%
	@$(MAKE) $(QS) clean -C $<

show: $(SUBMODULES:%=show_%)
	@echo SUBMODULES=$(SUBMODULES)

show_% : source/%
	@$(MAKE) $(QS) show -C $<

.PHONY: install uninstall

define install
	install -C -d $(1) && \
	install -C -m u=rw,go=r,a-s -t $(1) $(2)
endef

define rmdir_if_empty
	if [ -d $(1) ]; then \
		find $(1) -depth -type d -empty -delete; \
	fi
endef

install: $(MODULE_LIB)
	@echo Installing $(MODULE_NAME)
	@$(call install,$(INSTALL_LIB_PATH),$(MODULE_LIB))
	@$(call install,$(INSTALL_INC_PATH),include/*.h)
	@$(call install,$(INSTALL_INC_PATH),$(INC_BUILD_PATH)/dsmcc_version.h)
	@$(call install,$(INSTALL_DOC_PATH),licence.txt)
	@$(call install,$(INSTALL_AUX_PATH),version.mak)

uninstall:
	@echo Uninstalling $(MODULE_NAME)
	@rm -f $(INSTALL_LIB_PATH)/$(notdir $(MODULE_LIB))
	@rm -rf $(INSTALL_INC_PATH)
	@rm -rf $(INSTALL_DOC_PATH)
	@rm -rf $(INSTALL_AUX_PATH)
	@$(call rmdir_if_empty,$(DTVKIT_INSTALL_DIR))


beautify:
	uncrustify -c tools/uncrustify/uncrustify.cfg --replace --no-backup include/*.h
	uncrustify -c tools/uncrustify/uncrustify.cfg --replace --no-backup source/dscore/inc/*.h
	uncrustify -c tools/uncrustify/uncrustify.cfg --replace --no-backup source/dscore/src/*.[ch]
	uncrustify -c tools/uncrustify/uncrustify.cfg --replace --no-backup source/dsfm/inc/*.h
	uncrustify -c tools/uncrustify/uncrustify.cfg --replace --no-backup source/dsfm/src/*.[ch]
	uncrustify -c tools/uncrustify/uncrustify.cfg --replace --no-backup source/dsiq/inc/*.h
	uncrustify -c tools/uncrustify/uncrustify.cfg --replace --no-backup source/dsiq/src/*.[ch]
	uncrustify -c tools/uncrustify/uncrustify.cfg --replace --no-backup source/dsmain/src/*.[ch]
