1package { 2 default_applicable_licenses: ["external_arm-optimized-routines_license"], 3} 4 5// Added automatically by a large-scale-change 6// See: http://go/android-license-faq 7license { 8 name: "external_arm-optimized-routines_license", 9 visibility: [":__subpackages__"], 10 license_kinds: [ 11 "SPDX-license-identifier-MIT", 12 ], 13 license_text: [ 14 "LICENSE", 15 ], 16} 17 18cc_defaults { 19 name: "arm-optimized-routines-defaults", 20 host_supported: true, 21 cflags: [ 22 "-Werror", 23 "-Wno-unused-parameter", 24 "-O2", 25 "-ffp-contract=fast", 26 "-fno-math-errno", 27 28 // bionic configuration. 29 30 // We're actually implementing bionic here, so we don't want <math.h> 31 // to try to be helpful by renaming long double routines. 32 "-D__BIONIC_LP32_USE_LONG_DOUBLE", 33 "-DFLT_EVAL_METHOD=0", 34 35 // arm-optimized-routines configuration. 36 37 // BSD libm doesn't set errno, and bionic was based on the BSDs. 38 // https://github.com/ARM-software/optimized-routines/issues/16#issuecomment-572009659 39 "-DWANT_ERRNO=0", 40 // TODO: we may want the vector code in future, but it's not ready yet. 41 "-DWANT_VMATH=0", 42 ], 43 local_include_dirs: ["math/include"], 44 arch: { 45 arm64: { 46 oryon: { 47 cflags: [ 48 "-Xclang -target-feature", 49 "-Xclang +ldp-aligned-only", 50 ], 51 }, 52 }, 53 }, 54} 55 56cc_defaults { 57 name: "libarm-optimized-routines-defaults", 58 defaults: ["arm-optimized-routines-defaults"], 59 ramdisk_available: true, 60 vendor_ramdisk_available: true, 61 recovery_available: true, 62 native_bridge_supported: true, 63 apex_available: [ 64 "//apex_available:platform", 65 "com.android.runtime", 66 ], 67 68 stl: "none", 69 target: { 70 bionic: { 71 static: { 72 system_shared_libs: [], 73 }, 74 header_libs: ["libc_headers"], 75 }, 76 }, 77} 78 79cc_library_static { 80 name: "libarm-optimized-routines-math", 81 defaults: ["libarm-optimized-routines-defaults"], 82 exclude_srcs: [ 83 // Provided by: 84 // bionic/libm/upstream-freebsd/lib/msun/src/s_erf.c 85 // bionic/libm/upstream-freebsd/lib/msun/src/s_erff.c 86 "math/erf.c", 87 "math/erf_data.c", 88 "math/erff.c", 89 "math/erff_data.c", 90 ], 91 srcs: [ 92 "math/*.c", 93 ], 94 95 // arch-specific settings 96 arch: { 97 arm64: { 98 cflags: [ 99 "-DHAVE_FAST_FMA=1", 100 ], 101 }, 102 }, 103 104 target: { 105 darwin: { 106 enabled: false, 107 }, 108 linux_bionic: { 109 enabled: true, 110 }, 111 }, 112} 113 114cc_library_static { 115 name: "libarm-optimized-routines-string", 116 defaults: ["libarm-optimized-routines-defaults"], 117 118 arch: { 119 arm64: { 120 srcs: [ 121 "string/aarch64/memchr-mte.S", 122 "string/aarch64/memchr-sve.S", 123 "string/aarch64/memchr.S", 124 "string/aarch64/memcmp-sve.S", 125 "string/aarch64/memcmp.S", 126 "string/aarch64/memcpy-advsimd.S", 127 "string/aarch64/memcpy-sve.S", 128 "string/aarch64/memcpy.S", 129 "string/aarch64/memrchr.S", 130 "string/aarch64/memset.S", 131 "string/aarch64/stpcpy-sve.S", 132 "string/aarch64/stpcpy.S", 133 "string/aarch64/strchrnul-mte.S", 134 "string/aarch64/strchrnul-sve.S", 135 "string/aarch64/strchrnul.S", 136 "string/aarch64/strchr-mte.S", 137 "string/aarch64/strchr-sve.S", 138 "string/aarch64/strchr.S", 139 "string/aarch64/strcmp-sve.S", 140 "string/aarch64/strcmp.S", 141 "string/aarch64/strcpy-sve.S", 142 "string/aarch64/strcpy.S", 143 "string/aarch64/strlen-mte.S", 144 "string/aarch64/strlen-sve.S", 145 "string/aarch64/strlen.S", 146 "string/aarch64/strncmp-sve.S", 147 "string/aarch64/strncmp.S", 148 "string/aarch64/strnlen-sve.S", 149 "string/aarch64/strnlen.S", 150 "string/aarch64/strrchr-mte.S", 151 "string/aarch64/strrchr-sve.S", 152 "string/aarch64/strrchr.S", 153 ], 154 asflags: [ 155 "-march=armv8-a+sve", 156 ] 157 }, 158 }, 159} 160 161// Memory intrinsics for bare-metal Rust binaries. 162cc_library_static { 163 name: "libarm-optimized-routines-mem", 164 nocrt: true, 165 system_shared_libs: [], 166 stl: "none", 167 sanitize: { 168 hwaddress: false, 169 }, 170 arch: { 171 arm64: { 172 srcs: [ 173 "string/aarch64/memchr.S", 174 "string/aarch64/memcmp.S", 175 "string/aarch64/memcpy.S", 176 "string/aarch64/memrchr.S", 177 "string/aarch64/memset.S", 178 "string/aarch64/stpcpy.S", 179 "string/aarch64/strchr.S", 180 "string/aarch64/strchrnul.S", 181 "string/aarch64/strcmp.S", 182 "string/aarch64/strcpy.S", 183 "string/aarch64/strlen.S", 184 "string/aarch64/strncmp.S", 185 "string/aarch64/strnlen.S", 186 "string/aarch64/strrchr.S", 187 ], 188 asflags: [ 189 "-D__memchr_aarch64=memchr", 190 "-D__memcmp_aarch64=memcmp", 191 "-D__memcpy_aarch64=memcpy", 192 "-D__memmove_aarch64=memmove", 193 "-D__memrchr_aarch64=memrchr", 194 "-D__memset_aarch64=memset", 195 "-D__stpcpy_aarch64=stpcpy", 196 "-D__strchr_aarch64=strchr", 197 "-D__strchrnul_aarch64=strchrnul", 198 "-D__strcmp_aarch64=strcmp", 199 "-D__strcpy_aarch64=strcpy", 200 "-D__strlen_aarch64=strlen", 201 "-D__strncmp_aarch64=strncmp", 202 "-D__strnlen_aarch64=strnlen", 203 "-D__strrchr_aarch64=strrchr", 204 ], 205 }, 206 }, 207 visibility: ["//bionic/libc"], 208} 209 210// adb shell "/data/nativetest64/mathtest/mathtest /data/nativetest64/mathtest/test/testcases/directed/*" 211// adb shell "/data/nativetest/mathtest/mathtest /data/nativetest/mathtest/test/testcases/directed/*" 212cc_test { 213 name: "mathtest", 214 defaults: ["arm-optimized-routines-defaults"], 215 gtest: false, 216 cflags: ["-Wno-missing-braces"], 217 srcs: ["math/test/mathtest.c"], 218 data: ["math/test/testcases/directed/*.tst"], 219 target: { 220 darwin: { 221 enabled: false, 222 }, 223 linux_bionic: { 224 enabled: true, 225 }, 226 }, 227} 228 229cc_test { 230 name: "ulp", 231 defaults: ["arm-optimized-routines-defaults"], 232 gtest: false, 233 234 // https://github.com/ARM-software/optimized-routines/issues/53 235 local_include_dirs: ["math/"], 236 237 srcs: ["math/test/ulp.c"], 238 data: ["math/test/runulp.sh"], 239} 240 241sh_test { 242 name: "arm-optimized-routines-tests", 243 src: "run-arm-optimized-routines-tests-on-android.sh", 244 filename: "run-arm-optimized-routines-tests-on-android.sh", 245 test_suites: ["general-tests"], 246 host_supported: true, 247 device_supported: false, 248 require_root: true, 249 target_required: [ 250 "mathtest", 251 "ulp", 252 ], 253} 254