Build system: add 'make help' option

Add the 'help' target to the Makefile to present a brief guide to the
various build options available.

Change-Id: Ic3a3489860b6362eb236470ea6b43a16a1b2fe3a
Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
diff --git a/Makefile b/Makefile
index 71be313..c54d49e 100644
--- a/Makefile
+++ b/Makefile
@@ -70,6 +70,8 @@
 BUILD_DIRS		:=	${BUILD_BL1} ${BUILD_BL2} ${BUILD_BL31}
 
 PLATFORMS		:=	$(shell ls -I common plat/)
+HELP_PLATFORMS		:=	$(shell echo ${PLATFORMS} | sed 's/ /|/g')
+
 ifeq (${PLAT},)
   $(error "Error: Unknown platform. Please use PLAT=<platform name> to specify the platform.")
 endif
@@ -257,3 +259,22 @@
 			@echo
 			@echo "Built $@ successfully"
 			@echo
+
+help:
+	@echo "usage: ${MAKE} PLAT=<all|${HELP_PLATFORMS}> <all|bl1|bl2|bl31|distclean|clean|dump>"
+	@echo ""
+	@echo "PLAT is used to specify which platform you wish to build."
+	@echo ""
+	@echo "Supported Targets:"
+	@echo "  all        build the BL1, BL2 and BL31 binaries"
+	@echo "  bl1        build the BL1 binary"
+	@echo "  bl2        build the BL2 binary"
+	@echo "  bl31       build the BL31 binary"
+	@echo "  clean      Clean the build for the selected platform"
+	@echo "  distclean  Remove all build artifacts for all platforms"
+	@echo "  dump       Generate object file dumps"
+	@echo ""
+	@echo "note: most build targets require PLAT to be set to a specific platform."
+	@echo ""
+	@echo "example: build all targets for the FVP platform:"
+	@echo "  CROSS_COMPILE=aarch64-none-elf- make PLAT=fvp all"