PROJECT_ROOT		= $(abspath $(dir $(abspath $(firstword $(MAKEFILE_LIST))))..)

include				$(PROJECT_ROOT)/assets/assets.mk
include				$(PROJECT_ROOT)/assets/copro.mk

.PHONY: all
all: icons protobuf dolphin manifest

$(ASSETS): $(ASSETS_SOURCES) $(ASSETS_COMPILER)
	@echo "\tASSETS\t\t" $@
	@$(ASSETS_COMPILER) icons "$(ASSETS_SOURCE_DIR)" "$(ASSETS_COMPILED_DIR)"

.PHONY: icons
icons: $(ASSETS)

$(PROTOBUF) &: $(PROTOBUF_SOURCES) $(PROTOBUF_COMPILER)
	@echo "\tPROTOBUF\t" $(PROTOBUF_FILENAMES)
	@$(PROTOBUF_COMPILER) -q -I$(PROTOBUF_SOURCE_DIR) -D$(PROTOBUF_COMPILED_DIR) $(PROTOBUF_SOURCES)
	@printf "#pragma once\n#define PROTOBUF_MAJOR_VERSION $(PROTOBUF_MAJOR_VERSION)\n#define PROTOBUF_MINOR_VERSION $(PROTOBUF_MINOR_VERSION)\n" > $(PROTOBUF_COMPILED_DIR)/protobuf_version.h

.PHONY: protobuf
protobuf: $(PROTOBUF)

$(DOLPHIN_EXTERNAL_OUTPUT_DIR): $(DOLPHIN_SOURCE_DIR)
	@echo "\tDOLPHIN blocking"
	@$(ASSETS_COMPILER) dolphin -s dolphin_blocking "$(DOLPHIN_SOURCE_DIR)/blocking" "$(DOLPHIN_INTERNAL_OUTPUT_DIR)"
	@echo "\tDOLPHIN internal"
	@$(ASSETS_COMPILER) dolphin -s dolphin_internal "$(DOLPHIN_SOURCE_DIR)/internal" "$(DOLPHIN_INTERNAL_OUTPUT_DIR)"
	@echo "\tDOLPHIN external"
	@$(ASSETS_COMPILER) dolphin "$(DOLPHIN_SOURCE_DIR)/external" "$(DOLPHIN_EXTERNAL_OUTPUT_DIR)"

.PHONY: manifest
manifest:
	$(ASSETS_COMPILER) manifest $(RESOURCES_DIR)

.PHONY: dolphin
dolphin: $(DOLPHIN_EXTERNAL_OUTPUT_DIR)

.PHONY: copro_bundle
copro_bundle:
	@mkdir -p $(COPRO_BUNDLE_DIR)
	@$(ASSETS_COMPILER) copro $(COPRO_CUBE_DIR) $(COPRO_BUNDLE_DIR) $(COPRO_MCU_FAMILY) --cube_ver=$(COPRO_CUBE_VERSION) --stack_type=$(COPRO_STACK_TYPE) --stack_file=$(COPRO_STACK_BIN) --stack_addr=$(COPRO_STACK_ADDR)

clean:
	@echo "\tCLEAN\t"
	@$(RM) $(ASSETS_COMPILED_DIR)/*
	@$(RM) -rf $(COPRO_BUNDLE_DIR)
	@$(RM) -rf $(DOLPHIN_EXTERNAL_OUTPUT_DIR)