Generate build time and date message at link time.

So it updates each time a bootloader changes, not just when bl*_main.c
files are recompiled.

Fixes ARM-software/tf-issues#33

Change-Id: Ie8e1a7bd7e1913d2e96ac268606284f76af8c5ab
Signed-off-by: Jon Medhurst <tixy@linaro.org>
diff --git a/Makefile b/Makefile
index d0b18c9..e1a3501 100644
--- a/Makefile
+++ b/Makefile
@@ -353,8 +353,11 @@
 
 $(ELF) : $(OBJS) $(LINKERFILE)
 	@echo "  LD      $$@"
+	@echo 'const char build_message[] = "Built : "__TIME__", "__DATE__;' | \
+		$$(CC) $$(CFLAGS) -xc - -o $(BUILD_DIR)/build_message.o
 	$$(Q)$$(LD) -o $$@ $$(LDFLAGS) -Map=$(MAPFILE) --script $(LINKERFILE) \
-					--entry=$(BL$(1)_ENTRY_POINT) $(OBJS)
+					--entry=$(BL$(1)_ENTRY_POINT) $(OBJS) \
+					$(BUILD_DIR)/build_message.o
 
 $(DUMP) : $(ELF)
 	@echo "  OD      $$@"
diff --git a/bl1/bl1_main.c b/bl1/bl1_main.c
index b3adc25..401a525 100644
--- a/bl1/bl1_main.c
+++ b/bl1/bl1_main.c
@@ -70,7 +70,7 @@
 
 	/* Announce our arrival */
 	printf(FIRMWARE_WELCOME_STR);
-	printf("Built : %s, %s\n\r", __TIME__, __DATE__);
+	printf("%s\n\r", build_message);
 
 	/*
 	 * Find out how much free trusted ram remains after BL1 load
diff --git a/bl2/bl2_main.c b/bl2/bl2_main.c
index 74952da..1deebc8 100644
--- a/bl2/bl2_main.c
+++ b/bl2/bl2_main.c
@@ -58,9 +58,7 @@
 	/* Perform platform setup in BL1 */
 	bl2_platform_setup();
 
-#if defined(__GNUC__)
-	printf("BL2 Built : %s, %s\n\r", __TIME__, __DATE__);
-#endif
+	printf("BL2 %s\n\r", build_message);
 
 	/* Find out how much free trusted ram remains after BL2 load */
 	bl2_tzram_layout = bl2_plat_sec_mem_layout();
diff --git a/bl31/bl31_main.c b/bl31/bl31_main.c
index 82449f5..536bb86 100644
--- a/bl31/bl31_main.c
+++ b/bl31/bl31_main.c
@@ -83,9 +83,8 @@
 	/* Perform platform setup in BL1 */
 	bl31_platform_setup();
 
-#if defined (__GNUC__)
-	printf("BL31 Built : %s, %s\n\r", __TIME__, __DATE__);
-#endif
+	printf("BL31 %s\n\r", build_message);
+
 	/* Initialise helper libraries */
 	bl31_lib_init();
 
diff --git a/bl32/tsp/tsp_main.c b/bl32/tsp/tsp_main.c
index 05907f5..366aef0 100644
--- a/bl32/tsp/tsp_main.c
+++ b/bl32/tsp/tsp_main.c
@@ -121,9 +121,7 @@
 	tsp_stats[linear_id].cpu_on_count++;
 
 	spin_lock(&console_lock);
-#if defined (__GNUC__)
-	printf("TSP Built : %s, %s\n\r", __TIME__, __DATE__);
-#endif
+	printf("TSP %s\n\r", build_message);
 	INFO("Total memory base : 0x%x\n", mem_layout->total_base);
 	INFO("Total memory size : 0x%x bytes\n", mem_layout->total_size);
 	INFO("Free memory base  : 0x%x\n", mem_layout->free_base);
diff --git a/include/bl_common.h b/include/bl_common.h
index aad3d22..8139282 100644
--- a/include/bl_common.h
+++ b/include/bl_common.h
@@ -140,6 +140,7 @@
 			      void *first_arg,
 			      void *second_arg);
 extern unsigned long *get_el_change_mem_ptr(void);
+extern const char build_message[];
 
 #endif /*__ASSEMBLY__*/