include config/config.mk

# To deploy binaries to device need to choose correct target:
#   make install-<target>
#
# Install all:
#   make install-msm8998
#   make install-sdm845
#
# Only trustlet:
#   make install-ta-sdm845
#
# Only tests (any QSEE device):
#   make install-test

UNSIGNED_TA_NAME := activation-ta

.PHONY: install-prepare
install-prepare:
	$(info )
	$(info install-prepare)
	$(eval $(call GET_CPU_ABI))

	@adb shell mount -o rw,remount /
	@adb shell mount -o rw,remount /vendor/firmware_mnt || true
	@adb shell mount -o rw,remount /vendor
	@adb remount

.PHONY: install-ta
install-ta: _install-$(DEPLOY_PLATFORM)

### install tbase part ########################################################
.PHONY: _install-tbase
_install-tbase: | install-prepare
	$(info )
	$(info install tbase TA for $(DEPLOY_CHIP))
	@adb push out/$(DEPLOY_TARGET)/$(UNSIGNED_TA_NAME)/$(CONFIG_TA_UUID).tlbin /vendor/app/mcRegistry

### install QSEE part #########################################################
.PHONY: _qsee_ta_prepare
_qsee_ta_prepare :

QSEE_PLATFORM_PATH:=$(wildcard out/$(DEPLOY_TARGET)/*A53_64)
ifeq ($(QSEE_PLATFORM_PATH),)
  QSEE_PLATFORM_PATH:=$(wildcard out/$(DEPLOY_TARGET)/*scorpion)
endif

.PHONY: _install-qsee
_install-qsee: _qsee_ta_prepare | install-prepare
	$(info )
	$(info install QSEE TA for $(DEPLOY_CHIP))
	@adb push $(QSEE_PLATFORM_PATH)/$(UNSIGNED_TA_NAME)/signed/* /vendor/firmware_mnt/image/

### install blowfish(teegris) part ############################################
.PHONY: _install-blowfish
_install-blowfish: | install-prepare
	$(info )
	$(info install teegris TA for $(DEPLOY_CHIP))
	@adb push out/$(DEPLOY_TARGET)/$(UNSIGNED_TA_NAME)/$(CONFIG_TA_UUID_STRUCT) /vendor/tee/

### install teegris part ############################################
.PHONY: _install-teegris
_install-teegris: | install-prepare
	$(info )
	$(info install teegris TA for $(DEPLOY_CHIP))
	@adb push out/$(DEPLOY_TARGET)/$(UNSIGNED_TA_NAME)/$(CONFIG_TA_UUID_STRUCT) /vendor/tee/

.PHONY: install-test
install-test: install-lib-test install-jni-test ;

.PHONY: install-lib-test
install-lib-test:
	adb shell mount -o rw,remount /system
	adb push out/android/tests/lib-test/local/arm64-v8a/qsee-lib-test /system/bin/

.PHONY: install-jni-test
install-jni-test:
	adb install -r out/gradle/android-jni-test/app-debug.apk

.PHONY: install-jni
install-jni:
	adb shell mount -o rw,remount /vendor
	adb push out/android/activation-jni/arm64-v8a/libactivation-jni.so /vendor/lib64/
	adb push out/android/activation-jni/armeabi/libactivation-jni.so /vendor/lib/
	@if [ ! $$(adb shell grep libactivation-jni.so /vendor/etc/public.libraries.txt) ]; then \
		adb shell "echo >> /vendor/etc/public.libraries.txt"; \
		adb shell "echo libactivation-jni.so >> /vendor/etc/public.libraries.txt"; \
		echo ;\
		echo "Device MUST be rebooted MANUALLY because /vendor/etc/public.libraries.txt is modified!" ; \
		echo ;\
	else \
		echo ;\
		echo "Device MUST be rebooted MANUALLY after JNI installation because of bionic linker issue!"; \
		echo ;\
	fi
