1*eca53ba6SRoland Levillain// This Blueprint file loosely follows the logic of cpu_features' 2*eca53ba6SRoland Levillain// CMakeLists.txt and test/CMakeLists.txt files. 3*eca53ba6SRoland Levillain 4*eca53ba6SRoland Levillainpackage { 5*eca53ba6SRoland Levillain default_applicable_licenses: ["external_cpu_features_license"], 6*eca53ba6SRoland Levillain} 7*eca53ba6SRoland Levillain 8*eca53ba6SRoland Levillain// Added automatically by a large-scale-change that took the approach of 9*eca53ba6SRoland Levillain// 'apply every license found to every target'. While this makes sure we respect 10*eca53ba6SRoland Levillain// every license restriction, it may not be entirely correct. 11*eca53ba6SRoland Levillain// 12*eca53ba6SRoland Levillain// e.g. GPL in an MIT project might only apply to the contrib/ directory. 13*eca53ba6SRoland Levillain// 14*eca53ba6SRoland Levillain// Please consider splitting the single license below into multiple licenses, 15*eca53ba6SRoland Levillain// taking care not to lose any license_kind information, and overriding the 16*eca53ba6SRoland Levillain// default license using the 'licenses: [...]' property on targets as needed. 17*eca53ba6SRoland Levillain// 18*eca53ba6SRoland Levillain// For unused files, consider creating a 'fileGroup' with "//visibility:private" 19*eca53ba6SRoland Levillain// to attach the license to, and including a comment whether the files may be 20*eca53ba6SRoland Levillain// used in the current project. 21*eca53ba6SRoland Levillain// See: http://go/android-license-faq 22*eca53ba6SRoland Levillainlicense { 23*eca53ba6SRoland Levillain name: "external_cpu_features_license", 24*eca53ba6SRoland Levillain visibility: [":__subpackages__"], 25*eca53ba6SRoland Levillain license_kinds: [ 26*eca53ba6SRoland Levillain "SPDX-license-identifier-Apache-2.0", 27*eca53ba6SRoland Levillain "SPDX-license-identifier-BSD", 28*eca53ba6SRoland Levillain ], 29*eca53ba6SRoland Levillain license_text: [ 30*eca53ba6SRoland Levillain "LICENSE", 31*eca53ba6SRoland Levillain ], 32*eca53ba6SRoland Levillain} 33*eca53ba6SRoland Levillain 34*eca53ba6SRoland Levillaincc_defaults { 35*eca53ba6SRoland Levillain name: "cpu_features-defaults", 36*eca53ba6SRoland Levillain host_supported: true, 37*eca53ba6SRoland Levillain local_include_dirs: [ 38*eca53ba6SRoland Levillain "include", 39*eca53ba6SRoland Levillain ], 40*eca53ba6SRoland Levillain cflags: [ 41*eca53ba6SRoland Levillain // Reserve 1024 bytes on the stack when reading from `/proc/cpuinfo`. 42*eca53ba6SRoland Levillain "-DSTACK_LINE_READER_BUFFER_SIZE=1024", 43*eca53ba6SRoland Levillain "-Wno-gnu-designator", 44*eca53ba6SRoland Levillain ], 45*eca53ba6SRoland Levillain min_sdk_version: "S", 46*eca53ba6SRoland Levillain} 47*eca53ba6SRoland Levillain 48*eca53ba6SRoland Levillaincc_library { 49*eca53ba6SRoland Levillain name: "libcpu_features-utils", 50*eca53ba6SRoland Levillain defaults: ["cpu_features-defaults"], 51*eca53ba6SRoland Levillain srcs: [ 52*eca53ba6SRoland Levillain "src/filesystem.c", 53*eca53ba6SRoland Levillain "src/stack_line_reader.c", 54*eca53ba6SRoland Levillain "src/string_view.c", 55*eca53ba6SRoland Levillain ], 56*eca53ba6SRoland Levillain target: { 57*eca53ba6SRoland Levillain windows: { 58*eca53ba6SRoland Levillain enabled: true, 59*eca53ba6SRoland Levillain }, 60*eca53ba6SRoland Levillain }, 61*eca53ba6SRoland Levillain apex_available: [ 62*eca53ba6SRoland Levillain "com.android.art", 63*eca53ba6SRoland Levillain "com.android.art.debug", 64*eca53ba6SRoland Levillain ], 65*eca53ba6SRoland Levillain} 66*eca53ba6SRoland Levillain 67*eca53ba6SRoland Levillaincc_library { 68*eca53ba6SRoland Levillain name: "libcpu_features-hwcaps", 69*eca53ba6SRoland Levillain defaults: ["cpu_features-defaults"], 70*eca53ba6SRoland Levillain srcs: [ 71*eca53ba6SRoland Levillain "src/hwcaps.c", 72*eca53ba6SRoland Levillain ], 73*eca53ba6SRoland Levillain cflags: [ 74*eca53ba6SRoland Levillain "-DHAVE_DLFCN_H", 75*eca53ba6SRoland Levillain ], 76*eca53ba6SRoland Levillain target: { 77*eca53ba6SRoland Levillain bionic: { 78*eca53ba6SRoland Levillain cflags: [ 79*eca53ba6SRoland Levillain "-DHAVE_STRONG_GETAUXVAL", 80*eca53ba6SRoland Levillain ], 81*eca53ba6SRoland Levillain }, 82*eca53ba6SRoland Levillain }, 83*eca53ba6SRoland Levillain static_libs: [ 84*eca53ba6SRoland Levillain "libcpu_features-utils", 85*eca53ba6SRoland Levillain ], 86*eca53ba6SRoland Levillain apex_available: [ 87*eca53ba6SRoland Levillain "com.android.art", 88*eca53ba6SRoland Levillain "com.android.art.debug", 89*eca53ba6SRoland Levillain ], 90*eca53ba6SRoland Levillain} 91*eca53ba6SRoland Levillain 92*eca53ba6SRoland Levillaincc_library { 93*eca53ba6SRoland Levillain name: "libcpu_features", 94*eca53ba6SRoland Levillain defaults: [ 95*eca53ba6SRoland Levillain "cpu_features-defaults", 96*eca53ba6SRoland Levillain ], 97*eca53ba6SRoland Levillain export_include_dirs: ["include"], 98*eca53ba6SRoland Levillain whole_static_libs: [ 99*eca53ba6SRoland Levillain "libcpu_features-utils", 100*eca53ba6SRoland Levillain ], 101*eca53ba6SRoland Levillain arch: { 102*eca53ba6SRoland Levillain arm: { 103*eca53ba6SRoland Levillain srcs: [ 104*eca53ba6SRoland Levillain "src/impl_arm_linux_or_android.c", 105*eca53ba6SRoland Levillain ], 106*eca53ba6SRoland Levillain whole_static_libs: [ 107*eca53ba6SRoland Levillain "libcpu_features-hwcaps", 108*eca53ba6SRoland Levillain ], 109*eca53ba6SRoland Levillain }, 110*eca53ba6SRoland Levillain arm64: { 111*eca53ba6SRoland Levillain srcs: [ 112*eca53ba6SRoland Levillain "src/impl_aarch64_linux_or_android.c", 113*eca53ba6SRoland Levillain ], 114*eca53ba6SRoland Levillain whole_static_libs: [ 115*eca53ba6SRoland Levillain "libcpu_features-hwcaps", 116*eca53ba6SRoland Levillain ], 117*eca53ba6SRoland Levillain cflags: [ 118*eca53ba6SRoland Levillain "-Wno-gnu-designator", 119*eca53ba6SRoland Levillain ], 120*eca53ba6SRoland Levillain }, 121*eca53ba6SRoland Levillain x86: { 122*eca53ba6SRoland Levillain srcs: [ 123*eca53ba6SRoland Levillain "src/impl_x86_linux_or_android.c", 124*eca53ba6SRoland Levillain ], 125*eca53ba6SRoland Levillain cflags: [ 126*eca53ba6SRoland Levillain "-Wno-unused-variable", 127*eca53ba6SRoland Levillain ], 128*eca53ba6SRoland Levillain }, 129*eca53ba6SRoland Levillain x86_64: { 130*eca53ba6SRoland Levillain srcs: [ 131*eca53ba6SRoland Levillain "src/impl_x86_linux_or_android.c", 132*eca53ba6SRoland Levillain ], 133*eca53ba6SRoland Levillain cflags: [ 134*eca53ba6SRoland Levillain "-Wno-unused-variable", 135*eca53ba6SRoland Levillain ], 136*eca53ba6SRoland Levillain }, 137*eca53ba6SRoland Levillain }, 138*eca53ba6SRoland Levillain target: { 139*eca53ba6SRoland Levillain windows: { 140*eca53ba6SRoland Levillain enabled: true, 141*eca53ba6SRoland Levillain }, 142*eca53ba6SRoland Levillain }, 143*eca53ba6SRoland Levillain apex_available: [ 144*eca53ba6SRoland Levillain "com.android.art", 145*eca53ba6SRoland Levillain "com.android.art.debug", 146*eca53ba6SRoland Levillain ], 147*eca53ba6SRoland Levillain} 148*eca53ba6SRoland Levillain 149*eca53ba6SRoland Levillaincc_binary { 150*eca53ba6SRoland Levillain name: "list_cpu_features", 151*eca53ba6SRoland Levillain defaults: [ 152*eca53ba6SRoland Levillain "cpu_features-defaults", 153*eca53ba6SRoland Levillain ], 154*eca53ba6SRoland Levillain srcs: [ 155*eca53ba6SRoland Levillain "src/utils/list_cpu_features.c", 156*eca53ba6SRoland Levillain ], 157*eca53ba6SRoland Levillain static_libs: [ 158*eca53ba6SRoland Levillain "libcpu_features", 159*eca53ba6SRoland Levillain ], 160*eca53ba6SRoland Levillain arch: { 161*eca53ba6SRoland Levillain // Function `AddCacheInfo` in `src/utils/list_cpu_features.c` is only used on x86/x86_64 and 162*eca53ba6SRoland Levillain // triggers an error with `-Werror and `-Wunused-function` on other architectures; disable 163*eca53ba6SRoland Levillain // the latter flag to avoid compilation errors on those architectures. 164*eca53ba6SRoland Levillain arm: { 165*eca53ba6SRoland Levillain cflags: [ 166*eca53ba6SRoland Levillain "-Wno-unused-function", 167*eca53ba6SRoland Levillain ], 168*eca53ba6SRoland Levillain }, 169*eca53ba6SRoland Levillain arm64: { 170*eca53ba6SRoland Levillain cflags: [ 171*eca53ba6SRoland Levillain "-Wno-unused-function", 172*eca53ba6SRoland Levillain ], 173*eca53ba6SRoland Levillain }, 174*eca53ba6SRoland Levillain x86: { 175*eca53ba6SRoland Levillain cflags: [ 176*eca53ba6SRoland Levillain "-Wno-deprecated-declarations", 177*eca53ba6SRoland Levillain ], 178*eca53ba6SRoland Levillain }, 179*eca53ba6SRoland Levillain x86_64: { 180*eca53ba6SRoland Levillain cflags: [ 181*eca53ba6SRoland Levillain "-Wno-deprecated-declarations", 182*eca53ba6SRoland Levillain ], 183*eca53ba6SRoland Levillain }, 184*eca53ba6SRoland Levillain }, 185*eca53ba6SRoland Levillain} 186*eca53ba6SRoland Levillain 187*eca53ba6SRoland Levillain// Tests. 188*eca53ba6SRoland Levillain 189*eca53ba6SRoland Levillaincc_defaults { 190*eca53ba6SRoland Levillain name: "cpu_features-test-defaults", 191*eca53ba6SRoland Levillain test_suites: ["device-tests"], 192*eca53ba6SRoland Levillain host_supported: true, 193*eca53ba6SRoland Levillain compile_multilib: "both", 194*eca53ba6SRoland Levillain local_include_dirs: [ 195*eca53ba6SRoland Levillain "include", 196*eca53ba6SRoland Levillain ], 197*eca53ba6SRoland Levillain cflags: [ 198*eca53ba6SRoland Levillain "-DCPU_FEATURES_TEST", 199*eca53ba6SRoland Levillain ], 200*eca53ba6SRoland Levillain} 201*eca53ba6SRoland Levillain 202*eca53ba6SRoland Levillaincc_test_library { 203*eca53ba6SRoland Levillain name: "libcpu_features-string_view", 204*eca53ba6SRoland Levillain defaults: ["cpu_features-test-defaults"], 205*eca53ba6SRoland Levillain srcs: [ 206*eca53ba6SRoland Levillain "src/string_view.c", 207*eca53ba6SRoland Levillain ], 208*eca53ba6SRoland Levillain} 209*eca53ba6SRoland Levillain 210*eca53ba6SRoland Levillaincc_test_library { 211*eca53ba6SRoland Levillain name: "libcpu_features-filesystem_for_testing", 212*eca53ba6SRoland Levillain defaults: ["cpu_features-test-defaults"], 213*eca53ba6SRoland Levillain cflags: [ 214*eca53ba6SRoland Levillain "-DCPU_FEATURES_MOCK_FILESYSTEM", 215*eca53ba6SRoland Levillain // TODO: Handle unused parameters in 216*eca53ba6SRoland Levillain // test/filesystem_for_testing.cc and remove this flag. 217*eca53ba6SRoland Levillain "-Wno-unused-parameter", 218*eca53ba6SRoland Levillain ], 219*eca53ba6SRoland Levillain srcs: [ 220*eca53ba6SRoland Levillain "test/filesystem_for_testing.cc", 221*eca53ba6SRoland Levillain ], 222*eca53ba6SRoland Levillain} 223*eca53ba6SRoland Levillain 224*eca53ba6SRoland Levillaincc_test_library { 225*eca53ba6SRoland Levillain name: "libcpu_features-hwcaps_for_testing", 226*eca53ba6SRoland Levillain defaults: ["cpu_features-test-defaults"], 227*eca53ba6SRoland Levillain cflags: [ 228*eca53ba6SRoland Levillain "-DCPU_FEATURES_MOCK_GET_ELF_HWCAP_FROM_GETAUXVAL", 229*eca53ba6SRoland Levillain "-DCPU_FEATURES_TEST", 230*eca53ba6SRoland Levillain ], 231*eca53ba6SRoland Levillain srcs: [ 232*eca53ba6SRoland Levillain "src/hwcaps.c", 233*eca53ba6SRoland Levillain "test/hwcaps_for_testing.cc", 234*eca53ba6SRoland Levillain ], 235*eca53ba6SRoland Levillain static_libs: [ 236*eca53ba6SRoland Levillain "libcpu_features-string_view", 237*eca53ba6SRoland Levillain "libcpu_features-filesystem_for_testing", 238*eca53ba6SRoland Levillain ], 239*eca53ba6SRoland Levillain} 240*eca53ba6SRoland Levillain 241*eca53ba6SRoland Levillaincc_defaults { 242*eca53ba6SRoland Levillain name: "stack_line_reader-defaults", 243*eca53ba6SRoland Levillain cflags: [ 244*eca53ba6SRoland Levillain "-DSTACK_LINE_READER_BUFFER_SIZE=1024", 245*eca53ba6SRoland Levillain ], 246*eca53ba6SRoland Levillain} 247*eca53ba6SRoland Levillain 248*eca53ba6SRoland Levillaincc_test_library { 249*eca53ba6SRoland Levillain name: "libcpu_features-stack_line_reader", 250*eca53ba6SRoland Levillain defaults: [ 251*eca53ba6SRoland Levillain "cpu_features-test-defaults", 252*eca53ba6SRoland Levillain "stack_line_reader-defaults", 253*eca53ba6SRoland Levillain ], 254*eca53ba6SRoland Levillain srcs: [ 255*eca53ba6SRoland Levillain "src/stack_line_reader.c", 256*eca53ba6SRoland Levillain ], 257*eca53ba6SRoland Levillain static_libs: [ 258*eca53ba6SRoland Levillain "libcpu_features-filesystem_for_testing", 259*eca53ba6SRoland Levillain "libcpu_features-string_view", 260*eca53ba6SRoland Levillain ], 261*eca53ba6SRoland Levillain} 262*eca53ba6SRoland Levillain 263*eca53ba6SRoland Levillaincc_test_library { 264*eca53ba6SRoland Levillain name: "libcpu_features-stack_line_reader_for_test", 265*eca53ba6SRoland Levillain defaults: ["cpu_features-test-defaults"], 266*eca53ba6SRoland Levillain cflags: [ 267*eca53ba6SRoland Levillain "-DSTACK_LINE_READER_BUFFER_SIZE=16", 268*eca53ba6SRoland Levillain ], 269*eca53ba6SRoland Levillain srcs: [ 270*eca53ba6SRoland Levillain "src/stack_line_reader.c", 271*eca53ba6SRoland Levillain ], 272*eca53ba6SRoland Levillain whole_static_libs: [ 273*eca53ba6SRoland Levillain "libcpu_features-filesystem_for_testing", 274*eca53ba6SRoland Levillain "libcpu_features-string_view", 275*eca53ba6SRoland Levillain ], 276*eca53ba6SRoland Levillain} 277*eca53ba6SRoland Levillain 278*eca53ba6SRoland Levillaincc_test_library { 279*eca53ba6SRoland Levillain name: "libcpu_features-all_libraries", 280*eca53ba6SRoland Levillain defaults: [ 281*eca53ba6SRoland Levillain "cpu_features-test-defaults", 282*eca53ba6SRoland Levillain "stack_line_reader-defaults", 283*eca53ba6SRoland Levillain ], 284*eca53ba6SRoland Levillain whole_static_libs: [ 285*eca53ba6SRoland Levillain "libcpu_features-filesystem_for_testing", 286*eca53ba6SRoland Levillain "libcpu_features-hwcaps_for_testing", 287*eca53ba6SRoland Levillain "libcpu_features-stack_line_reader", 288*eca53ba6SRoland Levillain "libcpu_features-string_view", 289*eca53ba6SRoland Levillain ], 290*eca53ba6SRoland Levillain} 291*eca53ba6SRoland Levillain 292*eca53ba6SRoland Levillaincc_test { 293*eca53ba6SRoland Levillain name: "cpu_features-bit_utils_test", 294*eca53ba6SRoland Levillain defaults: ["cpu_features-test-defaults"], 295*eca53ba6SRoland Levillain srcs: [ 296*eca53ba6SRoland Levillain "test/bit_utils_test.cc", 297*eca53ba6SRoland Levillain ], 298*eca53ba6SRoland Levillain} 299*eca53ba6SRoland Levillain 300*eca53ba6SRoland Levillaincc_test { 301*eca53ba6SRoland Levillain name: "cpu_features-string_view_test", 302*eca53ba6SRoland Levillain defaults: ["cpu_features-test-defaults"], 303*eca53ba6SRoland Levillain srcs: [ 304*eca53ba6SRoland Levillain "test/string_view_test.cc", 305*eca53ba6SRoland Levillain "src/string_view.c", 306*eca53ba6SRoland Levillain ], 307*eca53ba6SRoland Levillain static_libs: [ 308*eca53ba6SRoland Levillain "libcpu_features-string_view", 309*eca53ba6SRoland Levillain ], 310*eca53ba6SRoland Levillain} 311*eca53ba6SRoland Levillain 312*eca53ba6SRoland Levillaincc_test { 313*eca53ba6SRoland Levillain name: "cpu_features-stack_line_reader_test", 314*eca53ba6SRoland Levillain defaults: [ 315*eca53ba6SRoland Levillain "cpu_features-test-defaults", 316*eca53ba6SRoland Levillain "stack_line_reader-defaults", 317*eca53ba6SRoland Levillain ], 318*eca53ba6SRoland Levillain cflags: [ 319*eca53ba6SRoland Levillain // TODO: Handle unused funtions in 320*eca53ba6SRoland Levillain // test/stack_line_reader_test.cc and remove this flag. 321*eca53ba6SRoland Levillain "-Wno-unused-function", 322*eca53ba6SRoland Levillain ], 323*eca53ba6SRoland Levillain srcs: [ 324*eca53ba6SRoland Levillain "test/stack_line_reader_test.cc", 325*eca53ba6SRoland Levillain ], 326*eca53ba6SRoland Levillain static_libs: [ 327*eca53ba6SRoland Levillain "libcpu_features-stack_line_reader_for_test", 328*eca53ba6SRoland Levillain ], 329*eca53ba6SRoland Levillain} 330*eca53ba6SRoland Levillain 331*eca53ba6SRoland Levillaincc_test { 332*eca53ba6SRoland Levillain name: "cpu_features-cpuinfo_test", 333*eca53ba6SRoland Levillain defaults: [ 334*eca53ba6SRoland Levillain "cpu_features-test-defaults", 335*eca53ba6SRoland Levillain ], 336*eca53ba6SRoland Levillain static_libs: [ 337*eca53ba6SRoland Levillain "libcpu_features-all_libraries", 338*eca53ba6SRoland Levillain ], 339*eca53ba6SRoland Levillain cflags: [ 340*eca53ba6SRoland Levillain "-DSTACK_LINE_READER_BUFFER_SIZE=1024", 341*eca53ba6SRoland Levillain ], 342*eca53ba6SRoland Levillain arch: { 343*eca53ba6SRoland Levillain x86: { 344*eca53ba6SRoland Levillain cflags: [ 345*eca53ba6SRoland Levillain "-DCPU_FEATURES_MOCK_CPUID_X86", 346*eca53ba6SRoland Levillain "-Wno-unused-variable", 347*eca53ba6SRoland Levillain "-Wno-deprecated-declarations", 348*eca53ba6SRoland Levillain ], 349*eca53ba6SRoland Levillain srcs: [ 350*eca53ba6SRoland Levillain "test/cpuinfo_x86_test.cc", 351*eca53ba6SRoland Levillain "src/impl_x86_linux_or_android.c", 352*eca53ba6SRoland Levillain ], 353*eca53ba6SRoland Levillain }, 354*eca53ba6SRoland Levillain x86_64: { 355*eca53ba6SRoland Levillain cflags: [ 356*eca53ba6SRoland Levillain "-DCPU_FEATURES_MOCK_CPUID_X86", 357*eca53ba6SRoland Levillain "-Wno-unused-variable", 358*eca53ba6SRoland Levillain "-Wno-deprecated-declarations", 359*eca53ba6SRoland Levillain ], 360*eca53ba6SRoland Levillain srcs: [ 361*eca53ba6SRoland Levillain "test/cpuinfo_x86_test.cc", 362*eca53ba6SRoland Levillain "src/impl_x86_linux_or_android.c", 363*eca53ba6SRoland Levillain ], 364*eca53ba6SRoland Levillain }, 365*eca53ba6SRoland Levillain arm: { 366*eca53ba6SRoland Levillain srcs: [ 367*eca53ba6SRoland Levillain "test/cpuinfo_arm_test.cc", 368*eca53ba6SRoland Levillain "src/impl_arm_linux_or_android.c", 369*eca53ba6SRoland Levillain ], 370*eca53ba6SRoland Levillain }, 371*eca53ba6SRoland Levillain arm64: { 372*eca53ba6SRoland Levillain cflags: [ 373*eca53ba6SRoland Levillain "-Wno-gnu-designator", 374*eca53ba6SRoland Levillain ], 375*eca53ba6SRoland Levillain srcs: [ 376*eca53ba6SRoland Levillain "test/cpuinfo_aarch64_test.cc", 377*eca53ba6SRoland Levillain "src/impl_aarch64_linux_or_android.c", 378*eca53ba6SRoland Levillain ], 379*eca53ba6SRoland Levillain }, 380*eca53ba6SRoland Levillain }, 381*eca53ba6SRoland Levillain} 382