aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--SConstruct21
-rw-r--r--scripts/arm_compute_library_nn_driver.go24
2 files changed, 39 insertions, 6 deletions
diff --git a/SConstruct b/SConstruct
index 7f0ebc1a0b..9e046161ac 100644
--- a/SConstruct
+++ b/SConstruct
@@ -426,12 +426,21 @@ if not GetOption("help"):
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'])
+ # Add Android NDK toolchain specific flags
+ if 'clang++' in cpp_compiler and env['os'] == 'android':
+ # For NDK >= r21, clang 9 or above is used
+ if version_at_least(compiler_ver, '9.0.0'):
+ env['ndk_above_r21'] = True
+
+ if env['openmp']:
+ env.Append(LINKFLAGS = ['-static-openmp'])
+
+ # For NDK >= r23, clang 12 or above is used. This condition detects NDK < r23
+ if not version_at_least(compiler_ver, '12.0.0'):
+ # System assembler is deprecated and integrated assembler is preferred since r23.
+ # However integrated assembler has always been suppressed for NDK < r23.
+ # Thus for backward compatibility, we include this flag only for NDK < r23
+ env.Append(CXXFLAGS = ['-no-integrated-as'])
if env['high_priority'] and env['build_config']:
print("The high priority library cannot be built in conjunction with a user-specified build configuration")
diff --git a/scripts/arm_compute_library_nn_driver.go b/scripts/arm_compute_library_nn_driver.go
index cbbe7a71e0..e00140294b 100644
--- a/scripts/arm_compute_library_nn_driver.go
+++ b/scripts/arm_compute_library_nn_driver.go
@@ -11,6 +11,24 @@ import (
"strings"
)
+func isVersionAtLeast(version_name string, target_version int) []bool {
+ name_map := map[string]int {
+ "L": 5, "5": 5,
+ "M": 6, "6": 6,
+ "N": 7, "7": 7,
+ "O": 8, "8": 8,
+ "P": 9, "9": 9,
+ "Q": 10, "10": 10,
+ "R": 11, "11": 11,
+ "S": 12, "12": 12,
+ "T": 13, "13": 13,
+ }
+ if ! name_map[version_name] {
+ return false
+ }
+ return name_map[version_name] >= target_version
+}
+
func globalFlags(ctx android.BaseContext) []string {
var cppflags []string
@@ -30,6 +48,12 @@ func globalFlags(ctx android.BaseContext) []string {
}
}
+ // Since Android T, the underlying NDK stops supporting system assembler like GAS, in favor of integrated assembler
+ // However for Android < Android T we still want to suppress integrated assembler for backward compatibility
+ if ! isVersionAtLeast(ctx.AConfig().PlatformVersionName(), 13) {
+ cppflags = append(cppflags, "-no-integrated-as")
+ }
+
data_types := strings.Split(ctx.AConfig().GetenvWithDefault("COMPUTE_LIB_DATA_TYPE", "ALL"), ",")
for _, x := range data_types {