1*da0073e9SAndroid Build Coastguard Workerload("@rules_cc//cc:defs.bzl", "cc_library") 2*da0073e9SAndroid Build Coastguard Workerload("@pytorch//third_party:substitution.bzl", "header_template_rule") 3*da0073e9SAndroid Build Coastguard Worker 4*da0073e9SAndroid Build Coastguard WorkerLIBUV_COMMON_SRCS = [ 5*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/fs-poll.c", 6*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/idna.c", 7*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/inet.c", 8*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/random.c", 9*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/strscpy.c", 10*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/threadpool.c", 11*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/timer.c", 12*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/uv-common.c", 13*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/uv-data-getter-setters.c", 14*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/version.c", 15*da0073e9SAndroid Build Coastguard Worker] 16*da0073e9SAndroid Build Coastguard Worker 17*da0073e9SAndroid Build Coastguard WorkerLIBUV_POSIX_SRCS = [ 18*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/async.c", 19*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/core.c", 20*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/dl.c", 21*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/fs.c", 22*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/getaddrinfo.c", 23*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/getnameinfo.c", 24*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/loop.c", 25*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/loop-watcher.c", 26*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/pipe.c", 27*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/poll.c", 28*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/process.c", 29*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/random-devurandom.c", 30*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/signal.c", 31*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/stream.c", 32*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/tcp.c", 33*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/thread.c", 34*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/tty.c", 35*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/udp.c", 36*da0073e9SAndroid Build Coastguard Worker] 37*da0073e9SAndroid Build Coastguard Worker 38*da0073e9SAndroid Build Coastguard WorkerLIBUV_LINUX_SRCS = LIBUV_POSIX_SRCS + [ 39*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/proctitle.c", 40*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/linux-core.c", 41*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/linux-inotify.c", 42*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/linux-syscalls.c", 43*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/procfs-exepath.c", 44*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/random-getrandom.c", 45*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/random-sysctl-linux.c", 46*da0073e9SAndroid Build Coastguard Worker] 47*da0073e9SAndroid Build Coastguard Worker 48*da0073e9SAndroid Build Coastguard Workercc_library( 49*da0073e9SAndroid Build Coastguard Worker name = "libuv", 50*da0073e9SAndroid Build Coastguard Worker srcs = LIBUV_COMMON_SRCS + LIBUV_LINUX_SRCS, 51*da0073e9SAndroid Build Coastguard Worker includes = [ 52*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/include", 53*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src", 54*da0073e9SAndroid Build Coastguard Worker ], 55*da0073e9SAndroid Build Coastguard Worker hdrs = glob( 56*da0073e9SAndroid Build Coastguard Worker [ 57*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/include/*.h", 58*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/include/uv/*.h", 59*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/*.h", 60*da0073e9SAndroid Build Coastguard Worker "third_party/libuv/src/unix/*.h", 61*da0073e9SAndroid Build Coastguard Worker ], 62*da0073e9SAndroid Build Coastguard Worker ), 63*da0073e9SAndroid Build Coastguard Worker visibility = ["//visibility:public"], 64*da0073e9SAndroid Build Coastguard Worker) 65*da0073e9SAndroid Build Coastguard Worker 66*da0073e9SAndroid Build Coastguard Workercc_library( 67*da0073e9SAndroid Build Coastguard Worker name = "libnop", 68*da0073e9SAndroid Build Coastguard Worker srcs = [], 69*da0073e9SAndroid Build Coastguard Worker includes = ["third_party/libnop/include"], 70*da0073e9SAndroid Build Coastguard Worker hdrs = glob(["third_party/libnop/include/**/*.h"]), 71*da0073e9SAndroid Build Coastguard Worker) 72*da0073e9SAndroid Build Coastguard Worker 73*da0073e9SAndroid Build Coastguard Workerheader_template_rule( 74*da0073e9SAndroid Build Coastguard Worker name = "tensorpipe_cpu_config_header", 75*da0073e9SAndroid Build Coastguard Worker src = "tensorpipe/config.h.in", 76*da0073e9SAndroid Build Coastguard Worker out = "tensorpipe/config.h", 77*da0073e9SAndroid Build Coastguard Worker substitutions = { 78*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 TENSORPIPE_HAS_SHM_TRANSPORT": "#define TENSORPIPE_HAS_SHM_TRANSPORT 1", 79*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 TENSORPIPE_HAS_IBV_TRANSPORT": "#define TENSORPIPE_HAS_IBV_TRANSPORT 1", 80*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 TENSORPIPE_HAS_CMA_CHANNEL": "#define TENSORPIPE_HAS_CMA_CHANNEL 1", 81*da0073e9SAndroid Build Coastguard Worker }, 82*da0073e9SAndroid Build Coastguard Worker) 83*da0073e9SAndroid Build Coastguard Worker 84*da0073e9SAndroid Build Coastguard Workerheader_template_rule( 85*da0073e9SAndroid Build Coastguard Worker name = "tensorpipe_cuda_config_header", 86*da0073e9SAndroid Build Coastguard Worker src = "tensorpipe/config_cuda.h.in", 87*da0073e9SAndroid Build Coastguard Worker out = "tensorpipe/config_cuda.h", 88*da0073e9SAndroid Build Coastguard Worker substitutions = { 89*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 TENSORPIPE_HAS_CUDA_IPC_CHANNEL": "#define TENSORPIPE_HAS_CUDA_IPC_CHANNEL 1", 90*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 TENSORPIPE_HAS_CUDA_GDR_CHANNEL": "#define TENSORPIPE_HAS_CUDA_GDR_CHANNEL 1", 91*da0073e9SAndroid Build Coastguard Worker }, 92*da0073e9SAndroid Build Coastguard Worker) 93*da0073e9SAndroid Build Coastguard Worker 94*da0073e9SAndroid Build Coastguard Worker# We explicitly list the CUDA headers & sources, and we consider everything else 95*da0073e9SAndroid Build Coastguard Worker# as CPU (using a catch-all glob). This is both because there's fewer CUDA files 96*da0073e9SAndroid Build Coastguard Worker# (thus making it easier to list them exhaustively) and because it will make it 97*da0073e9SAndroid Build Coastguard Worker# more likely to catch a misclassified file: if we forget to mark a file as CUDA 98*da0073e9SAndroid Build Coastguard Worker# we'll try to build it on CPU and that's likely to fail. 99*da0073e9SAndroid Build Coastguard Worker 100*da0073e9SAndroid Build Coastguard WorkerTENSORPIPE_CUDA_HEADERS = [ 101*da0073e9SAndroid Build Coastguard Worker "tensorpipe/tensorpipe_cuda.h", 102*da0073e9SAndroid Build Coastguard Worker "tensorpipe/channel/cuda_basic/*.h", 103*da0073e9SAndroid Build Coastguard Worker "tensorpipe/channel/cuda_gdr/*.h", 104*da0073e9SAndroid Build Coastguard Worker "tensorpipe/channel/cuda_ipc/*.h", 105*da0073e9SAndroid Build Coastguard Worker "tensorpipe/channel/cuda_xth/*.h", 106*da0073e9SAndroid Build Coastguard Worker "tensorpipe/common/cuda.h", 107*da0073e9SAndroid Build Coastguard Worker "tensorpipe/common/cuda_buffer.h", 108*da0073e9SAndroid Build Coastguard Worker "tensorpipe/common/cuda_lib.h", 109*da0073e9SAndroid Build Coastguard Worker "tensorpipe/common/cuda_loop.h", 110*da0073e9SAndroid Build Coastguard Worker "tensorpipe/common/nvml_lib.h", 111*da0073e9SAndroid Build Coastguard Worker] 112*da0073e9SAndroid Build Coastguard Worker 113*da0073e9SAndroid Build Coastguard WorkerTENSORPIPE_CUDA_SOURCES = [ 114*da0073e9SAndroid Build Coastguard Worker "tensorpipe/channel/cuda_basic/*.cc", 115*da0073e9SAndroid Build Coastguard Worker "tensorpipe/channel/cuda_gdr/*.cc", 116*da0073e9SAndroid Build Coastguard Worker "tensorpipe/channel/cuda_ipc/*.cc", 117*da0073e9SAndroid Build Coastguard Worker "tensorpipe/channel/cuda_xth/*.cc", 118*da0073e9SAndroid Build Coastguard Worker "tensorpipe/common/cuda_buffer.cc", 119*da0073e9SAndroid Build Coastguard Worker "tensorpipe/common/cuda_loop.cc", 120*da0073e9SAndroid Build Coastguard Worker] 121*da0073e9SAndroid Build Coastguard Worker 122*da0073e9SAndroid Build Coastguard WorkerTENSORPIPE_CPU_HEADERS = glob( 123*da0073e9SAndroid Build Coastguard Worker [ 124*da0073e9SAndroid Build Coastguard Worker "tensorpipe/*.h", 125*da0073e9SAndroid Build Coastguard Worker "tensorpipe/channel/*.h", 126*da0073e9SAndroid Build Coastguard Worker "tensorpipe/channel/*/*.h", 127*da0073e9SAndroid Build Coastguard Worker "tensorpipe/common/*.h", 128*da0073e9SAndroid Build Coastguard Worker "tensorpipe/core/*.h", 129*da0073e9SAndroid Build Coastguard Worker "tensorpipe/transport/*.h", 130*da0073e9SAndroid Build Coastguard Worker "tensorpipe/transport/*/*.h", 131*da0073e9SAndroid Build Coastguard Worker ], 132*da0073e9SAndroid Build Coastguard Worker exclude=TENSORPIPE_CUDA_HEADERS) 133*da0073e9SAndroid Build Coastguard Worker 134*da0073e9SAndroid Build Coastguard WorkerTENSORPIPE_CPU_SOURCES = glob( 135*da0073e9SAndroid Build Coastguard Worker [ 136*da0073e9SAndroid Build Coastguard Worker "tensorpipe/*.cc", 137*da0073e9SAndroid Build Coastguard Worker "tensorpipe/channel/*.cc", 138*da0073e9SAndroid Build Coastguard Worker "tensorpipe/channel/*/*.cc", 139*da0073e9SAndroid Build Coastguard Worker "tensorpipe/common/*.cc", 140*da0073e9SAndroid Build Coastguard Worker "tensorpipe/core/*.cc", 141*da0073e9SAndroid Build Coastguard Worker "tensorpipe/transport/*.cc", 142*da0073e9SAndroid Build Coastguard Worker "tensorpipe/transport/*/*.cc", 143*da0073e9SAndroid Build Coastguard Worker ], 144*da0073e9SAndroid Build Coastguard Worker exclude=TENSORPIPE_CUDA_SOURCES) 145*da0073e9SAndroid Build Coastguard Worker 146*da0073e9SAndroid Build Coastguard Workercc_library( 147*da0073e9SAndroid Build Coastguard Worker name = "tensorpipe_cpu", 148*da0073e9SAndroid Build Coastguard Worker srcs = TENSORPIPE_CPU_SOURCES, 149*da0073e9SAndroid Build Coastguard Worker hdrs = TENSORPIPE_CPU_HEADERS + [":tensorpipe_cpu_config_header"], 150*da0073e9SAndroid Build Coastguard Worker includes = [ 151*da0073e9SAndroid Build Coastguard Worker ".", 152*da0073e9SAndroid Build Coastguard Worker ], 153*da0073e9SAndroid Build Coastguard Worker copts = [ 154*da0073e9SAndroid Build Coastguard Worker "-std=c++14", 155*da0073e9SAndroid Build Coastguard Worker ], 156*da0073e9SAndroid Build Coastguard Worker visibility = ["//visibility:public"], 157*da0073e9SAndroid Build Coastguard Worker deps = [ 158*da0073e9SAndroid Build Coastguard Worker ":libnop", 159*da0073e9SAndroid Build Coastguard Worker ":libuv", 160*da0073e9SAndroid Build Coastguard Worker ], 161*da0073e9SAndroid Build Coastguard Worker) 162*da0073e9SAndroid Build Coastguard Worker 163*da0073e9SAndroid Build Coastguard Workercc_library( 164*da0073e9SAndroid Build Coastguard Worker name = "tensorpipe_cuda", 165*da0073e9SAndroid Build Coastguard Worker srcs = glob(TENSORPIPE_CUDA_SOURCES), 166*da0073e9SAndroid Build Coastguard Worker hdrs = glob(TENSORPIPE_CUDA_HEADERS) + [":tensorpipe_cuda_config_header"], 167*da0073e9SAndroid Build Coastguard Worker includes = [ 168*da0073e9SAndroid Build Coastguard Worker ".", 169*da0073e9SAndroid Build Coastguard Worker ], 170*da0073e9SAndroid Build Coastguard Worker copts = [ 171*da0073e9SAndroid Build Coastguard Worker "-std=c++14", 172*da0073e9SAndroid Build Coastguard Worker ], 173*da0073e9SAndroid Build Coastguard Worker visibility = ["//visibility:public"], 174*da0073e9SAndroid Build Coastguard Worker deps = [ 175*da0073e9SAndroid Build Coastguard Worker ":tensorpipe_cpu", 176*da0073e9SAndroid Build Coastguard Worker "@cuda", 177*da0073e9SAndroid Build Coastguard Worker ], 178*da0073e9SAndroid Build Coastguard Worker) 179