diff options
Diffstat (limited to 'grpc/third_party/libuv.BUILD')
-rw-r--r-- | grpc/third_party/libuv.BUILD | 212 |
1 files changed, 200 insertions, 12 deletions
diff --git a/grpc/third_party/libuv.BUILD b/grpc/third_party/libuv.BUILD index 17446148..ebb8556f 100644 --- a/grpc/third_party/libuv.BUILD +++ b/grpc/third_party/libuv.BUILD @@ -1,3 +1,132 @@ +# Copyright 2021 gRPC authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("@bazel_skylib//lib:selects.bzl", "selects") + +config_setting( + name = "darwin", + values = {"cpu": "darwin"}, +) + +config_setting( + name = "darwin_x86_64", + values = {"cpu": "darwin_x86_64"}, +) + +config_setting( + name = "darwin_arm64", + values = {"cpu": "darwin_arm64"}, +) + +config_setting( + name = "darwin_arm64e", + values = {"cpu": "darwin_arm64e"}, +) + +config_setting( + name = "windows", + values = {"cpu": "x64_windows"}, +) + +config_setting( + name = "freebsd", + constraint_values = ["@platforms//os:freebsd"], +) + +# Android is not officially supported through C++. +# This just helps with the build for now. +config_setting( + name = "android", + values = { + "crosstool_top": "//external:android/crosstool", + }, +) + +# iOS is not officially supported through C++. +# This just helps with the build for now. +config_setting( + name = "ios_x86_64", + values = {"cpu": "ios_x86_64"}, +) + +config_setting( + name = "ios_armv7", + values = {"cpu": "ios_armv7"}, +) + +config_setting( + name = "ios_armv7s", + values = {"cpu": "ios_armv7s"}, +) + +config_setting( + name = "ios_arm64", + values = {"cpu": "ios_arm64"}, +) + +# The following architectures are found in +# https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/rules/apple/ApplePlatform.java +config_setting( + name = "tvos_x86_64", + values = {"cpu": "tvos_x86_64"}, +) + +config_setting( + name = "tvos_arm64", + values = {"cpu": "tvos_arm64"}, +) + +config_setting( + name = "watchos_i386", + values = {"cpu": "watchos_i386"}, +) + +config_setting( + name = "watchos_x86_64", + values = {"cpu": "watchos_x86_64"}, +) + +config_setting( + name = "watchos_armv7k", + values = {"cpu": "watchos_armv7k"}, +) + +config_setting( + name = "watchos_arm64_32", + values = {"cpu": "watchos_arm64_32"}, +) + +selects.config_setting_group( + name = "apple", + match_any = [ + ":darwin", + ":darwin_x86_64", + ":darwin_arm64", + ":darwin_arm64e", + "ios_x86_64", + "ios_armv7", + "ios_armv7s", + "ios_arm64", + "tvos_x86_64", + "tvos_arm64", + "watchos_i386", + "watchos_x86_64", + "watchos_armv7k", + "watchos_arm64_32", + ], +) + COMMON_LIBUV_HEADERS = [ "include/uv.h", "include/uv/errno.h", @@ -139,17 +268,15 @@ WINDOWS_LIBUV_SOURCES = [ cc_library( name = "libuv", srcs = select({ - "//tools/cc_target_os:android": COMMON_LIBUV_SOURCES + UNIX_LIBUV_SOURCES + LINUX_LIBUV_SOURCES + ANDROID_LIBUV_SOURCES, - "//tools/cc_target_os:apple": COMMON_LIBUV_SOURCES + UNIX_LIBUV_SOURCES + DARWIN_LIBUV_SOURCES, - "//tools/cc_target_os:windows": COMMON_LIBUV_SOURCES + WINDOWS_LIBUV_SOURCES, + ":android": COMMON_LIBUV_SOURCES + UNIX_LIBUV_SOURCES + LINUX_LIBUV_SOURCES + ANDROID_LIBUV_SOURCES, + ":apple": COMMON_LIBUV_SOURCES + UNIX_LIBUV_SOURCES + DARWIN_LIBUV_SOURCES, + ":windows": COMMON_LIBUV_SOURCES + WINDOWS_LIBUV_SOURCES, "//conditions:default": COMMON_LIBUV_SOURCES + UNIX_LIBUV_SOURCES + LINUX_LIBUV_SOURCES, }), - hdrs = [ - "include/uv.h", - ] + select({ - "//tools/cc_target_os:android": COMMON_LIBUV_HEADERS + UNIX_LIBUV_HEADERS + LINUX_LIBUV_HEADERS + ANDROID_LIBUV_HEADERS, - "//tools/cc_target_os:apple": COMMON_LIBUV_HEADERS + UNIX_LIBUV_HEADERS + DARWIN_LIBUV_HEADERS, - "//tools/cc_target_os:windows": COMMON_LIBUV_HEADERS + WINDOWS_LIBUV_HEADERS, + hdrs = select({ + ":android": COMMON_LIBUV_HEADERS + UNIX_LIBUV_HEADERS + LINUX_LIBUV_HEADERS + ANDROID_LIBUV_HEADERS, + ":apple": COMMON_LIBUV_HEADERS + UNIX_LIBUV_HEADERS + DARWIN_LIBUV_HEADERS, + ":windows": COMMON_LIBUV_HEADERS + WINDOWS_LIBUV_HEADERS, "//conditions:default": COMMON_LIBUV_HEADERS + UNIX_LIBUV_HEADERS + LINUX_LIBUV_HEADERS, }), copts = [ @@ -167,8 +294,8 @@ cc_library( "-Wno-unused-function", "-Wno-unused-variable", ] + select({ - "//tools/cc_target_os:apple": [], - "//tools/cc_target_os:windows": [ + ":apple": [], + ":windows": [ "-DWIN32_LEAN_AND_MEAN", "-D_WIN32_WINNT=0x0600", ], @@ -184,7 +311,68 @@ cc_library( "src", ], linkopts = select({ - "//tools/cc_target_os:windows": [ + ":windows": [ + "-Xcrosstool-compilation-mode=$(COMPILATION_MODE)", + "-Wl,Iphlpapi.lib", + "-Wl,Psapi.lib", + "-Wl,User32.lib", + "-Wl,Userenv.lib", + ], + "//conditions:default": [], + }), + visibility = [ + "//visibility:public", + ], +) + +cc_library( + name = "libuv_test", + srcs = [ + "test/test-timer.c", + "test/test-timer-again.c", + "test/test-timer-from-check.c", + ], + hdrs = [ + "test/runner.h", + "test/runner-unix.h", + "test/task.h", + ], + includes = [ + "include", + "src", + ], + deps = [ + ":libuv" + ], + copts = [ + "-D_LARGEFILE_SOURCE", + "-D_FILE_OFFSET_BITS=64", + "-D_GNU_SOURCE", + "-pthread", + "--std=gnu89", + "-pedantic", + "-Wno-error", + "-Wno-strict-aliasing", + "-Wstrict-aliasing", + "-O2", + "-Wno-implicit-function-declaration", + "-Wno-unused-function", + "-Wno-unused-variable", + ] + select({ + ":apple": [], + ":windows": [ + "-DWIN32_LEAN_AND_MEAN", + "-D_WIN32_WINNT=0x0600", + ], + "//conditions:default": [ + "-Wno-tree-vrp", + "-Wno-omit-frame-pointer", + "-D_DARWIN_USE_64_BIT_INODE=1", + "-D_DARWIN_UNLIMITED_SELECT=1", + ], + }), + linkopts = select({ + ":windows": [ "-Xcrosstool-compilation-mode=$(COMPILATION_MODE)", "-Wl,Iphlpapi.lib", "-Wl,Psapi.lib", |