From c9f9edf6d75bb065fa47468bf035e051a57bec7c Mon Sep 17 00:00:00 2001 From: Richard O'Grady Date: Fri, 14 Apr 2023 16:49:56 -0700 Subject: Fixes for Windows bazel build. Don't pass -Wno-sign-compare on Windows. Add a #define HAVE_WINDOWS_H if _WIN32 is defined. Don't assume sys/uio.h is available on Windows. PiperOrigin-RevId: 524416809 --- .bazelrc | 2 + BUILD.bazel | 210 +++++++++++++++++++++++++++++++++++++++++++++++++ WORKSPACE | 27 +++++++ opensource/.bazelrc | 2 - opensource/BUILD.bazel | 199 ---------------------------------------------- opensource/WORKSPACE | 27 ------- 6 files changed, 239 insertions(+), 228 deletions(-) create mode 100644 .bazelrc create mode 100644 BUILD.bazel create mode 100644 WORKSPACE delete mode 100644 opensource/.bazelrc delete mode 100644 opensource/BUILD.bazel delete mode 100644 opensource/WORKSPACE diff --git a/.bazelrc b/.bazelrc new file mode 100644 index 0000000..3843446 --- /dev/null +++ b/.bazelrc @@ -0,0 +1,2 @@ +# googletest requires C++14 or above +build --cxxopt='-std=c++17' diff --git a/BUILD.bazel b/BUILD.bazel new file mode 100644 index 0000000..97c9f3a --- /dev/null +++ b/BUILD.bazel @@ -0,0 +1,210 @@ +# Copyright 2023 Google Inc. All Rights Reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +SNAPPY_VERSION = (1, 1, 10) + +config_setting( + name = "windows", + constraint_values = ["@platforms//os:windows"], +) + +cc_library( + name = "config", + hdrs = ["config.h"], + defines = ["HAVE_CONFIG_H"] +) + +cc_library( + name = "snappy-stubs-public", + hdrs = [":snappy-stubs-public.h"], +) + +cc_library( + name = "snappy-stubs-internal", + srcs = ["snappy-stubs-internal.cc"], + hdrs = ["snappy-stubs-internal.h"], + deps = [ + ":config", + ":snappy-stubs-public", + ], +) + +cc_library( + name = "snappy", + srcs = [ + "snappy.cc", + "snappy-internal.h", + "snappy-sinksource.cc", + ], + hdrs = [ + "snappy.h", + "snappy-sinksource.h", + ], + copts = select({ + ":windows": [], + "//conditions:default": [ + "-Wno-sign-compare", + ]}), + deps = [ + ":config", + ":snappy-stubs-internal", + ":snappy-stubs-public", + ], +) + +cc_library( + name = "snappy-c", + srcs = ["snappy-c.cc"], + hdrs = ["snappy-c.h"], + deps = [":snappy"], +) + +filegroup( + name = "testdata", + srcs = glob(["testdata/*"]), +) + +cc_library( + name = "snappy-test", + testonly = True, + srcs = [ + "snappy-test.cc", + "snappy_test_data.cc", + ], + hdrs = [ + "snappy-test.h", + "snappy_test_data.h", + ], + deps = [":snappy-stubs-internal"], +) + +cc_test( + name = "snappy_benchmark", + srcs = ["snappy_benchmark.cc"], + data = [":testdata"], + deps = [ + ":snappy", + ":snappy-test", + "//third_party/benchmark:benchmark_main", + ], +) + +cc_test( + name = "snappy_unittest", + srcs = [ + "snappy_unittest.cc", + ], + data = [":testdata"], + deps = [ + ":snappy", + ":snappy-test", + "//third_party/googletest:gtest_main", + ], +) + +# Generate a config.h similar to what cmake would produce. +genrule( + name = "config_h", + outs = ["config.h"], + cmd = """cat <$@ +#define HAVE_STDDEF_H 1 +#define HAVE_STDINT_H 1 +#ifdef __has_builtin +# if !defined(HAVE_BUILTIN_EXPECT) && __has_builtin(__builtin_expect) +# define HAVE_BUILTIN_EXPECT 1 +# endif +# if !defined(HAVE_BUILTIN_CTZ) && __has_builtin(__builtin_ctzll) +# define HAVE_BUILTIN_CTZ 1 +# endif +# if !defined(HAVE_BUILTIN_PREFETCH) && __has_builtin(__builtin_prefetech) +# define HAVE_BUILTIN_PREFETCH 1 +# endif +#elif defined(__GNUC__) && (__GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ >= 4) +# ifndef HAVE_BUILTIN_EXPECT +# define HAVE_BUILTIN_EXPECT 1 +# endif +# ifndef HAVE_BUILTIN_CTZ +# define HAVE_BUILTIN_CTZ 1 +# endif +# ifndef HAVE_BUILTIN_PREFETCH +# define HAVE_BUILTIN_PREFETCH 1 +# endif +#endif + +#if defined(_WIN32) && !defined(HAVE_WINDOWS_H) +#define HAVE_WINDOWS_H 1 +#endif + +#ifdef __has_include +# if !defined(HAVE_BYTESWAP_H) && __has_include() +# define HAVE_BYTESWAP_H 1 +# endif +# if !defined(HAVE_UNISTD_H) && __has_include() +# define HAVE_UNISTD_H 1 +# endif +# if !defined(HAVE_SYS_ENDIAN_H) && __has_include() +# define HAVE_SYS_ENDIAN_H 1 +# endif +# if !defined(HAVE_SYS_MMAN_H) && __has_include() +# define HAVE_SYS_MMAN_H 1 +# endif +# if !defined(HAVE_SYS_UIO_H) && __has_include() +# define HAVE_SYS_UIO_H 1 +# endif +# if !defined(HAVE_SYS_TIME_H) && __has_include() +# define HAVE_SYS_TIME_H 1 +# endif +#endif + +#ifndef SNAPPY_IS_BIG_ENDIAN +# ifdef __s390x__ +# define SNAPPY_IS_BIG_ENDIAN 1 +# elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +# define SNAPPY_IS_BIG_ENDIAN 1 +# endif +#endif +EOF +""", +) + +genrule( + name = "snappy_stubs_public_h", + srcs = ["snappy-stubs-public.h.in"], + outs = ["snappy-stubs-public.h"], + # Assume sys/uio.h is available on non-Windows. + # Set the version numbers. + cmd = ("""sed -e 's/$${HAVE_SYS_UIO_H_01}/!_WIN32/g' \ + -e 's/$${PROJECT_VERSION_MAJOR}/%d/g' \ + -e 's/$${PROJECT_VERSION_MINOR}/%d/g' \ + -e 's/$${PROJECT_VERSION_PATCH}/%d/g' \ + $< >$@""" % SNAPPY_VERSION), +) diff --git a/WORKSPACE b/WORKSPACE new file mode 100644 index 0000000..7e60888 --- /dev/null +++ b/WORKSPACE @@ -0,0 +1,27 @@ +# Copyright 2023 Google Inc. All Rights Reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/opensource/.bazelrc b/opensource/.bazelrc deleted file mode 100644 index 3843446..0000000 --- a/opensource/.bazelrc +++ /dev/null @@ -1,2 +0,0 @@ -# googletest requires C++14 or above -build --cxxopt='-std=c++17' diff --git a/opensource/BUILD.bazel b/opensource/BUILD.bazel deleted file mode 100644 index 1c60d28..0000000 --- a/opensource/BUILD.bazel +++ /dev/null @@ -1,199 +0,0 @@ -# Copyright 2023 Google Inc. All Rights Reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package(default_visibility = ["//visibility:public"]) - -licenses(["notice"]) - -SNAPPY_VERSION = (1, 1, 10) - -cc_library( - name = "config", - hdrs = ["config.h"], - defines = ["HAVE_CONFIG_H"] -) - -cc_library( - name = "snappy-stubs-public", - hdrs = [":snappy-stubs-public.h"], -) - -cc_library( - name = "snappy-stubs-internal", - srcs = ["snappy-stubs-internal.cc"], - hdrs = ["snappy-stubs-internal.h"], - deps = [ - ":config", - ":snappy-stubs-public", - ], -) - -cc_library( - name = "snappy", - srcs = [ - "snappy.cc", - "snappy-internal.h", - "snappy-sinksource.cc", - ], - hdrs = [ - "snappy.h", - "snappy-sinksource.h", - ], - copts = [ - "-Wno-sign-compare", - ], - deps = [ - ":config", - ":snappy-stubs-internal", - ":snappy-stubs-public", - ], -) - -cc_library( - name = "snappy-c", - srcs = ["snappy-c.cc"], - hdrs = ["snappy-c.h"], - deps = [":snappy"], -) - -filegroup( - name = "testdata", - srcs = glob(["testdata/*"]), -) - -cc_library( - name = "snappy-test", - testonly = True, - srcs = [ - "snappy-test.cc", - "snappy_test_data.cc", - ], - hdrs = [ - "snappy-test.h", - "snappy_test_data.h", - ], - deps = [":snappy-stubs-internal"], -) - -cc_test( - name = "snappy_benchmark", - srcs = ["snappy_benchmark.cc"], - data = [":testdata"], - deps = [ - ":snappy", - ":snappy-test", - "//third_party/benchmark:benchmark_main", - ], -) - -cc_test( - name = "snappy_unittest", - srcs = [ - "snappy_unittest.cc", - ], - data = [":testdata"], - deps = [ - ":snappy", - ":snappy-test", - "//third_party/googletest:gtest_main", - ], -) - -# Generate a config.h similar to what cmake would produce. -genrule( - name = "config_h", - outs = ["config.h"], - cmd = """cat <$@ -#define HAVE_STDDEF_H 1 -#define HAVE_STDINT_H 1 -#ifdef __has_builtin -# if !defined(HAVE_BUILTIN_EXPECT) && __has_builtin(__builtin_expect) -# define HAVE_BUILTIN_EXPECT 1 -# endif -# if !defined(HAVE_BUILTIN_CTZ) && __has_builtin(__builtin_ctzll) -# define HAVE_BUILTIN_CTZ 1 -# endif -# if !defined(HAVE_BUILTIN_PREFETCH) && __has_builtin(__builtin_prefetech) -# define HAVE_BUILTIN_PREFETCH 1 -# endif -#elif defined(__GNUC__) && (__GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ >= 4) -# ifndef HAVE_BUILTIN_EXPECT -# define HAVE_BUILTIN_EXPECT 1 -# endif -# ifndef HAVE_BUILTIN_CTZ -# define HAVE_BUILTIN_CTZ 1 -# endif -# ifndef HAVE_BUILTIN_PREFETCH -# define HAVE_BUILTIN_PREFETCH 1 -# endif -#endif - -#ifdef __has_include -# if !defined(HAVE_BYTESWAP_H) && __has_include() -# define HAVE_BYTESWAP_H 1 -# endif -# if !defined(HAVE_UNISTD_H) && __has_include() -# define HAVE_UNISTD_H 1 -# endif -# if !defined(HAVE_SYS_ENDIAN_H) && __has_include() -# define HAVE_SYS_ENDIAN_H 1 -# endif -# if !defined(HAVE_SYS_MMAN_H) && __has_include() -# define HAVE_SYS_MMAN_H 1 -# endif -# if !defined(HAVE_SYS_UIO_H) && __has_include() -# define HAVE_SYS_UIO_H 1 -# endif -# if !defined(HAVE_SYS_TIME_H) && __has_include() -# define HAVE_SYS_TIME_H 1 -# endif -#endif - -#ifndef SNAPPY_IS_BIG_ENDIAN -# ifdef __s390x__ -# define SNAPPY_IS_BIG_ENDIAN 1 -# elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ -# define SNAPPY_IS_BIG_ENDIAN 1 -# endif -#endif -EOF -""", -) - -genrule( - name = "snappy_stubs_public_h", - srcs = ["snappy-stubs-public.h.in"], - outs = ["snappy-stubs-public.h"], - # Define HAVE_SYS_UIO_H_01 to 1; we just assume it's available. - # Set the version numbers. - cmd = ("""sed -e 's/$${\\(.*\\)_01}/1/g' \ - -e 's/$${PROJECT_VERSION_MAJOR}/%d/g' \ - -e 's/$${PROJECT_VERSION_MINOR}/%d/g' \ - -e 's/$${PROJECT_VERSION_PATCH}/%d/g' \ - $< >$@""" % SNAPPY_VERSION), -) diff --git a/opensource/WORKSPACE b/opensource/WORKSPACE deleted file mode 100644 index 7e60888..0000000 --- a/opensource/WORKSPACE +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright 2023 Google Inc. All Rights Reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- cgit v1.2.1