1*4bdc9457SAndroid Build Coastguard Worker"""Build definitions and rules for XNNPACK.""" 2*4bdc9457SAndroid Build Coastguard Worker 3*4bdc9457SAndroid Build Coastguard Workerload(":emscripten.bzl", "xnnpack_emscripten_benchmark_linkopts", "xnnpack_emscripten_deps", "xnnpack_emscripten_minimal_linkopts", "xnnpack_emscripten_test_linkopts") 4*4bdc9457SAndroid Build Coastguard Worker 5*4bdc9457SAndroid Build Coastguard Workerdef xnnpack_visibility(): 6*4bdc9457SAndroid Build Coastguard Worker """Visibility of :XNNPACK target. 7*4bdc9457SAndroid Build Coastguard Worker 8*4bdc9457SAndroid Build Coastguard Worker All other targets have private visibility, and can not have external 9*4bdc9457SAndroid Build Coastguard Worker dependencies. 10*4bdc9457SAndroid Build Coastguard Worker """ 11*4bdc9457SAndroid Build Coastguard Worker return ["//visibility:public"] 12*4bdc9457SAndroid Build Coastguard Worker 13*4bdc9457SAndroid Build Coastguard Workerdef xnnpack_min_size_copts(): 14*4bdc9457SAndroid Build Coastguard Worker """Compiler flags for size-optimized builds.""" 15*4bdc9457SAndroid Build Coastguard Worker return ["-Os"] 16*4bdc9457SAndroid Build Coastguard Worker 17*4bdc9457SAndroid Build Coastguard Workerdef xnnpack_gcc_std_copts(): 18*4bdc9457SAndroid Build Coastguard Worker """GCC-like compiler flags to specify language standard for C sources.""" 19*4bdc9457SAndroid Build Coastguard Worker return ["-std=c99"] 20*4bdc9457SAndroid Build Coastguard Worker 21*4bdc9457SAndroid Build Coastguard Workerdef xnnpack_msvc_std_copts(): 22*4bdc9457SAndroid Build Coastguard Worker """MSVC compiler flags to specify language standard for C sources.""" 23*4bdc9457SAndroid Build Coastguard Worker return ["/Drestrict="] 24*4bdc9457SAndroid Build Coastguard Worker 25*4bdc9457SAndroid Build Coastguard Workerdef xnnpack_std_cxxopts(): 26*4bdc9457SAndroid Build Coastguard Worker """Compiler flags to specify language standard for C++ sources.""" 27*4bdc9457SAndroid Build Coastguard Worker return ["-std=gnu++11"] 28*4bdc9457SAndroid Build Coastguard Worker 29*4bdc9457SAndroid Build Coastguard Workerdef xnnpack_optional_ruy_copts(): 30*4bdc9457SAndroid Build Coastguard Worker """Compiler flags to optionally enable Ruy benchmarks.""" 31*4bdc9457SAndroid Build Coastguard Worker return [] 32*4bdc9457SAndroid Build Coastguard Worker 33*4bdc9457SAndroid Build Coastguard Workerdef xnnpack_optional_gemmlowp_copts(): 34*4bdc9457SAndroid Build Coastguard Worker """Compiler flags to optionally enable Gemmlowp benchmarks.""" 35*4bdc9457SAndroid Build Coastguard Worker return [] 36*4bdc9457SAndroid Build Coastguard Worker 37*4bdc9457SAndroid Build Coastguard Workerdef xnnpack_optional_tflite_copts(): 38*4bdc9457SAndroid Build Coastguard Worker """Compiler flags to optionally enable TensorFlow Lite benchmarks.""" 39*4bdc9457SAndroid Build Coastguard Worker return [] 40*4bdc9457SAndroid Build Coastguard Worker 41*4bdc9457SAndroid Build Coastguard Workerdef xnnpack_optional_dnnl_copts(): 42*4bdc9457SAndroid Build Coastguard Worker """Compiler flags to optionally enable Intel DNNL benchmarks.""" 43*4bdc9457SAndroid Build Coastguard Worker return [] 44*4bdc9457SAndroid Build Coastguard Worker 45*4bdc9457SAndroid Build Coastguard Workerdef xnnpack_optional_ruy_deps(): 46*4bdc9457SAndroid Build Coastguard Worker """Optional Ruy dependencies.""" 47*4bdc9457SAndroid Build Coastguard Worker return [] 48*4bdc9457SAndroid Build Coastguard Worker 49*4bdc9457SAndroid Build Coastguard Workerdef xnnpack_optional_gemmlowp_deps(): 50*4bdc9457SAndroid Build Coastguard Worker """Optional Gemmlowp dependencies.""" 51*4bdc9457SAndroid Build Coastguard Worker return [] 52*4bdc9457SAndroid Build Coastguard Worker 53*4bdc9457SAndroid Build Coastguard Workerdef xnnpack_optional_tflite_deps(): 54*4bdc9457SAndroid Build Coastguard Worker """Optional TensorFlow Lite dependencies.""" 55*4bdc9457SAndroid Build Coastguard Worker return [] 56*4bdc9457SAndroid Build Coastguard Worker 57*4bdc9457SAndroid Build Coastguard Workerdef xnnpack_optional_dnnl_deps(): 58*4bdc9457SAndroid Build Coastguard Worker """Optional Intel DNNL dependencies.""" 59*4bdc9457SAndroid Build Coastguard Worker return [] 60*4bdc9457SAndroid Build Coastguard Worker 61*4bdc9457SAndroid Build Coastguard Workerdef xnnpack_cc_library( 62*4bdc9457SAndroid Build Coastguard Worker name, 63*4bdc9457SAndroid Build Coastguard Worker srcs = [], 64*4bdc9457SAndroid Build Coastguard Worker x86_srcs = [], 65*4bdc9457SAndroid Build Coastguard Worker aarch32_srcs = [], 66*4bdc9457SAndroid Build Coastguard Worker aarch64_srcs = [], 67*4bdc9457SAndroid Build Coastguard Worker riscv_srcs = [], 68*4bdc9457SAndroid Build Coastguard Worker wasm_srcs = [], 69*4bdc9457SAndroid Build Coastguard Worker wasmsimd_srcs = [], 70*4bdc9457SAndroid Build Coastguard Worker wasmrelaxedsimd_srcs = [], 71*4bdc9457SAndroid Build Coastguard Worker copts = [], 72*4bdc9457SAndroid Build Coastguard Worker gcc_copts = [], 73*4bdc9457SAndroid Build Coastguard Worker msvc_copts = [], 74*4bdc9457SAndroid Build Coastguard Worker mingw_copts = [], 75*4bdc9457SAndroid Build Coastguard Worker msys_copts = [], 76*4bdc9457SAndroid Build Coastguard Worker gcc_x86_copts = [], 77*4bdc9457SAndroid Build Coastguard Worker msvc_x86_32_copts = [], 78*4bdc9457SAndroid Build Coastguard Worker msvc_x86_64_copts = [], 79*4bdc9457SAndroid Build Coastguard Worker aarch32_copts = [], 80*4bdc9457SAndroid Build Coastguard Worker aarch64_copts = [], 81*4bdc9457SAndroid Build Coastguard Worker riscv_copts = [], 82*4bdc9457SAndroid Build Coastguard Worker wasm_copts = [], 83*4bdc9457SAndroid Build Coastguard Worker wasmsimd_copts = [], 84*4bdc9457SAndroid Build Coastguard Worker wasmrelaxedsimd_copts = [], 85*4bdc9457SAndroid Build Coastguard Worker optimized_copts = ["-O2"], 86*4bdc9457SAndroid Build Coastguard Worker hdrs = [], 87*4bdc9457SAndroid Build Coastguard Worker defines = [], 88*4bdc9457SAndroid Build Coastguard Worker includes = [], 89*4bdc9457SAndroid Build Coastguard Worker deps = [], 90*4bdc9457SAndroid Build Coastguard Worker visibility = [], 91*4bdc9457SAndroid Build Coastguard Worker testonly = False): 92*4bdc9457SAndroid Build Coastguard Worker """C/C++/assembly library with architecture-specific configuration. 93*4bdc9457SAndroid Build Coastguard Worker 94*4bdc9457SAndroid Build Coastguard Worker Define a static library with architecture- and instruction-specific 95*4bdc9457SAndroid Build Coastguard Worker source files and/or compiler flags. 96*4bdc9457SAndroid Build Coastguard Worker 97*4bdc9457SAndroid Build Coastguard Worker Args: 98*4bdc9457SAndroid Build Coastguard Worker name: The name of the library target to define. 99*4bdc9457SAndroid Build Coastguard Worker srcs: The list of architecture-independent source files. 100*4bdc9457SAndroid Build Coastguard Worker x86_srcs: The list of x86-specific source files. 101*4bdc9457SAndroid Build Coastguard Worker aarch32_srcs: The list of AArch32-specific source files. 102*4bdc9457SAndroid Build Coastguard Worker aarch64_srcs: The list of AArch64-specific source files. 103*4bdc9457SAndroid Build Coastguard Worker riscv_srcs: The list of RISC-V-specific source files. 104*4bdc9457SAndroid Build Coastguard Worker wasm_srcs: The list of WebAssembly 1.0-specific source files. 105*4bdc9457SAndroid Build Coastguard Worker wasmsimd_srcs: The list of WebAssembly SIMD-specific source files. 106*4bdc9457SAndroid Build Coastguard Worker wasmrelaxedsimd_srcs: The list of WebAssembly Relaxed SIMD-specific 107*4bdc9457SAndroid Build Coastguard Worker source files. 108*4bdc9457SAndroid Build Coastguard Worker copts: The list of compiler flags to use in all builds. -I flags for 109*4bdc9457SAndroid Build Coastguard Worker include/ and src/ directories of XNNPACK are always prepended 110*4bdc9457SAndroid Build Coastguard Worker before these user-specified flags. 111*4bdc9457SAndroid Build Coastguard Worker gcc_copts: The list of compiler flags to use with GCC-like compilers. 112*4bdc9457SAndroid Build Coastguard Worker msvc_copts: The list of compiler flags to use with MSVC compiler. 113*4bdc9457SAndroid Build Coastguard Worker mingw_copts: The list of compiler flags to use with MinGW GCC compilers. 114*4bdc9457SAndroid Build Coastguard Worker msys_copts: The list of compiler flags to use with MSYS (Cygwin) GCC 115*4bdc9457SAndroid Build Coastguard Worker compilers. 116*4bdc9457SAndroid Build Coastguard Worker gcc_x86_copts: The list of GCC-like compiler flags to use in x86 (32-bit 117*4bdc9457SAndroid Build Coastguard Worker and 64-bit) builds. 118*4bdc9457SAndroid Build Coastguard Worker msvc_x86_32_copts: The list of MSVC compiler flags to use in x86 (32-bit) 119*4bdc9457SAndroid Build Coastguard Worker builds. 120*4bdc9457SAndroid Build Coastguard Worker msvc_x86_64_copts: The list of MSVC compiler flags to use in x86 (64-bit) 121*4bdc9457SAndroid Build Coastguard Worker builds. 122*4bdc9457SAndroid Build Coastguard Worker aarch32_copts: The list of compiler flags to use in AArch32 builds. 123*4bdc9457SAndroid Build Coastguard Worker aarch64_copts: The list of compiler flags to use in AArch64 builds. 124*4bdc9457SAndroid Build Coastguard Worker riscv_copts: The list of compiler flags to use in RISC-V builds. 125*4bdc9457SAndroid Build Coastguard Worker wasm_copts: The list of compiler flags to use in WebAssembly 1.0 builds. 126*4bdc9457SAndroid Build Coastguard Worker wasmsimd_copts: The list of compiler flags to use in WebAssembly SIMD 127*4bdc9457SAndroid Build Coastguard Worker builds. 128*4bdc9457SAndroid Build Coastguard Worker wasmrelaxedsimd_copts: The list of compiler flags to use in WebAssembly 129*4bdc9457SAndroid Build Coastguard Worker Relaxed SIMD builds. 130*4bdc9457SAndroid Build Coastguard Worker optimized_copts: The list of compiler flags to use in optimized builds. 131*4bdc9457SAndroid Build Coastguard Worker Defaults to -O2. 132*4bdc9457SAndroid Build Coastguard Worker hdrs: The list of header files published by this library to be textually 133*4bdc9457SAndroid Build Coastguard Worker included by sources in dependent rules. 134*4bdc9457SAndroid Build Coastguard Worker defines: List of predefines macros to be added to the compile line. 135*4bdc9457SAndroid Build Coastguard Worker includes: List of include dirs to be added to the compile line. 136*4bdc9457SAndroid Build Coastguard Worker deps: The list of other libraries to be linked. 137*4bdc9457SAndroid Build Coastguard Worker visibility: The list of packages that can depend on this target. 138*4bdc9457SAndroid Build Coastguard Worker """ 139*4bdc9457SAndroid Build Coastguard Worker native.cc_library( 140*4bdc9457SAndroid Build Coastguard Worker name = name, 141*4bdc9457SAndroid Build Coastguard Worker srcs = srcs + select({ 142*4bdc9457SAndroid Build Coastguard Worker ":aarch32": aarch32_srcs, 143*4bdc9457SAndroid Build Coastguard Worker ":aarch64": aarch64_srcs, 144*4bdc9457SAndroid Build Coastguard Worker ":riscv": riscv_srcs, 145*4bdc9457SAndroid Build Coastguard Worker ":x86": x86_srcs, 146*4bdc9457SAndroid Build Coastguard Worker ":emscripten_wasm": wasm_srcs, 147*4bdc9457SAndroid Build Coastguard Worker ":emscripten_wasmsimd": wasmsimd_srcs, 148*4bdc9457SAndroid Build Coastguard Worker ":emscripten_wasmrelaxedsimd": wasmrelaxedsimd_srcs, 149*4bdc9457SAndroid Build Coastguard Worker "//conditions:default": [], 150*4bdc9457SAndroid Build Coastguard Worker }), 151*4bdc9457SAndroid Build Coastguard Worker copts = [ 152*4bdc9457SAndroid Build Coastguard Worker "-Iinclude", 153*4bdc9457SAndroid Build Coastguard Worker "-Isrc", 154*4bdc9457SAndroid Build Coastguard Worker ] + copts + select({ 155*4bdc9457SAndroid Build Coastguard Worker ":linux_k8": gcc_x86_copts, 156*4bdc9457SAndroid Build Coastguard Worker ":linux_arm": aarch32_copts, 157*4bdc9457SAndroid Build Coastguard Worker ":linux_armeabi": aarch32_copts, 158*4bdc9457SAndroid Build Coastguard Worker ":linux_armhf": aarch32_copts, 159*4bdc9457SAndroid Build Coastguard Worker ":linux_armv7a": aarch32_copts, 160*4bdc9457SAndroid Build Coastguard Worker ":linux_arm64": aarch64_copts, 161*4bdc9457SAndroid Build Coastguard Worker ":macos_x86_64": gcc_x86_copts, 162*4bdc9457SAndroid Build Coastguard Worker ":macos_arm64": aarch64_copts, 163*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_clang": ["/clang:" + opt for opt in gcc_x86_copts], 164*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_mingw": mingw_copts + gcc_x86_copts, 165*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_msys": msys_copts + gcc_x86_copts, 166*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64": msvc_x86_64_copts, 167*4bdc9457SAndroid Build Coastguard Worker ":android_armv7": aarch32_copts, 168*4bdc9457SAndroid Build Coastguard Worker ":android_arm64": aarch64_copts, 169*4bdc9457SAndroid Build Coastguard Worker ":android_x86": gcc_x86_copts, 170*4bdc9457SAndroid Build Coastguard Worker ":android_x86_64": gcc_x86_copts, 171*4bdc9457SAndroid Build Coastguard Worker ":ios_arm64": aarch64_copts, 172*4bdc9457SAndroid Build Coastguard Worker ":ios_arm64e": aarch64_copts, 173*4bdc9457SAndroid Build Coastguard Worker ":ios_sim_arm64": aarch64_copts, 174*4bdc9457SAndroid Build Coastguard Worker ":ios_x86_64": gcc_x86_copts, 175*4bdc9457SAndroid Build Coastguard Worker ":watchos_arm64_32": aarch64_copts, 176*4bdc9457SAndroid Build Coastguard Worker ":watchos_x86_64": gcc_x86_copts, 177*4bdc9457SAndroid Build Coastguard Worker ":tvos_arm64": aarch64_copts, 178*4bdc9457SAndroid Build Coastguard Worker ":tvos_x86_64": gcc_x86_copts, 179*4bdc9457SAndroid Build Coastguard Worker ":emscripten_wasm": wasm_copts, 180*4bdc9457SAndroid Build Coastguard Worker ":emscripten_wasmsimd": wasmsimd_copts, 181*4bdc9457SAndroid Build Coastguard Worker ":emscripten_wasmrelaxedsimd": wasmrelaxedsimd_copts, 182*4bdc9457SAndroid Build Coastguard Worker "//conditions:default": [], 183*4bdc9457SAndroid Build Coastguard Worker }) + select({ 184*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_clang": ["/clang:" + opt for opt in gcc_copts], 185*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_mingw": gcc_copts, 186*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_msys": gcc_copts, 187*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64": msvc_copts, 188*4bdc9457SAndroid Build Coastguard Worker "//conditions:default": gcc_copts, 189*4bdc9457SAndroid Build Coastguard Worker }) + select({ 190*4bdc9457SAndroid Build Coastguard Worker ":optimized_build": optimized_copts, 191*4bdc9457SAndroid Build Coastguard Worker "//conditions:default": [], 192*4bdc9457SAndroid Build Coastguard Worker }), 193*4bdc9457SAndroid Build Coastguard Worker defines = defines, 194*4bdc9457SAndroid Build Coastguard Worker deps = deps, 195*4bdc9457SAndroid Build Coastguard Worker includes = ["include", "src"] + includes, 196*4bdc9457SAndroid Build Coastguard Worker linkstatic = True, 197*4bdc9457SAndroid Build Coastguard Worker linkopts = select({ 198*4bdc9457SAndroid Build Coastguard Worker ":linux_k8": ["-lpthread"], 199*4bdc9457SAndroid Build Coastguard Worker ":linux_arm": ["-lpthread"], 200*4bdc9457SAndroid Build Coastguard Worker ":linux_armeabi": ["-lpthread"], 201*4bdc9457SAndroid Build Coastguard Worker ":linux_armhf": ["-lpthread"], 202*4bdc9457SAndroid Build Coastguard Worker ":linux_armv7a": ["-lpthread"], 203*4bdc9457SAndroid Build Coastguard Worker ":linux_arm64": ["-lpthread"], 204*4bdc9457SAndroid Build Coastguard Worker ":android": ["-lm"], 205*4bdc9457SAndroid Build Coastguard Worker "//conditions:default": [], 206*4bdc9457SAndroid Build Coastguard Worker }), 207*4bdc9457SAndroid Build Coastguard Worker textual_hdrs = hdrs, 208*4bdc9457SAndroid Build Coastguard Worker visibility = visibility, 209*4bdc9457SAndroid Build Coastguard Worker testonly = testonly, 210*4bdc9457SAndroid Build Coastguard Worker ) 211*4bdc9457SAndroid Build Coastguard Worker 212*4bdc9457SAndroid Build Coastguard Workerdef xnnpack_aggregate_library( 213*4bdc9457SAndroid Build Coastguard Worker name, 214*4bdc9457SAndroid Build Coastguard Worker generic_deps = [], 215*4bdc9457SAndroid Build Coastguard Worker x86_deps = [], 216*4bdc9457SAndroid Build Coastguard Worker aarch32_deps = [], 217*4bdc9457SAndroid Build Coastguard Worker aarch64_deps = [], 218*4bdc9457SAndroid Build Coastguard Worker riscv_deps = [], 219*4bdc9457SAndroid Build Coastguard Worker wasm_deps = [], 220*4bdc9457SAndroid Build Coastguard Worker wasmsimd_deps = [], 221*4bdc9457SAndroid Build Coastguard Worker wasmrelaxedsimd_deps = [], 222*4bdc9457SAndroid Build Coastguard Worker defines = [], 223*4bdc9457SAndroid Build Coastguard Worker compatible_with = None): 224*4bdc9457SAndroid Build Coastguard Worker """Static library that aggregates architecture-specific dependencies. 225*4bdc9457SAndroid Build Coastguard Worker 226*4bdc9457SAndroid Build Coastguard Worker Args: 227*4bdc9457SAndroid Build Coastguard Worker name: The name of the library target to define. 228*4bdc9457SAndroid Build Coastguard Worker generic_deps: The list of libraries to link on all architectures. 229*4bdc9457SAndroid Build Coastguard Worker x86_deps: The list of libraries to link in x86 and x86-64 builds. 230*4bdc9457SAndroid Build Coastguard Worker aarch32_deps: The list of libraries to link in AArch32 builds. 231*4bdc9457SAndroid Build Coastguard Worker aarch64_deps: The list of libraries to link in AArch64 builds. 232*4bdc9457SAndroid Build Coastguard Worker riscv_deps: The list of libraries to link in RISC-V builds. 233*4bdc9457SAndroid Build Coastguard Worker wasm_deps: The list of libraries to link in WebAssembly 1.0 builds. 234*4bdc9457SAndroid Build Coastguard Worker wasmsimd_deps: The list of libraries to link in WebAssembly SIMD builds. 235*4bdc9457SAndroid Build Coastguard Worker wasmrelaxedsimd_deps: The list of libraries to link in WebAssembly 236*4bdc9457SAndroid Build Coastguard Worker Relaxed SIMD builds. 237*4bdc9457SAndroid Build Coastguard Worker defines: List of predefines macros to be added to the compile line. 238*4bdc9457SAndroid Build Coastguard Worker compatible_with: The list of additional environments this rule can be built for. 239*4bdc9457SAndroid Build Coastguard Worker """ 240*4bdc9457SAndroid Build Coastguard Worker 241*4bdc9457SAndroid Build Coastguard Worker native.cc_library( 242*4bdc9457SAndroid Build Coastguard Worker name = name, 243*4bdc9457SAndroid Build Coastguard Worker linkstatic = True, 244*4bdc9457SAndroid Build Coastguard Worker deps = generic_deps + select({ 245*4bdc9457SAndroid Build Coastguard Worker ":aarch32": aarch32_deps, 246*4bdc9457SAndroid Build Coastguard Worker ":aarch64": aarch64_deps, 247*4bdc9457SAndroid Build Coastguard Worker ":x86": x86_deps, 248*4bdc9457SAndroid Build Coastguard Worker ":emscripten_wasm": wasm_deps, 249*4bdc9457SAndroid Build Coastguard Worker ":emscripten_wasmsimd": wasmsimd_deps, 250*4bdc9457SAndroid Build Coastguard Worker ":emscripten_wasmrelaxedsimd": wasmrelaxedsimd_deps, 251*4bdc9457SAndroid Build Coastguard Worker ":riscv": riscv_deps, 252*4bdc9457SAndroid Build Coastguard Worker }), 253*4bdc9457SAndroid Build Coastguard Worker defines = defines, 254*4bdc9457SAndroid Build Coastguard Worker compatible_with = compatible_with, 255*4bdc9457SAndroid Build Coastguard Worker ) 256*4bdc9457SAndroid Build Coastguard Worker 257*4bdc9457SAndroid Build Coastguard Workerdef xnnpack_unit_test(name, srcs, copts = [], mingw_copts = [], msys_copts = [], deps = [], tags = [], automatic = True, timeout = "short", shard_count = 1): 258*4bdc9457SAndroid Build Coastguard Worker """Unit test binary based on Google Test. 259*4bdc9457SAndroid Build Coastguard Worker 260*4bdc9457SAndroid Build Coastguard Worker Args: 261*4bdc9457SAndroid Build Coastguard Worker name: The name of the test target to define. 262*4bdc9457SAndroid Build Coastguard Worker srcs: The list of source and header files. 263*4bdc9457SAndroid Build Coastguard Worker copts: The list of additional compiler flags for the target. -I flags 264*4bdc9457SAndroid Build Coastguard Worker for include/ and src/ directories of XNNPACK are always prepended 265*4bdc9457SAndroid Build Coastguard Worker before these user-specified flags. 266*4bdc9457SAndroid Build Coastguard Worker mingw_copts: The list of compiler flags to use with MinGW GCC compilers. 267*4bdc9457SAndroid Build Coastguard Worker msys_copts: The list of compiler flags to use with MSYS (Cygwin) GCC compilers. 268*4bdc9457SAndroid Build Coastguard Worker deps: The list of additional libraries to be linked. Google Test library 269*4bdc9457SAndroid Build Coastguard Worker (with main() function) is always added as a dependency and does not 270*4bdc9457SAndroid Build Coastguard Worker need to be explicitly specified. 271*4bdc9457SAndroid Build Coastguard Worker tags: List of arbitrary text tags. 272*4bdc9457SAndroid Build Coastguard Worker automatic: Whether to create the test or testable binary. 273*4bdc9457SAndroid Build Coastguard Worker timeout: How long the test is expected to run before returning. 274*4bdc9457SAndroid Build Coastguard Worker shard_count: Specifies the number of parallel shards to use to run the test. 275*4bdc9457SAndroid Build Coastguard Worker """ 276*4bdc9457SAndroid Build Coastguard Worker 277*4bdc9457SAndroid Build Coastguard Worker if automatic: 278*4bdc9457SAndroid Build Coastguard Worker native.cc_test( 279*4bdc9457SAndroid Build Coastguard Worker name = name, 280*4bdc9457SAndroid Build Coastguard Worker srcs = srcs, 281*4bdc9457SAndroid Build Coastguard Worker copts = xnnpack_std_cxxopts() + [ 282*4bdc9457SAndroid Build Coastguard Worker "-Iinclude", 283*4bdc9457SAndroid Build Coastguard Worker "-Isrc", 284*4bdc9457SAndroid Build Coastguard Worker ] + select({ 285*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_mingw": mingw_copts, 286*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_msys": msys_copts, 287*4bdc9457SAndroid Build Coastguard Worker "//conditions:default": [], 288*4bdc9457SAndroid Build Coastguard Worker }) + select({ 289*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_clang": ["/clang:-Wno-unused-function"], 290*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_mingw": ["-Wno-unused-function"], 291*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_msys": ["-Wno-unused-function"], 292*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64": [], 293*4bdc9457SAndroid Build Coastguard Worker "//conditions:default": ["-Wno-unused-function"], 294*4bdc9457SAndroid Build Coastguard Worker }) + copts, 295*4bdc9457SAndroid Build Coastguard Worker linkopts = select({ 296*4bdc9457SAndroid Build Coastguard Worker ":emscripten": xnnpack_emscripten_test_linkopts(), 297*4bdc9457SAndroid Build Coastguard Worker "//conditions:default": [], 298*4bdc9457SAndroid Build Coastguard Worker }), 299*4bdc9457SAndroid Build Coastguard Worker linkstatic = True, 300*4bdc9457SAndroid Build Coastguard Worker deps = [ 301*4bdc9457SAndroid Build Coastguard Worker "@com_google_googletest//:gtest_main", 302*4bdc9457SAndroid Build Coastguard Worker ] + deps + select({ 303*4bdc9457SAndroid Build Coastguard Worker ":emscripten": xnnpack_emscripten_deps(), 304*4bdc9457SAndroid Build Coastguard Worker "//conditions:default": [], 305*4bdc9457SAndroid Build Coastguard Worker }), 306*4bdc9457SAndroid Build Coastguard Worker tags = tags, 307*4bdc9457SAndroid Build Coastguard Worker timeout = timeout, 308*4bdc9457SAndroid Build Coastguard Worker shard_count = shard_count, 309*4bdc9457SAndroid Build Coastguard Worker ) 310*4bdc9457SAndroid Build Coastguard Worker else: 311*4bdc9457SAndroid Build Coastguard Worker native.cc_binary( 312*4bdc9457SAndroid Build Coastguard Worker name = name, 313*4bdc9457SAndroid Build Coastguard Worker srcs = srcs, 314*4bdc9457SAndroid Build Coastguard Worker copts = xnnpack_std_cxxopts() + [ 315*4bdc9457SAndroid Build Coastguard Worker "-Iinclude", 316*4bdc9457SAndroid Build Coastguard Worker "-Isrc", 317*4bdc9457SAndroid Build Coastguard Worker ] + select({ 318*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_mingw": mingw_copts, 319*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_msys": msys_copts, 320*4bdc9457SAndroid Build Coastguard Worker "//conditions:default": [], 321*4bdc9457SAndroid Build Coastguard Worker }) + select({ 322*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_clang": ["/clang:-Wno-unused-function"], 323*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_mingw": ["-Wno-unused-function"], 324*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_msys": ["-Wno-unused-function"], 325*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64": [], 326*4bdc9457SAndroid Build Coastguard Worker "//conditions:default": ["-Wno-unused-function"], 327*4bdc9457SAndroid Build Coastguard Worker }) + copts, 328*4bdc9457SAndroid Build Coastguard Worker linkopts = select({ 329*4bdc9457SAndroid Build Coastguard Worker ":emscripten": xnnpack_emscripten_test_linkopts(), 330*4bdc9457SAndroid Build Coastguard Worker "//conditions:default": [], 331*4bdc9457SAndroid Build Coastguard Worker }), 332*4bdc9457SAndroid Build Coastguard Worker linkstatic = True, 333*4bdc9457SAndroid Build Coastguard Worker deps = [ 334*4bdc9457SAndroid Build Coastguard Worker "@com_google_googletest//:gtest_main", 335*4bdc9457SAndroid Build Coastguard Worker ] + deps + select({ 336*4bdc9457SAndroid Build Coastguard Worker ":emscripten": xnnpack_emscripten_deps(), 337*4bdc9457SAndroid Build Coastguard Worker "//conditions:default": [], 338*4bdc9457SAndroid Build Coastguard Worker }), 339*4bdc9457SAndroid Build Coastguard Worker testonly = True, 340*4bdc9457SAndroid Build Coastguard Worker tags = tags, 341*4bdc9457SAndroid Build Coastguard Worker ) 342*4bdc9457SAndroid Build Coastguard Worker 343*4bdc9457SAndroid Build Coastguard Workerdef xnnpack_binary(name, srcs, copts = [], deps = []): 344*4bdc9457SAndroid Build Coastguard Worker """Minimal binary 345*4bdc9457SAndroid Build Coastguard Worker 346*4bdc9457SAndroid Build Coastguard Worker Args: 347*4bdc9457SAndroid Build Coastguard Worker name: The name of the binary target to define. 348*4bdc9457SAndroid Build Coastguard Worker srcs: The list of source and header files. 349*4bdc9457SAndroid Build Coastguard Worker copts: The list of additional compiler flags for the target. -I flags 350*4bdc9457SAndroid Build Coastguard Worker for include/ and src/ directories of XNNPACK are always prepended 351*4bdc9457SAndroid Build Coastguard Worker before these user-specified flags. 352*4bdc9457SAndroid Build Coastguard Worker deps: The list of libraries to be linked. 353*4bdc9457SAndroid Build Coastguard Worker """ 354*4bdc9457SAndroid Build Coastguard Worker native.cc_binary( 355*4bdc9457SAndroid Build Coastguard Worker name = name, 356*4bdc9457SAndroid Build Coastguard Worker srcs = srcs, 357*4bdc9457SAndroid Build Coastguard Worker copts = [ 358*4bdc9457SAndroid Build Coastguard Worker "-Iinclude", 359*4bdc9457SAndroid Build Coastguard Worker "-Isrc", 360*4bdc9457SAndroid Build Coastguard Worker ] + copts, 361*4bdc9457SAndroid Build Coastguard Worker linkopts = select({ 362*4bdc9457SAndroid Build Coastguard Worker ":emscripten": xnnpack_emscripten_minimal_linkopts(), 363*4bdc9457SAndroid Build Coastguard Worker "//conditions:default": [], 364*4bdc9457SAndroid Build Coastguard Worker }), 365*4bdc9457SAndroid Build Coastguard Worker linkstatic = True, 366*4bdc9457SAndroid Build Coastguard Worker deps = deps, 367*4bdc9457SAndroid Build Coastguard Worker ) 368*4bdc9457SAndroid Build Coastguard Worker 369*4bdc9457SAndroid Build Coastguard Workerdef xnnpack_benchmark(name, srcs, copts = [], deps = [], tags = []): 370*4bdc9457SAndroid Build Coastguard Worker """Microbenchmark binary based on Google Benchmark 371*4bdc9457SAndroid Build Coastguard Worker 372*4bdc9457SAndroid Build Coastguard Worker Args: 373*4bdc9457SAndroid Build Coastguard Worker name: The name of the binary target to define. 374*4bdc9457SAndroid Build Coastguard Worker srcs: The list of source and header files. 375*4bdc9457SAndroid Build Coastguard Worker copts: The list of additional compiler flags for the target. -I flags 376*4bdc9457SAndroid Build Coastguard Worker for include/ and src/ directories of XNNPACK are always prepended 377*4bdc9457SAndroid Build Coastguard Worker before these user-specified flags. 378*4bdc9457SAndroid Build Coastguard Worker deps: The list of additional libraries to be linked. Google Benchmark 379*4bdc9457SAndroid Build Coastguard Worker library is always added as a dependency and does not need to be 380*4bdc9457SAndroid Build Coastguard Worker explicitly specified. 381*4bdc9457SAndroid Build Coastguard Worker """ 382*4bdc9457SAndroid Build Coastguard Worker native.cc_binary( 383*4bdc9457SAndroid Build Coastguard Worker name = name, 384*4bdc9457SAndroid Build Coastguard Worker srcs = srcs, 385*4bdc9457SAndroid Build Coastguard Worker copts = xnnpack_std_cxxopts() + [ 386*4bdc9457SAndroid Build Coastguard Worker "-Iinclude", 387*4bdc9457SAndroid Build Coastguard Worker "-Isrc", 388*4bdc9457SAndroid Build Coastguard Worker ] + select({ 389*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_clang": ["/clang:-Wno-unused-function"], 390*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_mingw": ["-Wno-unused-function"], 391*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_msys": ["-Wno-unused-function"], 392*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64": [], 393*4bdc9457SAndroid Build Coastguard Worker "//conditions:default": ["-Wno-unused-function"], 394*4bdc9457SAndroid Build Coastguard Worker }) + copts, 395*4bdc9457SAndroid Build Coastguard Worker linkopts = select({ 396*4bdc9457SAndroid Build Coastguard Worker ":emscripten": xnnpack_emscripten_benchmark_linkopts(), 397*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_mingw": ["-lshlwapi"], 398*4bdc9457SAndroid Build Coastguard Worker ":windows_x86_64_msys": ["-lshlwapi"], 399*4bdc9457SAndroid Build Coastguard Worker "//conditions:default": [], 400*4bdc9457SAndroid Build Coastguard Worker }), 401*4bdc9457SAndroid Build Coastguard Worker linkstatic = True, 402*4bdc9457SAndroid Build Coastguard Worker deps = [ 403*4bdc9457SAndroid Build Coastguard Worker "@com_google_benchmark//:benchmark", 404*4bdc9457SAndroid Build Coastguard Worker ] + deps + select({ 405*4bdc9457SAndroid Build Coastguard Worker ":emscripten": xnnpack_emscripten_deps(), 406*4bdc9457SAndroid Build Coastguard Worker "//conditions:default": [], 407*4bdc9457SAndroid Build Coastguard Worker }), 408*4bdc9457SAndroid Build Coastguard Worker tags = tags, 409*4bdc9457SAndroid Build Coastguard Worker ) 410