Introduce Context opaque object of the new interface

An AclContext is introduced as part of the new interface.
This object is responsible for any constructural services that the
operators and other objects might need.

Main options that can be passed to a context object are:
- a target: for which all the subsequent object should bind with
- capabilities: which are the isa/target features to enable
- a mode: for which different strategies can be selected in the backend

Signed-off-by: Georgios Pinitas <georgios.pinitas@arm.com>
Change-Id: I315549e55d4d064cbe94dfa29d070dc281b447de
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5088
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
diff --git a/SConstruct b/SConstruct
index 8892626..ad9a3ac 100644
--- a/SConstruct
+++ b/SConstruct
@@ -340,7 +340,11 @@
 if env['specs_file'] != "":
     env.Append(LINKFLAGS = ['-specs='+env['specs_file']])
 
+if env['neon']:
+    env.Append(CPPDEFINES = ['ARM_COMPUTE_CPU_ENABLED'])
+
 if env['opencl']:
+    env.Append(CPPDEFINES = ['ARM_COMPUTE_OPENCL_ENABLED'])
     if env['os'] in ['bare_metal'] or env['standalone']:
         print("Cannot link OpenCL statically, which is required for bare metal / standalone builds")
         Exit(1)