feat: permit building a single hafnium platform

Introduced a PLATFORM makefile command line build option to permit
downstream solutions or integrations to build only the hafnium binary
that the solution is interested in. In particular this omits building
the test framework a downstream integration may not want to consume.
This also greatly improves the build time (and limits the external
dependencies) from the solution's perspective. Combined with the
existing PROJECT variable, the intent is to make the project build
just a bit more flexible.

Example usages:
make (builds all platforms from 'reference' project incl. tests)
make PLATFORM=secure_aem_v8a_fvp_vhe (builds only the SPMC targeting FVP
from the 'reference' project)
The following two examples are hypothetical if the external project
'foo' adheres to the working model proposed by project 'reference':
make PROJECT=foo (builds all targets from an externally provided project
'foo')
make PROJECT=foo PLATFORM=bar (builds only the 'bar' platform from
project 'foo')

Signed-off-by: Olivier Deprez <olivier.deprez@arm.com>
Change-Id: I17da0419f9f4a70aec4176bc1579e5c33a680690
diff --git a/Makefile b/Makefile
index 658e1f8..18ccf76 100644
--- a/Makefile
+++ b/Makefile
@@ -11,6 +11,8 @@
 
 ENABLE_ASSERTIONS ?= 1
 
+PLATFORM ?= default
+
 GN_ARGS := project="$(PROJECT)"
 GN_ARGS += toolchain_lib="$(TOOLCHAIN_LIB)"
 ifeq ($(filter $(ENABLE_ASSERTIONS), 1 0),)
@@ -67,7 +69,11 @@
 
 .PHONY: all
 all: $(OUT_DIR)/build.ninja
+ifneq ($(PLATFORM),default)
+	@$(NINJA) -C $(OUT_DIR) project/$(PROJECT):$(PLATFORM)
+else
 	@$(NINJA) -C $(OUT_DIR)
+endif
 
 $(OUT_DIR)/build.ninja:
 	@$(GN) --export-compile-commands gen --args='$(GN_ARGS)' $(OUT_DIR)
diff --git a/project/reference b/project/reference
index 48050f5..7e64593 160000
--- a/project/reference
+++ b/project/reference
@@ -1 +1 @@
-Subproject commit 48050f5afe91fac7ea9d226f36d37626987ee39e
+Subproject commit 7e6459392f56c174e2de7198ab14ebea44b069b0