Allow projects to define their own build.

To create a new project, add a directory under `project` and pass the
project name to `make`:

    mkdir project/my_project
    # Describe the build for the project.
    PROJECT=my_project make

Projects can be maintained separately from the main repository.

Change-Id: I33a9d7ca801e2fb3dd9795ece44577b3b565e913
diff --git a/BUILD.gn b/BUILD.gn
index 50f3d6c..1ca02e7 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -12,17 +12,21 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-group("all") {
+# The root of the build redirects to a project build file so each project can
+# select the artifacts it needs to build.
+
+# The root of the build.
+group("root") {
+  deps = [
+    "//project/${project}:root",
+  ]
+}
+
+# The root of the build for test artifacts.
+group("test_root") {
   testonly = true
 
   deps = [
-    "//src:hafnium(//build/toolchain:aem_v8a_fvp_clang)",
-    "//src:hafnium(//build/toolchain:hikey_clang)",
-    "//src:hafnium(//build/toolchain:qemu_aarch64_clang)",
-    "//src:unit_tests(//build/toolchain:host_fake_clang)",
-    "//test/vm:gicv3_test(//build/toolchain:qemu_aarch64_clang)",
-    "//test/vm:vm_tests(//build/toolchain:qemu_aarch64_clang)",
+    "//project/${project}:test_root",
   ]
-
-  # TODO: add a gcc-4.9 or above prebuilt to check the gcc build too?
 }