Enable -static-openmp for newer NDK support

Android NDKs >= r21 need the '-static-openmp' flag enabled when using openmp.
The check on the NDK version is performed by querying the compiler binary's clang version.
NDK versions <= r20 use clang 8 and below. Versions >= r21 use clang 9 and above

Resolves: COMPMID-5052

Signed-off-by: Giorgio Arena <giorgio.arena@arm.com>
Change-Id: I910f8d7a0a59866c06b16c1a856ea877bcbd7ad6
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/7344
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Gunes Bayir <gunes.bayir@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
(cherry picked from commit 444b43a55bab37fa6dc8628c6283e54e422db3ad)
diff --git a/SConstruct b/SConstruct
index 0f33972..fedf856 100644
--- a/SConstruct
+++ b/SConstruct
@@ -25,8 +25,7 @@
 import SCons
 import json
 import os
-import subprocess
-import sys
+from subprocess import check_output
 
 def version_at_least(version, required):
 
@@ -234,7 +233,7 @@
 elif 'armclang' in cpp_compiler:
     pass
 elif not 'windows' in env['os']:
-        env.Append(CXXFLAGS = ['-Wlogical-op','-Wnoexcept','-Wstrict-null-sentinel','-Wno-misleading-indentation']) 
+        env.Append(CXXFLAGS = ['-Wlogical-op','-Wnoexcept','-Wstrict-null-sentinel','-Wno-misleading-indentation'])
 
 if cpp_compiler == 'g++':
     # Don't strip comments that could include markers
@@ -369,9 +368,9 @@
 if not GetOption("help"):
     try:
         if env['os'] == 'windows':
-            compiler_ver = subprocess.check_output("clang++ -dumpversion").decode().strip()
+            compiler_ver = check_output("clang++ -dumpversion").decode().strip()
         else:
-            compiler_ver = subprocess.check_output(env['CXX'].split() + ["-dumpversion"]).decode().strip()
+            compiler_ver = check_output(env['CXX'].split() + ["-dumpversion"]).decode().strip()
     except OSError:
         print("ERROR: Compiler '%s' not found" % env['CXX'])
         Exit(1)
@@ -395,6 +394,13 @@
         if not version_at_least(compiler_ver, '7.0.0') and env['os'] == 'bare_metal':
             env.Append(LINKFLAGS = ['-fstack-protector-strong'])
 
+    # For NDK >= r21, clang 9 or above is used
+    if env['os'] == 'android' and version_at_least(compiler_ver, '9.0.0'):
+        env['ndk_above_r21'] = True
+
+        if env['openmp']:
+            env.Append(LINKFLAGS = ['-static-openmp'])
+
 if env['high_priority'] and env['build_config']:
     print("The high priority library cannot be built in conjunction with a user-specified build configuration")
     Exit(1)