COMPMID-2706: Add the ability to build bootcode for bare metal

Adds an option for providing a linker script and also adds the
bootcode folder, it it exists, in the build path and links it
with the executable binaries.

Change-Id: I4119b21bdf1b4dd7fe38c4ee66741460666f53a1
Signed-off-by: Michalis Spyrou <michalis.spyrou@arm.com>
Reviewed-on: https://review.mlplatform.org/c/2051
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
diff --git a/SConscript b/SConscript
index 0b7729c..66dfff4 100644
--- a/SConscript
+++ b/SConscript
@@ -31,6 +31,14 @@
 Import('vars')
 Import('install_lib')
 
+def build_bootcode_objs(sources):
+
+    arm_compute_env.Append(ASFLAGS = "-I bootcode/")
+    obj = arm_compute_env.Object(sources)
+    obj = install_lib(obj)
+    Default(obj)
+    return obj
+
 def build_library(name, sources, static=False, libs=[]):
     if static:
         obj = arm_compute_env.StaticLibrary(name, source=sources, LIBS = arm_compute_env["LIBS"] + libs)
@@ -240,6 +248,12 @@
 
     graph_files += Glob('src/graph/backends/GLES/*.cpp')
 
+bootcode_o = []
+if env['os'] == 'bare_metal':
+    bootcode_files = Glob('bootcode/*.s')
+    bootcode_o = build_bootcode_objs(bootcode_files)
+Export('bootcode_o')
+
 arm_compute_core_a = build_library('arm_compute_core-static', core_files, static=True)
 Export('arm_compute_core_a')