Create uboot.env from uboot.txt

Add support for generation of uboot.env image from txt file

Fixes: https://github.com/OP-TEE/build/issues/85
Signed-off-by: Igor Opaniuk <igor.opaniuk@linaro.org>
Tested-by: Igor Opaniuk <igor.opaniuk@linaro.org> (RPi3)
Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
diff --git a/rpi3.mk b/rpi3.mk
index 328878d..8f965c4 100644
--- a/rpi3.mk
+++ b/rpi3.mk
@@ -43,7 +43,8 @@
 RPI3_FIRMWARE_PATH	?= $(BUILD_PATH)/rpi3/firmware
 RPI3_HEAD_BIN		?= $(ROOT)/out/head.bin
 RPI3_BOOT_CONFIG	?= $(RPI3_FIRMWARE_PATH)/config.txt
-RPI3_UBOOT_ENV		?= $(RPI3_FIRMWARE_PATH)/uboot.env
+RPI3_UBOOT_ENV		?= $(ROOT)/out/uboot.env
+RPI3_UBOOT_ENV_TXT	?= $(RPI3_FIRMWARE_PATH)/uboot.env.txt
 RPI3_STOCK_FW_PATH	?= $(ROOT)/rpi3_firmware
 
 OPTEE_OS_PAGER		?= $(OPTEE_OS_PATH)/out/arm/core/tee-pager.bin
@@ -55,10 +56,10 @@
 ################################################################################
 # Targets
 ################################################################################
-all: rpi3-firmware arm-tf optee-os optee-client xtest u-boot \
+all: rpi3-firmware arm-tf optee-os optee-client xtest u-boot u-boot-jtag-bin\
 	linux update_rootfs
-all-clean: arm-tf-clean busybox-clean u-boot-clean optee-os-clean \
-	optee-client-clean rpi3-firmware-clean head-bin-clean
+all-clean: arm-tf-clean busybox-clean u-boot-clean u-boot-jtag-bin-clean \
+	optee-os-clean optee-client-clean rpi3-firmware-clean head-bin-clean
 
 -include toolchain.mk
 
@@ -100,11 +101,17 @@
 u-boot: $(RPI3_HEAD_BIN)
 	$(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) rpi_3_defconfig
 	$(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) all
-	cd $(U-BOOT_PATH) && cat $(RPI3_HEAD_BIN) $(U-BOOT_BIN) > $(U-BOOT_JTAG_BIN)
+	$(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) tools
 
 u-boot-clean:
 	$(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) clean
 
+u-boot-jtag-bin: $(RPI3_UBOOT_ENV) u-boot
+	cd $(U-BOOT_PATH) && cat $(RPI3_HEAD_BIN) $(U-BOOT_BIN) > $(U-BOOT_JTAG_BIN)
+
+u-boot-jtag-bin-clean:
+	rm -f $(U-BOOT_JTAG_BIN)
+
 $(RPI3_HEAD_BIN): $(RPI3_FIRMWARE_PATH)/head.S
 	mkdir -p $(ROOT)/out/
 	$(AARCH64_CROSS_COMPILE)as $< -o $(ROOT)/out/head.o
@@ -113,6 +120,13 @@
 head-bin-clean:
 	rm -f $(RPI3_HEAD_BIN) $(ROOT)/out/head.o
 
+$(RPI3_UBOOT_ENV): $(RPI3_UBOOT_ENV_TXT) u-boot
+	mkdir -p $(ROOT)/out
+	$(U-BOOT_PATH)/tools/mkenvimage -s 0x4000 -o $(ROOT)/out/uboot.env $(RPI3_UBOOT_ENV_TXT)
+
+u-boot-env-clean:
+	rm -f $(RPI3_UBOOT_ENV)
+
 ################################################################################
 # Busybox
 ################################################################################