Marat Dukhan | 08c4a43 | 2019-10-03 09:29:21 -0700 | [diff] [blame] | 1 | # cpuinfo, a library to detect information about the host CPU |
| 2 | package(default_visibility = ["//visibility:public"]) |
| 3 | |
| 4 | licenses(["notice"]) |
| 5 | |
| 6 | exports_files(["LICENSE"]) |
| 7 | |
| 8 | C99OPTS = [ |
| 9 | "-std=gnu99", # gnu99, not c99, because dprintf is used |
| 10 | "-Wno-vla", |
| 11 | "-D_GNU_SOURCE=1", # to use CPU_SETSIZE |
| 12 | "-DCPUINFO_INTERNAL=", |
| 13 | "-DCPUINFO_PRIVATE=", |
| 14 | ] |
| 15 | |
| 16 | # Source code common to all platforms. |
| 17 | COMMON_SRCS = [ |
| 18 | "src/api.c", |
| 19 | "src/init.c", |
Marat Dukhan | 1f5d9bc | 2020-01-02 09:11:16 -0800 | [diff] [blame] | 20 | "src/cache.c", |
Marat Dukhan | 08c4a43 | 2019-10-03 09:29:21 -0700 | [diff] [blame] | 21 | ] |
| 22 | |
| 23 | # Architecture-specific sources and headers. |
| 24 | X86_SRCS = [ |
| 25 | "src/x86/cache/descriptor.c", |
| 26 | "src/x86/cache/deterministic.c", |
| 27 | "src/x86/cache/init.c", |
| 28 | "src/x86/info.c", |
| 29 | "src/x86/init.c", |
| 30 | "src/x86/isa.c", |
| 31 | "src/x86/name.c", |
| 32 | "src/x86/topology.c", |
| 33 | "src/x86/uarch.c", |
| 34 | "src/x86/vendor.c", |
| 35 | ] |
| 36 | |
| 37 | ARM_SRCS = [ |
| 38 | "src/arm/cache.c", |
| 39 | "src/arm/uarch.c", |
| 40 | ] |
| 41 | |
| 42 | # Platform-specific sources and headers |
| 43 | LINUX_SRCS = [ |
| 44 | "src/linux/cpulist.c", |
Marat Dukhan | 08c4a43 | 2019-10-03 09:29:21 -0700 | [diff] [blame] | 45 | "src/linux/multiline.c", |
| 46 | "src/linux/processors.c", |
| 47 | "src/linux/smallfile.c", |
| 48 | ] |
| 49 | |
| 50 | MOCK_LINUX_SRCS = [ |
| 51 | "src/linux/mockfile.c", |
| 52 | ] |
| 53 | |
| 54 | MACH_SRCS = [ |
| 55 | "src/mach/topology.c", |
| 56 | ] |
| 57 | |
| 58 | EMSCRIPTEN_SRCS = [ |
| 59 | "src/emscripten/init.c", |
| 60 | ] |
| 61 | |
Marat Dukhan | 08c4a43 | 2019-10-03 09:29:21 -0700 | [diff] [blame] | 62 | LINUX_X86_SRCS = [ |
| 63 | "src/x86/linux/cpuinfo.c", |
| 64 | "src/x86/linux/init.c", |
| 65 | ] |
| 66 | |
| 67 | LINUX_ARM_SRCS = [ |
| 68 | "src/arm/linux/chipset.c", |
| 69 | "src/arm/linux/clusters.c", |
| 70 | "src/arm/linux/cpuinfo.c", |
| 71 | "src/arm/linux/hwcap.c", |
| 72 | "src/arm/linux/init.c", |
| 73 | "src/arm/linux/midr.c", |
| 74 | ] |
| 75 | |
| 76 | LINUX_ARM32_SRCS = LINUX_ARM_SRCS + ["src/arm/linux/aarch32-isa.c"] |
| 77 | |
| 78 | LINUX_ARM64_SRCS = LINUX_ARM_SRCS + ["src/arm/linux/aarch64-isa.c"] |
| 79 | |
| 80 | ANDROID_ARM_SRCS = [ |
| 81 | "src/arm/android/properties.c", |
| 82 | ] |
| 83 | |
| 84 | WINDOWS_X86_SRCS = [ |
| 85 | "src/x86/windows/init.c", |
| 86 | ] |
| 87 | |
| 88 | MACH_X86_SRCS = [ |
| 89 | "src/x86/mach/init.c", |
| 90 | ] |
| 91 | |
| 92 | MACH_ARM_SRCS = [ |
| 93 | "src/arm/mach/init.c", |
| 94 | ] |
| 95 | |
| 96 | cc_library( |
| 97 | name = "cpuinfo_impl", |
| 98 | srcs = select({ |
| 99 | ":linux_x86_64": COMMON_SRCS + X86_SRCS + LINUX_SRCS + LINUX_X86_SRCS, |
Marat Dukhan | 8fa6610 | 2020-04-30 16:56:45 -0700 | [diff] [blame] | 100 | ":linux_arm": COMMON_SRCS + ARM_SRCS + LINUX_SRCS + LINUX_ARM32_SRCS, |
Marat Dukhan | f0bd4de | 2020-06-15 15:53:19 -0700 | [diff] [blame] | 101 | ":linux_armeabi": COMMON_SRCS + ARM_SRCS + LINUX_SRCS + LINUX_ARM32_SRCS, |
Marat Dukhan | 8fa6610 | 2020-04-30 16:56:45 -0700 | [diff] [blame] | 102 | ":linux_armhf": COMMON_SRCS + ARM_SRCS + LINUX_SRCS + LINUX_ARM32_SRCS, |
Marat Dukhan | a720e93 | 2020-06-10 13:01:11 -0700 | [diff] [blame] | 103 | ":linux_armv7a": COMMON_SRCS + ARM_SRCS + LINUX_SRCS + LINUX_ARM32_SRCS, |
Marat Dukhan | 91eb942 | 2020-03-24 00:17:11 -0700 | [diff] [blame] | 104 | ":linux_aarch64": COMMON_SRCS + ARM_SRCS + LINUX_SRCS + LINUX_ARM64_SRCS, |
Marat Dukhan | 885ca24 | 2019-10-07 09:17:32 -0700 | [diff] [blame] | 105 | ":macos_x86_64": COMMON_SRCS + X86_SRCS + MACH_SRCS + MACH_X86_SRCS, |
Simon Maurer | 2de19cd | 2021-03-03 14:20:21 +0100 | [diff] [blame] | 106 | ":macos_arm64": COMMON_SRCS + MACH_SRCS + MACH_ARM_SRCS, |
Marat Dukhan | 10a3808 | 2020-04-17 03:58:35 -0700 | [diff] [blame] | 107 | ":windows_x86_64": COMMON_SRCS + X86_SRCS + WINDOWS_X86_SRCS, |
Marat Dukhan | 08c4a43 | 2019-10-03 09:29:21 -0700 | [diff] [blame] | 108 | ":android_armv7": COMMON_SRCS + ARM_SRCS + LINUX_SRCS + LINUX_ARM32_SRCS + ANDROID_ARM_SRCS, |
| 109 | ":android_arm64": COMMON_SRCS + ARM_SRCS + LINUX_SRCS + LINUX_ARM64_SRCS + ANDROID_ARM_SRCS, |
| 110 | ":android_x86": COMMON_SRCS + X86_SRCS + LINUX_SRCS + LINUX_X86_SRCS, |
| 111 | ":android_x86_64": COMMON_SRCS + X86_SRCS + LINUX_SRCS + LINUX_X86_SRCS, |
Marat Dukhan | 1498d1d | 2020-02-11 20:00:05 -0800 | [diff] [blame] | 112 | ":ios_x86_64": COMMON_SRCS + X86_SRCS + MACH_SRCS + MACH_X86_SRCS, |
| 113 | ":ios_x86": COMMON_SRCS + X86_SRCS + MACH_SRCS + MACH_X86_SRCS, |
| 114 | ":ios_armv7": COMMON_SRCS + MACH_SRCS + MACH_ARM_SRCS, |
| 115 | ":ios_arm64": COMMON_SRCS + MACH_SRCS + MACH_ARM_SRCS, |
| 116 | ":ios_arm64e": COMMON_SRCS + MACH_SRCS + MACH_ARM_SRCS, |
XNNPACK Team | 708874b | 2022-01-24 13:55:04 -0800 | [diff] [blame] | 117 | ":ios_sim_arm64": COMMON_SRCS + MACH_SRCS + MACH_ARM_SRCS, |
Marat Dukhan | 1498d1d | 2020-02-11 20:00:05 -0800 | [diff] [blame] | 118 | ":watchos_x86_64": COMMON_SRCS + X86_SRCS + MACH_SRCS + MACH_X86_SRCS, |
| 119 | ":watchos_x86": COMMON_SRCS + X86_SRCS + MACH_SRCS + MACH_X86_SRCS, |
| 120 | ":watchos_armv7k": COMMON_SRCS + MACH_SRCS + MACH_ARM_SRCS, |
| 121 | ":watchos_arm64_32": COMMON_SRCS + MACH_SRCS + MACH_ARM_SRCS, |
| 122 | ":tvos_x86_64": COMMON_SRCS + X86_SRCS + MACH_SRCS + MACH_X86_SRCS, |
| 123 | ":tvos_arm64": COMMON_SRCS + MACH_SRCS + MACH_ARM_SRCS, |
Marat Dukhan | a7d7c11 | 2020-05-04 12:13:04 -0700 | [diff] [blame] | 124 | ":emscripten": COMMON_SRCS + EMSCRIPTEN_SRCS, |
Marat Dukhan | 08c4a43 | 2019-10-03 09:29:21 -0700 | [diff] [blame] | 125 | }), |
Marat Dukhan | 10a3808 | 2020-04-17 03:58:35 -0700 | [diff] [blame] | 126 | copts = select({ |
| 127 | ":windows_x86_64": [], |
| 128 | "//conditions:default": C99OPTS, |
| 129 | }) + [ |
Marat Dukhan | 08c4a43 | 2019-10-03 09:29:21 -0700 | [diff] [blame] | 130 | "-Iexternal/cpuinfo/include", |
| 131 | "-Iexternal/cpuinfo/src", |
| 132 | ], |
| 133 | linkstatic = True, |
| 134 | # Headers must be in textual_hdrs to allow us to set the standard to C99 |
| 135 | textual_hdrs = [ |
| 136 | "include/cpuinfo.h", |
| 137 | "src/linux/api.h", |
| 138 | "src/mach/api.h", |
| 139 | "src/cpuinfo/common.h", |
| 140 | "src/cpuinfo/internal-api.h", |
| 141 | "src/cpuinfo/log.h", |
| 142 | "src/cpuinfo/utils.h", |
| 143 | "src/x86/api.h", |
| 144 | "src/x86/cpuid.h", |
| 145 | "src/x86/linux/api.h", |
| 146 | "src/arm/android/api.h", |
| 147 | "src/arm/linux/api.h", |
| 148 | "src/arm/linux/cp.h", |
| 149 | "src/arm/api.h", |
| 150 | "src/arm/midr.h", |
| 151 | ], |
| 152 | deps = [ |
| 153 | "@clog", |
| 154 | ], |
| 155 | ) |
| 156 | |
| 157 | cc_library( |
| 158 | name = "cpuinfo", |
| 159 | hdrs = [ |
| 160 | "include/cpuinfo.h", |
| 161 | ], |
| 162 | strip_include_prefix = "include", |
| 163 | deps = [ |
| 164 | ":cpuinfo_impl", |
| 165 | ], |
| 166 | ) |
| 167 | |
| 168 | ############################# Build configurations ############################# |
| 169 | |
| 170 | config_setting( |
| 171 | name = "linux_x86_64", |
| 172 | values = {"cpu": "k8"}, |
Marat Dukhan | 91eb942 | 2020-03-24 00:17:11 -0700 | [diff] [blame] | 173 | ) |
| 174 | |
| 175 | config_setting( |
Marat Dukhan | 8fa6610 | 2020-04-30 16:56:45 -0700 | [diff] [blame] | 176 | name = "linux_arm", |
| 177 | values = {"cpu": "arm"}, |
| 178 | ) |
| 179 | |
| 180 | config_setting( |
Marat Dukhan | f0bd4de | 2020-06-15 15:53:19 -0700 | [diff] [blame] | 181 | name = "linux_armeabi", |
| 182 | values = {"cpu": "armeabi"}, |
| 183 | ) |
| 184 | |
| 185 | config_setting( |
Marat Dukhan | 8fa6610 | 2020-04-30 16:56:45 -0700 | [diff] [blame] | 186 | name = "linux_armhf", |
| 187 | values = {"cpu": "armhf"}, |
| 188 | ) |
| 189 | |
| 190 | config_setting( |
Marat Dukhan | a720e93 | 2020-06-10 13:01:11 -0700 | [diff] [blame] | 191 | name = "linux_armv7a", |
| 192 | values = {"cpu": "armv7a"}, |
| 193 | ) |
| 194 | |
| 195 | config_setting( |
Marat Dukhan | 91eb942 | 2020-03-24 00:17:11 -0700 | [diff] [blame] | 196 | name = "linux_aarch64", |
| 197 | values = {"cpu": "aarch64"}, |
Marat Dukhan | 08c4a43 | 2019-10-03 09:29:21 -0700 | [diff] [blame] | 198 | ) |
| 199 | |
| 200 | config_setting( |
Marat Dukhan | 885ca24 | 2019-10-07 09:17:32 -0700 | [diff] [blame] | 201 | name = "macos_x86_64", |
| 202 | values = { |
| 203 | "apple_platform_type": "macos", |
| 204 | "cpu": "darwin", |
| 205 | }, |
| 206 | ) |
| 207 | |
| 208 | config_setting( |
Simon Maurer | 2de19cd | 2021-03-03 14:20:21 +0100 | [diff] [blame] | 209 | name = "macos_arm64", |
| 210 | values = { |
| 211 | "apple_platform_type": "macos", |
| 212 | "cpu": "darwin_arm64", |
| 213 | }, |
| 214 | ) |
| 215 | |
| 216 | config_setting( |
Marat Dukhan | 10a3808 | 2020-04-17 03:58:35 -0700 | [diff] [blame] | 217 | name = "windows_x86_64", |
| 218 | values = {"cpu": "x64_windows"}, |
| 219 | ) |
| 220 | |
| 221 | config_setting( |
Marat Dukhan | 08c4a43 | 2019-10-03 09:29:21 -0700 | [diff] [blame] | 222 | name = "android_armv7", |
| 223 | values = { |
| 224 | "crosstool_top": "//external:android/crosstool", |
| 225 | "cpu": "armeabi-v7a", |
| 226 | }, |
| 227 | visibility = ["//visibility:public"], |
| 228 | ) |
| 229 | |
| 230 | config_setting( |
| 231 | name = "android_arm64", |
| 232 | values = { |
| 233 | "crosstool_top": "//external:android/crosstool", |
| 234 | "cpu": "arm64-v8a", |
| 235 | }, |
| 236 | visibility = ["//visibility:public"], |
| 237 | ) |
| 238 | |
| 239 | config_setting( |
| 240 | name = "android_x86", |
| 241 | values = { |
| 242 | "crosstool_top": "//external:android/crosstool", |
| 243 | "cpu": "x86", |
| 244 | }, |
| 245 | visibility = ["//visibility:public"], |
| 246 | ) |
| 247 | |
| 248 | config_setting( |
| 249 | name = "android_x86_64", |
| 250 | values = { |
| 251 | "crosstool_top": "//external:android/crosstool", |
| 252 | "cpu": "x86_64", |
| 253 | }, |
| 254 | visibility = ["//visibility:public"], |
| 255 | ) |
| 256 | |
| 257 | config_setting( |
Marat Dukhan | 1498d1d | 2020-02-11 20:00:05 -0800 | [diff] [blame] | 258 | name = "ios_armv7", |
| 259 | values = { |
Marat Dukhan | f85fc33 | 2020-02-13 00:05:20 -0800 | [diff] [blame] | 260 | "apple_platform_type": "ios", |
Marat Dukhan | 1498d1d | 2020-02-11 20:00:05 -0800 | [diff] [blame] | 261 | "cpu": "ios_armv7", |
| 262 | }, |
| 263 | ) |
| 264 | |
| 265 | config_setting( |
| 266 | name = "ios_arm64", |
| 267 | values = { |
Marat Dukhan | f85fc33 | 2020-02-13 00:05:20 -0800 | [diff] [blame] | 268 | "apple_platform_type": "ios", |
Marat Dukhan | 1498d1d | 2020-02-11 20:00:05 -0800 | [diff] [blame] | 269 | "cpu": "ios_arm64", |
| 270 | }, |
| 271 | ) |
| 272 | |
| 273 | config_setting( |
| 274 | name = "ios_arm64e", |
| 275 | values = { |
Marat Dukhan | f85fc33 | 2020-02-13 00:05:20 -0800 | [diff] [blame] | 276 | "apple_platform_type": "ios", |
Marat Dukhan | 1498d1d | 2020-02-11 20:00:05 -0800 | [diff] [blame] | 277 | "cpu": "ios_arm64e", |
| 278 | }, |
| 279 | ) |
| 280 | |
| 281 | config_setting( |
XNNPACK Team | 708874b | 2022-01-24 13:55:04 -0800 | [diff] [blame] | 282 | name = "ios_sim_arm64", |
| 283 | values = { |
| 284 | "apple_platform_type": "ios", |
| 285 | "cpu": "ios_sim_arm64", |
| 286 | }, |
| 287 | ) |
| 288 | |
| 289 | config_setting( |
Marat Dukhan | 1498d1d | 2020-02-11 20:00:05 -0800 | [diff] [blame] | 290 | name = "ios_x86", |
| 291 | values = { |
Marat Dukhan | f85fc33 | 2020-02-13 00:05:20 -0800 | [diff] [blame] | 292 | "apple_platform_type": "ios", |
Marat Dukhan | 1498d1d | 2020-02-11 20:00:05 -0800 | [diff] [blame] | 293 | "cpu": "ios_i386", |
| 294 | }, |
| 295 | ) |
| 296 | |
| 297 | config_setting( |
| 298 | name = "ios_x86_64", |
| 299 | values = { |
Marat Dukhan | f85fc33 | 2020-02-13 00:05:20 -0800 | [diff] [blame] | 300 | "apple_platform_type": "ios", |
Marat Dukhan | 1498d1d | 2020-02-11 20:00:05 -0800 | [diff] [blame] | 301 | "cpu": "ios_x86_64", |
| 302 | }, |
| 303 | ) |
| 304 | |
| 305 | config_setting( |
| 306 | name = "watchos_armv7k", |
| 307 | values = { |
Marat Dukhan | f85fc33 | 2020-02-13 00:05:20 -0800 | [diff] [blame] | 308 | "apple_platform_type": "watchos", |
Marat Dukhan | 1498d1d | 2020-02-11 20:00:05 -0800 | [diff] [blame] | 309 | "cpu": "watchos_armv7k", |
| 310 | }, |
| 311 | ) |
| 312 | |
| 313 | config_setting( |
| 314 | name = "watchos_arm64_32", |
| 315 | values = { |
Marat Dukhan | f85fc33 | 2020-02-13 00:05:20 -0800 | [diff] [blame] | 316 | "apple_platform_type": "watchos", |
Marat Dukhan | 1498d1d | 2020-02-11 20:00:05 -0800 | [diff] [blame] | 317 | "cpu": "watchos_arm64_32", |
| 318 | }, |
| 319 | ) |
| 320 | |
| 321 | config_setting( |
| 322 | name = "watchos_x86", |
| 323 | values = { |
Marat Dukhan | f85fc33 | 2020-02-13 00:05:20 -0800 | [diff] [blame] | 324 | "apple_platform_type": "watchos", |
Marat Dukhan | 1498d1d | 2020-02-11 20:00:05 -0800 | [diff] [blame] | 325 | "cpu": "watchos_i386", |
| 326 | }, |
| 327 | ) |
| 328 | |
| 329 | config_setting( |
| 330 | name = "watchos_x86_64", |
| 331 | values = { |
Marat Dukhan | f85fc33 | 2020-02-13 00:05:20 -0800 | [diff] [blame] | 332 | "apple_platform_type": "watchos", |
Marat Dukhan | 1498d1d | 2020-02-11 20:00:05 -0800 | [diff] [blame] | 333 | "cpu": "watchos_x86_64", |
| 334 | }, |
| 335 | ) |
| 336 | |
| 337 | config_setting( |
| 338 | name = "tvos_arm64", |
| 339 | values = { |
Marat Dukhan | f85fc33 | 2020-02-13 00:05:20 -0800 | [diff] [blame] | 340 | "apple_platform_type": "tvos", |
Marat Dukhan | 1498d1d | 2020-02-11 20:00:05 -0800 | [diff] [blame] | 341 | "cpu": "tvos_arm64", |
| 342 | }, |
| 343 | ) |
| 344 | |
| 345 | config_setting( |
| 346 | name = "tvos_x86_64", |
| 347 | values = { |
Marat Dukhan | f85fc33 | 2020-02-13 00:05:20 -0800 | [diff] [blame] | 348 | "apple_platform_type": "tvos", |
Marat Dukhan | 1498d1d | 2020-02-11 20:00:05 -0800 | [diff] [blame] | 349 | "cpu": "tvos_x86_64", |
| 350 | }, |
| 351 | ) |
| 352 | |
| 353 | config_setting( |
Marat Dukhan | a7d7c11 | 2020-05-04 12:13:04 -0700 | [diff] [blame] | 354 | name = "emscripten", |
| 355 | values = {"crosstool_top": "//toolchain:emscripten"}, |
Marat Dukhan | 08c4a43 | 2019-10-03 09:29:21 -0700 | [diff] [blame] | 356 | ) |