|
- load("@rules_cc//cc:defs.bzl", "cc_library")
- load("@//third_party:substitution.bzl", "header_template_rule")
-
- LIBUV_COMMON_SRCS = [
- "third_party/libuv/src/fs-poll.c",
- "third_party/libuv/src/idna.c",
- "third_party/libuv/src/inet.c",
- "third_party/libuv/src/random.c",
- "third_party/libuv/src/strscpy.c",
- "third_party/libuv/src/threadpool.c",
- "third_party/libuv/src/timer.c",
- "third_party/libuv/src/uv-common.c",
- "third_party/libuv/src/uv-data-getter-setters.c",
- "third_party/libuv/src/version.c",
- ]
-
- LIBUV_POSIX_SRCS = [
- "third_party/libuv/src/unix/async.c",
- "third_party/libuv/src/unix/core.c",
- "third_party/libuv/src/unix/dl.c",
- "third_party/libuv/src/unix/fs.c",
- "third_party/libuv/src/unix/getaddrinfo.c",
- "third_party/libuv/src/unix/getnameinfo.c",
- "third_party/libuv/src/unix/loop.c",
- "third_party/libuv/src/unix/loop-watcher.c",
- "third_party/libuv/src/unix/pipe.c",
- "third_party/libuv/src/unix/poll.c",
- "third_party/libuv/src/unix/process.c",
- "third_party/libuv/src/unix/random-devurandom.c",
- "third_party/libuv/src/unix/signal.c",
- "third_party/libuv/src/unix/stream.c",
- "third_party/libuv/src/unix/tcp.c",
- "third_party/libuv/src/unix/thread.c",
- "third_party/libuv/src/unix/tty.c",
- "third_party/libuv/src/unix/udp.c",
- ]
-
- LIBUV_LINUX_SRCS = LIBUV_POSIX_SRCS + [
- "third_party/libuv/src/unix/proctitle.c",
- "third_party/libuv/src/unix/linux-core.c",
- "third_party/libuv/src/unix/linux-inotify.c",
- "third_party/libuv/src/unix/linux-syscalls.c",
- "third_party/libuv/src/unix/procfs-exepath.c",
- "third_party/libuv/src/unix/random-getrandom.c",
- "third_party/libuv/src/unix/random-sysctl-linux.c",
- ]
-
- cc_library(
- name = "libuv",
- srcs = LIBUV_COMMON_SRCS + LIBUV_LINUX_SRCS,
- includes = [
- "third_party/libuv/include",
- "third_party/libuv/src",
- ],
- hdrs = glob(
- [
- "third_party/libuv/include/*.h",
- "third_party/libuv/include/uv/*.h",
- "third_party/libuv/src/*.h",
- "third_party/libuv/src/unix/*.h",
- ],
- ),
- visibility = ["//visibility:public"],
- )
-
- cc_library(
- name = "libnop",
- srcs = [],
- includes = ["third_party/libnop/include"],
- hdrs = glob(["third_party/libnop/include/**/*.h"]),
- )
-
- header_template_rule(
- name = "tensorpipe_cpu_config_header",
- src = "tensorpipe/config.h.in",
- out = "tensorpipe/config.h",
- substitutions = {
- "#cmakedefine01 TENSORPIPE_HAS_SHM_TRANSPORT": "#define TENSORPIPE_HAS_SHM_TRANSPORT 1",
- "#cmakedefine01 TENSORPIPE_HAS_IBV_TRANSPORT": "#define TENSORPIPE_HAS_IBV_TRANSPORT 1",
- "#cmakedefine01 TENSORPIPE_HAS_CMA_CHANNEL": "#define TENSORPIPE_HAS_CMA_CHANNEL 1",
- },
- )
-
- header_template_rule(
- name = "tensorpipe_cuda_config_header",
- src = "tensorpipe/config_cuda.h.in",
- out = "tensorpipe/config_cuda.h",
- substitutions = {
- "#cmakedefine01 TENSORPIPE_HAS_CUDA_IPC_CHANNEL": "#define TENSORPIPE_HAS_CUDA_IPC_CHANNEL 1",
- "#cmakedefine01 TENSORPIPE_HAS_CUDA_GDR_CHANNEL": "#define TENSORPIPE_HAS_CUDA_GDR_CHANNEL 1",
- },
- )
-
- # We explicitly list the CUDA headers & sources, and we consider everything else
- # as CPU (using a catch-all glob). This is both because there's fewer CUDA files
- # (thus making it easier to list them exhaustively) and because it will make it
- # more likely to catch a misclassified file: if we forget to mark a file as CUDA
- # we'll try to build it on CPU and that's likely to fail.
-
- TENSORPIPE_CUDA_HEADERS = [
- "tensorpipe/tensorpipe_cuda.h",
- "tensorpipe/channel/cuda_basic/*.h",
- "tensorpipe/channel/cuda_gdr/*.h",
- "tensorpipe/channel/cuda_ipc/*.h",
- "tensorpipe/channel/cuda_xth/*.h",
- "tensorpipe/common/cuda.h",
- "tensorpipe/common/cuda_buffer.h",
- "tensorpipe/common/cuda_lib.h",
- "tensorpipe/common/cuda_loop.h",
- "tensorpipe/common/nvml_lib.h",
- ]
-
- TENSORPIPE_CUDA_SOURCES = [
- "tensorpipe/channel/cuda_basic/*.cc",
- "tensorpipe/channel/cuda_gdr/*.cc",
- "tensorpipe/channel/cuda_ipc/*.cc",
- "tensorpipe/channel/cuda_xth/*.cc",
- "tensorpipe/common/cuda_buffer.cc",
- "tensorpipe/common/cuda_loop.cc",
- ]
-
- TENSORPIPE_CPU_HEADERS = glob(
- [
- "tensorpipe/*.h",
- "tensorpipe/channel/*.h",
- "tensorpipe/channel/*/*.h",
- "tensorpipe/common/*.h",
- "tensorpipe/core/*.h",
- "tensorpipe/transport/*.h",
- "tensorpipe/transport/*/*.h",
- ],
- exclude=TENSORPIPE_CUDA_HEADERS)
-
- TENSORPIPE_CPU_SOURCES = glob(
- [
- "tensorpipe/*.cc",
- "tensorpipe/channel/*.cc",
- "tensorpipe/channel/*/*.cc",
- "tensorpipe/common/*.cc",
- "tensorpipe/core/*.cc",
- "tensorpipe/transport/*.cc",
- "tensorpipe/transport/*/*.cc",
- ],
- exclude=TENSORPIPE_CUDA_SOURCES)
-
- cc_library(
- name = "tensorpipe_cpu",
- srcs = TENSORPIPE_CPU_SOURCES,
- hdrs = TENSORPIPE_CPU_HEADERS + [":tensorpipe_cpu_config_header"],
- includes = [
- ".",
- ],
- copts = [
- "-std=c++14",
- ],
- visibility = ["//visibility:public"],
- deps = [
- ":libnop",
- ":libuv",
- ],
- )
-
- cc_library(
- name = "tensorpipe_cuda",
- srcs = glob(TENSORPIPE_CUDA_SOURCES),
- hdrs = glob(TENSORPIPE_CUDA_HEADERS) + [":tensorpipe_cuda_config_header"],
- includes = [
- ".",
- ],
- copts = [
- "-std=c++14",
- ],
- visibility = ["//visibility:public"],
- deps = [
- ":tensorpipe_cpu",
- "@cuda",
- ],
- )
|