Compile head.bin from head.S

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Igor Opaniuk <igor.opaniuk@linaro.org>
diff --git a/rpi3.mk b/rpi3.mk
index fa9f41f..328878d 100644
--- a/rpi3.mk
+++ b/rpi3.mk
@@ -41,7 +41,7 @@
 U-BOOT_JTAG_BIN		?= $(U-BOOT_PATH)/u-boot-jtag.bin
 
 RPI3_FIRMWARE_PATH	?= $(BUILD_PATH)/rpi3/firmware
-RPI3_HEAD_BIN		?= $(RPI3_FIRMWARE_PATH)/head.bin
+RPI3_HEAD_BIN		?= $(ROOT)/out/head.bin
 RPI3_BOOT_CONFIG	?= $(RPI3_FIRMWARE_PATH)/config.txt
 RPI3_UBOOT_ENV		?= $(RPI3_FIRMWARE_PATH)/uboot.env
 RPI3_STOCK_FW_PATH	?= $(ROOT)/rpi3_firmware
@@ -58,7 +58,7 @@
 all: rpi3-firmware arm-tf optee-os optee-client xtest u-boot \
 	linux update_rootfs
 all-clean: arm-tf-clean busybox-clean u-boot-clean optee-os-clean \
-	optee-client-clean rpi3-firmware-clean
+	optee-client-clean rpi3-firmware-clean head-bin-clean
 
 -include toolchain.mk
 
@@ -97,7 +97,7 @@
 U-BOOT_EXPORTS ?= CROSS_COMPILE=$(LEGACY_AARCH64_CROSS_COMPILE) ARCH=arm64
 
 .PHONY: u-boot
-u-boot:
+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)
@@ -105,6 +105,14 @@
 u-boot-clean:
 	$(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) clean
 
+$(RPI3_HEAD_BIN): $(RPI3_FIRMWARE_PATH)/head.S
+	mkdir -p $(ROOT)/out/
+	$(AARCH64_CROSS_COMPILE)as $< -o $(ROOT)/out/head.o
+	$(AARCH64_CROSS_COMPILE)objcopy -O binary $(ROOT)/out/head.o $@
+
+head-bin-clean:
+	rm -f $(RPI3_HEAD_BIN) $(ROOT)/out/head.o
+
 ################################################################################
 # Busybox
 ################################################################################