include config/config.mk

ifeq ($(wildcard multibuild/sdk.mk),)
  $(info ******************************************************************)
  $(info * Multibuild SDK is not found in the ./multibuild folder.        *)
  $(info * Please, mount or copy appropriate version of Multibuild SDK    *)
  $(info * into ./multibuild folder.                                      *)
  $(info ******************************************************************)
  $(error multibuild/sdk.mk is absent)
endif

include multibuild/sdk.mk

### Add target platforms #######################################################
include config/targets.mk

TBASE_DRIVER_FILENAME := ffffffffd00000000000000000000062.tlbin
TEEGRIS_DRIVER_FILENAME := 00000000-0000-0000-0000-0050524f4341

DAEMON_NAME:=vendor.samsung.hardware.security.proca@2.0-service

define publish_tbase_artifacts
.PHONY: publish publish_$(1)
publish: publish_$(1)
publish_$(1):
	@install -vD out/$(1)/$(DAEMON_NAME)/armeabi-v7a/$(DAEMON_NAME) ship/$(1)/armeabi-v7a/$(DAEMON_NAME) || :
	@install -vD out/$(1)/$(DAEMON_NAME)/arm64-v8a/$(DAEMON_NAME) ship/$(1)/arm64-v8a/$(DAEMON_NAME) || :
	@install -vD out/$(1)/proca/proca ship/$(1)/proca || :
	@install -vD out/$(1)/proca/$(TBASE_DRIVER_FILENAME) ship/$(1)/signed/$(TBASE_DRIVER_FILENAME) || :
endef

define publish_qsee_artifacts
.PHONY: publish publish_$(1)
publish: publish_$(1)
publish_$(1):
	@install -vD out/$(1)/../$(DAEMON_NAME)/armeabi-v7a/$(DAEMON_NAME) ship/$(1)/armeabi-v7a/$(DAEMON_NAME) || :
	@install -vD out/$(1)/../$(DAEMON_NAME)/arm64-v8a/$(DAEMON_NAME) ship/$(1)/arm64-v8a/$(DAEMON_NAME) || :
	@install -vD out/$(1)/proca/proca.mbn ship/$(1)/proca.mbn || :
	@install -vD out/$(1)/proca/proca.elf ship/$(1)/proca.elf || :
	@mkdir -p ship/$(1)/signed/ || :
	@cp -rvfa out/$(1)/proca/signed/ ship/$(1)/signed || :
endef

define publish_teegris_artifacts
.PHONY: publish publish_$(1)
publish: publish_$(1)
publish_$(1):
	@install -vD out/$(1)/$(DAEMON_NAME)/armeabi-v7a/$(DAEMON_NAME) ship/$(1)/armeabi-v7a/$(DAEMON_NAME) || :
	@install -vD out/$(1)/$(DAEMON_NAME)/arm64-v8a/$(DAEMON_NAME) ship/$(1)/arm64-v8a/$(DAEMON_NAME) || :
	@install -vD out/$(1)/proca/proca ship/$(1)/proca || :
	@install -vD out/$(1)/proca/$(TEEGRIS_DRIVER_FILENAME) ship/$(1)/signed/$(TEEGRIS_DRIVER_FILENAME) || :
endef

.PHONY: publish_deploy
publish: publish_deploy
publish_deploy:
	@rm -rfv deploy/temp_*
	@mkdir -p ship/sdk/
	@cp -rvfa deploy/* ship/sdk/

# 1 - target
get-qsee-prefix = \
  $(call get-target-parameter,$(1),qsee,LOCAL_CHIP)_$(call get-target-parameter,$(1),qsee,LOCAL_QSEE_PROC)

# The loop to prepare deploy for all the platforms.
publish-for-each-target = \
  $(if $(_global_target_names), \
    , \
    $(error Any target configuration is defined. Please, add at least one of by include $$(ADD_TARGET).)) \
  \
  $(foreach _target,$(_global_target_names), \
    $(foreach _platform,$(_global_target_$(_target)_platforms), \
      $(if $(filter qsee,$(_platform)), \
       $(eval $(call publish_qsee_artifacts,$(_target)/$(_platform)/$(call get-qsee-prefix,$(_target)))), \
       $(if $(filter tbase,$(_platform)), \
         $(eval $(call publish_tbase_artifacts,$(_target)/$(_platform))), \
         $(eval $(call publish_teegris_artifacts,$(_target)/$(_platform))))))) 

$(call publish-for-each-target)

all: publish
